code

Name
Astradyne (UK) Ltd
Scriptlanguage
Plain Text
Tabwidth
4
Date
Sun, 12 May 2013 14:25:05 +0000
IP
192.168.0.1

A command and CL program that can be used to email a spool file to a specified email address. This command uses SMTP by way of the SNDDST command to perform the actual send.

The command requires that a folder is available within the IFS to store temporary emails. The default name used is EMAIL and this can be created using the CRTFLR FLR(EMAIL) command. If a different folder is used then change the variable &FLR within the CPP.

  1. Command Source:
  2.  
  3.             CMD        PROMPT('Email an AS/400 Spool File')     
  4.                                                                  
  5.             PARM      KWD(ADDRESS) TYPE(*CHAR) LEN(80) MIN(1) + 
  6.                           CASE(*MIXED) PROMPT('Email address')   
  7.                                                                  
  8.             PARM      KWD(FILE) TYPE(*NAME) MIN(1) MAX(1) +     
  9.                           PROMPT('Spool file')                   
  10.                                                                  
  11.             PARM      KWD(JOB) TYPE(JOB) DFT(*) SNGVAL((* ' ')) +
  12.                           MAX(1) PROMPT('Job')                   
  13.                                                                  
  14. JOB:        QUAL      TYPE(*NAME) LEN(10)                       
  15.                                                                  
  16.             QUAL      TYPE(*NAME) LEN(10) CHOICE(*NONE) +       
  17.                           PROMPT('User')                         
  18.                                                                  
  19.             QUAL      TYPE(*CHAR) LEN(6) CHOICE(*NONE) +       
  20.                           PROMPT('Number')                       
  21.  
  22.             PARM      KWD(SPLNBR) TYPE(*CHAR) LEN(5) DFT(*LAST) +
  23.                         SPCVAL((*LAST) (*ONLY)) MIN(0) +       
  24.                         CHOICE('1-9999, *LAST') PROMPT('Spooled +
  25.                         file number')                           
  26.                                                                  
  27.             PARM      KWD(DOC) TYPE(*CHAR) LEN(12) DFT(*DFT) + 
  28.                         SPCVAL((*DFT)) PROMPT('Document name') 
  29.                                                                  
  30.             PARM      KWD(MSG) TYPE(*CHAR) LEN(256) DFT(*DFT) + 
  31.                         SPCVAL((*DFT)) PROMPT('Message text')   
  32.  
  33.  
  34.  
  35. CL Source:
  36.  
  37.             PGM        PARM(&ADDRESS &FILE &JOB_IN &SPLNBR &DOC &MSG) 
  38.                                                                        
  39. /* Parameters... */                                                     
  40.             DCL        VAR(&ADDRESS) TYPE(*CHAR) LEN(80)               
  41.             DCL        VAR(&FILE)    TYPE(*CHAR) LEN(10)               
  42.             DCL        VAR(&JOB_IN)  TYPE(*CHAR) LEN(26)               
  43.             DCL        VAR(&SPLNBR)  TYPE(*CHAR) LEN(5)               
  44.             DCL        VAR(&DOC)    TYPE(*CHAR) LEN(12)               
  45.             DCL        VAR(&MSG)    TYPE(*CHAR) LEN(256)             
  46.                                                                        
  47. /* Work fields... */                                                   
  48.             DCL        VAR(&USER)  TYPE(*CHAR) LEN(10)               
  49.             DCL        VAR(&JOB)    TYPE(*CHAR) LEN(10)               
  50.             DCL        VAR(&NUMBER) TYPE(*CHAR) LEN(6)                 
  51.             DCL        VAR(&UTLLIB) TYPE(*CHAR) LEN(10)               
  52.             DCL        VAR(&RMVLIB) TYPE(*CHAR) LEN(1)  VALUE('1')     
  53.             DCL        VAR(&FLR)    TYPE(*CHAR) LEN(80) VALUE('EMAIL') 
  54.             DCL        VAR(&LF)    TYPE(*CHAR) LEN(3)  VALUE(X'0D0D0D')
  55.  
  56. /* 0000 - Ensure the utility library is in the library list... */
  57.                                                                                
  58.             RTVDTAARA  DTAARA(AUKUTLLIB) RTNVAR(&UTLLIB)                     
  59.             ADDLIBLE  LIB(&UTLLIB) POSITION(*LAST)                           
  60.             MONMSG    MSGID(CPF0000) EXEC(DO)                               
  61.             CHGVAR    VAR(&RMVLIB) VALUE('0')                               
  62.             ENDDO                                                             
  63.                                                                                
  64. /* 0010 - Split out job details... */
  65.             CHGVAR    VAR(&NUMBER) VALUE(%SST(&JOB_IN 21 6))                 
  66.             CHGVAR    VAR(&USER) VALUE(%SST(&JOB_IN 11 10))                 
  67.             CHGVAR    VAR(&JOB) VALUE(%SST(&JOB_IN 01 10))                   
  68.                                                                                
  69. /* 0020 - Create a temporary file to copy the spoolfile into...  */
  70.             CRTPF      FILE(QTEMP/EMAILSPL) RCDLEN(200) GENLVL(20)           
  71.             MONMSG    MSGID(CPF0000)                                         
  72.                                                                                
  73. /* 0030 - Copy the spool file from either the qualified or current job... */
  74.             IF        COND(&JOB_IN *EQ ' ') THEN(DO)                         
  75.             RTVJOBA    JOB(&JOB) USER(&USER) NBR(&NUMBER)
  76.             ENDDO                                                   
  77.             CPYSPLF    FILE(&FILE) TOFILE(QTEMP/EMAILSPL) +         
  78.                           JOB(&NUMBER/&USER/&JOB) SPLNBR(&SPLNBR)   
  79.                                                                      
  80. /* 0100 - Build the stream file to be sent... */
  81.             IF        COND(&DOC *EQ '*DFT') THEN(DO)               
  82.             CHGVAR    VAR(&DOC) VALUE('SP' *CAT &NUMBER *CAT '.TXT')
  83.             ENDDO                                                   
  84.                                                                      
  85.             CPYTOPCD  FROMFILE(QTEMP/EMAILSPL) TOFLR(&FLR) +       
  86.                           TODOC(&DOC) REPLACE(*YES)                 
  87.                                                                      
  88. /* 0110 - If a default message is required then set it...  */
  89.             IF        COND(&MSG *EQ '*DFT') THEN(DO)               
  90.             CHGVAR    VAR(&MSG) VALUE('Spoolfile ' *CAT &FILE +   
  91.                           *TCAT ' from job ' *CAT &JOB *TCAT '/' +   
  92.                           *CAT &USER *TCAT '/' *CAT &NUMBER *CAT ' + 
  93.                           as requested.')                           
  94.             ENDDO                                                   
  95.  
  96.             CHGVAR    VAR(&MSG) VALUE(&MSG *TCAT &LF)             
  97.                                                                    
  98. /* 0200 - Email the document to the email address... */
  99.             SNDDST    TYPE(*DOC) TOINTNET((&ADDRESS)) DSTD('Email +
  100.                           of Spool File') MSG(&MSG) DOC(&DOC) +     
  101.                           FLR(&FLR)                                 
  102.                                                                    
  103. /* 9010 - Clear down the work files and documents... */
  104.                                                                    
  105.             DLTF      FILE(QTEMP/EMAILSPL)                       
  106.                                                                    
  107.             DLTDLO    DLO(&DOC) FLR(&FLR)                         
  108.                                                                    
  109. /* 9100 - Remove the utility library from the library list... */
  110.                                                                    
  111.             IF        COND(&RMVLIB *EQ '1') THEN(DO)             
  112.             RMVLIBLE  LIB(&UTLLIB)                               
  113.             MONMSG    MSGID(CPF0000)                             
  114.             ENDDO                                                 
  115.  
  116. /* 9900 - Finally exit the program... */
  117.                                    
  118.             ENDPGM
  119.