MARCOD INPUTDS DS MARCOD JOBname 1 10 MARCOD JOBuser 11 20 MARCOD JOBnumber 21 26 MARCOD SPLFID 27 36 MARCOD SPLNO 37 40B 0 MARCOD RTGTAG 41 290 MARCOD PDFFILE 291 630 MARCOD SVRTYPE 631 631 MARCOD RES1 632 632 MARCOD PATHCCSID 633 636B 0 MARCOD SENDER 637 646 MARCOD USRDTA 647 656 MARCOD SYSNAME 657 664 MARCOD TIMESTMP 665 672 MARCOD OUTQ 673 682 MARCOD OUTQLIB 683 692 MARCOD RES5 693 712 MARCOD FORMTYPE 713 722 MARCO //********************************************* MARCOD OUTDS DS MARCOD DISPOSTN 1 MARCOD CALLAGIN 1 MARCOD RES2 2 MARCOD MSGLEN 9B 0 MARCOD ADDRLEN 9B 0 MARCOD MSGTEXT 255 MARCOD RES3 1 MARCOD EXTOFF 9B 0 MARCOD CCSID 9B 0 MARCOD DSPPDFSTMF 1 MARCOD DSPPDFSPLF 1 MARCOD DSPPDFERR 1 MARCOD DSPAFPSPLF 1 MARCOD RES4 7 MARCOD ADDRESS 255 MARCO // MARCOD EXTLEN 9B 0 MARCOD SUBOFF 9B 0 MARCOD SUBLEN 9B 0 MARCOD RPLYOFF 9B 0 MARCOD RPLYLEN 9B 0 MARCOD CCOFF 9B 0 MARCOD CCLEN 9B 0 MARCOD BCCOFF 9B 0 MARCOD BCCLEN 9B 0 MARCOD BDYPTHOFF 9B 0 MARCOD DIRPTHOFF 9B 0 MARCOD DIRPTHLEN 9B 0 MARCOD ATTPTHOFF 9B 0 MARCOD STMFNAMOFF 9B 0 MARCOD STMFNAMLEN 9B 0 MARCOD EATTNAMOFF 9B 0 MARCOD EATTNAMLEN 9B 0 MARCOD PUBAUTOFF 9B 0 MARCOD PUBAUTLEN 9B 0 MARCOD PDFSPLOFF 9B 0 MARCOD PDFSPLLEN 9B 0 MARCOD AFPSPLOFF 9B 0 MARCOD AFPSPLLEN 9B 0 MARCOD ENCRPTOFF 9B 0 MARCOD ENCRPTLEN 9B 0 MARCO // MARCOD EXTSUBJ 80 MARCOD EXTRPLY 80 MARCOD EXTCC 80 MARCOD EXTBCC 80 MARCO // MARCOD BDYLEN 9B 0 MARCOD BDYNUM 9B 0 MARCOD BDYX1 9B 0 MARCOD BDYY1 9B 0 MARCOD BDYOFF1 9B 0 MARCOD BDYPLEN1 9B 0 MARCOD BDYUSE1 1 MARCOD BDYRES1 3 MARCOD BDYPTH1 80 MARCOD BDYX2 9B 0 MARCOD BDYY2 9B 0 MARCOD BDYOFF2 9B 0 MARCOD BDYPLEN2 9B 0 MARCOD BDYUSE2 1 MARCOD BDYRES2 3 MARCOD BDYPTH2 80 MARCOD BDYX3 9B 0 MARCOD BDYY3 9B 0 MARCOD BDYOFF3 9B 0 MARCOD BDYPLEN3 9B 0 MARCOD BDYUSE3 1 MARCOD BDYRES3 3 MARCOD BDYPTH3 80 MARCO // MARCOD ATTLEN 9B 0 MARCOD ATTNUMB 9B 0 MARCOD ATTX1 9B 0 MARCOD ATTY1 9B 0 MARCOD ATTOFF1 9B 0 MARCOD ATTPLEN1 9B 0 MARCOD ATTUSE1 1 MARCOD ATTRES1 3 MARCOD ATTPTH1 80 MARCOD ATTX2 9B 0 MARCOD ATTY2 9B 0 MARCOD ATTOFF2 9B 0 MARCOD ATTPLEN2 9B 0 MARCOD ATTUSE2 1 MARCOD ATTRES2 3 MARCOD ATTPTH2 80 MARCOD ATTX3 9B 0 MARCOD ATTY3 9B 0 MARCOD ATTOFF3 9B 0 MARCOD ATTPLEN3 9B 0 MARCOD ATTUSE3 1 MARCOD ATTRES3 3 MARCOD ATTPTH3 80 MARCO // MARCOD DIRPTH 80 MARCO // MARCOD PDFSTMFNAM 250 MARCOD PDFATTNAM 80 MARCOD PDFPUBAUT 10 MARCO // MARCOD PDFOUTQ 10 MARCOD PDFOUTQLIB 10 MARCOD PDFSPLNAM 10 MARCOD PDFUSRDTA 10 MARCOD PDFUSRDFN 255 MARCOD PDFFORM 10 MARCO // MARCOD AFPOUTQ 10 MARCOD AFPOUTQLIB 10 MARCOD AFPSPLNAM 10 MARCOD AFPUSRDTA 10 MARCOD AFPUSRDFN 255 MARCOD AFPFORM 10 MARCO // MARCOD PDFMASTPW 32 MARCOD PDFUSRPW 32 MARCOD PDFPRT 1 MARCOD PDFDOCCHG 1 MARCOD PDFCOPY 1 MARCOD PDFENCLVL 1 MARCOD PDFCNTACC 1 MARCOD PDFCHGCMT 1 MARCOD PDFDOCASB 1 MARCOd************************************************* MARCOd* Calcolo posizioni MARCOdp_OUTDS s * MARCOdp_EXTLEN s * MARCOdp_EXTSUBJ s * MARCOdp_EXTRPLY s * MARCOdp_EXTCC s * MARCOdp_EXTBCC s * MARCOdp_PDFATTNAM s * MARCOdp_PDFMASTPW s * MARCOdp_DIRPTH s * MARCOdp_BDYLEN s * MARCOdp_ATTLEN s * MARCOdp_PDFSTMFNAM s * MARCOdp_PDFPUBAUT s * MARCOdp_PDFOUTQ s * MARCOdp_AFPOUTQ s * MARCO // MARCOD INPUTLEN S 9B 0 MARCOD OUTPUTLEN S 9B 0 MARCOD OUTINFO S 9B 0 MARCOD* MARCODDISPEMAIL s 1 inz('N') MARCODDISPIFS s 1 inz('Y') MARCODDISPPDF s 1 inz('N') MARCODDISPAFP s 1 inz('N') MARCO //********************************************* MARCOC *ENTRY PLIST MARCOC PARM INPUTDS MARCOC PARM INPUTLEN MARCOC PARM OUTDS MARCOC PARM OUTPUTLEN MARCOC PARM OUTINFO MARCOC MARCO /free MARCO p_OUTDS = %addr(OUTDS ); MARCO p_EXTLEN = %addr(EXTLEN ); MARCO p_EXTSUBJ = %addr(EXTSUBJ ); MARCO p_EXTRPLY = %addr(EXTRPLY ); MARCO p_EXTCC = %addr(EXTCC ); MARCO p_EXTBCC = %addr(EXTBCC ); MARCO p_PDFATTNAM = %addr(PDFATTNAM ); MARCO p_PDFMASTPW = %addr(PDFMASTPW ); MARCO p_DIRPTH = %addr(DIRPTH ); MARCO p_BDYLEN = %addr(BDYLEN ); MARCO p_ATTLEN = %addr(ATTLEN ); MARCO p_PDFSTMFNAM = %addr(PDFSTMFNAM ); MARCO p_PDFPUBAUT = %addr(PDFPUBAUT ); MARCO p_PDFOUTQ = %addr(PDFOUTQ ); MARCO p_AFPOUTQ = %addr(AFPOUTQ ); MARCO MARCO // Check to see if the output buffer is large enough. OUTPUTLEN MARCO // contains the initial length of the output buffer. If it is not MARCO // large enough, return with OUTINFO set to be the length required. MARCO // This program will be called right back with OUTPUTLEN = OUTINFO. MARCO // MARCO OUTINFO = %len(outds); MARCO IF OUTINFO > OUTPUTLEN; MARCO RETURN; MARCO ENDIF; MARCO // MARCO // Set data structure to all '00's, to make sure there is no stray data in MARCO // any unused fields. MARCO // MARCO /end-free MARCOC MOVE *ALLx'00' OUTDS MARCO /free MARCO // MARCO // Set more processing (CALLAGIN), reserved fields, and pointer to MARCO // extension area. MARCO CALLAGIN = '0'; MARCO RES2 = X'0000'; MARCO RES3 = X'00'; MARCO RES4 = X'00000000000000'; MARCO //EXTOFF = 542; MARCO EXTOFF = p_EXTLEN - p_OUTDS; MARCO EXTLEN = 100; MARCO // Error handling MARCO IF 1 > 1; MARCO DSPPDFSTMF = '0'; MARCO DSPPDFSPLF = '0'; MARCO DSPPDFERR = '1'; MARCO DSPAFPSPLF = '0'; MARCO EXTOFF = 0; MARCO RETURN; MARCO ENDIF; MARCO // MARCO // Error condition does not exist if no error consitions MARCO DSPPDFERR = '0'; MARCO // MARCO // Check customer preference for e-mail MARCO IF DISPEMAIL = 'Y'; MARCO // Mail the file MARCO // Base fields for e-mail MARCO DISPOSTN = '1'; MARCO MSGLEN = %len(msgtext); MARCO ADDRLEN = %len(address); MARCO MSGTEXT = 'Hello ...'; MARCO CCSID = 0; MARCO //ADDRESS = EADDR; MARCO // Extension Area for e-mail MARCO // Subject MARCO SUBOFF = p_EXTSUBJ - p_OUTDS; MARCO SUBLEN = %len(extsubj); MARCO EXTSUBJ = 'Using Intelligent Routing'; MARCO // Reply-to address for e-mail MARCO RPLYOFF = p_EXTRPLY - p_OUTDS; MARCO RPLYLEN = %len(EXTRPLY); MARCO EXTRPLY = '''[EMAIL PROTECTED]'''; MARCO // CC address for e-mail MARCO CCOFF = p_EXTCC - p_OUTDS; MARCO CCLEN = %len(EXTCC); MARCO EXTCC = '''[EMAIL PROTECTED]''' MARCO +'''[EMAIL PROTECTED]'''; MARCO // BCC address for e-mail MARCO BCCOFF = p_EXTBCC - p_OUTDS; MARCO BCCLEN = %len(EXTBCC); MARCO EXTBCC = '''[EMAIL PROTECTED]'''; MARCO // Rename PDF attachment MARCO EATTNAMOFF = p_PDFATTNAM - p_OUTDS; MARCO EATTNAMLEN = %len(PDFATTNAM); MARCO PDFATTNAM = 'Invoice # ...' + '.pdf'; MARCO // MARCO // Encryption of PDF file for e-mail MARCO ENCRPTOFF = p_PDFMASTPW - p_OUTDS; MARCO ENCRPTLEN = %len(PDFMASTPW) + MARCO %len(PDFUSRPW) + MARCO %len(PDFPRT) + MARCO %len(PDFDOCCHG) + MARCO %len(PDFCOPY) + MARCO %len(PDFENCLVL) + MARCO %len(PDFCNTACC) + MARCO %len(PDFCHGCMT) + MARCO %len(PDFDOCASB); MARCO // MARCO PDFMASTPW = 'master'; MARCO PDFUSRPW = ''; MARCO PDFPRT = '1'; MARCO PDFDOCCHG = '0'; MARCO PDFCOPY = '0'; MARCO PDFENCLVL = '2'; MARCO PDFCNTACC = '1'; MARCO PDFCHGCMT = '1'; MARCO PDFDOCASB = '0'; MARCO // MARCO // Directory for Body and Attachment files MARCO DIRPTHOFF = p_DIRPTH - p_OUTDS; MARCO DIRPTHLEN = %len(DIRPTH); MARCO DIRPTH = '/most'; MARCO // MARCO // Set up body files MARCO BDYPTHOFF = p_BDYLEN - p_OUTDS; MARCO BDYNUM = 3; MARCO BDYLEN = %size(BDYLEN) + %size(BDYNUM) MARCO + bdynum * (%size(BDYX1) + MARCO %size(BDYY1) + MARCO %size(BDYOFF1) + MARCO %size(BDYPLEN1) + MARCO %len(BDYUSE1) + MARCO %len(BDYRES1) + MARCO %LEN(BDYPTH1)); MARCO // MARCO // Set up 1st body file MARCO BDYY1 = 20; MARCO BDYX1 = BDYY1 + %len(BDYPTH1); MARCO BDYOFF1 = 20; MARCO BDYUSE1 = '1'; MARCO BDYRES1 = X'000000'; MARCO BDYPTH1 = 'sample.htm'; MARCO BDYPLEN1= %len(%trim(bdypth1)); MARCO // Set up 2nd body file MARCO BDYY2 = 20; MARCO BDYX2 = BDYY2 + %len(BDYPTH2); MARCO BDYOFF2 = 20; MARCO BDYUSE2 = '0'; MARCO BDYRES2 = X'000000'; MARCO BDYPTH2 = '/More/iris.jpg'; MARCO BDYPLEN2= %len(%trim(bdypth2)); MARCO // Set up 3rd body file MARCO BDYY3 = 20; MARCO BDYX3 = BDYY3 + %len(BDYPTH3); MARCO BDYOFF3 = 20; MARCO BDYUSE3 = '1'; MARCO BDYRES3 = X'000000'; MARCO BDYPTH3 = 'ascii.txt'; MARCO BDYPLEN3= %len(%trim(bdypth3)); MARCO // MARCO // Set up attachment files MARCO ATTPTHOFF = p_ATTLEN - p_OUTDS; MARCO ATTNUMB = 1; MARCO ATTLEN = 108; MARCO ATTLEN = %size(ATTLEN) + %size(ATTNUMB) MARCO + bdynum * (%size(ATTX1) + MARCO %size(ATTY1) + MARCO %size(ATTOFF1) + MARCO %size(ATTPLEN1) + MARCO %len(ATTUSE1) + MARCO %len(ATTRES1) + MARCO %LEN(ATTPTH1)); MARCO // MARCO // Set up 1st attachment file MARCO ATTY1 = 20; MARCO ATTX1 = ATTY1 + %len(ATTPTH1); MARCO ATTOFF1 = 20; MARCO ATTUSE1 = '1'; MARCO ATTRES1 = X'000000'; MARCO ATTPTH1 = 'prices.123'; MARCO ATTPLEN1= %len(%trim(attpth1)); MARCO // Set up 2nd attachment file MARCO ATTY2 = 20; MARCO ATTX2 = ATTY2 + %len(ATTPTH2); MARCO ATTOFF2 = 20; MARCO ATTUSE2 = '0'; MARCO ATTRES2 = X'000000'; MARCO ATTPTH2 = ''; MARCO ATTPLEN2= %len(%trim(attpth2)); MARCO // Set up a 3rd attachment file MARCO ATTY3 = 20; MARCO ATTX3 = ATTY3 + %len(ATTPTH3); MARCO ATTOFF3 = 20; MARCO ATTUSE3 = '1'; MARCO ATTRES3 = X'000000'; MARCO ATTPTH3 = ''; MARCO ATTPLEN3= %len(%trim(attpth3)); MARCO // MARCO ELSE; MARCO // MARCO // Do not e-mail MARCO DISPOSTN = '0'; MARCO MSGLEN = 0; MARCO //ADDRLEN = 0; MARCO ADDRLEN = %len(ADDRESS); MARCO MSGTEXT = ''; MARCO ADDRESS = ''; MARCO // MARCO ENDIF; MARCO // MARCO // Check customer preference for storage in IFS MARCO IF DISPIFS = 'Y' and rtgtag <> *blanks; MARCO // MARCO DSPPDFERR = '0'; MARCO dspafpsplf = '0'; MARCO dispostn = '0'; MARCO dsppdfstmf = '1'; MARCO dsppdfsplf = '0'; MARCO MSGLEN = 0; MARCO ADDRLEN = 0; MARCO MSGTEXT = ''; MARCO ADDRESS = ''; MARCO // Store the PDF file as a Stream File MARCO DSPPDFSTMF = '1'; MARCO // Rename & set Authority for STMF MARCO STMFNAMOFF = p_PDFSTMFNAM - p_OUTDS; MARCO //rtgtag = %xlate(''',:&%$?*/." !£()=+-§#@[]^;<>' MARCO // :'_____________________________' MARCO // :%trim(rtgtag)); MARCO MARCO // Parametri di generazione file PDF MARCO PDFSTMFNAM = %trim(W99PATH) + %trim(W99NAME); MARCO STMFNAMLEN = %len(%trim(PDFSTMFNAM)); MARCO PUBAUTOFF = p_PDFPUBAUT - p_OUTDS; MARCO PDFPUBAUT = '*ALL'; MARCO PUBAUTLEN = %len(%trim(pdfpubaut)); MARCO MARCO // MARCO ELSE; MARCO // MARCO // Do not store as stream file MARCO DSPPDFSTMF = '0'; MARCO STMFNAMOFF = 0; MARCO STMFNAMLEN = 0; MARCO // MARCO ENDIF; MARCO // MARCO // Check customer preference for creation of PDF Spooled File MARCO IF DISPPDF = 'Y'; MARCO // MARCO // Create a PDF spooled file MARCO DSPPDFSPLF = '1'; MARCO // MARCO // Attributes for PDF Spooled file MARCO PDFSPLOFF = p_PDFOUTQ - p_OUTDS; MARCO PDFSPLLEN = %len(PDFOUTQ) MARCO + %len(PDFOUTQLIB) MARCO + %len(PDFSPLNAM) MARCO + %len(PDFUSRDTA) MARCO + %len(PDFUSRDFN) MARCO + %len(PDFFORM); MARCO PDFOUTQ = 'PDFOUTQ'; MARCO PDFOUTQLIB = 'qgpl'; MARCO PDFSPLNAM = 'PDFSPLF'; MARCO PDFUSRDTA = 'User Data'; MARCO PDFUSRDFN = 'PDF User Dfn Dta'; MARCO PDFFORM = '*SPLF'; MARCO // MARCO ELSE; MARCO // MARCO // Do not create PDF Spooled file MARCO DSPPDFSPLF = '0'; MARCO PDFSPLOFF = 0; MARCO PDFSPLLEN = 0; MARCO // MARCO ENDIF; MARCO // MARCO // Check customer preference for creation of AFP Spooled File MARCO IF DISPAFP = 'Y'; MARCO // MARCO // Create an AFP spooled file MARCO DSPAFPSPLF = '1'; MARCO // MARCO // Attributes for AFP Spooled file MARCO AFPSPLOFF = p_AFPOUTQ - p_OUTDS; MARCO AFPSPLLEN = %len(AFPOUTQ) MARCO + %len(AFPOUTQLIB) MARCO + %len(AFPSPLNAM) MARCO + %len(AFPUSRDTA) MARCO + %len(AFPUSRDFN) MARCO + %len(AFPFORM); MARCO AFPOUTQ = 'AFPOUTQ'; MARCO AFPOUTQLIB = 'qgpl'; MARCO AFPSPLNAM = 'AFPSPLF'; MARCO AFPUSRDTA = 'User Data'; MARCO AFPUSRDFN = 'AFP User Dfn Dta'; MARCO AFPFORM = '*SPLF '; MARCO // MARCO ELSE; MARCO // MARCO // Do not create AFP Spooled file MARCO DSPAFPSPLF = '0'; MARCO AFPSPLOFF = 0; MARCO AFPSPLLEN = 0; MARCO // MARCO ENDIF; MARCO // MARCO // MARCO // MARCO RETURN; MARCO /END-FREE