Troubleshooting
Problem
The following demonstrates the use of a message subfile in an RPG program.
Resolving The Problem
The following demonstrates the use of a message subfile in an RPG program:
DDS Source:
A CF03(03)
A HELP
A R FMT1
A OVERLAY
A 2 3'FULL SCREEN'
A FLD1 10 B 3 3
*
A R MSGSFL SFL
A SFLMSGRCD(24)
A MSGKEY SFLMSGKEY
A PGMQ SFLPGMQ
A R MSGSFLC SFLCTL(MSGSFL)
A SFLSIZ(0002)
A SFLPAG(0001)
A OVERLAY
A SFLDSP
A SFLDSPCTL
A SFLINZ
A 98 SFLEND
A PGMQ SFLPGMQ
Here is the RPGLE program called TESTRPGLE:
Ftestdspf CF E WORKSTN
D DTA S 62
*
C EVAL DTA = 'THIS IS A TEST MSG '
* SEND MSG0001 FROM MESSAGE FILE CPF9898 TO PROGRAM MESSAGE QUEUE
C MOVEL 'CPF9898' MSGID
C MOVEL 'QCPFMSG' MSGF
C MOVE DTA MSGDTA
C MOVE 'I' MSGOPT
C EXSR SEND
* SETON SFLEND INDICATOR FOR MESSAGE SUBFILE
C SETON 98
* WRITE MESSAGE SUBFILE
C WRITE MSGSFLC
* WRITE/READ REGULAR SCREEN FORMAT
C EXFMT FMT1
* CLEAR THE PROGRAM MESSAGE QUEUE
C MOVE 'C' MSGOPT
C EXSR SEND
*
* WRITE MESSAGE SUBFILE
C WRITE MSGSFLC
* WRITE/READ REGULAR SCREEN FORMAT
C EXFMT FMT1
C MOVE '1' *INLR
****************************************************************
C *INZSR BEGSR
* MOVE THE PROGRAM NAME TO THE PROGRAM MESSAGE QUEUE FIELD
C MOVEL 'TESTRPGLE' PGMQ
C ENDSR
****************************************************************
* THIS SUBROUTINE CALLS A CL PROGRAM THAT SENDS THE MESSAGE
* TO THE PROGRAM MESSAGE QUEUE.
****************************************************************
C SEND BEGSR
C CALL 'TESTCL'
C PARM MSGID 7
C PARM MSGF 10
C PARM MSGDTA 62
C PARM MSGOPT 1
C ENDSR
Here is the CL program called TESTCL:
PGM PARM(&MSGID &MSGF &MSGDTA &MSGOPT)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGOPT) TYPE(*CHAR) LEN(1)
DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(62)
IF COND(&MSGOPT *EQ 'I') THEN(SNDPGMMSG +
MSGID(&MSGID) MSGF(&MSGF) MSGDTA(&MSGDTA))
IF COND(&MSGOPT *EQ 'C') THEN(RMVMSG PGMQ(*PRV +
(*)) CLEAR(*ALL))
ENDPGM
Historical Number
7695510
Was this topic helpful?
Document Information
Modified date:
18 December 2019
UID
nas8N1010286