Table of Contents

DMKFCB Source

References

Source Listing

DMKFCB.ASSEMBLE.txt
  1. FCB TITLE 'DMKFCB (CP) VM/370 - RELEASE 6' 00001000
  2. SPACE 3 00002000
  3. MACRO 00003000
  4. FCB &NAME,&SPACE,&LENGTH,&LINE,&INDEX 00004000
  5. GBLA &SW 00005000
  6. LCLA &LN,&LEN,&A,&CNT,&X,&Y,&B,&D @VA15080 00006100
  7. LCLC &XX,&YY,&C @VA15080 00006200
  8. SPACE 2 00008000
  9. *********************************************************************** 00009000
  10. * FCB FCB-NAME,SPACING,LENGTH,(LINE,CHANNEL...),INDEX * 00010000
  11. *********************************************************************** 00011000
  12. SPACE 2 00012000
  13. AIF (K'&NAME GT 4).ERR0 NAME TO LONG 00013000
  14. AIF ('&NAME' EQ '').ERR5 NAME MISSING 00014000
  15. AIF ('&LENGTH' LT '1').ERR1 LENGTH FIELD BLANK 00015000
  16. AIF ('&LENGTH' GT '180').ERR1 LENGTH GREATER THAN 180 MAX 00016000
  17. AIF ('&SW' EQ '1').ORG 1ST FCB MACRO ?? 00017000
  18. &SW SETA 1 YES 00018000
  19. AGO .NORG 00019000
  20. .ORG ANOP 00020000
  21. ORG *-8 ORG TO START OF ZERO RECORD 00021000
  22. .NORG ANOP 00022000
  23. FCB&NAME DS 0H 00023000
  24. SPACE 00024000
  25. DC CL4'&NAME' FCB BUFFER NAME 00025000
  26. SPACE 00026000
  27. DC AL2(NXT&NAME-FCB&NAME) DISPLACEMENT TO NEXT BUFFER HDR 00027000
  28. DC AL2(END&NAME-DAT&NAME) LENGTH OF BUFFER DATA 00028000
  29. DC XL2'00' FILLER 00029000
  30. &Y SETA 0 00030000
  31. &X SETA 0 00031000
  32. AIF ('&INDEX' EQ '').P1 INDEX EQUAL BLANK 00032000
  33. AIF ('&INDEX' LT '1').ERR6 INDEX LESS THAN ONE 00033000
  34. AIF ('&INDEX' GT '31').ERR6 INDEX GREATER THAN 31 00034000
  35. &X SETA 128 SET INDEX FLAG 00035000
  36. &Y SETA &INDEX SET INDEX VALUE 00036000
  37. .P1 ANOP 00037000
  38. &CNT SETA &X+&Y INDEX VALUE PLUS FLAG 00038000
  39. DC AL1(&CNT) INDEX VALUE 00039000
  40. DC AL1(0) FILLER 00040000
  41. SPACE 00041000
  42. DAT&NAME EQU * 00042000
  43. &CNT SETA N'&LINE NUMBER OF PARAMETERS 00043000
  44. DC XL&LENGTH'00' ZERO BUFFER 00044000
  45. AIF ('&SPACE' EQ '6').L6 6 LINES PER INCH 00045000
  46. AIF ('&SPACE' EQ '8').L8 8 LINES PER INCH 00046000
  47. AIF ('&SPACE' EQ '').L6 SPACE BLANK DEFAULT TO 6 LINES/INCH 00047000
  48. MNOTE 12,'***SPACING -&SPACE- INVALID. 6,8 OR OMITTED' 00048000
  49. AGO .END 00049000
  50. .L6 ANOP 00050000
  51. &LN SETA 0 00051000
  52. AGO .TSTCOL 00052000
  53. .L8 ANOP 00053000
  54. &LN SETA 16 6 LINES/INCH 00054000
  55. .TSTCOL ANOP 00055000
  56. &A SETA 1 00056000
  57. &LEN SETA 16 SET UP END OF FORMS VALUE (BIT 3) 00057000
  58. &D SETA 0 @VA15080 00057100
  59. .LOOP ANOP 00058000
  60. AIF ('&A' GT '&CNT').LAST LAST LINE 00059000
  61. &XX SETC '&LINE(&A)' GET LINE NUMBER 00060000
  62. AIF ('&A' EQ '&CNT').ERR3 ODD NUMBER OF LINE,VALUE 00061000
  63. AIF ('&XX' GT '&LENGTH').ERR4 LINE VALUE TO LARGE 00062000
  64. AIF ('&XX' LT '1').ERR4 LINE VALUE LESS THAN 1 00063000
  65. &X SETA &LINE(&A) SET LINE NUMBER 00064000
  66. &B SETA &A+2 NEXT LINE VALUE INDEX @VA15080 00064050
  67. .DUP ANOP 00064100
  68. AIF (&D EQ 1).CONT2 ALREADY GAVE ERR7 MNOTE @VA15080 00064150
  69. AIF (&B GT &CNT).CONT2 PAST LAST LINE VALUE @VA15080 00064200
  70. &C SETC '&LINE(&B)' NEXT LINE VALUE @VA15080 00064250
  71. AIF (&XX EQ &C).SETFLG FOUND DUP @VA15080 00064300
  72. &B SETA &B+2 INDEX TO NEXT LINE VALUE @VA15080 00064350
  73. AGO .DUP @VA15080 00064400
  74. .SETFLG ANOP 00064450
  75. &D SETA 1 INDICATE DUP LINE FOUND @VA15080 00064500
  76. AGO .ERR7 GIVE INFORMATIONAL MNOTE @VA15080 00064550
  77. .CONT2 ANOP 00064600
  78. &A SETA &A+1 00065000
  79. &YY SETC '&LINE(&A)' GET CHANNEL VALUE 00066000
  80. AIF ('&YY' GT '12').ERR2 CHANNEL VALUE INVALID 00067000
  81. AIF ('&YY' LT '1').ERR2 MUST BE ALPH 00068000
  82. &Y SETA &LINE(&A) GET CHANNEL VALUE 00069000
  83. &A SETA &A+1 SET UP TO NEXT PARAMETER 00070000
  84. AIF ('&X' NE '1').CONT IF NOT COL 1 GO TO .CONT 00071000
  85. &LN SETA &LN+&Y SET UP VALUE FOR COL ONE 00072000
  86. AGO .LOOP NEXT 00073000
  87. .CONT ANOP 00074000
  88. AIF ('&X' NE '&LENGTH').CONT1 IS IT LAST COLUMN 00075000
  89. &LEN SETA 16+&Y SET UP END OF FORMS @VA15080 00076100
  90. * @VA15080 00076200
  91. AGO .LOOP NEXT 00077000
  92. .CONT1 ANOP 00078000
  93. SPACE 00079000
  94. ORG DAT&NAME+&X-1 PRINT LINE NUMBER. 00080000
  95. DC AL1(&Y) CHANNEL VALUE. 00081000
  96. AGO .LOOP NEXT 00082000
  97. .LAST ANOP 00083000
  98. SPACE 00084000
  99. ORG DAT&NAME PRINT LINE ONE 00085000
  100. DC AL1(&LN) CHANNEL VALUE PLUS 6 OR 8 LINE VALUE 00086000
  101. * BIT 3 ZERO FOR 6 LINES PER INCH 00087000
  102. * BIT 3 ONE FOR 8 LINES PER INCH 00088000
  103. SPACE 00089000
  104. ORG DAT&NAME+&LENGTH-1 LAST PRINT LINE 00090000
  105. DC AL1(&LEN) CHANNEL VALUE INCLUDING END OF 00091000
  106. * FORMS BIT (3) 00092000
  107. SPACE 00093000
  108. END&NAME EQU * END OF BUFFER DATA 00094000
  109. SPACE 2 00095000
  110. NXT&NAME DS 0H NEXT HEADER STARTS HERE 00096000
  111. SPACE 00097000
  112. DC XL8'00' ZERO HEADER RECORD 00098000
  113. AGO .END 00099000
  114. .ERR0 ANOP 00100000
  115. SPACE 3 00101000
  116. MNOTE 12,'***FCB NAME -&NAME- TOO LONG. 4 IS MAX.' 00102000
  117. AGO .END 00103000
  118. .ERR1 ANOP 00104000
  119. SPACE 00105000
  120. MNOTE 12,'***LENGTH -&LENGTH- NOT 1 TO 180' 00106000
  121. AGO .END 00107000
  122. .ERR2 ANOP 00108000
  123. SPACE 3 00109000
  124. MNOTE 12,'***CHANNEL -&YY- NOT 1 TO 12' 00110000
  125. AGO .END 00111000
  126. .ERR3 ANOP 00112000
  127. SPACE 3 00113000
  128. MNOTE 12,'***CHANNEL VALUE MISSING. LINE-&XX-' 00114000
  129. AGO .END 00115000
  130. .ERR4 ANOP 00116000
  131. SPACE 3 00117000
  132. MNOTE 12,'***LINE -&XX- NOT 1 TO &LENGTH' 00118000
  133. AGO .END 00119000
  134. .ERR5 ANOP 00120000
  135. SPACE 3 00121000
  136. MNOTE 12,'***FCB NAME MISSING' 00122000
  137. AGO .END 00123000
  138. .ERR6 ANOP 00124000
  139. SPACE 3 00125000
  140. MNOTE 12,'***INDEX -&INDEX- NOT 1 TO 31.' 00126000
  141. &X SETA 0 00127000
  142. SPACE 3 00128000
  143. AGO .P1 00129000
  144. .ERR7 ANOP 00129100
  145. SPACE 3 00129200
  146. MNOTE 2,'***SAME PRINT LINE SPECIFIED MORE THAN ONCE' @VA15080 00129300
  147. AGO .CONT2 @VA15080 00129400
  148. .END ANOP 00130000
  149. SPACE 3 00131000
  150. MEND 00132000
  151. EJECT 00133000
  152. *. 00134000
  153. * 00135000
  154. * MODULE NAME - 00136000
  155. * 00137000
  156. * DMKFCB 00138000
  157. * 00139000
  158. * FUNCTION - 00140000
  159. * 00141000
  160. * THIS MODULE CONTAINS THE FORMS CONTROL BUFFER LOAD IMAGES 00142000
  161. * THAT ARE USED BY THE OPERATOR COMMAND 'LOADBUF' TO LOAD THE 00143000
  162. * FORMS CONTROL BUFFER FOR THE 3211 PRINTER OR 3203 00144000
  163. * PRINTER, AND THE COMMAND 'LOADVFCB' TO LOAD THE VIRTUAL 00145000
  164. * FORMS CONTROL BUFFER IN THE VIRTUAL 3211 PRINTER OR 00146000
  165. * VIRTUAL 3203 PRINTER. 00146100
  166. * 00147000
  167. * 00148000
  168. * ATTRIBUTES - 00149000
  169. * 00150000
  170. * PAGEABLE, CALLED BY SVC 00151000
  171. * 00152000
  172. * 00153000
  173. * 00154000
  174. * NOTES - 00155000
  175. * 1. THIS MODULE MUST START ON A PAGE BOUNDARY. 00156000
  176. * 2. THIS MODULE CANNOT EXCEED A FULL PAGE IN SIZE. 00157000
  177. * 3. ONE MACRO IS INCLUDED IN THIS MODULE TO ASSIST 00158000
  178. * IN CREATING LOAD BUFFERS. 00159000
  179. * 00160000
  180. * 00161000
  181. * 00162000
  182. EJECT 00163000
  183. ********************** 00164000
  184. * 00165000
  185. * FCB MACRO 00166000
  186. * 00167000
  187. ********************** 00168000
  188. * 00169000
  189. * 00170000
  190. * THIS FCB MACRO IS USED TO CREATE A 3211 OR 3203 00171000
  191. * FORMS CONTROL BUFFER LOAD IMAGE. 00172000
  192. * 00173000
  193. * 00174000
  194. * +----+-----+-------------------------------------------------+ 00175000
  195. * | | FCB | FCB-NAME,SPACING,LENGTH,(LINE,CHANNEL,...),INDEX| 00176000
  196. * +----+-----+-------------------------------------------------+ 00177000
  197. * 00178000
  198. * 00179000
  199. * FCB-NAME - 00180000
  200. * 00181000
  201. * ONE TO FOUR ALPHABETIC AND/OR NUMERIC CHARACTER NAME 00182000
  202. * TO BE ASSIGNED TO THE BUFFER LOAD IMAGE. 00183000
  203. * 00184000
  204. * EXAMPLES - A11,1234,WXYZ,A,L 00185000
  205. * 00186000
  206. * 00187000
  207. * SPACING - 00188000
  208. * 00189000
  209. * CARRIAGE SPACING - ENTER 6 FOR SIX LINES PER INCH 00190000
  210. * OR 8 FOR EIGHT LINES PER INCH. DEFAULT IS 6 LINES 00191000
  211. * PER INCH. IF THIS OPERAND IS OMITTED, COMMA 00192000
  212. * MUST BE PRESENT. 00193000
  213. * 00194000
  214. * 00195000
  215. * LENGTH - 00196000
  216. * 00197000
  217. * ENTER NUMBER (1 TO 180) OF PRINT LINES PER PAGE OR 00198000
  218. * CARRIAGE TAPE. 00199000
  219. * 00200000
  220. * 00201000
  221. * (LINE,CHANNEL,....) 00202000
  222. * 00203000
  223. * ENTER PRINT (LINE) NUMBER (1 TO THE VALUE OF LENGTH) AND 00204000
  224. * (CHANNEL) VALUE (1 TO 12) FOR THAT PRINT LINE. 00205000
  225. * 00206000
  226. * EXAMPLE - 00207000
  227. * (3,1,60,12) 00208000
  228. * PRINT LINE 3 CHANNEL 1 00209000
  229. * PRINT LINE 60 CHANNEL 12 00210000
  230. * 00211000
  231. * IF A LINE NUMBER IS ENTERED MORE THAN ONCE, THE LAST 00211100
  232. * (LINE,CHANNEL) PAIR OF THE DUPLICATE LINE WILL BE INCLUDED IN 00211200
  233. * THE BUFFER LOAD IMAGE, AND AN INFORMATIONAL MNOTE WILL BE 00211300
  234. * ISSUED. 00211400
  235. * 00212000
  236. * INDEX - 00213000
  237. * 00214000
  238. * ENTER 1 TO 31. THE VALUE IS THE NUMBER OF THE PRINT POSITION 00215000
  239. * THAT IS THE FIRST PRINTED POSITION. 00216000
  240. * 00217000
  241. * EXAMPLE - 00218000
  242. * 00219000
  243. * 20 00220000
  244. * PRINTING STARTS IN PRINTER POSITION 20 00221000
  245. *. 00222000
  246. EJECT 00223000
  247. SPACE 3 00224000
  248. COPY OPTIONS 00225000
  249. EJECT 00226000
  250. COPY LOCAL OPTIONS 00227000
  251. PRINT DATA 00228000
  252. EJECT 00229000
  253. DMKFCB CSECT 00230000
  254. SPACE 3 00231000
  255. DC CL8'DMKFCB' MODULE NAME 00232000
  256. SPACE 3 00233000
  257. ENTRY DMKFCBLD 00234000
  258. DMKFCBLD DS 0H 00235000
  259. FCB FCB1,6,66,(1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,19,10, C00236000
  260. 21,11,23,12,64,9) 00237000
  261. EJECT 00238000
  262. END 00239000