SeanHoppe.com › Cleo CodeSamples › Call 864, 824, 830 report program from TPMC Exit Point › EXTOL RPG - Create Readable Inbound 864 Report
FEXLLMQLT IF E K DISK
FEXDINUL0 IF E K DISK USROPN EXTMBR(MBRNAM)
FQPRINT O F 132 PRINTER OFLIND(*INOF) FORMLEN(66) FORMOFL(64)
*-------------------------------------------------------------------------
D X S 3 0
D Y S 3 0
D Z S 3 0
D SEG S 3
D BMG S 73
D DTM S 8 0
D FROM S 73
D REF01 S 2 DIM(4) CTDATA PERRCD(4)
D REFTX S 20 DIM(4) CTDATA PERRCD(1)
D REFER S 73
D MSG S 118 DIM(99)
D MIT01 S 30
D MIT02 S 80
D USADAT S D DATFMT(*USA)
*-------------------------------------------------------------------------
* accept message log# passed from CL pgm
C *ENTRY PLIST
C PARM MSGLOG 11
C MOVE MSGLOG MSGLOG# 11 0
* get member name, element/segment seperators, starting/ending rec#
C MSGLOG# CHAIN @LLMQLT 10
C MOVE LMINDL MBRNAM 10
* open specific file member for current doc & read starting rec
C OPEN EXDINUL0
C LMNWRS CHAIN @DINUL0 20
* loop until ending unwrapped rec found
C DOW NOT *IN20
C
C SELECT
* get header message
C WHEN %SUBST(INNWDT:1:4) = 'BMG' + LMELDM
C EVAL X = %SCAN(LMELDM:INNWDT:8) - 8
C IF X < 1
C EVAL X = %LEN(%TRIM(INNWDT)) - 8
C ENDIF
C EVAL BMG = %SUBST(INNWDT:8:X)
* customer from info
C WHEN %SUBST(INNWDT:1:6) = 'N1' + LMELDM + 'FR'
C + LMELDM
C EVAL X = %SCAN(LMELDM:INNWDT:7) - 7
C IF X < 1
C EVAL X = %LEN(%TRIM(INNWDT)) - 7
C ENDIF
C EVAL FROM = %SUBST(INNWDT:7:X)
* get reference info
C WHEN %SUBST(INNWDT:1:4) = 'REF' + LMELDM
C EVAL X = %LOOKUP(%SUBST(INNWDT:5:2):REF01)
C EVAL Y = %SCAN(LMSGDM:INNWDT) - 8
C IF X < 1
C EVAL X = %LEN(%TRIM(INNWDT)) - 8
C ENDIF
C EVAL REFER = REFTX(X) + %SUBST(INNWDT:8:Y)
* get message identification
C WHEN %SUBST(INNWDT:1:4) = 'MIT' + LMELDM
C AND LMTPCD = '3MCAN'
C EVAL X = %SCAN(LMELDM:INNWDT:5) - 1
C EVAL MIT01 = %SUBST(INNWDT:5:X)
C EVAL Y = %SCAN(LMSGDM:INNWDT:X+2) - 1
C EVAL MIT02 = %SUBST(INNWDT:X+2:Y)
* get message text
C WHEN %SUBST(INNWDT:1:4) = 'MSG' + LMELDM
C EVAL X = %SCAN(LMSGDM:INNWDT) - 5
C IF X < 1
C EVAL X = %LEN(%TRIM(INNWDT)) - 8
C ENDIF
C ADD 1 Z
C EVAL MSG(Z) = %SUBST(INNWDT:5:X)
C ENDSL
* get next record & check if last rec for current doc
C READ @DINUL0 20
C N20INNWRC COMP LMNWRE 20
C ENDDO
C CLOSE EXDINUL0
* print header
C EXCEPT #HEADER
C 1 DO Z X
* print messages
C EXCEPT #MESSAGE
C ENDDO
* close spoolfile & send as email
C EXCEPT #FOOTER
C MOVE *ON *INLR
* SEND SPLF via email
<---- INSERT EMAIL CODE HERE ---->
C RETURN
*-------------------------------------------------------------------------
OQPRINT E #HEADER 1
O 'FROM: '
O FROM
O E #HEADER 2
O 'RE..: '
O REFER
O E #HEADER 1 1
O BMG
O E #MESSAGE 1
O MSG(X)
O E #FOOTER 2
O '*** END OF REPORT***'
** *-------------------------------------------------------------------------
IVIKSIPO
**
Invoice Number
Invoice Number
Shipment Number
Purchase Order