code

Name
Astradyne (UK) Ltd
Scriptlanguage
Plain Text
Tabwidth
4
Date
Sun, 12 May 2013 15:09:36 +0000
IP
192.168.0.1

An example CL program that will copy all spool files with a USRDTA attribute of "COPY_ME" on a specified output queue to a single TXT file and email the TXT file to a hard coded email address.

  1. /***********************************************************/ 
  2. /* Before compiling, run the following command:            */ 
  3. /*          CRTPF      FILE(QTEMP/QPRTSPLQDB) RCDLEN(132) */ 
  4. /***********************************************************/ 
  5.                                                              
  6.             PGM        PARM(&OUTQ)                           
  7.  
  8.             DCL        VAR(&OUTQ) TYPE(*CHAR) LEN(10)       
  9.  
  10.             DCL        VAR(&CURJOB)  TYPE(*CHAR) LEN(6)       
  11.             DCL        VAR(&DOC)    TYPE(*CHAR) LEN(12)     
  12.             DCL        VAR(&JOB)    TYPE(*CHAR) LEN(10)     
  13.             DCL        VAR(&JOBNO)  TYPE(*CHAR) LEN(6)     
  14.             DCL        VAR(&SPLF)    TYPE(*CHAR) LEN(10)     
  15.             DCL        VAR(&SPLFNBR) TYPE(*CHAR) LEN(4)     
  16.             DCL        VAR(&SPLFNB#) TYPE(*DEC)  LEN(4 0)   
  17.             DCL        VAR(&USER)    TYPE(*CHAR) LEN(10)     
  18.             DCL        VAR(&USRDTA)  TYPE(*CHAR) LEN(10)     
  19.  
  20.             DCLF      FILE(QTEMP/QPRTSPLQDB)                       
  21.                                                                    
  22.             MONMSG    MSGID(CPF0000)                               
  23.                                                                      
  24. /* Get a list of spoolfiles on the output queue... */               
  25.             WRKOUTQ    OUTQ(&OUTQ) OUTPUT(*PRINT)                   
  26.             DLTF      FILE(QTEMP/QPRTSPLQDB)                       
  27.             CRTPF      FILE(QTEMP/QPRTSPLQDB) RCDLEN(132) LVLCHK(*NO)
  28.             CPYSPLF    FILE(QPRTSPLQ) TOFILE(QTEMP/QPRTSPLQDB) +   
  29.                           SPLNBR(*LAST)                             
  30.                                                                      
  31. /* Prepare to start copying... */                                   
  32.             DLTF      FILE(QTEMP/SPOOLFILES)                       
  33.             CRTPF      FILE(QTEMP/SPOOLFILES) RCDLEN(378)           
  34.                                                                      
  35. /* Read through the list of spool files... */                       
  36. LOOP:      RCVF                                                   
  37.             MONMSG    MSGID(CPF0864) EXEC(GOTO CMDLBL(ENDLOOP))   
  38.                                                                      
  39. /* Check for a detail line... */                                     
  40.             IF        COND(%SST(&QPRTSPLQDB 113 1) *NE ':') +   
  41.                           THEN(GOTO CMDLBL(LOOP))                 
  42.                                                                    
  43. /* Parse the fields... */                                         
  44.             CHGVAR    VAR(&SPLF)    VALUE(%SST(&QPRTSPLQDB  2 10))
  45.             CHGVAR    VAR(&USER)    VALUE(%SST(&QPRTSPLQDB 13 10))
  46.             CHGVAR    VAR(&USRDTA)  VALUE(%SST(&QPRTSPLQDB 24 10))
  47.             CHGVAR    VAR(&SPLFNBR) VALUE(%SST(&QPRTSPLQDB 75  4))
  48.             CHGVAR    VAR(&JOB)    VALUE(%SST(&QPRTSPLQDB 84 10))
  49.             CHGVAR    VAR(&JOBNO)  VALUE(%SST(&QPRTSPLQDB 95  6))
  50.                                                                    
  51. /* Include any exclusion/inclusion tests you want here... */       
  52.             IF        COND(&USRDTA *NE 'COPY_ME') THEN(GOTO +   
  53.                           CMDLBL(LOOP))                           
  54.                                                                    
  55. /* Add the spool file to the flat file and get the next entry... */
  56.             CHGVAR    VAR(&SPLFNB#) VALUE(&SPLFNBR)             
  57.             CPYSPLF    FILE(&SPLF) TOFILE(QTEMP/SPOOLFILES) +     
  58.                           JOB(&JOBNO/&USER/&JOB) SPLNBR(&SPLFNB#) +
  59.                           MBROPT(*ADD)                             
  60.             GOTO      CMDLBL(LOOP)                                 
  61.                                                                      
  62. /* Copy the flat file from QTEMP to the IFS... */                     
  63. ENDLOOP:    RTVJOBA    NBR(&CURJOB)                                 
  64.             CHGVAR    VAR(&DOC) VALUE('JB' *TCAT &CURJOB *TCAT +   
  65.                           '.TXT')                                     
  66.             CRTFLR    FLR(TEMP)                                     
  67.                                                                      
  68. /* Copy the document to this folder... */                             
  69.             CPYTOPCD  FROMFILE(QTEMP/SPOOLFILES) TOFLR(TEMP) +     
  70.                           TODOC(&DOC) REPLACE(*YES)                   
  71.                                                                      
  72. /* Email the document... */                                           
  73.             SNDDST    TYPE(*DOC) DOC(&DOC) FLR(TEMP) +             
  74.                         TOINTNET(('me@mydomain.com')) +
  75.                         DSTD('Multiple Spool Files') +               
  76.                         MSG('Multiple Spool Files')                   
  77.                                                                      
  78. /* Clear down the temporary files... */                               
  79.             DLTF      FILE(QTEMP/QPRTSPLQDB)                       
  80.             DLTF      FILE(QTEMP/SPOOLFILES)
  81.                                              
  82.             ENDPGM
  83.