Table of Contents

MLSEXEC

Table Of Contents

  • [00012] MLSEXEC - SECURITY COMMAND PROCESSOR.
  • [00016] SECURITY COMMAND PROCESSOR.
  • [00129] FETS AND RESERVED LOCATIONS.
  • [00155] SETFAL - SET FILE ACCESS LEVEL.
  • [00177] SETJAL - SET JOB ACCESS LEVEL.
  • [00199] SETPFAC - SET PERMANENT FILE ACCESS CATEGORY.
  • [00340] SETPFAL - SET PERMANENT FILE ACCESS LEVEL.
  • [00375] SUBROUTINES.
  • [00377] ABT - ABORT JOB.
  • [00395] CES - CHECK ERROR STATUS.
  • [00422] IDM - ISSUE SECURED DAYFILE MESSAGE.
  • [00458] PNA - PROCESS *NO ABORT* AND *WAIT BUSY* OPTIONS.
  • [00485] PRP - PROCESS CONTROL CARD PARAMETERS.

Source Code

MLSEXEC.txt
  1. IDENT MLSEXEC,MLSEXEC
  2. ABS
  3. SST
  4. SYSCOM B1
  5. ENTRY SETFAL
  6. ENTRY SETJAL
  7. ENTRY SETPFAC
  8. ENTRY SETPFAL
  9. ENTRY RFL=
  10. ENTRY SDM=
  11. ENTRY SSJ=
  12. TITLE MLSEXEC - SECURITY COMMAND PROCESSOR.
  13. *COMMENT MLSEXEC - SECURITY COMMAND PROCESSOR.
  14. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  15. SPACE 4,10
  16. *** MLSEXEC - SECURITY COMMAND PROCESSOR.
  17. * M. S. PESCHMAN. 82/08/20.
  18. * P. J. ENGLE. 82/10/01.
  19. SPACE 4,10
  20. *** MLSEXEC PROCESSES MULTI-LEVEL SECURITY COMMANDS FOR ALTERING
  21. * A JOB OR FILE ACCESS LEVELS AND CATEGORIES.
  22. *
  23. * COMMAND DESCRIPTION
  24. *
  25. * SETFAL SET FILE ACCESS LEVEL.
  26. * SETJAL SET JOB ACCESS LEVEL.
  27. * SETPFAC SET PERMANENT FILE ACCESS CATEGORIES.
  28. * SETPFAL SET PERMANENT FILE ACCESS LEVEL.
  29. SETFAL SPACE 4,10
  30. *** SETFAL COMMAND CALL.
  31. *
  32. * SETFAL,LFN,AL=LEVEL.
  33. *
  34. * LFN = LOCAL FILE NAME.
  35. *
  36. * LEVEL = ACCESS LEVEL. VALID ACCESS LEVEL NAMES
  37. * ARE DEFINED IN *COMSMLS*.
  38. SETJAL SPACE 4,10
  39. *** SETJAL COMMAND CALL.
  40. *
  41. * SETJAL,AL=LEVEL.
  42. *
  43. * LEVEL = ACCESS LEVEL. VALID ACCESS LEVEL NAMES
  44. * ARE DEFINED IN *COMSMLS*.
  45. SETPFAC SPACE 4,30
  46. *** SETPFAC COMMAND CALL.
  47. *
  48. * SETPFAC,PFN,AC=CAT1,CAT2,...,CATN/PN=PACKNAM,R=DEVICE,NA,WB.
  49. *
  50. * PFN = PERMANENT FILE NAME.
  51. *
  52. * CATX = ACCESS CATEGORIES. VALID ACCESS CATEGORIES NAMES
  53. * ARE DEFINED IN *COMSMLS*. WHEN THE CATEGORY NAME
  54. * IS PREFACED BY A MINUS (-) THE CATEGORY IS DELETED
  55. * FROM THE FILE. IF THE CATEGORY NAME IS PREFACED
  56. * BY A PLUS (+) THE CATEGORY IS ADDED TO THE FILE.
  57. * IF THE FIRST CATEGORY SPECIFIED IS *0* ALL CATEGORIES
  58. * WILL INITIALLY BE CLEARED.
  59. *
  60. * PACKNAM = OPTIONAL AUXILIARY PACK NAME.
  61. *
  62. * DEVICE = DEVICE TYPE OF AUXILIARY PACK.
  63. *
  64. * NA = NO ABORT OPTION. IF SET PROGRAM WILL NOT
  65. * ABORT. IF THE FILE IS BUSY THE JOB
  66. * WILL BE SUSPENDED UNTIL THE FILE IS
  67. * AVAILABLE. FOR ALL OTHER CONDITIONS,
  68. * THE ERROR MESSAGE WILL BE ISSUED AND
  69. * THE PROGRAM WILL CONTINUE. *NA* CANNOT BE
  70. * SPECIFIED TOGETHER WITH *WB*.
  71. *
  72. * WB = WAIT BUSY OPTION. IF SET, PROGRAM WILL
  73. * WAIT FOR BUSY FILES AND PACK MOUNTS, BUT
  74. * ALL OTHER ERRORS WILL CAUSE ABORTS. *WB*
  75. * CANNOT BE SPECIFIED TOGETHER WITH *NA*.
  76. SETPFAL SPACE 4,40
  77. *** SETPFAL COMMAND CALL.
  78. *
  79. * SETPFAL,PFN,AL=LEVEL/PN=PACKNAM,R=DEVICE,NA,WB.
  80. *
  81. * PFN = PERMANENT FILE NAME.
  82. *
  83. * LEVEL = ACCESS LEVEL. VALID ACCESS LEVEL NAMES ARE
  84. * DEFINED IN *COMSMLS*.
  85. *
  86. * PACKNAM = OPTIONAL AUXILARY PACK NAME.
  87. *
  88. * DEVICE = DEVICE TYPE OF AUXILIARY PACK.
  89. *
  90. * NA = NO ABORT OPTION. IF SET PROGRAM WILL NOT
  91. * ABORT. IF THE FILE IS BUSY THE JOB
  92. * WILL BE SUSPENDED UNTIL THE FILE IS
  93. * AVAILABLE. FOR ALL OTHER CONDITIONS,
  94. * THE ERROR MESSAGE WILL BE ISSUED AND
  95. * THE PROGRAM WILL CONTINUE. *NA* CANNOT BE
  96. * SPECIFIED TOGETHER WITH *WB*.
  97. *
  98. * WB = WAIT BUSY OPTION. IF SET, PROGRAM WILL
  99. * WAIT FOR BUSY FILES AND PACK MOUNTS, BUT
  100. * ALL OTHER ERRORS WILL CAUSE ABORTS. *WB*
  101. * CANNOT BE SPECIFIED TOGETHER WITH *NA*.
  102. SPACE 4,15
  103. *** DAYFILE MESSAGES.
  104. *
  105. * * UNKNOWN ACCESS CATEGORY NAME.* = THE COMMAND
  106. * CONTAINS AN UNKNOWN ACCESS CATEGORY NAME.
  107. *
  108. * * UNKNOWN ACCESS LEVEL NAME.* = THE COMMAND
  109. * CONTAINS AN UNKNOWN ACCESS LEVEL NAME.
  110. *
  111. * * INCORRECT ARGUMENT.* = THE COMMAND CONTAINS
  112. * AN INCORRECT ARGUMENT.
  113. SPACE 4,10
  114. * COMMON DECKS.
  115.  
  116. *CALL COMCMAC
  117. *CALL COMSMLS
  118. *CALL COMSPFM
  119. *CALL COMSSSJ
  120. SPACE 4,10
  121. **** ASSEMBLY CONSTANTS.
  122.  
  123.  
  124. FBUFL EQU 201B FILE BUFFER LENGTH
  125. ****
  126. SPACE 4,10
  127. SDM= EQU 0 SUPPRESS DAYFILE MESSAGE
  128. SSJ= EQU 0 SPECIAL SYSTEM JOB (*SETPFAC* ONLY)
  129. TITLE FETS AND RESERVED LOCATIONS.
  130. ORG 120B
  131. MLSEXEC BSS 0
  132. SPACE 4,10
  133. * FETS.
  134.  
  135.  
  136. F FILEB FBUF,FBUFL,FET=CFLM FET FOR *LFM* AND *PFM* REQUESTS
  137. .F BSS 0
  138. ORG F+1
  139. VFD 13/0,1/1,22/0,6/CFLM-5,18/FBUF
  140. ORG .F
  141. SPACE 4,10
  142. * RESERVED LOCATIONS.
  143.  
  144.  
  145. ACAT CON 0 ACCESS CATEGORIES
  146. ALVL CON 0 ACCESS LEVEL
  147. FNAM CON 0 FILE NAME
  148. NABT CON 0 NO ABORT FLAG
  149. NONZ CON 1 NON-ZERO WORD
  150. PKNM CON 0 PACK NAME
  151. RESD CON 0 RESIDENCE OF FILE
  152. SCFL CON 0 SET/CLEAR FLAG
  153. WBSY CON 0 WAIT WHILE BUSY FLAG
  154. ZERO CON 0 ZERO WORD FOR *ARG* DEFAULT
  155. TITLE SETFAL - SET FILE ACCESS LEVEL.
  156. ** SETFAL,LFN,AL=LEVEL.
  157. *
  158. * SET THE SECURITY ACCESS LEVEL OF FILE *LFN* TO LEVEL *AL*.
  159.  
  160.  
  161. SETFAL BSS 0 ENTRY
  162. SB1 1
  163. DISSJ DISABLE *SSJ=*
  164. RJ IDM ISSUE DAYFILE MESSAGE
  165. SB2 B0+ SET FIRST PARAMETER NOT TO BE EQUIVALENCED
  166. SB5 TARG+5 SET ARGUMENT TABLE ADDRESS
  167. RJ PRP PROCESS PARAMETERS
  168. SB2 B0+
  169. SA1 ALVL
  170. RJ VLC VALIDATE ACCESS LEVEL
  171. SX5 ALER
  172. NG X2,ABT IF UNKNOWN ACCESS LEVEL NAME
  173. BX6 X2
  174. SA6 ALVL SAVE ACCESS LEVEL
  175. SETFAL F,ALVL SET FILE ACCESS LEVEL
  176. ENDRUN
  177. TITLE SETJAL - SET JOB ACCESS LEVEL.
  178. ** SETJAL,AL=LEVEL.
  179. *
  180. * SET THE SECURITY ACCESS LEVEL OF THE JOB TO LEVEL *AL*.
  181.  
  182.  
  183. SETJAL BSS 0 ENTRY
  184. SB1 1
  185. DISSJ DISABLE *SSJ=*
  186. RJ IDM ISSUE DAYFILE MESSAGE
  187. SB2 1 SET FIRST PARAMETER TO BE EQUIVALENCED
  188. SB5 TARG+5 SET ARGUMENT TABLE ADDRESS
  189. RJ PRP PROCESS PARAMETERS
  190. SB2 B0+
  191. SA1 ALVL ACCESS LEVEL TO VALIDATE
  192. RJ VLC VALIDATE ACCESS LEVEL
  193. SX5 ALER
  194. NG X2,ABT IF UNKNOWN ACCESS LEVEL NAME
  195. BX6 X2
  196. SA6 ALVL SAVE ACCESS LEVEL
  197. SETJAL ALVL SET JOB ACCESS LEVEL
  198. ENDRUN
  199. TITLE SETPFAC - SET PERMANENT FILE ACCESS CATEGORY.
  200. ** SETPFAC,PFN,AC=CAT1,CAT2,...,CATN/PN=PACKNAM,R=DEVICE,NA,WB.
  201. *
  202. * CHANGE THE ACCESS CATEGORIES OF THE PERMANENT FILE *PFN*.
  203. *
  204. * PFN = PERMANENT FILE NAME.
  205. * AC = ACCESS CATEGORIES.
  206. * PN = OPTIONAL AUXILIARY PACK NAME.
  207. * R = DEVICE TYPE OF AUXILIARY PACK.
  208. * NA = THE NO ABORT OPTION.
  209. * WB = THE WAIT-IF-BUSY OPTION.
  210.  
  211.  
  212. SETPFAC BSS 0 ENTRY
  213. SB1 1
  214. RJ IDM ISSUE DAYFILE MESSAGE
  215.  
  216. * SAVE FILE NAME.
  217.  
  218. SA1 ARGR GET FIRST ARGUMENT
  219. SX5 IAER
  220. ZR X1,ABT IF NO ARGUMENTS
  221. MX0 42 SAVE FILE NAME
  222. BX6 X0*X1
  223. SA6 FNAM
  224. SX2 3 SET FET COMPLETE
  225. BX6 X2+X6
  226. SA6 F
  227. BX2 -X0*X1
  228. NZ X2,ABT IF ILLEGAL SEPARATOR
  229.  
  230. * CHECK THAT *AC* PARAMETER IS SPECIFIED.
  231.  
  232. SA2 SACA
  233. SA1 A1+B1
  234. BX2 X2-X1
  235. NZ X2,ABT IF INCORRECT ARGUMENT
  236.  
  237. * CHECK IF ANY OPTIONAL PARAMETERS SPECIFIED.
  238.  
  239. SAC1 SA1 A1+1 SEARCH FOR DELIMITER */*
  240. ZR X1,SAC2 IF END OF ARGUMENTS
  241. SX2 X1-1R/
  242. NZ X2,SAC1 IF NOT */*
  243. SA2 ACTR GET ARGUMENT COUNT
  244. SX3 A1-ARGR+1
  245. IX3 X2-X3
  246. SB4 X3 SET ARGUMENT COUNT
  247. SA4 A1+1 SET FIRST ARGUMENT
  248. SB5 TARG SET ARGUMENT TABLE
  249. RJ ARG PROCESS ARGUMENTS
  250. SX5 IAER
  251. NZ X1,ABT IF INCORRECT ARGUMENT
  252. SA1 A1 SIGNAL END OF CATEGORIES TO CHECK
  253. MX0 42
  254. BX6 X0*X1
  255. SA6 A1
  256. SX6 B0+
  257. SA6 A1+1
  258. RJ PNA PROCESS *NA* AND *WB* OPTIONS
  259.  
  260. * GET CURRENT ACCESS CATEGORIES.
  261.  
  262. SAC2 CATLIST F,FNAM,,,PKNM,RESD
  263. DISSJ DISABLE *SSJ=*
  264. SA1 F+1 GET ADDRESS OF BUFFER
  265. SA1 X1+FCFC GET ACCESS CATEGORIES
  266. MX0 -32
  267. BX6 -X0*X1
  268. SA6 ACAT STORE ACCESS CATEGORIES
  269.  
  270. * CHECK IF CLEAR ALL CATEGORIES.
  271.  
  272. SA1 ARGR+2
  273. SA2 =1L0
  274. BX6 X2-X1
  275. NZ X6,SAC3 IF NOT *0*
  276. SA6 ACAT
  277. SA1 A1+1 GET FIRST CATEGORY
  278. ZR X1,SAC8 IF NO CATEGORIES
  279.  
  280. * CHECK SPECIFIED CATEGORIES.
  281.  
  282. SAC3 MX0 42
  283. BX2 X0*X1
  284. NZ X2,SAC6 IF CATEGORY NAME
  285.  
  286. * CHECK IF CATEGORY TO BE SET OR CLEARED.
  287.  
  288. BX3 -X0*X1 ISOLATE SEPARATOR
  289. SX4 X3-1R-
  290. NZ X4,SAC4 IF NOT *-*
  291. SX6 -1 SIGNAL CATEGORY CLEAR
  292. SA6 SCFL
  293. EQ SAC5 CLEAR CATEGORY
  294.  
  295. SAC4 SX4 X3-1R+
  296. ZR X4,SAC5 IF *+*
  297. SX5 IAER
  298. EQ ABT PROCESS ILLEGAL SEPARATOR
  299.  
  300. * VALIDATE ACCESS CATEGORY.
  301.  
  302. SAC5 SA1 A1+1 POSITION TO CATEGORY NAME
  303. SAC6 BX3 -X0*X1
  304. SB2 B1 SIGNAL VALIDATE ACCESS CATEGORY
  305. SX5 IAER
  306. NZ X3,ABT IF ILLEGAL SEPARATOR
  307. RJ VLC VALIDATE ACCESS CATEGORY
  308. SX5 ACER
  309. NG X2,ABT IF UNKNOWN ACCESS CATEGORY
  310. SX0 1
  311. SB2 X2
  312. LX2 X0,B2
  313. SA3 ACAT GET CURRENT ACCESS CATEGORIES
  314. SA4 SCFL GET SET/CLEAR FLAG
  315. BX6 -X2*X3 CLEAR ACCESS CATEGORY
  316. NG X4,SAC7 IF CLEAR ACCESS CATEGORY
  317. BX6 X6+X2 SET ACCESS CATEGORY
  318. SAC7 SA6 ACAT
  319.  
  320. * CHECK IF MORE CATEGORIES TO PROCESS
  321.  
  322.  
  323. SX6 B0+ RESET SET/CLEAR FLAG
  324. SA6 SCFL
  325. SA1 A1+1 GET NEXT CATEGORY
  326. NZ X1,SAC3 IF MORE CATEGORIES
  327.  
  328. * SET PERMANENT FILE ACCESS CATEGORY.
  329.  
  330. SAC8 SETPFAC F,,ACAT,PKNM,RESD SET FILE ACCESS CATEGORIES
  331. RJ CES CHECK ERROR STATUS
  332. ZR X6,SAC9 IF FILE BUSY
  333. ENDRUN
  334.  
  335. SAC9 ROLLOUT ZERO ROLL OUT UNTIL FILE AVAILABLE
  336. EQ SAC8 RETRY AFTER ROLLED IN
  337.  
  338.  
  339. SACA VFD 12/2LAC,42/0,6/1L=
  340. TITLE SETPFAL - SET PERMANENT FILE ACCESS LEVEL.
  341. ** SETPFAL,PFN,AL=LEVEL/PN=PACKNAME,R=TYPE,NA,WB.
  342. *
  343. * CHANGE THE ACCESS LEVEL OF THE PERMANENT FILE *PFN*.
  344. *
  345. * PFN = PERMANENT FILE NAME.
  346. * AL = ACCESS LEVEL.
  347. * PN = OPTIONAL AUXILIARY PACK NAME.
  348. * R = DEVICE TYPE.
  349. * NA = THE NO ABORT OPTION.
  350. * WB = THE WAIT-IF-BUSY OPTION.
  351.  
  352.  
  353. SETPFAL BSS 0 ENTRY
  354. SB1 1
  355. DISSJ DISABLE *SSJ=*
  356. RJ IDM ISSUE DAYFILE MESSAGE
  357. SB2 B0+ SET FIRST PARAMETER NOT TO BE EQUIVALENCED
  358. SB5 TARG SET ARGUMENT TABLE
  359. RJ PRP PROCESS PARAMETERS
  360. RJ PNA PROCESS *NA* AND *WB* OPTIONS
  361. SB2 B0+
  362. SA1 ALVL ACCESS LEVEL TO CHECK
  363. RJ VLC VALIDATE ACCESS LEVEL
  364. SX5 ALER
  365. NG X2,ABT IF UNKNOWN ACCESS LEVEL NAME
  366. BX6 X2
  367. SA6 ALVL
  368. SAL1 SETPFAL F,,ALVL,PKNM,RESD SET PERMANENT FILE ACCESS LEVEL
  369. RJ CES CHECK ERROR STATUS
  370. ZR X6,SAL2 IF FILE BUSY
  371. ENDRUN
  372.  
  373. SAL2 ROLLOUT ZERO ROLL OUT UNTIL FILE AVAILABLE
  374. EQ SAL1 RETRY AFTER ROLLED IN
  375. TITLE SUBROUTINES.
  376. ABT SPACE 4,10
  377. ** ABT - ABORT JOB.
  378. *
  379. * ISSUE DAYFILE MESSAGE THEN ABORT.
  380. *
  381. * ENTRY (X5) = ADDRESS OF ERROR MESSAGE.
  382. *
  383. * MACROS ABORT, MESSAGE.
  384.  
  385.  
  386. ABT BSS 0 ENTRY
  387. MESSAGE X5 ISSUE DAYFILE MESSAGE
  388. ABORT ABORT JOB
  389.  
  390.  
  391. ACER DATA C* UNKNOWN ACCESS CATEGORY NAME.*
  392. ALER DATA C* UNKNOWN ACCESS LEVEL NAME.*
  393. IAER DATA C* INCORRECT ARGUMENT.*
  394. CES SPACE 4,15
  395. ** CES - CHECK ERROR STATUS.
  396. *
  397. * ABORT IF *WAIT BUSY* WAS SPECIFIED, AND AN ERROR
  398. * OTHER THAN *FILE BUSY* IS DETECTED.
  399. *
  400. * ENTRY (X2) = FET ADDRESS.
  401. *
  402. * EXIT (X6) = 0 IF *FILE BUSY* ERROR.
  403. *
  404. * USES X - 1, 6.
  405. * A - 1, 6.
  406. *
  407. * MACROS ABORT.
  408.  
  409.  
  410. CES SUBR ENTRY/EXIT
  411. MX6 -8 CHECK ERROR STATUS FIELD
  412. SA1 X2
  413. AX1 10
  414. BX1 -X6*X1
  415. ZR X1,CESX IF NO ERROR
  416. SX6 X1-/ERRMSG/FBS
  417. ZR X6,CESX IF *FILE BUSY* STATUS
  418. SA1 WBSY
  419. ZR X1,CESX IF *NA* RATHER THAN *WB*
  420. ABORT ABORT (ERROR MESSAGE ISSUED BY *PFM*)
  421. IDM SPACE 4,20
  422. ** IDM - ISSUE SECURED DAYFILE MESSAGE.
  423. *
  424. * REMOVE SECURITY ACCESS LEVEL VALUE FROM THE COMMAND
  425. * AND ISSUE THE COMMAND TO THE JOB AND TO THE
  426. * SYSTEM DAYFILE.
  427. *
  428. * EXIT COMMAND ISSUED TO DAYFILE.
  429. *
  430. * USES X - 4, 5.
  431. * A - 4, 5.
  432. * B - 2, 6.
  433. *
  434. * CALLS RSP.
  435. *
  436. * MACROS MESSAGE.
  437.  
  438.  
  439. IDM SUBR ENTRY/EXIT
  440.  
  441. * FORMAT PARAMETER REGISTERS FOR *RSP*.
  442.  
  443. SA4 TARG SET ARGUMENT TABLE
  444. SA5 CCDR CONTROL CARD FWA
  445. SB2 B0+ NO PARAMETERS TO SKIP
  446. SB6 IDMA PARAMETER TO BE REMOVED
  447.  
  448. * REMOVE PARAMETER AND ISSUE DAYFILE MESSAGE.
  449.  
  450. RJ RSP REMOVE SECURITY PARAMETER
  451. MESSAGE CCDR,0,R ISSUE DAYFILE MESSAGE
  452. EQ IDMX RETURN
  453.  
  454.  
  455. IDMA CON 0LAL PARAMETER TO BE REMOVED BY *RSP*
  456. CON 0 END OF ARGUMENT TABLE
  457. PNA SPACE 4,10
  458. ** PNA - PROCESS *NO ABORT* AND *WAIT BUSY* OPTIONS.
  459. *
  460. * ENTRY (NABT) = 1 IF *NO ABORT* SPECIFIED.
  461. * (WBSY) = 1 IF *WAIT BUSY* REQUESTED.
  462. *
  463. * EXIT ERROR PROCESSING BIT SET IF REQUIRED.
  464. * TO *ABT* IF BOTH *NA* AND *WB* SPECIFIED.
  465. *
  466. * USES X - 1, 2, 5, 6.
  467. * A - 1, 2, 6.
  468.  
  469.  
  470. PNA SUBR ENTRY/EXIT
  471. SA1 NABT
  472. SA2 WBSY
  473. IX1 X1+X2
  474. ZR X1,PNAX IF NEITHER *NA* OR *WB* SPECIFIED
  475. SX1 X1-2
  476. SX5 IAER
  477. ZR X1,ABT IF BOTH *NA* AND *WB* SPECIFIED
  478. SA1 F+1 SET ERROR PROCESSING BIT
  479. SX6 B1
  480. LX6 44
  481. BX6 X1+X6
  482. SA6 A1
  483. EQ PNAX RETURN
  484. PRP SPACE 4,15
  485. ** PRP - PROCESS CONTROL CARD PARAMETERS.
  486. *
  487. * ENTRY (B2).NE.0 IF FIRST PARAMETER TO BE EQUIVALENCED.
  488. * (B5) = ADDRESS OF ARGUMENT TABLE IN *ARG* FORMAT.
  489. *
  490. * EXIT CONTROL CARD PARAMETERS PROCESSED.
  491. * TO *ABT* IF ERROR.
  492. *
  493. * USES X - 0, 1, 2, 4, 5, 6, 7.
  494. * A - 1, 4, 6.
  495. * B - 4.
  496. *
  497. * CALLS ARG.
  498.  
  499.  
  500. PRP SUBR ENTRY/EXIT
  501. SA1 ACTR
  502. SB4 X1
  503. R= A4,ARGR
  504. SX5 IAER
  505. ZR B4,ABT IF NO ARGUMENTS
  506. SX7 X4-1R=
  507. ZR X7,PRP1 IF FIRST PARAMETER IS EQUIVALENCED
  508. NZ B2,ABT IF FIRST PARAMETER SHOULD BE EQUIVALENCED
  509. MX0 42
  510. BX6 X0*X4 SET FIRST PARAMETER AS FILE NAME
  511. SX2 3
  512. BX6 X2+X6 SET FET COMPLETE
  513. SA6 F
  514. SA4 A4+B1
  515. SB4 B4-B1
  516. ZR X4,ABT IF NO MORE PARAMETERS
  517. EQ PRP2 PROCESS REMAINING ARGUMENTS
  518.  
  519. PRP1 ZR B2,ABT IF FIRST PARAMETER SHOULD BE UNEQUIVALENCED
  520. PRP2 RJ ARG PROCESS EQUIVALENCED PARAMETERS
  521. NZ X1,ABT IF INCORRECT ARGUMENT
  522. EQ PRPX RETURN
  523.  
  524.  
  525. TARG BSS 0 ARGUMENT TABLE
  526. PN ARG ZERO,PKNM
  527. R ARG ZERO,RESD
  528. NA ARG -NONZ,NABT
  529. WB ARG -NONZ,WBSY
  530. AC ARG ZERO,ACAT,400B
  531. AL ARG ZERO,ALVL,400B
  532. ARG END OF TABLE
  533. SPACE 4,10
  534. * COMMON DECKS.
  535.  
  536. *CALL COMCARG
  537. *CALL COMCCPM
  538. *CALL COMCLFM
  539. *CALL COMCPFM
  540. *CALL COMCRSP
  541. *CALL COMCSYS
  542. *CALL COMCVLC
  543. SPACE 4,10
  544. USE LITERALS
  545. FBUF EQU * FILE BUFFER
  546. RFL= EQU FBUF+FBUFL
  547. END