Code:
- <pre>
- Auto Reply (AUTORPY)
-
- Type choices, press Enter.
-
- Message queue . . . . . . . . . > Name
- Library . . . . . . . . . . . *LIBL Name, *LIBL, *CURLIB
- Reply message id . . . . . . . . > Character value
- Reply . . . . . . . . . . . . . >
- Reply to job . . . . . . . . . . Name
-
-
-
-
- <b>
- File : QRPGLESRC
- Member : AUTORPY
- Type : RPGLE
- Usage : CRTBNDRPG PGM(AUTORPY) TGTRLS(V5R1M0)
- </b>
- **
- ** Program . . : AUTORPY
- ** Description : Auto Reply Message - CPP
- ** Author . . : Vengoal Chang
- ** Date . . . : 2008/09/09
- **
- **
- **
- ** Program summary
- ** ---------------
- **
- ** Message handling API:
- ** QMHLSTM List Nonprogram Messages
- **
- ** QMHSNDRM Send Reply Message
- **
- ** QMHRTVM Retrieve message
- **
- ** QMHSNDPM Send program message
- **
- **
- **
- ** Compile options:
- ** CrtBndRpg Pgm( AUTORPY )
- ** TgtRls( V5R1M0 )
- **
- **
- **-- Header specifications: --------------------------------------------**
- H Debug Option(*Srcstmt:*NoDebugIO) DftActGrp(*NO) ActGrp(*Caller)
-
- **-- Retrieve message: ------------------------------------------
- D GetMsg Pr ExtPgm( 'QMHRTVM' )
- D RtRcvVar 32767a Options( *VarSize )
- D RtRcvVarLen 10i 0 Const
- D RtFmtNam 10a Const
- D RtMsgId 7a Const
- D RtMsgFq 20a Const
- D RtMsgDta 512a Const Options( *VarSize )
- D RtMsgDtaLen 10i 0 Const
- D RtRplSubVal 10a Const
- D RtRtnFmtChr 10a Const
- D RtError 32767a Options( *VarSize )
-
- D GetSize ds
- D GetBytRtn 10i 0
- D GetBytAvl 10i 0
- D Fmt0400 ds based(FmtPtr)
- D BytRtn 10i 0
- D BytAvl 10i 0
- D OffDftRpy 53 56i 0
- D LenDftRpyR 57 60i 0
- D RpyType 105 114
- D MaxRpyLen 117 120i 0
- D OffVldRpy 125 128i 0
- D NbrVldRpyR 129 132i 0
- D LenVldRpyR 133 136i 0
- D LenVldRpyA 137 140i 0
- D LenVldRpyE 141 144i 0
-
- D Upper C 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
- D Lower C 'abcdefghijklmnopqrstuvwxyz'
-
- D DftRpy S 32
- D DftRpyE S 32 based(DftRpyPtr)
- D VldRpyE S 32 based(VldRpyPtr)
- D VldRpyAryStr S 320
- D VldRpyAry S 32 Dim(10)
- D VldRpyAryIdx S 3i 0
-
- D ErrorNull Ds
- D BytesProv 10i 0 inz(0)
- D BytesAvaile 10i 0 inz(0)
-
- **-- Send escape message:
- D SndEscMsg Pr 10i 0
- D PxMsgId 7a Const
- D PxMsgF 10a Const
- D PxMsgDta 512a Const Varying
- **-- Send completion message:
- D SndCmpMsg Pr 10i 0
- D PxMsgDta 512a Const Varying
-
- **-- Send program message:
- D SndPgmMsg Pr ExtPgm( 'QMHSNDPM' )
- D MsgId 7a Const
- D MsgFq 20a Const
- D MsgDta 128a Const
- D MsgDtaLen 10i 0 Const
- D MsgTyp 10a Const
- D CalStkE 10a Const Options( *VarSize )
- D CalStkCtr 10i 0 Const
- D MsgKey 4a
- D Error 1024a Options( *VarSize )
-
- * Prototypes
- D CrtUsrSpc PR ExtPgm( 'QUSCRTUS' )
- D QlSpcName 20 Const
- D ExtAttr 10 Const
- D SizeInBytes 10I 0 Const
- D InitVal 1 Const
- D PublicAut 10 Const
- D TextDesc 50 Const
- D Replace 10 Const
- D ReplaceYes C '*YES'
- D ReplaceNo C '*NO'
- D ApiErrInfo Like( ApiErr )
-
- D ChgUsrSpcAttr PR ExtPgm( 'QUSCUSAT' )
- D RetdLibName 10
- D QlUsrSpcName 20 Const
- D AttrToChg Like( EnableAutoExtendDs )
- D Const
- D ApiErrInf Like( ApiErr )
-
- D DltUsrSpc PR ExtPgm( 'QUSDLTUS' )
- D QlUsrSpcName 20 Const
- D ApiErrInfo Like( ApiErr )
-
- D AddrOfUsrSpc PR ExtPgm( 'QUSPTRUS' )
- D QlUsrSpcName 20 Const
- D PtrToUsrSpc *
- D ApiErrInfo Like( ApiErr )
-
- D As400ObjFound PR N
- D QlObjName 20 Value
- D ObjType 10 Value
-
- D SndRpyMsg PR ExtPgm( 'QMHSNDRM' )
- D SndMsgKey 4 Const
- D SndQualMsgq 20 Const
- D SndRpyMsgTxt 100 Const
- D SndRpyMsgLen 10I 0 Const
- D SndRmvMsg 10 Const
- D ApiErrInf Like( ApiErr )
-
- D LstMsgsFrmQ PR ExtPgm( 'QMHLSTM' )
- D QlUsrSpcName 20 Const
- D FmtName 8 Const
- D LSTM0100 C 'LSTM0100'
- D MsgSltInf Like( MsgSltInfo )
- D Const
- D SizeOfMsgSltInf...
- D 10I 0 Const
- D FmtOfMsgSltInf...
- D 8 Const
- D MSLT0100 C 'MSLT0100'
- D ApiErrInf Like( ApiErr )
-
- * Other program data
- D RetdLibName S 10
-
- D EnableAutoExtendDs...
- D DS
- D NumFlds 10I 0 Inz( 1 )
- D KeyForAutoExtend...
- D 10I 0 Inz( 3 )
- D LengthOfData 10I 0 Inz( 1 )
- D AutoExtendVal 1 Inz( '1' )
-
- D ApiErr DS
- D AeBytesProv 10I 0 Inz( %Size( ApiErr ) )
- D AeBytesAvl 10I 0
- D AeMsgId 7
- D 1
- D AeMsgDta 256
-
- D MsgSltInfo DS
- D MsiMaxMsgsReq 10I 0 Inz( -1 )
- D MsiListDirection...
- D 10 Inz( '*NEXT' )
- D MsiSelectionCriterion...
- D 10 Inz( '*MNR' )
- D MsiSevCriterion...
- D 10I 0 Inz( *Zero )
- D MsiMaxMsgLen 10I 0 Inz( 112 )
- D MsiMaxHlpLen 10I 0 Inz( 4 )
- D MsiOffstToQlMsgqName...
- D 10I 0
- D MsiOffstToStrMsgKey...
- D 10I 0
- D MsiNumMsgQs 10I 0 Inz( 1 )
- D MsiOffstToFldRetdId...
- D 10I 0
- D MsiNumFldsToReturn...
- D 10I 0 Inz( 3 )
- D MsiQlMsgqName 20
- D MsiStrMsgKey 4 Inz( X'00000000' )
- D MsiFldRetdId 10I 0 Inz( 302 )
- D MsiFldRetdId1 10I 0 Inz( 601 )
- D MsiFldRetdId2 10I 0 Inz(1001 )
-
- D UsrSpcHdr DS Based( SpcPtr )
- D OffstTo1stSpcEntry...
- D 125 128I 0
- D NumberOfMsgs 133 136I 0
-
- D UsrSpcEntry DS Based( UsePtr )
- D UseOffstToNxtEntry...
- D 1 4I 0
- D UseOffstToFldsReturned...
- D 5 8I 0
- D UseMsgId 17 23
- D UseMsgType 24 25
- D UseMsgKey 26 29
- D UseMsgF 30 39
- D UseMsgFLib 40 49
- D UseMsgQ 50 59
- D UseMsgQLib 60 69
-
- D RetdFldsDs DS Based( RetdFldsDsPtr )
- D NextFldRtnOfs 1 4I 0
- D Rf1stLvlTxtLen...
- D 29 32I 0
- D Rf1stLvlTxt 33 144
-
- D ScMsgId S 7
- D ScMsgType S 2
- D ScMsgKey S 4
- D ScJob S 10
- D ScUsr S 10
- D ScNbr S 6
- D ScJobSts S 10
- D ScRpySts S 1
- D Sc1stLvl S 112
- D dftRpyValueErr S N
-
- D main PR ExtPgm('AUTORPY')
- D qualMsgqName 20
- D rpyMsgid 7
- D rpyMsgValue 32
- D rpyToJob 10
-
- D main PI
- D qualMsgqName 20
- D rpyMsgid 7
- D rpyMsgValue 32
- D rpyToJob 10
-
- C Eval MsiQlMsgqName = qualMsgQName
- C CallP As400ObjFound( MsiQlMsgqName:
- C '*MSGQ' )
-
- * Set offset fields in the Msi data structure
- C Eval MsiOffstToQlMsgqName
- C = %Addr( MsiQlMsgqName )
- C - %Addr( MsgSltInfo )
- C Eval MsiOffstToStrMsgKey
- C = %Addr( MsiStrMsgKey )
- C - %Addr( MsgSltInfo )
- C Eval MsiOffstToFldRetdId
- C = %Addr( MsiFldRetdId )
- C - %Addr( MsgSltInfo )
-
- C ExSr LoadUsrSpc
-
- C ExSr ProcessMsgs
-
- C Eval *INLR = *On
-
- * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * =
- * LoadUsrSpc - Creates and then loads the user space with the
- * 1st level text of all messages in the specified
- * message queue.
- C LoadUsrSpc BegSr
-
- * Just to be on the safe side, delete the user space before
- * attempting to create it.
- C CallP DltUsrSpc( 'MSGSPC QTEMP': ApiErr )
-
- C CallP CrtUsrSpc( 'MSGSPC QTEMP':
- C *Blank:
- C 25000:
- C X'00':
- C '*ALL':
- C *Blank:
- C ReplaceYes:
- C ApiErr )
-
- * If there was an error in the API, terminate the subroutine
- C If AeBytesAvl > *Zero
- C CallP SndEscMsg( AeMsgId
- C : 'QCPFMSG'
- C : %Subst( AeMsgDta: 1: AeBytesAvl-16 )
- C )
- C LeaveSr
- C EndIf
-
- * Turn on the autoextend attribute for this user space
- C CallP ChgUsrSpcAttr( RetdLibName:
- C 'MSGSPC QTEMP':
- C EnableAutoExtendDs:
- C ApiErr )
-
- * If there was an error in the API, terminate the subroutine
- C If AeBytesAvl > *Zero
- C LeaveSr
- C EndIf
-
- * Populate the user space with the messages
- C CallP LstMsgsFrmQ( 'MSGSPC QTEMP':
- C LSTM0100:
- C MsgSltInfo:
- C %Size( MsgSltInfo ):
- C MSLT0100:
- C ApiErr )
-
- * If there was an error in the API, terminate the subroutine
- C If AeBytesAvl > *Zero
- C CallP SndEscMsg( AeMsgId
- C : 'QCPFMSG'
- C : %Subst( AeMsgDta: 1:AeBytesAvl- 16 )
- C )
- C LeaveSr
- C EndIf
-
- * Get a pointer to the user space
- C CallP AddrOfUsrSpc( 'MSGSPC QTEMP':
- C SpcPtr:
- C ApiErr )
-
- * If there was an error in the API, terminate the subroutine
- C If AeBytesAvl > *Zero
- C CallP SndEscMsg( AeMsgId
- C : 'QCPFMSG'
- C : %Subst( AeMsgDta: 1: AeBytesAvl-16 )
- C )
- C LeaveSr
- C EndIf
-
- C EndSr
-
- * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * =
- * ProcessMsgs -- Process messages in the specified message queue
- C ProcessMsgs BegSr
-
- * Set the basing pointer for the User Space Entry for the first
- * message in the subfile.
- C Eval UsePtr
- C = SpcPtr + OffstTo1stSpcEntry
- C Do NumberOfMsgs
- * move user space values to screen
- C Eval ScMsgId = UseMsgId
- C Eval ScMsgType = UseMsgType
- C Eval ScMsgKey = UseMsgKey
- C* ScMsgId dsply
- * get Message Text
- C Eval RetdFldsDsPtr
- C = SpcPtr + UseOffstToFldsReturned
- C Eval Sc1stLvl
- C = %Subst( Rf1stLvlTxt: 1:
- C Rf1stLvlTxtLen )
- * get Sender Qualjob
- C Eval RetdFldsDsPtr
- C = SpcPtr + NextFldRtnOfs
- C Eval SCJob
- C = %Subst( Rf1stLvlTxt: 1: 10)
- C Eval SCUsr
- C = %Subst( Rf1stLvlTxt:11: 10)
- C Eval SCNbr
- C = %Subst( Rf1stLvlTxt:21: 6)
- * get message reply status
- C Eval RetdFldsDsPtr
- C = SpcPtr + NextFldRtnOfs
- C Eval SCRpySts
- C = %Subst( Rf1stLvlTxt: 1: 10)
- C* ScRpySts dsply
- C If UseMsgType = '05' and
- C SCRpySts = 'W'
- C If UseMsgId = rpyMsgId
- C ExSr ChkRpyValue
- C If rpyToJob = *blanks or
- C (rpyToJob <> *blanks and
- C ScJob = rpyToJob )
- C ExSr RpyMsg
- C EndIf
- C EndIf
- C EndIf
- C Eval UsePtr = SpcPtr
- C + UseOffstToNxtEntry
-
- C EndDo
-
- C EndSr
-
- * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * =
- * ChkRpyValue - Check reply value valid or not
- C ChkRpyValue BegSr
-
- c eval dftRpyValueErr = *Off
- C* How much storage is needed for everything?
- C callp GetMsg( GetSize :%size(GetSize)
- C :'RTVM0400' :UseMsgId
- C : UseMsgF + UseMsgFLib
- C :' ' :0
- C :'*NO' :'*NO'
- C :ErrorNull)
- c* Allocate it and then call the API again
- c eval FmtPtr = %alloc(GetBytAvl)
- c callp GetMsg( Fmt0400 :GetBytAvl
- c :'RTVM0400' :UseMsgID
- c :UseMsgF + UseMsgFLib
- c :' ' :0
- c :'*NO' :'*NO'
- c :ErrorNull)
- c* Default replies returned
- c if rpyMsgValue = '*DFT'
- c if LenDftRpyR > 0
- c eval DftRpyPtr = FmtPtr + OffDftRpy
- c eval DftRpy = %SubSt(DftRpyE:1:LenDftRpyR)
- c* DftRpy dsply
- c eval rpyMsgValue = DftRpy
- c else
- c eval dftRpyValueErr = *On
- c endif
- c endif
- c* Any valid replies returned
- c if NbrVldRpyR > 0
- c eval VldRpyPtr = FmtPtr + OffVldRpy
- c eval VldRpyAryIdx = 1
- c reset VldRpyAry
- c do NbrVldRpyR
- c* VldRpyE dsply
- c eval VldRpyAryStr = %trim(VldRpyAryStr) +
- c ' ' + %trim(VldRpyE)
- c eval VldRpyAry(VldRpyAryIdx) = VldRpyE
- c eval VldRpyAryIdx = VldRpyAryIdx + 1
- c eval VldRpyPtr = VldRpyPtr + LenVldRpyE
- c enddo
-
- c if Not dftRpyValueErr
- c lower:upper xlate rpyMsgValue rpyMsgValue
- c if %lookup(rpyMsgValue: VldRpyAry) = 0
- C CallP SndEscMsg( 'CPF9898'
- C : 'QCPFMSG'
- C : 'MsgId: ' + UseMsgId +
- C ' reply value ' + %trim(rpyMsgValue) +
- C ' is not valid, valid reply value is '+
- C %trim(VldRpyAryStr)
- C )
- c endif
- c else
- C CallP SndEscMsg( 'CPF9898'
- C : 'QCPFMSG'
- C : 'MsgId: ' + UseMsgId +
- C ' reply value ' + %trim(rpyMsgValue) +
- C ' is not valid, no default reply' +
- C ' setting, valid reply value is '+
- C %trim(VldRpyAryStr)
- C )
- c endif
-
- C endif
- C EndSr
-
- * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * =
- *
- C RpyMsg BegSr
- C
- C CALLP SndRpyMsg ( SCMsgKey :
- C MsiQlMsgqName :
- C %trim(rpyMsgValue):
- C %len(%trim(rpyMsgValue)):
- C '*NO' :
- C ApiErr)
- * If there was an error in the API, terminate the subroutine
- C If AeBytesAvl > *Zero
- C* AeMsgId DSPLY
- C CallP SndEscMsg( AeMsgId
- C : 'QCPFMSG'
- C : %Subst( AeMsgDta: 1 )
- C )
- C Else
- C Callp SndCmpMsg(
- C 'MsgId:' + rpyMsgId + ' replied to job'+
- C ' ' + %trim(SCNbr) + '/' + %trim(SCUSr)+
- C '/' + %trim(SCJob) + ' with value ' +
- C %trim(rpyMsgValue) + '.'
- C )
- C EndIf
- C
- C EndSr
-
- * = * = * = * = * = * = * = * = * = * = * = * = * = * = * = * =
- * As400ObjFound - Attempts to locate an AS/400 object
- P As400ObjFound B
-
- D As400ObjFound PI N
- D QlObjName 20 Value
- D ObjType 10 Value
-
- * Local variables and prototypes
-
- D RtvObjDesc PR ExtPgm( 'QUSROBJD' )
- D RcvrVar 8
- D LenRcvrVar 10I 0 Const
- D FmtName 8 Const
- D QlObjName 20 Const
- D ObjType 10 Const
- D ApiErrInf Like( ApiErr )
-
- D ApiErr DS
- D AeBytesProv 10I 0 Inz( %Size( ApiErr ) )
- D AeBytesAvl 10I 0
- D AeMsgId 7
- D 1
- D AeMsgDta 256
-
- D Rcvr S 8
-
-
- * Invoke the QUSROBJD API to attempt to locate the object
- C CallP RtvObjDesc( Rcvr:
- C %Size( Rcvr ):
- C 'OBJD0100':
- C QlObjName:
- C ObjType:
- C ApiErr )
-
- * If the API returns any error at all, I assume we were unable to
- * locate the object.
- C If AeBytesAvl > *Zero
- C CallP SndEscMsg( AeMsgId
- C : 'QCPFMSG'
- C : %Subst( AeMsgDta: 1:AeBytesAvl- 16 )
- C )
- C Return *Off
- C Else
- C Return *On
- C EndIf
-
- P As400ObjFound E
- **-- Send escape message: ----------------------------------------------**
- P SndEscMsg B
- D Pi 10i 0
- D PxMsgId 7a Const
- D PxMsgF 10a Const
- D PxMsgDta 512a Const Varying
- **
- D MsgKey s 4a
-
- C Callp SndPgmMsg( PxMsgId
- C : PxMsgF + '*LIBL'
- C : PxMsgDta
- C : %Len( PxMsgDta )
- C : '*ESCAPE'
- C : '*PGMBDY'
- C : 1
- C : MsgKey
- C : ApiErr
- C )
-
- C If AeBytesAvl > *Zero
- C Return -1
- C
- C Else
- C Return 0
- C EndIf
- P SndEscMsg E
- **-- Send completion message: ------------------------------------------**
- P SndCmpMsg B
- D Pi 10i 0
- D PxMsgDta 512a Const Varying
-
- D MsgKey s 4a
-
- C Callp SndPgmMsg( 'CPF9897'
- C : 'QCPFMSG *LIBL'
- C : PxMsgDta
- C : %Len( PxMsgDta )
- C : '*COMP'
- C : '*PGMBDY'
- C : 1
- C : MsgKey
- C : ApiErr
- C )
-
- C If AeBytesAvl > *Zero
- C Return -1
- C
- C Else
- C Return 0
- C EndIf
-
- **
- P SndCmpMsg E
-
-
- <b>
- File : QCMDSRC
- Member : AUTORPY
- Type : CMD
- Usage : CRTCMD CMD(AUTORPY) PGM(AUTORPY)
- </b>
- /* =============================================================== */
- /* = Command....... AutoRpy = */
- /* = CPP........... AutoRpy RPGLE = */
- /* = Description... Auto reply to the sender of an inquiry = */
- /* = message. = */
- /* = = */
- /* = CrtCmd Cmd( AutoRpy ) = */
- /* = Pgm( AutoRpy ) = */
- /* = SrcFile( YourSourceFile ) = */
- /* =============================================================== */
- /* = Date : 2008/09/09 = */
- /* = Author: Vengoal Chang = */
- /* =============================================================== */
- CMD PROMPT('Auto Reply')
-
- PARM KWD(MSGQ) TYPE(QUAL2) MIN(1) PROMPT('Message +
- queue')
- PARM KWD(MSGID) TYPE(*CHAR) LEN(7) PROMPT('Reply +
- message id')
- PARM KWD(REPLY) TYPE(*CHAR) LEN(32) DFT(*DFT) +
- SPCVAL((*DFT)) PROMPT('Reply')
- PARM KWD(LMTRPYJOB) TYPE(*NAME) LEN(10) +
- PROMPT('Reply to job')
-
- QUAL2: QUAL TYPE(*NAME) EXPR(*YES)
- QUAL TYPE(*NAME) DFT(*LIBL) SPCVAL((*LIBL) +
- (*CURLIB)) EXPR(*YES) PROMPT('Library')
-
-
-
- Test Step:
- 1.
- CRTMSGF QGPL/TESTMSGF
- /* Add message id with no default reply value */
- ADDMSGD MSGID(TST0001) MSGF(QGPL/TESTMSGF) MSG(TEST_001) SEV(99) VALUES(C D R I)
-
- /* Add message id with default reply value */
- ADDMSGD MSGID(TST0002) MSGF(QGPL/TESTMSGF) MSG(TEST_001) SEV(99) VALUES(C D R I) DFT(C)
-
- 2.
- AUTORPYT1 CLP:
- PGM
- DCL &CURUSR *CHAR 10
- RTVJOBA USER(&CURUSR)
- SNDUSRMSG MSGID(TST0001) MSGF(QGPL/TESTMSGF) +
- TOUSR(&CURUSR)
- ENDPGM
-
- AUTORPYT2 CLP:
- PGM
- DCL &CURUSR *CHAR 10
- RTVJOBA USER(&CURUSR)
- SNDUSRMSG MSGID(TST0002) MSGF(QGPL/TESTMSGF) +
- TOUSR(&CURUSR)
- ENDPGM
-
- 3.
- Compile AUTORPYT1, AUTORPYT2
-
- 4. for example use USER01 subbmit job
- SBMJOB CMD(CALL AUTORPYT1) JOB(JOB1)
- SBMJOB CMD(CALL AUTORPYT2) JOB(JOB2)
-
- 5.
- DSPMSG USER01
-
- Display Messages
- System: DDSC810
- Queue . . . . . : USER01 Program . . . . : *DSPMSG
- Library . . . : QUSRSYS Library . . . :
- Severity . . . : 00 Delivery . . . : *HOLD
-
- Type reply (if required), press Enter.
- Job 690946/USER01/JOB2 completed normally on 09/09/08 at 15:17:58.
- Job 690962/USER01/JOB1 completed normally on 09/09/08 at 15:17:58.
- TEST 0001
- Reply . . .
- Waiting for reply to message on message queue USER01.
- TEST_002
- Reply . . .
- Waiting for reply to message on message queue USER01.
-
-
-
- 6.
- AUTORPY MSGQ(USER01) MSGID(TST0001)
- MSGID TST001 does not set default reply value,so we got following message :
- Additional Message Information
-
- Message ID . . . . . . : CPF9898 Severity . . . . . . . : 40
- Message type . . . . . : Information
- Date sent . . . . . . : 09/09/08 Time sent . . . . . . : 15:19:26
-
- Message . . . . : MsgId: TST0001 reply value *DFT is not valid, no default
- reply setting, valid reply value is C D E F.
- Cause . . . . . : This message is used by application programs as a general
- escape message.
-
-
-
- 7.
- AUTORPY MSGQ(USER01) MSGID(TST0001) REPLY(C)
- Got following message:
- Additional Message Information
-
- Message ID . . . . . . : CPF9897 Severity . . . . . . . : 40
- Message type . . . . . : Information
- Date sent . . . . . . : 09/09/08 Time sent . . . . . . : 15:22:06
-
- Message . . . . : MsgId:TST0001 replied to job 690963/USER01/JOB1 with
- value C.
- Cause . . . . . : No additional online help information is available.
-
- 7.1 DSPMSG USER01
-
- Display Messages
- System: DDSC810
- Queue . . . . . : USER01 Program . . . . : *DSPMSG
- Library . . . : QUSRSYS Library . . . :
- Severity . . . : 00 Delivery . . . : *HOLD
-
- Type reply (if required), press Enter.
- Job 690946/USER01/JOB2 completed normally on 09/09/08 at 15:17:58.
- Job 690962/USER01/JOB1 completed normally on 09/09/08 at 15:17:58.
- TEST 0001
- Reply . . : C
- Waiting for reply to message on message queue USER01.
- TEST_002
- Reply . . .
- Waiting for reply to message on message queue USER01.
- Job 690963/VENGOAL/JOB1 completed normally on 09/09/08 at 15:22:06.
-
-
- 8.
- AUTORPY MSGQ(USER01) MSGID(TST0002) REPLY(RR) <== Reply TST002 message with wrong value
- Got following message:
- Additional Message Information
-
- Message ID . . . . . . : CPF9898 Severity . . . . . . . : 40
- Message type . . . . . : Information
- Date sent . . . . . . : 09/09/08 Time sent . . . . . . : 15:26:54
-
- Message . . . . : MsgId: TST0002 reply value RR is not valid, valid reply
- value is C D R I.
- Cause . . . . . : This message is used by application programs as a general
- escape message.
-
- 9.
- AUTORPY MSGQ(USER01) MSGID(TST0002) JOB(JOB3)
- Because we just submitted JOB1,JOB2, the TST0002 still isn't replied.
- DSPMSG USER01 will got same step 7.1 result.
-
- 10.
- AUTORPY MSGQ(USER01) MSGID(TST0002) LMTRPYJOB(JOB2)
- Got following message:
- Additional Message Information
-
- Message ID . . . . . . : CPF9897 Severity . . . . . . . : 40
- Message type . . . . . : Information
- Date sent . . . . . . : 09/09/08 Time sent . . . . . . : 15:34:13
-
- Message . . . . : MsgId:TST0002 replied to job 690965/USER01/JOB2 with
- value C.
- Cause . . . . . : No additional online help information is available.
-
- 10.1
- DSPMSG USER01
- Display Messages
- System: DDSC810
- Queue . . . . . : USER01 Program . . . . : *DSPMSG
- Library . . . : QUSRSYS Library . . . :
- Severity . . . : 00 Delivery . . . : *HOLD
-
- Type reply (if required), press Enter.
- Job 690946/USER01/JOB2 completed normally on 09/09/08 at 15:17:58.
- Job 690962/USER01/JOB1 completed normally on 09/09/08 at 15:17:58.
- TEST 0001
- Reply . . : C
- Waiting for reply to message on message queue USER01.
- TEST_002
- Reply . . : C
- Waiting for reply to message on message queue USER01.
- Job 690963/USER01/JOB1 completed normally on 09/09/08 at 15:22:06.
- Job 690965/USER01/JOB2 completed normally on 09/09/08 at 15:34:13.
- </pre>
|
|