QUSRTOOL : RPG source for QSPBLSEP program

BoTTom |    Changer de couleur
     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)


|    Changer de couleur
      *                                                                  *
      *   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  *


|    Changer de couleur
      * 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


|    Changer de couleur
     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*


|    Changer de couleur
     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*


|    Changer de couleur
     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****************************************************************


|    Changer de couleur
     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*


|    Changer de couleur
     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*


|    Changer de couleur
     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


|    Changer de couleur
     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


|    Changer de couleur
     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


|    Changer de couleur
     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


|    Changer de couleur
     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


|    Changer de couleur
     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


|    Changer de couleur
     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


|    Changer de couleur
     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---->


|    Changer de couleur
     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


|    Changer de couleur
     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


|    Changer de couleur
     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


|    Changer de couleur
     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*


|    Changer de couleur
     C*
      /COPY QUSRTOOL/QATTRPG,TBSARRAY




©AF400