FCB TITLE 'DMKFCB (CP) VM/370 - RELEASE 6' 00001000 SPACE 3 00002000 MACRO 00003000 FCB &NAME,&SPACE,&LENGTH,&LINE,&INDEX 00004000 GBLA &SW 00005000 LCLA &LN,&LEN,&A,&CNT,&X,&Y,&B,&D @VA15080 00006100 LCLC &XX,&YY,&C @VA15080 00006200 SPACE 2 00008000 *********************************************************************** 00009000 * FCB FCB-NAME,SPACING,LENGTH,(LINE,CHANNEL...),INDEX * 00010000 *********************************************************************** 00011000 SPACE 2 00012000 AIF (K'&NAME GT 4).ERR0 NAME TO LONG 00013000 AIF ('&NAME' EQ '').ERR5 NAME MISSING 00014000 AIF ('&LENGTH' LT '1').ERR1 LENGTH FIELD BLANK 00015000 AIF ('&LENGTH' GT '180').ERR1 LENGTH GREATER THAN 180 MAX 00016000 AIF ('&SW' EQ '1').ORG 1ST FCB MACRO ?? 00017000 &SW SETA 1 YES 00018000 AGO .NORG 00019000 .ORG ANOP 00020000 ORG *-8 ORG TO START OF ZERO RECORD 00021000 .NORG ANOP 00022000 FCB&NAME DS 0H 00023000 SPACE 00024000 DC CL4'&NAME' FCB BUFFER NAME 00025000 SPACE 00026000 DC AL2(NXT&NAME-FCB&NAME) DISPLACEMENT TO NEXT BUFFER HDR 00027000 DC AL2(END&NAME-DAT&NAME) LENGTH OF BUFFER DATA 00028000 DC XL2'00' FILLER 00029000 &Y SETA 0 00030000 &X SETA 0 00031000 AIF ('&INDEX' EQ '').P1 INDEX EQUAL BLANK 00032000 AIF ('&INDEX' LT '1').ERR6 INDEX LESS THAN ONE 00033000 AIF ('&INDEX' GT '31').ERR6 INDEX GREATER THAN 31 00034000 &X SETA 128 SET INDEX FLAG 00035000 &Y SETA &INDEX SET INDEX VALUE 00036000 .P1 ANOP 00037000 &CNT SETA &X+&Y INDEX VALUE PLUS FLAG 00038000 DC AL1(&CNT) INDEX VALUE 00039000 DC AL1(0) FILLER 00040000 SPACE 00041000 DAT&NAME EQU * 00042000 &CNT SETA N'&LINE NUMBER OF PARAMETERS 00043000 DC XL&LENGTH'00' ZERO BUFFER 00044000 AIF ('&SPACE' EQ '6').L6 6 LINES PER INCH 00045000 AIF ('&SPACE' EQ '8').L8 8 LINES PER INCH 00046000 AIF ('&SPACE' EQ '').L6 SPACE BLANK DEFAULT TO 6 LINES/INCH 00047000 MNOTE 12,'***SPACING -&SPACE- INVALID. 6,8 OR OMITTED' 00048000 AGO .END 00049000 .L6 ANOP 00050000 &LN SETA 0 00051000 AGO .TSTCOL 00052000 .L8 ANOP 00053000 &LN SETA 16 6 LINES/INCH 00054000 .TSTCOL ANOP 00055000 &A SETA 1 00056000 &LEN SETA 16 SET UP END OF FORMS VALUE (BIT 3) 00057000 &D SETA 0 @VA15080 00057100 .LOOP ANOP 00058000 AIF ('&A' GT '&CNT').LAST LAST LINE 00059000 &XX SETC '&LINE(&A)' GET LINE NUMBER 00060000 AIF ('&A' EQ '&CNT').ERR3 ODD NUMBER OF LINE,VALUE 00061000 AIF ('&XX' GT '&LENGTH').ERR4 LINE VALUE TO LARGE 00062000 AIF ('&XX' LT '1').ERR4 LINE VALUE LESS THAN 1 00063000 &X SETA &LINE(&A) SET LINE NUMBER 00064000 &B SETA &A+2 NEXT LINE VALUE INDEX @VA15080 00064050 .DUP ANOP 00064100 AIF (&D EQ 1).CONT2 ALREADY GAVE ERR7 MNOTE @VA15080 00064150 AIF (&B GT &CNT).CONT2 PAST LAST LINE VALUE @VA15080 00064200 &C SETC '&LINE(&B)' NEXT LINE VALUE @VA15080 00064250 AIF (&XX EQ &C).SETFLG FOUND DUP @VA15080 00064300 &B SETA &B+2 INDEX TO NEXT LINE VALUE @VA15080 00064350 AGO .DUP @VA15080 00064400 .SETFLG ANOP 00064450 &D SETA 1 INDICATE DUP LINE FOUND @VA15080 00064500 AGO .ERR7 GIVE INFORMATIONAL MNOTE @VA15080 00064550 .CONT2 ANOP 00064600 &A SETA &A+1 00065000 &YY SETC '&LINE(&A)' GET CHANNEL VALUE 00066000 AIF ('&YY' GT '12').ERR2 CHANNEL VALUE INVALID 00067000 AIF ('&YY' LT '1').ERR2 MUST BE ALPH 00068000 &Y SETA &LINE(&A) GET CHANNEL VALUE 00069000 &A SETA &A+1 SET UP TO NEXT PARAMETER 00070000 AIF ('&X' NE '1').CONT IF NOT COL 1 GO TO .CONT 00071000 &LN SETA &LN+&Y SET UP VALUE FOR COL ONE 00072000 AGO .LOOP NEXT 00073000 .CONT ANOP 00074000 AIF ('&X' NE '&LENGTH').CONT1 IS IT LAST COLUMN 00075000 &LEN SETA 16+&Y SET UP END OF FORMS @VA15080 00076100 * @VA15080 00076200 AGO .LOOP NEXT 00077000 .CONT1 ANOP 00078000 SPACE 00079000 ORG DAT&NAME+&X-1 PRINT LINE NUMBER. 00080000 DC AL1(&Y) CHANNEL VALUE. 00081000 AGO .LOOP NEXT 00082000 .LAST ANOP 00083000 SPACE 00084000 ORG DAT&NAME PRINT LINE ONE 00085000 DC AL1(&LN) CHANNEL VALUE PLUS 6 OR 8 LINE VALUE 00086000 * BIT 3 ZERO FOR 6 LINES PER INCH 00087000 * BIT 3 ONE FOR 8 LINES PER INCH 00088000 SPACE 00089000 ORG DAT&NAME+&LENGTH-1 LAST PRINT LINE 00090000 DC AL1(&LEN) CHANNEL VALUE INCLUDING END OF 00091000 * FORMS BIT (3) 00092000 SPACE 00093000 END&NAME EQU * END OF BUFFER DATA 00094000 SPACE 2 00095000 NXT&NAME DS 0H NEXT HEADER STARTS HERE 00096000 SPACE 00097000 DC XL8'00' ZERO HEADER RECORD 00098000 AGO .END 00099000 .ERR0 ANOP 00100000 SPACE 3 00101000 MNOTE 12,'***FCB NAME -&NAME- TOO LONG. 4 IS MAX.' 00102000 AGO .END 00103000 .ERR1 ANOP 00104000 SPACE 00105000 MNOTE 12,'***LENGTH -&LENGTH- NOT 1 TO 180' 00106000 AGO .END 00107000 .ERR2 ANOP 00108000 SPACE 3 00109000 MNOTE 12,'***CHANNEL -&YY- NOT 1 TO 12' 00110000 AGO .END 00111000 .ERR3 ANOP 00112000 SPACE 3 00113000 MNOTE 12,'***CHANNEL VALUE MISSING. LINE-&XX-' 00114000 AGO .END 00115000 .ERR4 ANOP 00116000 SPACE 3 00117000 MNOTE 12,'***LINE -&XX- NOT 1 TO &LENGTH' 00118000 AGO .END 00119000 .ERR5 ANOP 00120000 SPACE 3 00121000 MNOTE 12,'***FCB NAME MISSING' 00122000 AGO .END 00123000 .ERR6 ANOP 00124000 SPACE 3 00125000 MNOTE 12,'***INDEX -&INDEX- NOT 1 TO 31.' 00126000 &X SETA 0 00127000 SPACE 3 00128000 AGO .P1 00129000 .ERR7 ANOP 00129100 SPACE 3 00129200 MNOTE 2,'***SAME PRINT LINE SPECIFIED MORE THAN ONCE' @VA15080 00129300 AGO .CONT2 @VA15080 00129400 .END ANOP 00130000 SPACE 3 00131000 MEND 00132000 EJECT 00133000 *. 00134000 * 00135000 * MODULE NAME - 00136000 * 00137000 * DMKFCB 00138000 * 00139000 * FUNCTION - 00140000 * 00141000 * THIS MODULE CONTAINS THE FORMS CONTROL BUFFER LOAD IMAGES 00142000 * THAT ARE USED BY THE OPERATOR COMMAND 'LOADBUF' TO LOAD THE 00143000 * FORMS CONTROL BUFFER FOR THE 3211 PRINTER OR 3203 00144000 * PRINTER, AND THE COMMAND 'LOADVFCB' TO LOAD THE VIRTUAL 00145000 * FORMS CONTROL BUFFER IN THE VIRTUAL 3211 PRINTER OR 00146000 * VIRTUAL 3203 PRINTER. 00146100 * 00147000 * 00148000 * ATTRIBUTES - 00149000 * 00150000 * PAGEABLE, CALLED BY SVC 00151000 * 00152000 * 00153000 * 00154000 * NOTES - 00155000 * 1. THIS MODULE MUST START ON A PAGE BOUNDARY. 00156000 * 2. THIS MODULE CANNOT EXCEED A FULL PAGE IN SIZE. 00157000 * 3. ONE MACRO IS INCLUDED IN THIS MODULE TO ASSIST 00158000 * IN CREATING LOAD BUFFERS. 00159000 * 00160000 * 00161000 * 00162000 EJECT 00163000 ********************** 00164000 * 00165000 * FCB MACRO 00166000 * 00167000 ********************** 00168000 * 00169000 * 00170000 * THIS FCB MACRO IS USED TO CREATE A 3211 OR 3203 00171000 * FORMS CONTROL BUFFER LOAD IMAGE. 00172000 * 00173000 * 00174000 * +----+-----+-------------------------------------------------+ 00175000 * | | FCB | FCB-NAME,SPACING,LENGTH,(LINE,CHANNEL,...),INDEX| 00176000 * +----+-----+-------------------------------------------------+ 00177000 * 00178000 * 00179000 * FCB-NAME - 00180000 * 00181000 * ONE TO FOUR ALPHABETIC AND/OR NUMERIC CHARACTER NAME 00182000 * TO BE ASSIGNED TO THE BUFFER LOAD IMAGE. 00183000 * 00184000 * EXAMPLES - A11,1234,WXYZ,A,L 00185000 * 00186000 * 00187000 * SPACING - 00188000 * 00189000 * CARRIAGE SPACING - ENTER 6 FOR SIX LINES PER INCH 00190000 * OR 8 FOR EIGHT LINES PER INCH. DEFAULT IS 6 LINES 00191000 * PER INCH. IF THIS OPERAND IS OMITTED, COMMA 00192000 * MUST BE PRESENT. 00193000 * 00194000 * 00195000 * LENGTH - 00196000 * 00197000 * ENTER NUMBER (1 TO 180) OF PRINT LINES PER PAGE OR 00198000 * CARRIAGE TAPE. 00199000 * 00200000 * 00201000 * (LINE,CHANNEL,....) 00202000 * 00203000 * ENTER PRINT (LINE) NUMBER (1 TO THE VALUE OF LENGTH) AND 00204000 * (CHANNEL) VALUE (1 TO 12) FOR THAT PRINT LINE. 00205000 * 00206000 * EXAMPLE - 00207000 * (3,1,60,12) 00208000 * PRINT LINE 3 CHANNEL 1 00209000 * PRINT LINE 60 CHANNEL 12 00210000 * 00211000 * IF A LINE NUMBER IS ENTERED MORE THAN ONCE, THE LAST 00211100 * (LINE,CHANNEL) PAIR OF THE DUPLICATE LINE WILL BE INCLUDED IN 00211200 * THE BUFFER LOAD IMAGE, AND AN INFORMATIONAL MNOTE WILL BE 00211300 * ISSUED. 00211400 * 00212000 * INDEX - 00213000 * 00214000 * ENTER 1 TO 31. THE VALUE IS THE NUMBER OF THE PRINT POSITION 00215000 * THAT IS THE FIRST PRINTED POSITION. 00216000 * 00217000 * EXAMPLE - 00218000 * 00219000 * 20 00220000 * PRINTING STARTS IN PRINTER POSITION 20 00221000 *. 00222000 EJECT 00223000 SPACE 3 00224000 COPY OPTIONS 00225000 EJECT 00226000 COPY LOCAL OPTIONS 00227000 PRINT DATA 00228000 EJECT 00229000 DMKFCB CSECT 00230000 SPACE 3 00231000 DC CL8'DMKFCB' MODULE NAME 00232000 SPACE 3 00233000 ENTRY DMKFCBLD 00234000 DMKFCBLD DS 0H 00235000 FCB FCB1,6,66,(1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,19,10, C00236000 21,11,23,12,64,9) 00237000 EJECT 00238000 END 00239000