midrange.com code scratchpad
Name:
MERGESPLF command
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
11/10/2021 07:13:35 pm
IP:
Logged
Description:
Merge two spool files together.
Code:
  1. MERGESPLF command:
  2.  
  3.  /*                                                                  */
  4.  /*   To compile :                                                   */
  5.  /*     CRTCMD   CMD(XXX/MERGESPLF) PGM(XXX/MERGESPLFC) +            */
  6.  /*                      SRCFILE(XXX/QCMDSRC)                        */
  7.  /*                                                                  */
  8.  /*                                                                  */
  9.  
  10.  MERGESPLF:  CMD        PROMPT('Merge Two Spoolfiles')
  11.  
  12.              PARM       KWD(JOB1) TYPE(JOBNAME) DFT(*) SNGVAL((*)) +
  13.                           PROMPT('Job name')
  14.  
  15.              PARM       KWD(SPLFILE1) TYPE(*NAME) LEN(10) DFT(QPRINT) +
  16.                           PROMPT('Spooled file name')
  17.  
  18.              PARM       KWD(SPLNBR1) TYPE(*INT4) DFT(*LAST) RANGE(1 +
  19.                           9999) SPCVAL((*ONLY 0) (*LAST -1)) MIN(0) +
  20.                           PROMPT('Spooled file number')
  21.  
  22.              PARM       KWD(JOB2) TYPE(JOBNAME) DFT(*) SNGVAL((*)) +
  23.                           PROMPT('Job name')
  24.  
  25.              PARM       KWD(SPLFILE2) TYPE(*NAME) LEN(10) DFT(QPRINT) +
  26.                           PROMPT('Spooled file name')
  27.  
  28.              PARM       KWD(SPLNBR2) TYPE(*INT4) DFT(*LAST) RANGE(1 +
  29.                           9999) SPCVAL((*ONLY 0) (*LAST -1)) MIN(0) +
  30.                           PROMPT('Spooled file number')
  31.  
  32.  
  33.  JOBNAME:    QUAL       TYPE(*NAME) LEN(10) MIN(1)
  34.              QUAL       TYPE(*NAME) LEN(10) DFT(' ') SPCVAL((' ')) +
  35.                           CHOICE('Name') PROMPT('User')
  36.              QUAL       TYPE(*CHAR) LEN(6) DFT(' ') RANGE(000000 +
  37.                           999999) SPCVAL((' ')) FULL(*YES) +
  38.                           CHOICE('000000-999999') PROMPT('Number') 
  39.  
  40.  
  41. MERGESPLFC command processing program:
  42.  
  43.   /*   To compile :                                                  */
  44.   /*         CRTCLPGM   PGM(XXX/MERGESPLFC) SRCFILE(XXX/QCLSRC)      */
  45.   /*                                                                 */
  46.   /*   Uses the attributes from the first spool file.                */
  47.   /*                                                                 */
  48.  
  49.  MERGESPLF:  PGM        PARM(&JOB1 &SPLFILE1 &SPLNBRBIN1 &JOB2 +
  50.                           &SPLFILE2 &SPLNBRBIN2)
  51.  
  52.              /*   Parameters  */
  53.  
  54.              DCL        VAR(&JOB1) TYPE(*CHAR) LEN(26)
  55.              DCL        VAR(&SPLFILE1) TYPE(*CHAR) LEN(10)
  56.              DCL        VAR(&SPLNBRBIN1) TYPE(*CHAR) LEN(4)
  57.              DCL        VAR(&JOB2) TYPE(*CHAR) LEN(26)
  58.              DCL        VAR(&SPLFILE2) TYPE(*CHAR) LEN(10)
  59.              DCL        VAR(&SPLNBRBIN2) TYPE(*CHAR) LEN(4)
  60.  
  61.              /*   Form parms  */
  62.  
  63.              /*  Variables   */
  64.  
  65.              DCL        VAR(&SPLNBRDEC)  TYPE(*DEC)  LEN(8 0)
  66.              DCL        VAR(&SPLNBRCHR)  TYPE(*CHAR) LEN(8)
  67.              DCL        VAR(&JOBNAME)    TYPE(*CHAR) LEN(10)
  68.              DCL        VAR(&JOBUSER)    TYPE(*CHAR) LEN(10)
  69.              DCL        VAR(&JOBNBR)     TYPE(*CHAR) LEN(6)
  70.  
  71.              DLTF       FILE(QTEMP/PFSPLF)
  72.              MONMSG     MSGID(CPF0000)
  73.              CRTPF      FILE(QTEMP/PFSPLF) RCDLEN(133) +
  74.                           OPTION(*NOSOURCE *NOLIST) SIZE(*NOMAX)
  75.  
  76.              /*  Spool file #1                     */
  77.              IF         COND(%BIN(&SPLNBRBIN1) *EQ -1) THEN(CHGVAR +
  78.                           VAR(&SPLNBRCHR) VALUE(*LAST))
  79.              IF         COND(%BIN(&SPLNBRBIN1) *GT 0) THEN(DO)
  80.                 CHGVAR     VAR(&SPLNBRDEC) VALUE(%BIN(&SPLNBRBIN1))
  81.                 CHGVAR     VAR(&SPLNBRCHR) VALUE(&SPLNBRDEC)
  82.              ENDDO
  83.              IF         COND(&JOB1 *EQ '*') THEN(RTVJOBA +
  84.                            JOB(&JOBNAME) USER(&JOBUSER) NBR(&JOBNBR))
  85.              ELSE       CMD(DO)
  86.                 CHGVAR     VAR(&JOBNAME)   VALUE(%SST(&JOB1 1 10))
  87.                 CHGVAR     VAR(&JOBUSER)   VALUE(%SST(&JOB1 11 10))
  88.                 CHGVAR     VAR(&JOBNBR)    VALUE(%SST(&JOB1 21 6))
  89.              ENDDO
  90.              CPYSPLF    FILE(&SPLFILE1) TOFILE(QTEMP/PFSPLF) +
  91.                           JOB(&JOBNBR/&JOBUSER/&JOBNAME) +
  92.                           SPLNBR(&SPLNBRCHR) CTLCHAR(*FCFC)
  93.  
  94.              /*  Spool file #2                     */
  95.              IF         COND(%BIN(&SPLNBRBIN2) *EQ -1) THEN(CHGVAR +
  96.                           VAR(&SPLNBRCHR) VALUE(*LAST))
  97.              IF         COND(%BIN(&SPLNBRBIN2) *GT 0) THEN(DO)
  98.                 CHGVAR     VAR(&SPLNBRDEC) VALUE(%BIN(&SPLNBRBIN2))
  99.                 CHGVAR     VAR(&SPLNBRCHR) VALUE(&SPLNBRDEC)
  100.              ENDDO
  101.              IF         COND(&JOB2 *EQ '*') THEN(RTVJOBA +
  102.                            JOB(&JOBNAME) USER(&JOBUSER) NBR(&JOBNBR))
  103.              ELSE       CMD(DO)
  104.                 CHGVAR     VAR(&JOBNAME)   VALUE(%SST(&JOB2 1 10))
  105.                 CHGVAR     VAR(&JOBUSER)   VALUE(%SST(&JOB2 11 10))
  106.                 CHGVAR     VAR(&JOBNBR)    VALUE(%SST(&JOB2 21 6))
  107.              ENDDO
  108.              CPYSPLF    FILE(&SPLFILE2) TOFILE(QTEMP/PFSPLF) +
  109.                           JOB(&JOBNBR/&JOBUSER/&JOBNAME) +
  110.                           SPLNBR(&SPLNBRCHR) MBROPT(*ADD) +
  111.                           CTLCHAR(*FCFC)
  112.  
  113.              /*  Smush them together               */
  114.              OVRPRTF    FILE(QPRINTS) CTLCHAR(*FCFC) +
  115.                           SPLFNAME(MERGEDSPLF) OVRSCOPE(*JOB)
  116.              CPYF       FROMFILE(QTEMP/PFSPLF) TOFILE(QPRINTS)
  117.              DLTOVR     FILE(QPRINTS) LVL(*JOB)
  118.  
  119.  ENDPGM:     ENDPGM
  120.  
  121.  
© 2004-2019 by midrange.com generated in 0.005s valid xhtml & css