H******************************************************************** * * * PROGRAM NAME: QSPBLSEP * * * * PROGRAM TYPE: RPG * * * * DESCRIPTION : This program will be called by the SPBLDSEP macro * * when a writer is started to a printer that has * * QSPBLSEP specified as the separator exit program * * in the device description. * * * * CALLED BY: * * QSPBLDSEP macro * * * * PROGRAMS CALLED: * * _ * * * * PARAMETERS: * * * * Separator data (char *, defined by SEPDTA) * * * Size of separator data (int, size of SEPDTA) |
* * * Separator info (charƯ174~, defined by SEPINF) * * * Size of separator data (int, size of SEPINF) * * * * ******************************************************************** H******************************************************************** E* ARRAY AND TABLE DEFINITION SECTION E* ---------------------------------- E* E DBUF 8096 1 E NAMA 10 1 E CHRA 45 45 1 E CHR 5 450 10 E* I******************************************************************** **** Data Structure Definitions **** ******************************************************************** *------------------------------------------------------------------* * Data structures are required whenever a pointer is needed for * * a parameter value. The parameter will be designated in the UIM * |
* manual with the field type of CHAR(*). A generic data structure * * (no name) is also needed to define all binary fields. * *------------------------------------------------------------------* * *================================================================ * COPIED FROM OPSPLA0200 (QUSRTOOL/QATTRPG) I/COPY QUSRTOOL/QATTRPG,OPSPLA0200 I* I**************************************************************** I* * I* DATA STRUCTURE FOR API: QMHRTVM * I* FORMAT : RTVM0100 * I* LANGUAGE: RPG * I* NOTE: THE BEGINNING AND ENDING POSITIONS FOR THE MESSAGE AND* I* MESSAGE HELP FIELDS WILL NEED TO BE FILLED IN BY THE * I* USER. * I* * I**************************************************************** IMSGINF DS I B 1 40BYTSRT I B 5 80BYTAVL I B 9 120MSGRTN |
I B 13 160MSGAVL I B 17 200MSGHRT I B 21 240MSGHAV I 25 84 EMPTY I 85 110 JOBC I 111 124 EMPTY2 I 125 150 USRC I 151 164 EMPTY3 I 165 190 JOBNBR I 191 200 EMPTY4 I 201 226 DATEC I 227 238 EMPTY5 I 239 264 TIMEC I 265 286 EMPTY6 I 287 312 FILEC I 313 326 EMPTY7 I 327 352 FILNBR I 353 360 EMPTY8 I 361 386 CPYNBR I 387 393 EMPTY9 I 394 419 PAGNBR I* |
I**************************************************************** I* FORMAT OF OUTPUT SPACE THIS MODULE IS CALLED WITH I**************************************************************** ISEPDTA DS I 1 10 XFORM I 11 12 PAD I B 13 160PAGRTT I B 17 200PAGELN I B 21 240PAGEWD I B 25 280PAGLPI I B 29 320PAGCPI I B 33 360IGCCPI I 37 46 IGCRTT I 47 56 PAGSMM I 57 66 PRTQUL I 67 76 OVRLAY I 77 86 OVLLIB I 87 184 RESRV1 I B 185 1880DATLEN I B 189 1920RECLEN I 1938288 DBUF I* |
I**************************************************************** I* FORMAT OF INPUT SPACE THIS MODULE IS CALLED WITH I**************************************************************** ISEPINF DS I 1 16 IJOBID I 17 32 ISPLID I 33 58 QJOBNM I 59 68 SPLNAM I B 69 720SPLNBR I 73 82 DEVNAM I 83 92 DEVTYP I 93 102 SEPTYP I 103 174 RESRV2 I* I**************************************************************** I* QUALIFIED MESSAGE FILE NAME I*--------------------------------------------------------------- IMSGFIL DS I 1 10 MSGFNM I 11 20 MSGLIB I* I**************************************************************** |
I* TIME DATA STRUCTURE I*--------------------------------------------------------------- ITIME DS I 1 2 HOUR I 3 4 MINUTE I 5 6 SECOND I* I**************************************************************** I* DATE DATA STRUCTURE I*--------------------------------------------------------------- IDATE DS I 1 2 MONTH I 3 4 DAY I 5 6 YEAR I* I**************************************************************** I* GLOBAL VARIABLES USED IN THIS PROGRAM I**************************************************************** IBINVAR DS I B 1 40MSGLEN I B 5 80NULLEN I* |
ICHRVAR DS I 1 10 SUBSTI I 11 20 FCC I* I* C*================================================================ C* ^^^^ BEGINNING OF MAIN PROCEDURE $$$$ ^^^^ C*================================================================ C* C* IN-COMING PARAMETERS C*================================================================ C* N__N__N__1111111111OPCOD2222222222RRRRRRLLLDH++--==COMMENT----> C* C *ENTRY PLIST C PARM SEPDTA SEP DATA C PARM DTASIZ 4 SEP DATA SIZE C PARM SEPINF SEP INFO C PARM INFSIZ 4 SEP INFO SIZE C* C*================================================================ C* N__N__N__1111111111OPCOD2222222222RRRRRRLLLDH++--==COMMENT----> C* |
C* C* C CALL 'QUSRSPLA' GET SPOOLED FILE ATTR C PARM RCVVAR STRUCT NAME C PARM 3301 RCVLE 40 LENGTH C PARM 'SPLA0200'FMTNAM 8 FORMAT NAME C PARM '*INT 'JOBINF 26 JOB INFO C PARM IJOBID ID C PARM ISPLID SPOOLED FILE ID C PARM '*INT 'SPLFNM 10 NAME C PARM -1 SPLF£ 40 NO. C* C*========================================================================= C* BUILD BLOCK SEARATOR DATA C* C* N__N__N__1111111111OPCOD2222222222RRRRRRLLLDH++--==COMMENT----> C* C MOVEL*BLANKS SEPDTA clear space C Z-ADD121 RECLEN length 1 line C Z-ADD1 P 40 data buf ptr C SEPTYP COMP '*JOB ' 03 job sep C 03 EXSR JOBSEP build job sep |
C N03 EXSR FILSEP bld file sep C* C* C*========================================================================= C* CALL QMHRTVM TO GET TRANSLATED CONSTANTS FORM SEPARATOR TEXT C*========================================================================= C* N__N__N__1111111111OPCOD2222222222RRRRRRLLLDH++--==COMMENT----> C* C MOVEL*BLANKS CHRVAR C MOVEL*BLANKS MSGFIL C* C MOVEL'QCPFMSG' MSGFNM message file C MOVEL'*LIBL' MSGLIB C Z-ADD395 MSGHRT msg text len C* C CALL 'QMHRTVM' RETRIEVE MSG C PARM MSGINF C PARM 419 MSGLEN C PARM 'RTVM0100'FORMAT 8 C PARM 'CPX0703' MSGID 7 C PARM MSGFIL C PARM ' ' NULL 1 |
C PARM 0 NULLEN C PARM '*NO' SUBSTI C PARM '*NO' FCC C PARM 0 ERROR 40 C*========================================================================= C* ADD REMAINING TEXT TO SEPARATOR C* ========= C* N__N__N__1111111111OPCOD2222222222RRRRRRLLLDH++--==COMMENT----> C* C* ---------------------------------------------------- C* add job name and file name for file seps ======== C* ---------------------------------------------------- C MOVE '0' DBUF,P space 2 lines C ADD 1 P bump pointer C MOVEA' ' DBUF,P add 2 blanks C ADD 2 P bump pointer C MOVEAJOBC DBUF,P constant data C ADD 26 P bump pointer C MOVEAJOBNAM DBUF,P add job name C ADD 10 P bump pointer C MOVEA*BLANKS DBUF,P blank out buf C SEPTYP COMP '*FILE ' 07 file sep |
C 07 ADD 9 P leave 9 blank C 07 MOVEAFILEC DBUF,P constant data C 07 ADD 26 P bump pointer C 07 MOVEAFILNAM DBUF,P add file name C 07 ADD 47 P end of record C N07 ADD 82 P end of record C* ---------------------------------------------------- C* add user name and file number for file seps ======== C* ---------------------------------------------------- C MOVE ' ' DBUF,P space 1 line C ADD 1 P bump pointer C MOVEA' ' DBUF,P add 2 blanks C ADD 2 P bump pointer C MOVEAUSRC DBUF,P constant data C ADD 26 P bump pointer C MOVEAUSRNAM DBUF,P add user name C ADD 10 P bump pointer C MOVEA*BLANKS DBUF,P blank out buf C SEPTYP COMP '*FILE ' 08 file sep C 08 ADD 9 P leave 9 blank C 08 MOVEAFILNBR DBUF,P constant data C 08 ADD 26 P bump pointer |
C 08 MOVE FILNUM CHAR 4 MOVE TO CHAR C 08 MOVEACHAR DBUF,P file number C 08 ADD 47 P end of record C N08 ADD 82 P end of record C* ---------------------------------------------------- C* add job number and copy number for file seps ======== C* ---------------------------------------------------- C MOVE ' ' DBUF,P space 1 line C ADD 1 P bump pointer C MOVEA' ' DBUF,P add 2 blanks C ADD 2 P bump pointer C MOVEAJOBNBR DBUF,P constant data C ADD 26 P bump pointer C MOVEAJOBNUM DBUF,P job number C ADD 10 P bump pointer C MOVEA*BLANKS DBUF,P blank out buf C SEPTYP COMP '*FILE ' 09 file sep C 09 ADD 9 P leave 9 blank C 09 MOVEACPYNBR DBUF,P constant data C 09 ADD 26 P bump pointer C 09 MOVE TOTCPY CHAR 4 MOVE TO CHAR C 09 MOVEACHAR DBUF,P TOTAL COPIESa |
C 09 ADD 47 P end of record C N09 ADD 82 P end of record C* ---------------------------------------------------- C* add date ======== C* ---------------------------------------------------- C MOVE ' ' DBUF,P space 1 line C ADD 1 P bump pointer C MOVEA' ' DBUF,P add 2 blanks C ADD 2 P bump pointer C MOVEADATEC DBUF,P constant data C ADD 26 P bump pointer C TIME TIMSTP 120 time stamp C MOVELTIMSTP TIME EXTRACT TIME C MOVE TIMSTP DATE 6 EXTRACT DATE C MOVEAMONTH DBUF,P move month C ADD 2 P BUMP POINTER C MOVE '/' DBUF,P MOVE TO BUF C ADD 1 P BUMP POINTER C MOVEADAY DBUF,P move day C ADD 2 P BUMP POINTER C MOVE '/' DBUF,P MOVE TO BUF C ADD 1 P BUMP POINTER |
C MOVEAYEAR DBUF,P move year C ADD 2 P BUMP POINTER C MOVEA*BLANKS DBUF,P blank out buf C ADD 84 P end of record C* ---------------------------------------------------- C* add TIME ======== C* ---------------------------------------------------- C MOVE ' ' DBUF,P space 1 line C ADD 1 P bump pointer C MOVEA' ' DBUF,P add 2 blanks C ADD 2 P bump pointer C MOVEATIMEC DBUF,P constant data C ADD 26 P bump pointer C MOVEAHOUR DBUF,P MOVE HOUR C ADD 2 P BUMP POINTER C MOVE ':' DBUF,P MOVE TO BUF C ADD 1 P BUMP POINTER C MOVEAMINUTE DBUF,P MOVE MINUTE C ADD 2 P BUMP POINTER C MOVE ':' DBUF,P MOVE TO BUF C ADD 1 P BUMP POINTER C MOVEASECOND DBUF,P MOVE SECOND |
C ADD 2 P BUMP POINTER C MOVEA*BLANKS DBUF,P blank out buf C ADD 84 P end of record C* ---------------------------------------------------- C* add print text ======== C* ---------------------------------------------------- C MOVE '0' DBUF,P space 2 lines C ADD 1 P bump pointer C MOVEA' ' DBUF,P add 2 blanks C ADD 2 P bump pointer C DO 4 Y 20 repeat prttxt C MOVEAPRTTXT DBUF,P add print txt C ADD 30 P bump pointer C ENDDO add prttxt 4x C SUB 2 P max len 121 C* C* C* C*========================================================================= C* ADD CONTROL INFORMATION FOR SEPARATOR C* ========= C* N__N__N__1111111111OPCOD2222222222RRRRRRLLLDH++--==COMMENT----> |
C* C Z-ADDP DATLEN sep data len C MOVEL'*FCFC' XFORM set to xform C Z-ADD90 PAGRTT print 90 rtt C* --------------------------------------------- C* set page size. values are: C* 0 means use file level page length of width. C* values specified as 1/100th inch or cm, or C* number of rows and cols depending on PAGSMM. C* --------------------------------------------- C Z-ADD0 PAGELN use file len C Z-ADD0 PAGEWD use file wid C* --------------------------------------------- C* lpi and cpi values specified as 1/10th C* inch or cm depending on unit of measure C* --------------------------------------------- C Z-ADD60 PAGLPI set to 6 lpi C Z-ADD120 PAGCPI set to 12 cpi C Z-SUB1 IGCCPI 1/2 cpi val C MOVEL'*NO 'IGCRTT no igc rotate C* --------------------------------------------- C* set measurement method - PAGSMM |
C* valid values are: *ROWCOL, *INCH, and *CM C* --------------------------------------------- C MEAMTH COMP '*UOM ' 11 C 11 MOVE UOM PAGSMM use file uom C N11 MOVE MEAMTH PAGSMM use row/col C MOVEL'*DRAFT 'PRTQUL print quality C MOVEL'*NONE 'OVRLAY no overlay C MOVEL'*LIBL 'OVLLIB C* C* C* C QUIT TAG C RETRN C*========================================================================= C* SUBROUTINE DEFINITION SECTION C*========================================================================= C* ========= C* N__N__N__1111111111OPCOD2222222222RRRRRRLLLDH++--==COMMENT----> C SUBNAM BEGSR BEGIN SUBR C* ...YOUR CODE........... ...CODE C* C ENDSR END OF SUBR |
C* C JOBSEP BEGSR build job sep C* C MOVEAJOBNAM NAMA set job name C EXSR BLKTXT add block txt C MOVEAUSRNAM NAMA set user name C EXSR BLKTXT add block txt C MOVEAJOBNUM NAMA job number C EXSR BLKTXT add block txt C ENDSR END job sep C* C FILSEP BEGSR bld file sep C* C MOVEAUSRNAM NAMA set user name C EXSR BLKTXT add block txt C MOVEAFILNAM NAMA spooled file C EXSR BLKTXT add block txt C MOVEAUSRDTA NAMA user data C EXSR BLKTXT add block txt C ENDSR END file sep C* C BLKTXT BEGSR block text |
C* C DO 10 I 20 for each line C I COMP 1 25 first time C 25 MOVE '0' DBUF,P skip 2 lines C N25 MOVE ' ' DBUF,P skip 1 line C ADD 1 P bump pointer C* C DO 10 J 20 for each char C MOVEA' ' DBUF,P add 2 blanks C ADD 2 P bump pointer C Z-ADD1 X 30 INIT INDEX C NAMA,J LOKUPCHRA,X 26 C 26 MULT 10 X 30 C 26 ADD I X 30 find index C N26 Z-ADD21 X 30 use blank chr C MOVEACHR,X DBUF,P move to buf C ADD 10 P bump pointer C ENDDO for each char C* C ENDDO for each line C ENDSR END OF SUBR C* |
C* /COPY QUSRTOOL/QATTRPG,TBSARRAY |