Table of Contents

CPUREL

Table Of Contents

  • [00005] CPU.CPM - CONTROL POINT MANAGER PROCESSOR.
  • [00013] CPU.ECS - ECS INTERPRETIVE MODE MACRO PROCESSORS.
  • [00021] CPU.LFM - LOCAL FILE MANAGER PROCESSOR.
  • [00028] CPU.OVL - OVERLAY LOAD PROCESSOR.
  • [00035] CPU.PFM - PERMANENT FILE PROCESSOR.
  • [00042] PF - PERMANENT FILE REQUEST PROCESSOR.
  • [00229] MACRO DEFINITIONS.
  • [00236] PVALID - GENERATE EQUIVALENCES FOR PARAMETER VALIDATION.
  • [00282] TREQ - TABLE OF PERMANENT FILE REQUEST CODES.
  • [00299] TOPT - TABLE OF PERMANENT FILE ACCESS OPTIONS.
  • [00360] TBAC - TABLE OF ALTERNATE CATLIST PERMISSIONS.
  • [00370] TBRQ - TABLE OF BACKUP REQUIREMENT TYPES.
  • [00381] TCAT - TABLE OF PERMANENT FILE CATEGORY TYPES.
  • [00395] TMOD - TABLE OF PERMANENT FILE PERMISSION TYPES.
  • [00423] TPRS - TABLE OF PREFERRED RESIDENCE TYPES.
  • [00436] TRES - TABLE OF PERMANENCE FILE RESIDENCE TYPES.
  • [00441] TBLM - DEFINE MACRO TO PRODUCE *TRES* TABLE.
  • [00454] TSRQ - TABLE OF SPECIAL REQUEST TYPES.
  • [00468] TSUB - TABLE OF PERMANENT FILE SUBSYSTEM TYPES.
  • [00523] PF - MAIN ROUTINE FOR *NOS* PERMANENT FILE ACCESS.
  • [00542] PRE - PRESET INITIAL CONDITIONS AND STORAGE AREAS.
  • [00575] REQ - PROCESS PERMANENT FILE REQUEST.
  • [00620] LFN - PROCESS LOCAL FILE NAME/UNIT DESIGNATOR.
  • [00643] PFN - PROCESS PERMANENT FILE NAME PARAMETER.
  • [00654] OPT - PROCESS OPTIONAL PARAMETERS.
  • [00746] PRO - PROCESS THE PERMANENT FILE REQUEST.
  • [00797] END - PROCESS ERRORS AND/OR EXIT PF ROUTINE.
  • [00855] SUBROUTINES.
  • [00857] CIP - COUNT IGNORED PARAMETERS.
  • [00882] LCP - LOAD CHARACTER PARAMETER.
  • [00952] MCM - MOVE CHARACTER MESSAGE.
  • [01030] PCE - PROCESS CALL ERROR.
  • [01062] PRD - PROCESS RESIDENCE DEFINITION.
  • [01108] PXD - PROCESS EXPIRATION DATE.
  • [01148] PXT - PROCESS EXPIRATION TERM.
  • [01197] ZFN - DELETE TRAILING BLANKS FROM WORD.
  • [01229] GETPAGE - GET PAGE PARAMETERS.
  • [01295] SETPAGE - SET PAGE PARAMETERS.
  • [01342] MPP - MERGE PAGE PARAMETERS.

Source Code

CPUREL.txt
  1. IDENT CPU.CPM
  2. ENTRY CPM=
  3. *COMMENT CPUREL - CONTROL POINT MANAGER PROCESSOR.
  4. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  5. TITLE CPU.CPM - CONTROL POINT MANAGER PROCESSOR.
  6. *CALL COMCCPM
  7. END
  8. IDENT CPU.ECS
  9. ENTRY REC=
  10. ENTRY WEC=
  11. *COMMENT CPUREL - ECS INTERPRETIVE MODE MACRO PROCESSORS.
  12. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  13. TITLE CPU.ECS - ECS INTERPRETIVE MODE MACRO PROCESSORS.
  14. *CALL COMCECM
  15. *CALL COMCECS
  16. END
  17. IDENT CPU.LFM
  18. ENTRY LFM=
  19. *COMMENT CPUREL - LOCAL FILE MANAGER PROCESSOR.
  20. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  21. TITLE CPU.LFM - LOCAL FILE MANAGER PROCESSOR.
  22. *CALL COMCLFM
  23. END
  24. IDENT CPU.OVL
  25. ENTRY OVL=
  26. *COMMENT CPUREL - OVERLAY LOAD PROCESSOR.
  27. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  28. TITLE CPU.OVL - OVERLAY LOAD PROCESSOR.
  29. *CALL COMCOVL
  30. END
  31. IDENT CPU.PFM
  32. ENTRY PFM=
  33. *COMMENT CPUREL - PERMANENT FILE PROCESSOR.
  34. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  35. TITLE CPU.PFM - PERMANENT FILE PROCESSOR.
  36. *CALL COMCPFM
  37. END
  38. IDENT PF
  39. SST
  40. ENTRY PF
  41. SYSCOM B1
  42. TITLE PF - PERMANENT FILE REQUEST PROCESSOR.
  43. *COMMENT CPUREL - PERMANENT FILE REQUEST PROCESSOR.
  44. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  45. SPACE 4,20
  46. *** PF - PERMANENT FILE REQUEST PROCESSOR.
  47. *
  48. * S. M. HATCH. 78/04/27. (RAYTHEON)
  49. * D. W. BOSTROM. 80/05/30.
  50. SPACE 4,10
  51. *** *PF* PROVIDES AN INTERFACE TO *NOS* PERMANENT FILE COMMANDS
  52. * FOR PROGRAMS WRITTEN IN HIGHER LEVEL LANGUAGES. THE USE
  53. * OF KEYWORDS ALLOWS THE USER TO OMIT THOSE PARAMETERS WHICH
  54. * ARE NOT NEEDED.
  55. SPACE 4,10
  56. *** CALLING SEQUENCE.
  57. *
  58. * *FORTRAN* CALL -
  59. *
  60. * CALL PF(REQ,LFN,PFN,KEY(1),OPT(1),...,KEY(N),OPT(N))
  61. *
  62. * *SYMPL* CALL -
  63. *
  64. * PF(REQ,LFN,PFN,KEY(1),OPT(1),...,KEY(N),OPT(N),0);
  65. *
  66. * IT IS REQUIRED THAT THE LAST PARAMETER IN A *SYMPL*
  67. * CALL BE A ZERO, IN ORDER TO TERMINATE THE PARAMETER
  68. * LIST PROPERLY. (THIS IS NOT MANDATORY IF THE *SYMPL*
  69. * PROGRAM EITHER CONTAINS A *CONTROL FTNCALL*, OR IS
  70. * COMPILED WITH THE *F* OPTION.)
  71. *
  72. *
  73. * THE PARAMETERS CONSIST OF ORDER DEPENDENT MANDATORY
  74. * PARAMETERS, FOLLOWED OPTIONALLY BY ORDER INDEPENDENT
  75. * KEYWORD PAIRED PARAMETER STRINGS. KEYWORDS AND ALL
  76. * OTHER DISPLAY CODE PARAMETERS ARE REQUIRED TO BE LEFT
  77. * JUSTIFIED WITH ZERO OR BLANK FILL, OR ELSE IN *FTN5*
  78. * CHARACTER FORMAT. OPTIONAL KEYWORD PAIRS CONSIST OF
  79. * A KEYWORD FOLLOWED BY THE VALUE TO BE ASSOCIATED WITH
  80. * THIS KEYWORD.
  81. *
  82. * MANDATORY ORDER DEPENDENT PARAMETERS.
  83. *
  84. * REQ - PERMANENT FILE REQUEST.
  85. * THE FOLLOWING *PFM* REQUESTS ARE SUPPORTED -
  86. * *APPEND*, *ATTACH*, *CHANGE*, *DEFINE*, *GET*,
  87. * *PERMIT*, *PURGE*, *REPLACE*, AND *SAVE*.
  88. *
  89. * LFN - LOCAL FILE NAME OR *FORTRAN* UNIT NUMBER.
  90. * IF *LFN* IS NONZERO AND THE UPPER 42 BITS ARE
  91. * ZERO, THEN THE LOWER 18 BITS ARE ASSUMED TO
  92. * CONTAIN AN INTEGER. THIS INTEGER IS CONVERTED
  93. * TO DISPLAY CODE AND PREFIXED WITH THE CHARACTERS
  94. * "TAPE" TO YIELD A *FORTRAN* FILE NAME.
  95. * IF *LFN* EQUALS ZERO OR IS ALL BLANKS, THEN
  96. * *LFN* = *PFN* IS ASSUMED.
  97. *
  98. * PFN - PERMANENT FILE NAME.
  99. * IF *PFN* EQUALS ZERO OR IS ALL BLANKS, THEN
  100. * *PFN* = *LFN* IS ASSUMED.
  101. *
  102. * OPTIONAL KEYWORD PARAMETERS.
  103. *
  104. * THE FOLLOWING PARAMETERS ARE SIMILAR IN MEANING TO
  105. * THE CORRESPONDING OPTIONS ON *NOS* PERMANENT FILE
  106. * CONTROL CARDS AND MACROS.
  107. *
  108. * "AC" - ALTERNATE CATLIST PERMISSION.
  109. * "BR" - BACKUP REQUIREMENT.
  110. * "CT" - FILE CATEGORY.
  111. * "M" - FILE OR USER PERMISSION MODE.
  112. * "PN" - PACK NAME.
  113. * "PR" - PREFERRED RESIDENCE.
  114. * "PW" - PASSWORD.
  115. * "R" - RESIDENCE DEVICE TYPE.
  116. * "RT" - REAL-TIME MODE.
  117. * "S" - SIZE IN PRU-S, IN DISPLAY CODE. DECIMAL IS
  118. * ASSUMED UNLESS A *B* POST RADIX IS USED TO
  119. * INDICATE OCTAL.
  120. * "UN" - USER NUMBER.
  121. * "XD" - EXPIRATION DATE.
  122. * "XT" - EXPIRATION TERM.
  123. *
  124. * THE FOLLOWING PARAMETERS DO NOT DIRECTLY CORRESPOND
  125. * TO ANY OPTIONS ON *NOS* PERMANENT FILE CONTROL CARDS
  126. * OR MACROS.
  127. *
  128. * "EL" - ERROR MESSAGE LENGTH.
  129. * NUMBER OF CHARACTERS TO BE RETURNED TO THE
  130. * ERROR MESSAGE BUFFER SPECIFIED BY THE *EM*
  131. * PARAMETER. IF THE BUFFER SPECIFIED BY *EM* IS
  132. * A *FTN5* VARIABLE, THE VALUE USED FOR *EL* IS
  133. * THE LENGTH OF THAT VARIABLE, AND THE *EL*
  134. * PARAMETER IS IGNORED; OTHERWISE, THE DEFAULT
  135. * FOR *EL* IS 10.
  136. * "EM" - ERROR MESSAGE RETURN ADDRESS.
  137. * THE BUFFER TO WHICH THE *PFM* ERROR MESSAGE
  138. * WILL BE RETURNED. THE NUMBER OF CHARACTERS
  139. * RETURNED IS DETERMINED BY THE VALUE USED FOR
  140. * THE *EL* PARAMETER.
  141. * "IP" - SETS THE INTERLOCK PROCESSING BIT IN THE FET.
  142. * "IUP" - IGNORE UNNEEDED PARAMETERS.
  143. * "NA" - INHIBITS ROLLOUT IF DIRECT FILE BUSY, AND
  144. * PREVENTS ABORT ON ERROR CONDITIONS.
  145. * "NF" - OPTIONAL MEANS OF SPECIFYING NEW FILE NAME
  146. * ON *CHANGE* REQUEST. (SEE EXAMPLE BELOW.)
  147. * "NONE" - USED TO NULLIFY SPECIFIC KEYWORDS.
  148. * "OF" - OPTIONAL MEANS OF SPECIFYING OLD FILE NAME
  149. * ON *CHANGE* REQUEST. (SEE EXAMPLE BELOW.)
  150. * "RC" - RETURNS ERROR CODE IN INTEGER FORMAT AND
  151. * PREVENTS ABORT ON ERROR CONDITIONS.
  152. * "RRC" - RETURNS ERROR CODE IN REAL FORMAT AND
  153. * PREVENTS ABORT ON ERROR CONDITIONS.
  154. * "SR" - SPECIAL *PFM* REQUEST.
  155. * = "CE" - CLEAR FILE ERROR CODE (*CHANGE*).
  156. * = "CP" - RESET CHARGE/PROJECT NUMBERS
  157. * (*CHANGE*).
  158. * = "MR" - MASTER DEVICE RESIDENCE (*DEFINE*).
  159. * = "IE" - IGNORE ERROR IDLE STATUS (ALL).
  160. * VALID ONLY FOR *SSJ=* JOBS.
  161. * = "FA" - FORCE FAST ATTACH OF FILE (*ATTACH*).
  162. * VALID ONLY FOR *SSJ=* JOBS.
  163. * = "NF" - FORCE NON-FAST ATTACH FILE (*ATTACH*).
  164. * "SS" - SUBSYSTEM MODE OF INDIRECT FILE.
  165. * "UC" - USER CONTROL WORD (59 BITS).
  166. * "UP" - SETS THE USER PROCESSING BIT IN THE FET.
  167. *
  168. * EXAMPLES.
  169. *
  170. * CALL PF("GET",1,"PFILE","UN","USERNO","PW","STRING7")
  171. * CALL PF ("DEFINE","LFILE","PFILE","CT","PU","M","W");
  172. *
  173. * SPECIAL FORMATS ARE USED FOR THE *CHANGE*, *PERMIT*,
  174. * AND *PURGE* REQUESTS, E.G. -
  175. *
  176. * CALL PF ("CHANGE","NEWPFN","OLDPFN","BR","MD")
  177. * CALL PF ("PERMIT","PFN","UN","USERNAM","M","R")
  178. * CALL PF ("PURGE","PFN","RC",ERRCODE)
  179. *
  180. * NOTES.
  181. *
  182. * A KEYWORD VALUE PARAMETER IS REQUIRED TO FOLLOW EVERY
  183. * KEYWORD, ALTHOUGH THE VALUES FOLLOWING SOME KEYWORDS,
  184. * SUCH AS *NA* AND *RT*, ARE IGNORED.
  185. *
  186. * BEFORE ISSUING A *SAVE*, *REPLACE*, OR *APPEND* REQUEST
  187. * THE USER MUST ENSURE THAT THE APPROPRIATE *CIO* BUFFER
  188. * IS FLUSHED.
  189. SPACE 4,10
  190. *** ERROR PROCESSING.
  191. *
  192. * THE COMBINATION OF *RC*/*RRC* AND *NA* PARAMETERS USED
  193. * DETERMINES THE TYPE OF ERROR PROCESSING DONE.
  194. *
  195. * 1. IF NEITHER *NA* NOR *RC*/*RRC* ARE SPECIFIED AND
  196. * AN ERROR IS DETECTED BY PF OR *PFM*, THE ERROR
  197. * MESSAGE IS WRITTEN TO THE USER-S DAYFILE AND THE
  198. * PROGRAM IS ABORTED.
  199. *
  200. * 2. IF THE KEYWORD *RC*/*RRC* IS SPECIFIED AND AN
  201. * ERROR OCCURS, THE *PFM* ERROR CODE IS PLACED
  202. * IN THE APPROPRIATE RETURN CODE PARAMETER(S). A
  203. * ZERO VALUE INDICATES SUCCESSFUL COMPLETION, AND
  204. * A NEGATIVE VALUE IMPLIES A CALL ARGUMENT ERROR.
  205. *
  206. * 3. IF THE KEYWORD *NA* IS SPECIFIED AND THE *PFM*
  207. * FUNCTION FAILS, CONTROL RETURNS TO THE CALLING
  208. * PROGRAM, AFTER PLACING THE PF ERROR CODE IN THE
  209. * *RC*/*RRC* PARAMETER (IF SPECIFIED) OR ISSUING
  210. * A DAYFILE MESSAGE.
  211. *
  212. * 4. IF *NA* IS NOT SPECIFIED, AN *ATTACH* REQUEST FOR
  213. * A DIRECT ACCESS FILE WHICH IS CURRENTLY BUSY WILL
  214. * CAUSE THE JOB TO BE ROLLED OUT UNTIL THE FILE
  215. * BECOMES AVAILABLE.
  216. SPACE 4,10
  217. *** DAYFILE MESSAGES.
  218. *
  219. * * PF NO.-1 INVALID PARAMETER - UNPAIRED.*
  220. * A KEYWORD NOT FOLLOWED BY A KEYWORD VALUE WAS
  221. * ENCOUNTERED.
  222. *
  223. * * PF NO.-1 INVALID PARAMETER - XXXXXXX.*
  224. * AN INVALID KEYWORD OR KEYWORD VALUE WAS ENCOUNTERED.
  225. *
  226. * * PF NO.-XX CCCC...CCCC.*
  227. * ERROR CODE AND MESSAGE RETURNED BY *PFM*.
  228. SPACE 4,10
  229. TITLE MACRO DEFINITIONS.
  230. * COMMON DECKS.
  231.  
  232. *CALL COMCMAC
  233. *CALL COMSMSP
  234. *CALL COMSPFM
  235. PVALID SPACE 4,10
  236. ** PVALID - GENERATE EQUIVALENCES FOR PARAMETER VALIDATION.
  237. *
  238. * SYM PVALID (REQ1,REQ2,...,REQN)
  239. *
  240. * ENTRY *SYM* = SYMBOL TO REPRESENT VALID USES OF A
  241. * PARAMETER.
  242. * *REQ* = A *PFM* REQUEST FOR WHICH THE PARAMETER
  243. * IS VALID. THE SYMBOL *CC_REQ* MUST BE
  244. * DEFINED IN *COMSPFM*.
  245. *
  246. * NOTE THE VALUE OF *SYM* IS GENERATED BY SETTING A BIT
  247. * CORRESPONDING TO EACH REQUEST SPECIFIED.
  248.  
  249.  
  250. PURGMAC PVALID
  251.  
  252. MACRO PVALID,SYM,REQ
  253. MACREF PVALID
  254. SYM SET 0
  255. IRP REQ
  256. REQ DECMIC CC_REQ-1
  257. SYM SET SYM+1S"REQ"
  258. PVALID ENDM
  259. SPACE 4,10
  260. ECHO 1,SYM=(CLLF,CLNA,CLNO,CLPF,CLPN,CLRC,CLRS,CLEM,CLIU)
  261. SYM PVALID (SV,GT,PG,PM,RP,AP,DF,AT,CG)
  262. CLAC PVALID (SV,DF,CG)
  263. CLBR PVALID (SV,DF,CG)
  264. CLCT PVALID (SV,DF,CG)
  265. CLIP PVALID (SV,GT,PG,PM,RP,AP,DF,AT,CG)
  266. CLMD PVALID (SV,RP,DF,AT,CG,PM)
  267. CLNF PVALID (CG)
  268. CLOF PVALID (CG)
  269. CLPR PVALID (SV,DF,CG)
  270. CLPW PVALID (SV,GT,PG,RP,AP,DF,AT,CG)
  271. CLRT PVALID (GT,AP,AT)
  272. CLSP PVALID (DF)
  273. CLSR PVALID (SV,GT,PG,PM,RP,AP,DF,AT,CG)
  274. CLSS PVALID (SV,RP,CG)
  275. CLUC PVALID (SV,GT,RP,CG,DF,AT)
  276. CLUN PVALID (GT,PG,RP,AP,AT,PM)
  277. CLUP PVALID (SV,GT,PG,PM,RP,AP,DF,AT,CG)
  278. CLXD PVALID (SV,PM,DF,CG)
  279. CLXT PVALID (SV,PM,DF,CG)
  280. TREQ TITLE TABLE DEFINITIONS.
  281. TREQ SPACE 4,10
  282. ** TREQ - TABLE OF PERMANENT FILE REQUEST CODES.
  283. *
  284. *T 42/7LCOMMAND,18/CODE
  285.  
  286.  
  287. TREQ BSS 0
  288. VFD 42/0LSAVE,18/CCSV SAVE
  289. VFD 42/0LGET,18/CCGT GET
  290. VFD 42/0LPURGE,18/CCPG PURGE
  291. VFD 42/0LPERMIT,18/CCPM PERMIT
  292. VFD 42/0LREPLACE,18/CCRP REPLACE
  293. VFD 42/0LAPPEND,18/CCAP APPEND
  294. VFD 42/0LDEFINE,18/CCDF DEFINE
  295. VFD 42/0LATTACH,18/CCAT ATTACH
  296. VFD 42/0LCHANGE,18/CCCG CHANGE
  297. TREQL CON 0
  298. TOPT SPACE 4,10
  299. ** TOPT - TABLE OF PERMANENT FILE ACCESS OPTIONS.
  300. *
  301. *T 12/OPTION,12/VALID,6/WORD,6/LBIT,6/LENGTH,18/TABLE
  302. *
  303. * OPTION = PF OPTION IN DISPLAY CODE. FOR KEYWORDS LONGER
  304. * THAN TWO CHARACTERS, ONLY THE FIRST TWO
  305. * CHARACTERS ARE USED.
  306. * VALID = FIELD INDICATING VALID USES OF THIS PARAMETER,
  307. * DEFINED USING THE *PVALID* MACRO.
  308. * WORD = WORD IN *FET* CONTAINING THE FIELD TO BE SET.
  309. * LBIT = LOWER BIT OF THE FIELD IN THE *FET*.
  310. * LENGTH = LENGTH OF THE *FET* FIELD IN BITS.
  311. * TABLE = ADDRESS OF TABLE, IF ANY, GIVING PERMISSABLE
  312. * VALUES FOR THIS OPTION.
  313. * = 0, INDICATES THAT THE VALUE SPECIFIED IS NOT
  314. * VALIDATED BY PF.
  315. * = 1, INDICATES THAT THE VALUE IS TO BE CONVERTED
  316. * FROM DISPLAY CODE TO BINARY.
  317. * = 2, INDICATES THAT THE VALUE SPECIFIED FOR THIS
  318. * OPTION IS IGNORED.
  319. * = 3, INDICATES THAT ENTIRE PARAMETER DESCRIPTION FOR
  320. * PARAMETER IS SAVED, TO BE PROCESSED INDIVIDUALLY.
  321. * = 4, INDICATES THAT THE VALUE SPECIFIED FOR THIS
  322. * OPTION IS A RETURN ADDRESS.
  323. * = NEGATIVE VALUE, INDICATES THAT THIS IS THE
  324. * COMPLEMENT OF AN ADDRESS FOR A SPECIAL
  325. * VALIDATION ROUTINE.
  326.  
  327.  
  328. TOPT BSS 0
  329. VFD 12/0LAC,12/CLAC,6/CFAP,6/46,6/02,18/TBAC
  330. VFD 12/0LBR,12/CLBR,6/CFBR,6/54,6/03,18/TBRQ
  331. VFD 12/0LCT,12/CLCT,6/CFCT,6/06,6/06,18/TCAT
  332. VFD 12/0LEL,12/CLEM,6/CFEL,6/00,6/18,18/1
  333. VFD 12/0LEM,12/CLEM,6/CFEM,6/00,6/18,18/3
  334. VFD 12/0LIP,12/CLIP,6/0001,6/42,6/01,18/2
  335. VFD 12/0LIU,12/CLIU,6/CFIU,6/00,6/60,18/4
  336. VFD 12/0LLF,12/CLLF,6/CFSN,6/18,6/42,18/0
  337. VFD 12/0LM,012/CLMD,6/CFMD,6/00,6/06,18/TMOD
  338. VFD 12/0LNA,12/CLNA,6/CFNA,6/00,6/60,18/2
  339. VFD 12/0LNF,12/CLNF,6/CFNF,6/18,6/42,18/0
  340. VFD 12/0LNO,12/CLNO,6/CFNO,6/00,6/60,18/2
  341. VFD 12/0LOF,12/CLOF,6/CFSN,6/18,6/42,18/0
  342. VFD 12/0LPF,12/CLPF,6/CFPN,6/18,6/42,18/0
  343. VFD 12/0LPN,12/CLPN,6/CFPK,6/18,6/42,18/0
  344. VFD 12/0LPR,12/CLPR,6/CFPR,6/57,6/03,18/TPRS
  345. VFD 12/0LPW,12/CLPW,6/CFPW,6/18,6/42,18/0
  346. VFD 12/0LR,012/CLRS,6/0001,6/48,6/12,18/-PRD
  347. VFD 12/0LRC,12/CLRC,6/CFRC,6/00,6/60,18/4
  348. VFD 12/0LRR,12/CLRC,6/CFRR,6/00,6/60,18/4
  349. VFD 12/0LRT,12/CLRT,6/0001,6/43,6/01,18/2
  350. VFD 12/0LS,012/CLSP,6/CFOU,6/00,6/24,18/1
  351. VFD 12/0LSR,12/CLSR,6/CFCT,6/12,6/06,18/TSRQ
  352. VFD 12/0LSS,12/CLSS,6/CFSS,6/48,6/06,18/TSUB
  353. VFD 12/0LUC,12/CLUC,6/CFCW,6/00,6/60,18/4
  354. VFD 12/0LUN,12/CLUN,6/CFOU,6/18,6/42,18/0
  355. VFD 12/0LUP,12/CLUP,6/0001,6/45,6/01,18/2
  356. VFD 12/0LXD,12/CLXD,6/CFNF,6/0,6/18,18/-PXD
  357. VFD 12/0LXT,12/CLXT,6/CFNF,6/0,6/18,18/-PXT
  358. VFD 60/0
  359. TBAC SPACE 4,10
  360. ** TBAC - TABLE OF ALTERNATE CATLIST PERMISSIONS.
  361. *
  362. *T 42/PERMISSION,18/CODE
  363.  
  364.  
  365. TBAC BSS 0
  366. VFD 42/0LN,18/ACNO ALTERNATE CATLIST NOT PERMITTED
  367. VFD 42/0LY,18/ACYS ALTERNATE CATLIST PERMITTED
  368. VFD 60/0
  369. TBRQ SPACE 4,10
  370. ** TBRQ - TABLE OF BACKUP REQUIREMENT TYPES.
  371. *
  372. *T 42/REQUIREMENT,18/CODE
  373.  
  374.  
  375. TBRQ BSS 0
  376. VFD 42/0LN,018/BRNO NO BACKUP REQUIRED
  377. VFD 42/0LY,018/BRAL BACKUP ALWAYS REQUIRED
  378. VFD 42/0LMD,18/BRMD MEDIA DEPENDENT
  379. VFD 60/0
  380. TCAT SPACE 4,10
  381. ** TCAT - TABLE OF PERMANENT FILE CATEGORY TYPES.
  382. *
  383. *T 42/CATEGORY,18/CODE
  384.  
  385.  
  386. TCAT BSS 0
  387. VFD 42/0LPRIVATE,18/FCPR+40B PRIVATE
  388. VFD 42/0LSPRIV,0018/FCSP+40B SEMI-PRIVATE
  389. VFD 42/0LPUBLIC,018/FCPB+40B PUBLIC
  390. VFD 42/0LP,00000018/FCPR+40B PRIVATE
  391. VFD 42/0LS,00000018/FCSP+40B SEMI-PRIVATE
  392. VFD 42/0LPU,0000018/FCPB+40B PUBLIC
  393. VFD 60/0
  394. TMOD SPACE 4,10
  395. ** TMOD - TABLE OF PERMANENT FILE PERMISSION TYPES.
  396. *
  397. *T 42/ACCESS,18/CODE
  398.  
  399.  
  400. TMOD BSS 0
  401. VFD 42/0LWRITE,0018/PTWR+40B WRITE
  402. VFD 42/0LREAD,00018/PTRD+40B READ
  403. VFD 42/0LAPPEND,018/PTAP+40B APPEND
  404. VFD 42/0LEXECUTE,18/PTEX+40B EXECUTE
  405. VFD 42/0LNULL,00018/PTNU+40B NULL
  406. VFD 42/0LMODIFY,018/PTMD+40B MODIFY
  407. VFD 42/0LREADMD,018/PTRM+40B READ ALLOW MODIFY
  408. VFD 42/0LREADAP,018/PTRA+40B READ ALLOW APPEND
  409. VFD 42/0LUPDATE,018/PTUP+40B UPDATE
  410. VFD 42/0LREADUP,018/PTRU+40B READ ALLOW UPDATE
  411. VFD 42/0LW,00000018/PTWR+40B WRITE
  412. VFD 42/0LR,00000018/PTRD+40B READ
  413. VFD 42/0LA,00000018/PTAP+40B APPEND
  414. VFD 42/0LE,00000018/PTEX+40B EXECUTE
  415. VFD 42/0LN,00000018/PTNU+40B NULL
  416. VFD 42/0LM,00000018/PTMD+40B MODIFY
  417. VFD 42/0LRM,0000018/PTRM+40B READ ALLOW MODIFY
  418. VFD 42/0LRA,0000018/PTRA+40B READ ALLOW APPEND
  419. VFD 42/0LU,00000018/PTUP+40B UPDATE
  420. VFD 42/0LRU,0000018/PTRU+40B READ ALLOW UPDATE
  421. VFD 60/0
  422. TPRS SPACE 4,10
  423. ** TPRS - TABLE OF PREFERRED RESIDENCE TYPES.
  424. *
  425. *T 42/PREFERENCE,18/CODE
  426.  
  427.  
  428. TPRS BSS 0
  429. VFD 42/0LL,18/RSLK LOCKED TO DISK RESIDENCE
  430. VFD 42/0LD,18/RSDS DISK RESIDENCE PREFERRED
  431. VFD 42/0LM,18/RSMS CARTRIDGE ALTERNATE STORAGE PREFERRED
  432. VFD 42/0LN,18/RSNP NO PREFERENCE
  433. VFD 42/0LT,18/RSTP TAPE ALTERNATE STORAGE PREFERRED
  434. VFD 60/0
  435. TRES SPACE 4,10
  436. ** TRES - TABLE OF PERMANENCE FILE RESIDENCE TYPES.
  437. *
  438. *T 42/DEVICE,18/CODE
  439.  
  440. TBLM SPACE 4,10
  441. ** TBLM - DEFINE MACRO TO PRODUCE *TRES* TABLE.
  442.  
  443. PURGMAC TBLM
  444. TBLM MACRO EQ
  445. VFD 42/0L_EQ,18/2R_EQ
  446. TBLM ENDM
  447.  
  448.  
  449. LIST G
  450. TRES TBL "MSEQ"
  451. VFD 60/0
  452. LIST -G
  453. TSRQ SPACE 4,10
  454. ** TSRQ - TABLE OF SPECIAL REQUEST TYPES.
  455. *
  456. *T 42/REQUEST,18/CODE
  457.  
  458.  
  459. TSRQ BSS 0
  460. VFD 42/0LCE,18/SRCE CLEAR ERROR STATUS
  461. VFD 42/0LMR,18/SRMR FORCE MASTER DEVICE RESIDENCY
  462. VFD 42/0LIE,18/SRIE IGNORE ERROR IDLE STATUS (*SSJ=*)
  463. VFD 42/0LCP,18/SRCP RESET CHARGE/PROJECT NUMBERS
  464. VFD 42/0LFA,18/SRFA FORCE FAST ATTACH OF FILE (*SSJ=*)
  465. VFD 42/0LNF,18/SRNF FORCE NON-FAST ATTACH OF FILE
  466. VFD 60/0
  467. TSUB SPACE 4,10
  468. ** TSUB - TABLE OF PERMANENT FILE SUBSYSTEM TYPES.
  469. *
  470. *T 42/SUBSYSTEM,18/CODE
  471.  
  472.  
  473. TSUB BSS 0
  474. VFD 42/0LNULL,00018/40B+0 NULL
  475. VFD 42/0LBASIC,0018/40B+1 BASIC
  476. VFD 42/0LFORTRAN,18/40B+2 FTN5
  477. VFD 42/0LFTNTS,0018/40B+3 FTNTS
  478. VFD 42/0LEXECUTE,18/40B+4 EXECUTE
  479. VFD 42/0LBATCH,0018/40B+5 BATCH
  480. VFD 60/0
  481. SPACE 4,10
  482. * CONSTANTS AND DATA STORAGE.
  483.  
  484.  
  485. FET FILEB FET,CFLM,(FET=CFLM),(EPR)
  486. XRCW BSS 1 ADDRESS TO RETURN USER CONTROL WORD
  487. XRRC BSS 1 ADDRESS TO RETURN INTEGER ERROR CODE
  488. XRRR BSS 1 ADDRESS TO RETURN REAL ERROR CODE
  489. XRNA BSS 1 *NA* FLAG
  490. XRIU BSS 1 IGNORE PARAMETERS RETURN ADDRESS
  491. XREL BSS 1 ERROR MESSAGE LENGTH
  492. XREM BSS 1 *EM* PARAMETER VALUE DESCRIPTOR
  493. PFEC BSS 1 ADDRESS OF *PFM* ERROR CODE MESSAGES
  494. PFMA BSS 4 ADDRESS TO RETURN *PFM* ERROR MESSAGES
  495. NONE BSS 1 UNUSED *NONE* PARAMETER VALUE
  496. ICTR BSS 1 IGNORED PARAMETERS COUNTER
  497. EADR BSS 1 ERROR ADDRESS FOR IGNORED PARAMETER
  498. CFCW EQU XRCW-FET
  499. CFRC EQU XRRC-FET
  500. CFRR EQU XRRR-FET
  501. CFNA EQU XRNA-FET
  502. CFIU EQU XRIU-FET
  503. CFEL EQU XREL-FET
  504. CFEM EQU XREM-FET
  505. CFNO EQU NONE-FET
  506. ERRNZ PTWR CODE ASSUMES *PTWR* EQUALS ZERO
  507. ERRNZ FCPR CODE ASSUMES *FCPR* EQUALS ZERO
  508. FET1 BSS 0 DEFAULT VALUES FOR FET+1
  509. VFD 15/0,1/1 ERROR PROCESSING BIT
  510. VFD 20/0,6/CFLM-5 FET LENGTH
  511. VFD 18/FET FIRST
  512.  
  513. APLIST VFD 42/0,18/*+1S17 ADDRESS OF THE FORMAL PARAMETER LIST
  514. TEMPA0 VFD 42/0,18/*+1S17 CONTENTS OF A0 FROM CALLING ROUTINE
  515. ACCESS CON 0 CURRENT PERMANENT FILE REQUEST CODE
  516. TEVENT CON 0 ROLLOUT ON TIME/EVENT DEPENDENCIES
  517. OPTION CON 0 CURRENT OPTIONS PF *FET* CONFIGURATION
  518. BLANKS DATA 10R
  519. XDATE BSS 1 CURRENT DATE
  520. XFLAG CON 0 *XD* AND *XT* PARAMETER FLAG
  521. PF TITLE MAIN ROUTINE.
  522. PF SPACE 4,10
  523. ** PF - MAIN ROUTINE FOR *NOS* PERMANENT FILE ACCESS.
  524. *
  525. * ENTRY (A1) = FWA OF FORMAL PARAMETER LIST.
  526. *
  527. * USES ALL (A0 PRESERVED).
  528. *
  529. * CALLS COD= CONVERT BINARY TO OCTAL DISPLAY.
  530. * DXB= CONVERT DISPLAY CODE TO BINARY.
  531. * GETFIT. GET PROGRAM *FIT* ADDRESS.
  532. * LCP LOAD CHARACTER PARAMETER.
  533. * ZFN ZERO FILE NAME.
  534. *
  535. * MACROS ABORT, MESSAGE, ROLLOUT, SYSTEM.
  536.  
  537.  
  538.  
  539. TRACE VFD 42/0LPF,18/PF
  540. PF EQ *+1S17 ENTRY/EXIT
  541.  
  542. ** PRE - PRESET INITIAL CONDITIONS AND STORAGE AREAS.
  543.  
  544. PRE SB1 1 INITIALIZE (B1) AS ONE
  545. SX6 A0
  546. SX7 A1
  547. SA6 TEMPA0 PRESERVE (A0) FOR EXIT
  548. SA7 APLIST
  549. SA0 A1 SET FWA APLIST POINTER
  550. BX6 X6-X6
  551. SA6 XFLAG INITIALIZE *XD*/*XT* FLAG
  552. SA6 ICTR INITIALIZE UNUSED PARAMETER COUNTER
  553. SA6 XRIU INITIALIZE *IUP* FLAG
  554. SA6 XRRC INITIALIZE *RC* PARAMETER
  555. SA6 XRRR INITIALIZE *RRC* PARAMETER
  556. SA6 XREL INITIALIZE *EL* PARAMETER
  557. SA6 FET+CFSN
  558. SB2 FET+2
  559. SB3 NONE
  560. PRE1 SA6 B2 CLEAR *FET*/MESSAGE AREA
  561. SB2 B2+B1
  562. NE B2,B3,PRE1 IF NOT COMPLETLY CLEAR
  563. SA1 BLANKS
  564. BX6 X1
  565. SA6 PFMA BLANK FILL ERROR MESSAGE AREA
  566. SA6 A6+B1
  567. SA6 A6+B1
  568. SA6 A6+B1
  569. SX6 PFMA
  570. SA6 FET+CFPW SET ADDRESS OF MESSAGE
  571. SA1 FET1 RESET SECOND WORD OF FET
  572. BX6 X1
  573. SA6 FET+1
  574.  
  575. ** REQ - PROCESS PERMANENT FILE REQUEST.
  576.  
  577. REQ SA1 A0
  578. RJ LCP CHECK *PFM* REQUEST TYPE
  579. RJ ZFN ZERO FILL ALPHANUMERIC
  580. MX0 42
  581. BX1 X6
  582. SA2 TREQ
  583. REQ1 ZR X2,PCE IF NOT A VALID REQUEST
  584. BX3 X2-X1
  585. BX3 X0*X3
  586. BX6 -X0*X2
  587. SA2 A2+B1
  588. NZ X3,REQ1 IF NOT THIS TABLE ENTRY
  589. SA6 ACCESS
  590. SX1 X6-CCAT
  591. ZR X1,REQ2 IF *ATTACH* REQUEST
  592. SX1 X6-CCDF
  593. ZR X1,REQ2 IF *DEFINE* REQUEST
  594. SX1 X6-CCSV
  595. ZR X1,REQ2 IF *SAVE* REQUEST
  596. SX1 X6-CCPM
  597. ZR X1,REQ2 IF *PERMIT* REQUEST
  598. SX1 X6-CCRP
  599. NZ X1,REQ3 IF NOT *REPLACE* REQUEST
  600. REQ2 SX7 PTRD USE DEFAULT OF READ MODE
  601. SA7 FET+CFMD
  602. REQ3 SX1 X6-CCPG
  603. ZR X1,PFN IF *PURGE* REQUEST
  604. SX1 X6-CCPM
  605. ZR X1,PFN IF *PERMIT* REQUEST
  606. SX1 X6-CCCG
  607. NZ X1,LFN IF NOT *CHANGE* REQUEST
  608. MX6 42 DO NOT CHANGE PASSWORD UNLESS SPECIFIED
  609. SA1 FET+CFPW
  610. BX6 X6+X1
  611. SA6 A1
  612. SA0 A0+B1
  613. SA1 A0
  614. ZR X1,PCE IF NO NEW NAME DECLARED
  615. RJ LCP
  616. RJ ZFN ZERO FILL NEW FILE NAME
  617. SA6 FET+CFNF
  618. EQ PFN PROCESS PERMANENT FILE NAME PARAMETER
  619.  
  620. ** LFN - PROCESS LOCAL FILE NAME/UNIT DESIGNATOR.
  621.  
  622. LFN SA0 A0+B1 GET LOCAL FILE PARAMETER
  623. SA1 A0
  624. ZR X1,PCE IF LFN WAS NOT DECLARED
  625. RJ LCP
  626. ZR X1,PFN IF LFN NOT PROGRAM FILE
  627. MX0 42
  628. BX2 X0*X1
  629. NZ X2,LFN1 IF NAME DESIGNATED FILE
  630. SA1 A0
  631. MX0 1
  632. BX1 X0+X1
  633. + RJ =YGETFIT. GET PROGRAM *FIT* ADDRESS
  634. - VFD 12/0,18/TRACE
  635. SA1 X1
  636. MX0 42
  637. BX1 X0*X1
  638. LFN1 RJ ZFN DELETE BLANKS FROM NAME
  639. SX1 B1
  640. BX7 X6+X1
  641. SA7 FET SET *FET* STATUS NOT BUSY
  642.  
  643. ** PFN - PROCESS PERMANENT FILE NAME PARAMETER.
  644.  
  645. PFN SA0 A0+B1 GET PERMANENT FILE NAME
  646. SA1 A0
  647. ZR X1,PRO IF NO PFN SPECIFICATION
  648. RJ LCP
  649. RJ ZFN ZERO FILL ALPHANUMERIC
  650. SA1 FET+CFPN
  651. BX7 X6+X1
  652. SA7 A1
  653.  
  654. ** OPT - PROCESS OPTIONAL PARAMETERS.
  655.  
  656. OPT SA0 A0+B1
  657. SA1 A0
  658. ZR X1,PRO IF END OF USER OPTIONS
  659. RJ LCP
  660. ZR X1,PRO IF END OF USER OPTIONS
  661. RJ ZFN
  662. MX0 12
  663. SA2 TOPT-1
  664. OPT1 SA2 A2+B1
  665. ZR X2,PCE IF NOT A VALID OPTION
  666. BX3 X6-X2
  667. BX3 X0*X3
  668. NZ X3,OPT1 IF NO TABLE COMPARISION
  669. SB2 X2
  670. BX6 X2
  671. SA6 OPTION
  672. SA3 ACCESS
  673. SB3 X3-24D
  674. LX3 X2,-B3
  675. PL X3,CIP IF NOT VALID KEYWORD
  676. SA0 A0+B1
  677. SA1 A0
  678. ZR X1,PCE IF NOT PROPERLY PAIRED
  679. SB4 2
  680. NE B2,B4,OPT2 IF KEYWORD DATA NOT IGNORED
  681. SX6 B1
  682. EQ OPT4 IGNORE KEYWORD DATA
  683.  
  684. OPT2 BX6 X1
  685. SB4 B4+B4
  686. EQ B2,B4,OPT4 IF RETURN CODE ADDRESS
  687. SB4 B4-B1
  688. EQ B2,B4,OPT7 IF OPTION IS TYPE 3
  689. RJ LCP
  690. RJ ZFN ZERO FILL ALPHANUMERIC
  691. NG B2,OPT2.1 IF SPECIAL PROCESSOR REQUIRED
  692. ZR B2,OPT4 IF KEYWORD DATA OPTION
  693. NE B1,B2,OPT3 IF TABLE SEARCH OPTION
  694. SB7 B1
  695. BX5 X6
  696. RJ =XDXB= DISPLAY CODE TO BINARY
  697. EQ OPT4 SET FIELD IN *FET*
  698.  
  699. OPT2.1 SB2 -B2
  700. JP B2 JUMP TO SPECIAL COMMAND PROCESSOR
  701.  
  702. OPT3 SA1 B2
  703. MX0 42
  704. ZR X1,PCE IF NOT PROPERLY PAIRED
  705. BX3 X6-X1
  706. BX3 X0*X3
  707. SB2 B2+B1
  708. NZ X3,OPT3 IF NOT THIS TABLE ITEM
  709. SX6 X1
  710. OPT4 SA2 OPTION *FET* CONFIGURATION DATA
  711. SB2 X2
  712. AX2 18
  713. MX0 -6
  714. BX3 -X0*X2
  715. SB3 X3 (B3) = LENGTH OF FIELD
  716. AX2 6
  717. BX3 -X0*X2
  718. SB4 X3 (B4) = LOWER BIT OF FIELD
  719. AX2 6
  720. BX2 -X0*X2
  721. SA2 FET+X2
  722. NZ B2,OPT5 IF NOT LEFT JUSTIFIED
  723. LX6 B3,X6
  724. OPT5 SB2 B3-59 MERGE OPTION IN FIELD
  725. MX4 0
  726. EQ B1,B2,OPT6 IF LENGTH .EQ. 60
  727. MX4 1
  728. AX4 -B2 GENERATE MASK
  729. OPT6 LX4 B4
  730. LX6 B4
  731. BX2 X4*X2
  732. BX6 -X4*X6
  733. BX6 X2+X6
  734. SA6 A2
  735. EQ OPT CHECK FOR NEXT OPTION
  736.  
  737. OPT7 SA2 OPTION GET FET OFFSET
  738. AX2 30
  739. MX0 -6
  740. BX2 -X0*X2
  741. SA6 FET+X2 STORE VARIABLE DESCRIPTOR WORD
  742. EQ OPT CHECK FOR NEXT OPTION
  743.  
  744. WFA ROLLOUT TEVENT WAIT FOR FILE AVAILABILITY
  745.  
  746. ** PRO - PROCESS THE PERMANENT FILE REQUEST.
  747.  
  748. PRO SA1 ICTR CHECK UNUSED PARAMETERS COUNT
  749. ZR X1,PRO0 IF NO UNUSED PARAMETERS
  750. SA1 XRIU
  751. NZ X1,PRO0 IF IGNORING UNUSED PARAMETERS
  752. SA1 EADR
  753. EQ PCE PROCESS INVALID PARAMETER ERROR
  754.  
  755. PRO0 SA2 FET+CFSN
  756. SA3 FET+CFPN
  757. MX0 42
  758. BX2 X0*X2
  759. SA1 ACCESS FETCH REQUEST FUNCTION
  760. NZ X2,PRO1 IF LOCAL NAME DECLARED
  761. BX6 X0*X3 ASSUME *LFN* = *PFN*
  762. SA6 A2
  763. PRO1 SX2 X1-CCCG
  764. ZR X2,PRO1.1 IF *CHANGE* COMMAND
  765. SX2 X1-CCPM
  766. ZR X2,PRO1.1 IF *PERMIT* COMMAND
  767. SA2 FET+CFNF
  768. MX6 -18
  769. BX2 -X6*X2 EXTRACT EXPIRATION DATE
  770. ZR X2,PRO1.1 IF NO EXPIRATION DATE
  771. SA2 FET+CFPW
  772. BX2 X6*X2 EXTRACT PASSWORD
  773. ZR X2,PCE IF EXPIRATION DATE BUT NO PASSWORD
  774. PRO1.1 SA2 XRCW CHECK FOR *UCW* OPTION
  775. ZR X2,PRO3 IF NO USER CONTROL WORD
  776. SX6 X1-CCSV
  777. ZR X6,PRO2 IF SAVE *UCW* FUNCTION
  778. SX6 X1-CCDF
  779. NZ X6,PRO3 IF NOT *DEFINE* FUNCTION
  780. PRO2 SA3 X2
  781. SA6 A2 CLEAR ADDRESS OF *UCW*
  782. MX6 1
  783. BX6 X6+X3
  784. SA6 FET+CFUC
  785. PRO3 LX1 6
  786. SYSTEM PFM,RECALL,FET,X1
  787. SA1 XRCW
  788. ZR X1,END IF NO USER CONTROL WORD
  789. SA2 FET+CFUC
  790. BX6 X2
  791. NG X1,PRO4 IF ECS/LCM ADDRESS
  792. SA6 X1
  793. EQ END NOT ECS/LCM ADDRESS
  794.  
  795. PRO4 WX6 X1
  796.  
  797. ** END - PROCESS ERRORS AND/OR EXIT PF ROUTINE.
  798.  
  799. END SA1 FET CHECK REQUEST COMPLETION
  800. LX1 60-10
  801. MX0 -8
  802. BX6 -X0*X1
  803. END0 SB2 X6-/ERRMSG/FBS
  804. SA2 XRNA
  805. NZ B2,END1 IF DIRECT FILE NOT BUSY
  806. ZR X2,WFA IF NO *NA* OPTION PRESENT
  807. END1 SA3 XRRC
  808. ZR X3,END3 IF NO *RC* RETURN ADDRESS
  809. NG X3,END2 IF ECS/LCM ADDRESS
  810. SA6 X3
  811. EQ END3 NOT ECS/LCM ADDRESS
  812.  
  813. END2 WX6 X3
  814. END3 SA4 XRRR
  815. ZR X4,END5 IF NO *RRC* RETURN ADDRESS
  816. PX6 X6
  817. NX6 X6
  818. NG X4,END4 IF ECS/LCM ADDRESS
  819. SA6 X4
  820. EQ END5 NOT ECS/LCM ADDRESS
  821.  
  822. END4 WX6 X4
  823. END5 ZR X6,END8 IF FUNCTION SUCCESSFUL
  824. BX7 X3+X4
  825. NG X6,END6 IF DETECTED CALL ERRORS
  826. NZ X7,END8 IF RETURN CODES PRESENT
  827. BX1 X6
  828. RJ =XCOD= BINARY TO OCTAL DISPLAY
  829. SA1 PCEA
  830. MX0 42
  831. BX1 X0*X1
  832. BX6 -X0*X6
  833. BX6 X1+X6
  834. SA6 PFEC
  835. SA1 A6
  836. END6 MESSAGE A1,3,R USER-S DAYFILE MESSAGE
  837. SA1 XRNA
  838. NZ X1,END8 IF *NA* SPECIFIED
  839. SA1 XREM
  840. ZR X1,END7 IF *EM* PARAMETER NOT SPECIFIED
  841. RJ MCM MOVE *PFM* ERROR MESSAGE INTO *EM*
  842. END7 ABORT
  843.  
  844. END8 SA1 XRIU CHECK *IUP*
  845. ZR X1,END9 IF NOT IGNORING UNUSED PARAMETERS
  846. SA2 ICTR RETURN IGNORED PARAMETER COUNT
  847. BX6 X2
  848. SA6 X1
  849. END9 SA1 XREM
  850. ZR X1,END10 IF *EM* NOT SPECIFIED
  851. RJ MCM MOVE *PFM* ERROR MESSAGE INTO *EM*
  852. END10 SA2 TEMPA0 RESTORE (A0) ON ENTRY
  853. SA0 X2
  854. EQ PF EXIT
  855. TITLE SUBROUTINES.
  856. CIP SPACE 4,15
  857. ** CIP - COUNT IGNORED PARAMETERS.
  858. *
  859. * ENTRY (X1) = PARAMETER IGNORED (IN DISPLAY CODE).
  860. * (A0) = ADDRESS OF CURRENT PARAMETER.
  861. *
  862. * EXIT (X1) = NEXT PARAMETER VALUE.
  863. * (ICTR) INCREMENTED.
  864. * TO *OPT* TO CHECK FOR NEXT OPTION.
  865. * TO *PCE* IF END OF PARAMETER LIST.
  866. *
  867. * USES X - 1, 6.
  868. * A - 0, 1, 6.
  869.  
  870.  
  871. CIP BSS 0 ENTRY
  872. BX6 X1 SAVE PARAMETER
  873. SA6 EADR
  874. SA1 ICTR REPLACE NEW VALUE
  875. SX6 X1+B1 INCREMENT COUNTER
  876. SA6 A1
  877. SA0 A0+B1
  878. SA1 A0 GET NEXT PARAMETER VALUE
  879. ZR X1,PCE IF AT END OF PARAMETER LIST
  880. EQ OPT CHECK FOR NEXT OPTION
  881. LCP SPACE 4,10
  882. ** LCP - LOAD CHARACTER PARAMETER.
  883. *
  884. * ENTRY (X1) = PARAMETER ADDRESS.
  885. * (B1) = 1.
  886. *
  887. * EXIT (X1) = PARAMETER VALUE. IF THE PARAMETER IS *FTN5*
  888. * TYPE CHARACTER DATA, IT IS LEFT JUSTIFIED WITH
  889. * ZERO FILL.
  890. *
  891. * USES X - 0, 1, 2, 3.
  892. * A - 1, 3.
  893. * B - 4, 5, 6.
  894.  
  895. LCP EQ *+1S17 ENTRY/EXIT
  896. LX1 30 EXTRACT CHARACTER LENGTH
  897. SB4 X1
  898. ZR B4,LCP6 IF NOT *FTN5* CHARACTER DATA
  899. LX1 6 EXTRACT CHARACTER POSITION
  900. MX0 -6
  901. BX3 -X0*X1
  902. LX1 24 GET FIRST WORD OF PARAMETER
  903. MX0 -25
  904. LX0 -1
  905. BX1 -X0*X1
  906. NG X1,LCP1 IF ECS/LCM ADDRESS
  907. SA2 X1
  908. EQ LCP2 NOT ECS/LCM ADDRESS
  909.  
  910. LCP1 RX2 X1
  911. LCP2 SB6 X3 (B6) = CHARACTER POSITION
  912. SX0 B1 INCREMENT PARAMETER ADDRESS
  913. IX1 X1+X0
  914. MX0 0
  915. ZR B6,LCP3 IF POSITION .EQ. ZERO
  916. SB5 B6+B6 CALCULATE BIT POSITION OF STRING
  917. SB6 B5+B5
  918. SB6 B5+B6 (B6) = BIT POSITION
  919. MX0 1 EXTRACT STRING FROM FIRST WORD
  920. SB5 B6-B1
  921. AX0 B5
  922. BX2 -X0*X2
  923. LX2 B6
  924. LCP3 NG X1,LCP4 IF ECS/LCM ADDRESS
  925. SA1 X1
  926. EQ LCP5 NOT ECS/LCM ADDRESS
  927.  
  928. LCP4 RX1 X1
  929. LCP5 BX1 X0*X1 EXTRACT STRING FROM SECOND WORD
  930. LX1 B6
  931. BX1 X1+X2 MERGE STRINGS
  932. SB5 10
  933. GE B4,B5,LCP IF LENGTH .GE. 10, RETURN
  934. SB5 B4+B4 CALCULATE BIT LENGTH OF STRING
  935. SB6 B5+B5
  936. SB6 B5+B6
  937. SB6 B6-B1 (B6) = BIT LENGTH - 1
  938. MX2 1 ZERO FILL PARAMETER
  939. AX2 B6
  940. BX1 X2*X1
  941. EQ LCP RETURN
  942.  
  943. LCP6 LX1 -30
  944. NG X1,LCP7 IF ECS/LCM ADDRESS
  945. SA1 X1
  946. EQ LCP RETURN
  947.  
  948. LCP7 RX1 X1
  949. EQ LCP RETURN
  950.  
  951. MCM SPACE 4,15
  952. ** MCM - MOVE CHARACTER MESSAGE.
  953. *
  954. * ENTRY (X1) = FTN5 DESCRIPTOR OF VARIABLE TO RECEIVE MESSAGE.
  955. * BITS 47-30 = VARIABLE LENGTH, IN CHARACTERS.
  956. * VALUE IS ZERO IF NOT CHARACTER VARIABLE.
  957. * BITS 27-24 = BEGINNING CHARACTER POSITION,
  958. * 0 BEING LEFTMOST CHARACTER.
  959. * BITS 23-0 = FIRST WORD ADDRESS OF VARIABLE.
  960. *
  961. *
  962. * EXIT MESSAGE MOVED TO VARIABLE.
  963. *
  964. * USES X - ALL.
  965. * A - 2, 3, 4, 6.
  966. * B - 5, 6, 7.
  967.  
  968.  
  969. MCM EQ *+1S17 ENTRY/EXIT
  970. SA2 X1 VALUE OF VARIABLE
  971. LX1 30
  972. SB5 X1 CHARACTER LENGTH OF VARIABLE
  973. GT B5,B0,MCM1 IF CHARACTER LENGTH PRESENT
  974. SA3 XREL GET CHARACTER LENGTH (*EL* PARAMETER)
  975. SX0 B0 SET BEGINNING CHARACTER POSITION (BCP)
  976. SB5 X3
  977. NZ X3,MCM2 IF CHARACTER LENGTH SPECIFIED
  978. SB5 10 SET DEFAULT CHARACTER LENGTH
  979. EQ MCM2 CONTINUE
  980.  
  981. MCM1 LX1 6
  982. MX0 -6
  983. BX0 -X0*X1 BEGINNING CHARACTER POSITION
  984. MCM2 SA3 PFMA GET *PFM* MESSAGE
  985. SA1 BLANKS
  986. BX1 X1-X3
  987. ZR X1,MCM IF BLANK MESSAGE
  988. SB6 40 MAXIMUM MESSAGE LENGTH
  989. GT B6,B5,MCM3 IF NOT TOO LONG
  990. SB5 B6 RESET LENGTH TO MAXIMUM
  991. MCM3 SB6 X0 CALCULATE BIT POSITION (6*BCP)
  992. SB7 B6+B6
  993. SB6 B7+B7
  994. SB6 B6+B7 BIT POSITON
  995. SB7 60
  996. SB6 B7-B6 SHIFT COUNT FOR MASK
  997. SB7 B0 BCP FOR *PFM* MESSAGE
  998. MX1 6
  999. LX0 B6,X1 POSITION MASK FOR DESTINATION WORD
  1000. BX6 X2 ORIGINAL VALUE OF VARIABLE
  1001. SA4 BLANKS
  1002. BX4 X4*X1 SET BLANK CHARACTER
  1003. MCM4 BX5 X1*X3 GET NEW CHARACTER
  1004. BX7 X5
  1005. NZ X7,MCM5 IF NOT 00 CHARACTER
  1006. BX5 X4 REPLACE WITH BLANK
  1007. MCM5 BX6 -X0*X6 REMOVE OLD CHARACTER
  1008. LX5 B6,X5 POSITION SOURCE CHARACTER
  1009. BX6 X5+X6 ADD CHARACTER TO DESTINATION WORD
  1010. SB5 B5-B1
  1011. ZR B5,MCM9 IF DONE
  1012. LX1 -6
  1013. LX4 -6 POSITION MASKS FOR NEXT CHARACTER
  1014. NG X1,MCM7 IF END OF SOURCE WORD
  1015. MCM6 LX0 -6
  1016. NG X0,MCM8 IF END OF DESTINATION WORD
  1017. EQ MCM4 CONTINUE WITH NEXT CHARACTER
  1018.  
  1019. MCM7 SA3 A3+B1 FETCH NEXT SOURCE WORD
  1020. EQ MCM6 CHECK DESTINATION WORD
  1021.  
  1022. MCM8 SA6 A2 REPLACE UPDATED DESTINATION WORD
  1023. SA2 A2+B1 GET NEXT DESTINATION WORD
  1024. BX6 X2
  1025. EQ MCM4 CONTINUE WITH NEXT CHARACTER
  1026.  
  1027. MCM9 SA6 A2 REPLACE LAST DESTINATION WORD
  1028. EQ MCM RETURN
  1029. PCE SPACE 4,10
  1030. ** PCE - PROCESS CALL ERROR.
  1031. *
  1032. * ENTRY (A0) = ADDRESS OF CURRENT POSITION IN PARAMETER
  1033. * LIST.
  1034. * (X1) = 0, PARAMETER NAME NOT PROVIDED.
  1035. * = NONZERO VALUE, ASSUMED TO BE THE CURRENT
  1036. * PARAMETER IN DISPLAY CODE.
  1037. *
  1038. * EXIT (X6) = -1.
  1039. * (A1) = ADDRESS OF ERROR MESSAGE.
  1040. *
  1041. * USES X - 1, 6, 7.
  1042. * A - 1, 7.
  1043. * B - NONE.
  1044.  
  1045.  
  1046. PCE NZ X1,PCE2 IF PARAMETER NAME PROVIDED
  1047. SA1 A0
  1048. ZR X1,PCE1 IF END OF PARAMETER LIST
  1049. SA1 X1
  1050. NZ X1,PCE2 IF NONZERO PARAMETER
  1051. PCE1 SA1 PCEB
  1052. PCE2 MX6 59
  1053. BX7 X1
  1054. SA7 PCEB
  1055. SA1 PCEA
  1056. EQ END0 PROCESS USER CALL ERROR
  1057.  
  1058. PCEA DATA 30H PF NO.-1 INVALID PARAMETER -
  1059. PCEB DATA 10H UNPAIRED.
  1060. DATA 0
  1061. PRD SPACE 4,15
  1062. ** PRD - PROCESS RESIDENCE DEFINITION.
  1063. *
  1064. * ENTRY (X6) = *R* PARAMETER.
  1065. *
  1066. * EXIT TO *OPT4*.
  1067. * (X6) = VALIDATED PARAMETER.
  1068. * UNIT COUNT (IF SPECIFIED) SET INTO FET+CFPK.
  1069. *
  1070. * ERROR TO *PCE* IF ERROR ENCOUNTERED.
  1071. *
  1072. * USES X - 0, 2, 3, 6, 7.
  1073. * A - 2, 3, 7.
  1074.  
  1075.  
  1076. PRD BSS 0 ENTRY
  1077. SA2 TRES-1 TABLE OF DEVICE TYPES
  1078. MX0 -6 CONVERT UNIT COUNT
  1079. LX0 42
  1080. BX3 -X0*X6
  1081. ZR X3,PRD1 IF NO UNIT COUNT SPECIFIED
  1082. LX0 -6
  1083. BX2 -X0*X6
  1084. NZ X2,PCE IF UNIT COUNT TOO LONG
  1085. LX3 -42
  1086. SX2 X3-1R1
  1087. NG X2,PCE IF INCORRECT UNIT COUNT
  1088. SX3 X3-1R9
  1089. PL X3,PCE IF INCORRECT UNIT COUNT
  1090. SA3 FET+CFPK SET UNIT COUNT INTO FET
  1091. SX2 X2+B1
  1092. MX0 42
  1093. BX3 X0*X3
  1094. BX7 X3+X2
  1095. SA7 A3+
  1096.  
  1097. * SEARCH FOR DEVICE TYPE IN TABLE.
  1098.  
  1099. PRD1 SA2 A2+B1
  1100. MX0 12
  1101. ZR X2,PCE IF DEVICE TYPE NOT FOUND IN TABLE
  1102. BX3 X6-X2
  1103. BX3 X0*X3
  1104. NZ X3,PRD1 IF NOT THIS TABLE ITEM
  1105. SX6 X2
  1106. EQ OPT4 PUT ENTRY INTO FET
  1107. PXD SPACE 4,15
  1108. ** PXD - PROCESS EXPIRATION DATE.
  1109. *
  1110. * ENTRY (X6) = *XD* PARAMETER.
  1111. * (XFLAG) = NON-ZERO IF *XD* OR *XT* ALREADY USED.
  1112. *
  1113. * EXIT TO *OPT4*.
  1114. * (X6) = VALIDATED PARAMETER.
  1115. *
  1116. * ERROR TO *PCE* IF ERROR ENCOUNTERED.
  1117. *
  1118. * USES X - 1, 2, 4, 6, 7.
  1119. * A - 2, 7.
  1120. * B - NONE.
  1121. *
  1122. * CALLS VDT.
  1123. *
  1124. * MACROS NONE.
  1125.  
  1126.  
  1127. PXD BSS 0 ENTRY
  1128. SA2 XFLAG
  1129. NZ X2,PCE IF *XD* OR *XT* ALREADY SPECIFIED
  1130. SX7 B1
  1131. SA7 A2 SET PARAMETER SPECIFIED
  1132. BX1 X6
  1133. LX6 6
  1134. SX4 X6-1R*
  1135. NZ X4,PXD1 IF NOT ASTERISK
  1136. SX6 7777B SET NO EXPIRATION DATE
  1137. EQ OPT4 PUT ENTRY IN FET
  1138.  
  1139. PXD1 SX2 B0
  1140. RJ VDT CONVERT DATE
  1141. NG X1,PXD2 IF DATE BEFORE TODAY
  1142. NG X6,PXD2 IF ERROR IN CONVERSION
  1143. EQ OPT4 PUT ENTRY IN FET
  1144.  
  1145. PXD2 BX1 X1-X1
  1146. EQ PCE PROCESS ERROR
  1147. PXT SPACE 4,20
  1148. ** PXT - PROCESS EXPIRATION TERM.
  1149. *
  1150. * ENTRY (X6) = *XT* PARAMETER.
  1151. * (XFLAG) = NON-ZERO IF *XD* OR *XT* ALREADY USED.
  1152. *
  1153. * EXIT TO *OPT4*.
  1154. * (X6) = VALIDATED *XT* PARAMETER.
  1155. *
  1156. * ERROR TO *PCE* IF ERROR ENCOUNTERED.
  1157. *
  1158. * USES X - 1, 2, 4, 5, 6, 7.
  1159. * A - 2, 7.
  1160. * B - 2, 7.
  1161. *
  1162. * CALLS =XDXB=.
  1163. *
  1164. * MACROS PDATE.
  1165.  
  1166.  
  1167. PXT BSS 0 ENTRY
  1168. SA2 XFLAG
  1169. NZ X2,PCE IF *XD* OR *XT* ALREADY SPECIFIED
  1170. SX7 B1
  1171. SA7 A2 SET PARAMETER SPECIFIED
  1172. BX5 X6
  1173. LX6 6
  1174. SX4 X6-1R*
  1175. NZ X4,PXT1 IF NOT ASTERISK
  1176. SX6 7777B NO EXPIRATION DATE
  1177. EQ OPT4 PUT ENTRY IN FET
  1178.  
  1179. PXT1 SX2 X6-1R0
  1180. NZ X2,PXT2 IF NOT IMMEDIATE EXPIRATION
  1181. PDATE XDATE GET CURRENT DATE
  1182. SA2 XDATE
  1183. AX2 18
  1184. BX6 X2
  1185. EQ OPT4 PUT ENTRY IN FET
  1186.  
  1187. PXT2 SB7 B1
  1188. RJ =XDXB= CONVERT TO BINARY
  1189. NZ X4,PXT3 IF ERROR IN CONVERSION
  1190. SB2 X6-7777B
  1191. GT B2,PXT3 IF EXPIRATION TERM IS TOO LARGE
  1192. EQ OPT4 PUT ENTRY IN FET
  1193.  
  1194. PXT3 BX1 X1-X1
  1195. EQ PCE PROCESS ERROR
  1196. ZFN SPACE 4,10
  1197. ** ZFN - DELETE TRAILING BLANKS FROM WORD.
  1198. *
  1199. * ENTRY (X1) = WORD TO DELETE BLANKS FROM (LEFT JUSTIFIED).
  1200. *
  1201. * EXIT (X6) = WORD WITH TRAILING BLANKS DELETED.
  1202. *
  1203. * USES X - 0, 2, 3, 6.
  1204.  
  1205.  
  1206. ZFN EQ *+1S17 ENTRY/EXIT
  1207. SX0 1R BLANK CHARACTER
  1208. MX2 -6
  1209. BX6 X1
  1210. ZFN1 BX3 -X2*X6
  1211. ZR X3,ZFN2 IF ZERO CHARACTER
  1212. BX3 X3-X0 CHECK FOR BLANK
  1213. NZ X3,ZFN IF NOT *00* OR * *
  1214. ZFN2 BX6 X2*X6 CLEAR BLANK
  1215. LX2 6
  1216. LX0 6
  1217. NZ X6,ZFN1 IF NOT END OF WORD
  1218. EQ ZFN RETURN
  1219. SPACE 4,10
  1220. * COMMON DECKS.
  1221.  
  1222. *CALL COMCDXB
  1223. *CALL COMCVDT
  1224. SPACE 4,10
  1225. END
  1226. IDENT GETPAGE
  1227. ENTRY GETPAGE
  1228. SYSCOM B1
  1229. TITLE GETPAGE - GET PAGE PARAMETERS.
  1230. *COMMENT CPUREL - GET PAGE PARAMETERS.
  1231. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  1232. *CALL COMCMAC
  1233. GETPAGE SPACE 4,10
  1234. *** GETPAGE - GET PAGE PARAMETERS.
  1235. *
  1236. * A. SKJOLDEBRAND. 82/11/21.
  1237. SPACE 4,10
  1238. *** *GETPAGE* PROVIDES AN INTERFACE TO ALLOW GETTING THE
  1239. * JOB AND SYSTEM PAGE PARAMETERS FOR PROGRAMS
  1240. * WRITTEN IN HIGHER LEVEL LANGUAGES.
  1241. SPACE 4,30
  1242. *** COMMAND FORMAT.
  1243. *
  1244. * FORTRAN CALL -
  1245. *
  1246. * CALL GETPAGE(ARRAY)
  1247. *
  1248. * SYMPL CALL -
  1249. *
  1250. * GETPAGE(ARRAY);
  1251. *
  1252. *
  1253. * ENTRY (ARRAY) = A 6 WORD ARRAY TO RECEIVE THE RESPONSE.
  1254. *
  1255. * EXIT (ARRAY) = PAGE PARAMETERS (RIGHT JUSTIFIED).
  1256. * ARRAY(1) = JOB PRINT DENSITY ( 6 OR 8 ).
  1257. * ARRAY(2) = JOB PAGE SIZE ( 16 - 255 ).
  1258. * ARRAY(3) = JOB PAGE WIDTH ( 40 - 255 ).
  1259. * ARRAY(4) = SYSTEM PRINT DENSITY (6 OR 8).
  1260. * ARRAY(5) = SYSTEM PAGE SIZE (16-255).
  1261. * ARRAY(6) = SYSTEM PAGE WIDTH (40-255).
  1262.  
  1263.  
  1264. GETPAGE BSS 0
  1265. GPG SUBR ENTRY/EXIT
  1266. SB1 1
  1267. SB7 X1 SAVE PARAMETER BLOCK
  1268. GETPAGE GPGA GET PAGE PARAMETERS
  1269. SB2 B1
  1270. SA1 GPGA GET JOB PAGE PARAMETERS
  1271. GPG1 MX0 -4
  1272. LX1 0-28 POSITION PRINT DENSITY
  1273. BX6 -X0*X1
  1274. SA6 B7 SET PRINT DENSITY RESPONSE
  1275. MX0 -8
  1276. LX1 8 POSITION PAGE SIZE
  1277. BX6 -X0*X1
  1278. SA6 A6+B1 SET PAGE SIZE RESPONSE
  1279. LX1 8 POSITION PAGE WIDTH
  1280. BX6 -X0*X1
  1281. SA6 A6+B1 SET PAGE WIDTH RESPONSE
  1282. ZR B2,GPGX IF END OF PARAMETERS
  1283. SB2 B2-B1
  1284. SA1 A1+B1
  1285. SB7 A6+B1
  1286. EQ GPG1 GET SYSTEM PAGE PARAMETERS
  1287.  
  1288.  
  1289. GPGA BSS 2 *GETPAGE* RESPONSE BLOCK
  1290. SPACE 4,10
  1291. END
  1292. IDENT SETPAGE
  1293. ENTRY SETPAGE
  1294. SYSCOM B1
  1295. TITLE SETPAGE - SET PAGE PARAMETERS.
  1296. *COMMENT CPUREL - SET PAGE PARAMETERS.
  1297. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  1298. *CALL COMCMAC
  1299. SETPAGE SPACE 4,10
  1300. *** SETPAGE - SET PAGE PARAMETERS.
  1301. *
  1302. * A. SKJOLDEBRAND. 82/11/21.
  1303. SPACE 4,10
  1304. *** *SETPAGE* PROVIDES AN INTERFACE TO ALLOW SETTING THE JOB
  1305. * PAGE PARAMETERS FOR PROGRAMS WRITTEN IN HIGHER LEVEL
  1306. * LANGUAGES.
  1307. SPACE 4,30
  1308. *** COMMAND FORMAT.
  1309. *
  1310. * FORTRAN CALL -
  1311. *
  1312. * CALL SETPAGE(ARRAY)
  1313. *
  1314. * SYMPL CALL -
  1315. *
  1316. * SETPAGE(ARRAY);
  1317. *
  1318. *
  1319. * ENTRY (ARRAY) = PAGE PARAMETERS (RIGHT JUSTIFIED).
  1320. * ARRAY(1) = JOB PRINT DENSITY ( 6 OR 8 ).
  1321. * ARRAY(2) = JOB PAGE SIZE ( 16 - 255 ).
  1322. * ARRAY(3) = JOB PAGE WIDTH ( 40 - 255 ).
  1323. *
  1324. * IF ARRAY(N) .LT. 0 CURRENT JOB VALUES WILL BE USED.
  1325. *
  1326. * EXIT PAGE SIZE PARAMETERS SET FOR JOB.
  1327.  
  1328. SETPAGE BSS 0
  1329. SPG SUBR ENTRY/EXIT
  1330. SB1 1
  1331. SB7 X1+ SAVE PARAMETER BLOCK ADDRESS
  1332. GETPAGE SPGA GET CURRENT JOB VALUES
  1333. SA3 SPGA
  1334. RJ MPP MERGE USER AND CURRENT JOB VALUES
  1335. SPG1 SA6 SPGA
  1336. SETPAGE A6
  1337. EQ SPGX RETURN
  1338.  
  1339.  
  1340. SPGA BSS 2 RESPONSE BLOCK
  1341. MPP SPACE 4,15 *GETPAGE*/*SETPAGE*
  1342. ** MPP - MERGE PAGE PARAMETERS.
  1343. *
  1344. * ENTRY (X3) = CURRENT JOB PAGE PARAMETERS.
  1345. * (B7) = ADDRESS OF USER LIST OF PAGE PARAMETERS.
  1346. *
  1347. * EXIT (X6) = *SETPAGE* REQUEST WORD.
  1348. *
  1349. * USES X - 0, 1, 2, 3, 6.
  1350. * A - 1, 2.
  1351.  
  1352.  
  1353. MPP SUBR ENTRY/EXIT
  1354. MX0 -4 MASK FOR PRINT DENSITY
  1355. LX3 0-28
  1356. SA1 B7 GET USER PRINT DENSITY
  1357. PL X1,MPP1 IF USER VALUE SPECIFIED
  1358. BX1 -X0*X3 USE CURRENT JOB PRINT DENSITY
  1359. MPP1 LX1 8
  1360. SA2 A1+B1 GET PAGE SIZE PARAMETER
  1361. LX3 8
  1362. MX0 -8
  1363. PL X2,MPP2 IF USER VALUE SPECIFIED
  1364. BX2 -X0*X3 USE CURRENT JOB PAGE SIZE
  1365. MPP2 BX6 X1+X2 MERGE PRINT DENSITY AND PAGE SIZE
  1366. LX3 8
  1367. SA1 A2+B1 GET PAGE WIDTH PARAMETER
  1368. LX6 8
  1369. PL X1,MPP3 IF USER VALUE SPECIFIED
  1370. BX1 -X0*X3 USE CURRENT JOB PAGE WIDTH
  1371. MPP3 BX6 X1+X6 ADD IN PAGE WIDTH
  1372. LX6 12D POSITION *SETPAGE* PARAMETER BLOCK
  1373. EQ MPPX RETURN
  1374. SPACE 4,10
  1375. END