***************************************************************** * Program Description **** ***************************************************************** *Program Name : VFNDMSG *Author : Victor Voilevitch *Date : 14.06.1999 *Programming Language: RPG *Description: This program finds message by its text * *APIs Used: QMHSNDPM - Send Program Message * QMHRTVM - Retrieve Message * QMHRMVPM - Remove Program Messages * QUSROBJD - Retrieve Object Description F***************************************************************** F* Files **** F***************************************************************** F* Display file FVFNDMSGDCF E WORKSTN * E***************************************************************** E* Message Arrays **** E***************************************************************** E* E* Error Message Data Formatting E #ER 80 80 1 E #WH 1 20 23 E* Message Id Formatting E #ID 7 1 E* RUNQRY command line E #RS 1 1 50 E* Select parameter Formatting E #SS 50 1 E* File/Library Name Formatting E #NN 10 1 E #N2 10 1 E* 256 limit avoiding E #MS 400 1 E #M1 132 1 E #M2 256 1 * I***************************************************************** I* Data Structures **** I***************************************************************** I* I. Error Code Parameter Include for the APIs I* IQUSBN DS I* Qus EC I I 100 B 1 40QUSBNB I* Bytes Provided I B 5 80QUSBNC I* Bytes Available I 9 15 QUSBND I* Exception Id I 16 16 QUSBNF I* Reserved I* 17 17 QUSBNG I* I* Varying length I 17 100 QUSBNG I* I***************************************************************** I* Qualified Object Name Data Structure I* IOBJECT DS I I ' ' 1 10 OBJNAM I I '*LIBL ' 11 20 OBJLIB I* I***************************************************************** I* Parameters DS for send pgm msg API I* I DS I I 'CPF9898' 1 7 #MSGID I 8 27 #MSGF I I 'QCPFMSG' 8 17 #MSGFI I I '*LIBL' 18 27 #MSGFL I 28 155 #MSGDT I I 80 B 156 1590#MSGDL I I '*INFO' 160 169 #MSGTP I I 'VFNDMSG' 170 179 #QUEUE I I 0 B 180 1830#SNDTO I 184 187 #MSGKY I I 0 B 188 1910#ERRCD I* I***************************************************************** I* Parameters DS for send pgm msg API (SQL messages) I* I DS I 1 7 #QSGID I 8 27 #QSGF I I 'QCPFMSG' 8 17 #QSGFI I I '*LIBL' 18 27 #QSGFL I 28 155 #QSGDT I B 156 1590#QSGDL I I '*INFO' 160 169 #QSGTP I I 'VFNDMSG' 170 179 #QSQUE I I 0 B 180 1830#QSSTO I 184 187 #QSMKY I I 0 B 188 1910#QSRCD I* I***************************************************************** I* Parameters DSs for retrieve msg API I* a) RTVM0300 Format IQMHCQ DS I* Qmh Rtvm RTVM0300 I B 1 40BYTRET I* Bytes Return I B 5 80BYTAVA I* Bytes Available I B 9 120MSGSEV I* Message Severity I B 13 160ALERTI I* Alert Index I 17 25 ALERTO I* Alert Option I 26 26 LOGIND I* Log Indicator I 27 33 MSGID I* Message ID I 34 36 QMHCQK I* Reserved I B 37 400QMHCQL I* Number Replace Data Formats I B 41 440QMHCQM I* Text CCSID Convert Status I B 45 480QMHCQN I* Data CCSID Convert Status I B 49 520QMHCQP I* Text CCSID Returned I B 53 560QMHCQQ I* Offset Reply Text I B 57 600QMHCQR I* Length Reply Returned I B 61 640QMHCQS I* Length Reply Available I B 65 680MSGOFF I* Offset Message Returned I B 69 720MSGLEN I* Length Message Returned I B 73 760MSGAVA I* Length Message Available I B 77 800HLPOFF I* Offset Help Returned I B 81 840HLPLEN I* Length Help Returned I B 85 880HLPAVA I* Length Help Available I B 89 920QMHCQ0 I* Offset Formats I B 93 960QMHCQ1 I* Length Formats Returned I B 97 1000QMHCQ2 I* Length Formats Available I B 101 1040QMHCQ3 I* Length Format Element I 105 504 #MS I* ### LEVEL 1/2 TEXT I* Varying length I* I* b) Message Information I@RTVMI DS I I 504 B 1 40#RTLEN I* c) Replacement Data, CCSID etc. I DS I I 0 B 1 40#RTRDL I I 0 B 5 80#CCSID I* I***************************************************************** I* DS for multi rows processing I@MSG DS 21 I 1 10 @LIB I 11 20 @FILE I 21 27 @ID I 28 159 @TEXT I 160 415 @HELP I* I***************************************************************** I* Parameters DSs for retrieve object description API I* a) OBJD0100 Format IQRTVO DS I B 1 40BRORET I* Bytes Return I B 5 80BROAVA I* Bytes Available I 9 18 BRONAM I* Object Name I 19 28 BROLIB I* Object Lib I 29 38 BROTYP I* Object Typ I 39 48 LIBLIB I* Returned Library I* I* b) Length I@ROLEN DS I I 48 B 1 40#ROLEN I* I***************************************************************** I* Program status information DS I* I@SPSDS SDS I *PROGRAM MSGPQ I* I***************************************************************** I* Binary 4-digits zeroes field I X'00000000' C C#0000 I***************************************************************** I* Binary 4,0 to Zoned 4,0 conversion DS I DS I B 1 40#XER1 I 1 40#XID I***************************************************************** I* Parameters DS for copy into file command I* I@COPYS DS I I 'CPYF FROMFILE(' 1 20 #CPY1 I I 'QTEMP/VFNDMSG) ' 21 40 #CPY2 I I 'TOFILE( ' 41 60 #CPY3 I 61 70 #LNAME I I '/' 71 71 #CPY4 I 72 81 #FNAME I I ') MBROPT(*ADD) ' 82 101 #CPY5 I I 'CRTFILE(*YES) ' 102 121 #CPY6 I* I***************************************************************** I* Screen Output Fiields I 'Messages total -C C#NDTO I ':' I 'Messages selected -C C#NDSE I ':' * C***************************************************************** C* MAIN LINE **** C***************************************************************** C* C* Default input C MOVELOBJLIB $LIBL P C MOVELOBJNAM $FILE P C MOVEL'Y' $CASE P C MOVEL'N' $LVL2 P C* C* Create a tables. C EXSR CRTTBL C* C*==================================================== C*== Start of main cycle ==== C*== get input and process it ==== C*==================================================== C *INKC DOWEQ*OFF C* C* Get user input values C WRITEMSGCTL C MOVE *OFF *IN27 C EXFMTMAIN C* C* HELP pressed C *IN01 IFEQ *ON C EXFMTWHELP C ITER C ENDIF C* C* F3 pressed C *INKC IFEQ *ON C ITER C ENDIF C* C* F8 pressed C *INKH IFEQ *ON F8 pressed C *IN20 IFEQ *ON Found any C EXSR F8SUBR --View-- C ENDIF Found any C ITER C ENDIF F8 pressed C* C* F9 pressed C *INKI IFEQ *ON F9 pressed C *IN20 IFEQ *ON Found any C EXSR F9SUBR --Copy-- C ENDIF Found any C ITER C ENDIF F9 pressed C* C* Not Enter pressed C *IN26 IFEQ *ON C ITER C ENDIF C* C* Hide F8, F9 Buttons C MOVE *OFF *IN20 C Z-ADD0 NNALL C Z-ADD0 NNSEL C Z-ADD0 ##ALL 100 C* C* Clearing tables. C EXSR CLRTBL C* C* Clear messages C CALL 'QMHRMVPM' C PARM 'VFNDMSG' #CLRQ 10 C PARM C#0000 #CLRCN 4 C PARM ' ' #CLRKY 4 C PARM '*ALL' #CLRRM 10 C PARM C#0000 #CLRER 4 C* C* Handle input request C MOVEL$LIBL OBJLIB P C MOVEL$FILE OBJNAM P C* C* Build selecting criteria. C EXSR BLDSLC C* C* Process C* C* Find Object C CALL 'QUSROBJD'@RTVOB C MOVEL$FILE OBJNAM P C Z-ADD19 #N C EXSR ERRCOD C QUSBNC IFGT 0 C ITER C ENDIF C MOVELLIBLIB $LIBL P C* C* First Message C EXSR FIRST C QUSBNC IFGT 0 C ITER C ELSE C EXSR ADDMSG C ENDIF C* Next Messages C QUSBNC DOWEQ0 C EXSR NEXT C QUSBNC IFGT 0 C MSGID OREQ *BLANKS C LEAVE C ELSE C EXSR ADDMSG C ENDIF C ENDDO C* Nothing if error encountered C QUSBNC IFGT 0 C ITER C ELSE C EXSR SELMSG C ENDIF C* Show counters C MOVE *ON *IN22 C* C* Show F8, F9 Buttons C NNSEL IFGT 0 C MOVE *ON *IN20 C ENDIF C* C* C* C* ** do until F3 pressed C ENDDO C*==================================================== C*== End of main cycle ==== C*== get input and process it ==== C*==================================================== C* C* Deleting tables. C EXSR DLTTBL C* C* C SETON LR C RETRN C* C***************************************************************** C* End of Mainline **** C***************************************************************** C* C***************************************************************** C* Subroutine to create a tables **** C* **** C***************************************************************** C* C CRTTBL BEGSR C* C/EXEC SQL C+ Create Table QTEMP/VFNDMSG C+ ( Library Char(10), C+ MsgFile Char(10), C+ Msg_Id Char(7 ), C+ MsgText Char(132), C+ MsgHelp Char(256) C+ ) C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD1 #N C EXSR ERRSQL C* C/EXEC SQL C+ Label On Table QTEMP/VFNDMSG Is C+ 'VFNDMSG - output file' C/END-EXEC C* C* See if any errors were returned in the error code parameter. C Z-ADD2 #N C EXSR ERRSQL C* C/EXEC SQL C+ Create Table QTEMP/VFNDMSG2 C+ ( Library Char(10), C+ MsgFile Char(10), C+ Msg_Id Char(7 ), C+ MsgText Char(132), C+ MsgHelp Char(256), C+ Desc Char(50) C+ ) C/END-EXEC C* C* See if any errors were returned in the error code parameter. C Z-ADD3 #N C EXSR ERRSQL C* C ENDSR C* * C***************************************************************** C* Subroutine to clear a tables **** C* **** C***************************************************************** C* C CLRTBL BEGSR C* C/EXEC SQL C+ Delete From QTEMP/VFNDMSG C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD6 #N C EXSR ERRSQL C* C/EXEC SQL C+ Delete From QTEMP/VFNDMSG2 C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD7 #N C EXSR ERRSQL C* C ENDSR C* * C***************************************************************** C* Subroutine to build selecting criteria **** C* **** C***************************************************************** C* C BLDSLC BEGSR C* C* Convert to Uppercase if needed C $CASE IFNE 'Y' no match case C* Add one row into the table 2 for conversion to uppercase C/EXEC SQL C+ Insert Into QTEMP/VFNDMSG2 C+ Values ('V','i','c','t','o',:$DESC) C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD8 #N C EXSR ERRSQL C* C* Read one row from table 2 (converted to uppercase by standard C* SQL tools independent of language) C/EXEC SQL C+ Select Upper(Desc) C+ Into :$DESC C+ From QTEMP/VFNDMSG2 C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD9 #N C EXSR ERRSQL C* C* Delete the row from table 2 C/EXEC SQL C+ Delete From QTEMP/VFNDMSG2 C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD7 #N C EXSR ERRSQL C* C ENDIF no match case C* C CLEAR#SS C MOVEA$DESC #SS,1 C* Fill left blanks with '%' C ' ' CHECK$DESC #C 20 23 C N23 Z-ADD50 #C all blanks C 23 SUB 1 #C last blank C 1 DO #C #P 20 C MOVE '%' #SS,#P C ENDDO C* Fill right blanks with '%' C ' ' CHEKR$DESC #C 20 23 C 23 ADD 1 #C C 23 #C DO 50 #P C MOVE '%' #SS,#P C ENDDO C* Selecting criteria is ready. C MOVEA#SS #SELCT 50 C* C ENDSR C* * C***************************************************************** C* Subroutine to delete a tables **** C* **** C***************************************************************** C* C DLTTBL BEGSR C* C/EXEC SQL C+ Drop Table QTEMP/VFNDMSG C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD10 #N C EXSR ERRSQL C* C/EXEC SQL C+ Drop Table QTEMP/VFNDMSG2 C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD11 #N C EXSR ERRSQL C* C ENDSR C* * C***************************************************************** C* Subroutine to retrieve first msg **** C* **** C***************************************************************** C* C FIRST BEGSR C* C MOVEL'*FIRST' #TOMID P C CALL 'QMHRTVM' @RTVMS C* See if any errors were returned in the error code parameter. C Z-ADD12 #N C EXSR ERRCOD C* C ENDSR C* * C***************************************************************** C* Subroutine to retrieve next msg **** C* **** C***************************************************************** C* C NEXT BEGSR C* C MOVELMSGID #RTMID P C MOVEL'*NEXT' #TOMID P C CALL 'QMHRTVM' @RTVMS C* See if any errors were returned in the error code parameter. C Z-ADD13 #N C EXSR ERRCOD C* C ENDSR C* * C***************************************************************** C* Subroutine to add message to table **** C* **** C***************************************************************** C* C ADDMSG BEGSR C* C* Retrieve message texts 1 and 2 levels C CLEAR#M1 C CLEAR#M2 C* C MSGAVA IFGT 132 C Z-ADD132 MSGAVA C MOVEL#WH,20 #STR P C MOVEA#STR #ER,18 C MOVEA#ER #MSGDT C EXSR MSGSND C ENDIF C* C SUB 104 MSGOFF C MSGAVA ADD MSGOFF #A 50 C SUB 1 #A C Z-ADD1 #B 50 C MSGOFF DO #A #D 50 C MOVE #MS,#D #M1,#B C ADD 1 #B C ENDDO C* C HLPAVA IFGT 256 C Z-ADD256 HLPAVA C ENDIF C* C SUB 104 HLPOFF C HLPAVA ADD HLPOFF #A C SUB 1 #A C Z-ADD1 #B C HLPOFF DO #A #D C MOVE #MS,#D #M2,#B C ADD 1 #B C ENDDO C* C* Insert message in to table 2 C MOVEA#M1 @M1 132 P C MOVEA#M2 @M2 256 P C/EXEC SQL C+ Insert Into QTEMP/VFNDMSG2 C+ Values (:LIBLIB,:OBJNAM,:MSGID,:@M1,:@M2,' ') C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD8 #N C EXSR ERRSQL C* C ADD 1 ##ALL C ADD 1 NNALL C ##ALL IFEQ 21 C EXSR SELMSG C MOVE *ON *IN22 C Z-ADD0 ##ALL C MOVE *ON *IN27 C WRITEMAIN C ENDIF C* C ENDSR C* * C***************************************************************** C* Subroutine to select messages **** C* **** C***************************************************************** C* C SELMSG BEGSR C*---------------------------------------- C/EXEC SQL C+ Declare Crsr1 Cursor C+ For Select Library, MsgFile, Msg_Id, MsgText, MsgHelp C+ From QTEMP/VFNDMSG2 C+ Where MsgText LIKE :#SELCT C+ OR MsgHelp LIKE :#SELCT C+ For Fetch Only C/END-EXEC C/EXEC SQL C+ Declare Crsr1c Cursor C+ For Select Library, MsgFile, Msg_Id, MsgText, MsgHelp C+ From QTEMP/VFNDMSG2 C+ Where Upper(MsgText) LIKE :#SELCT C+ OR Upper(MsgHelp) LIKE :#SELCT C+ For Fetch Only C/END-EXEC C/EXEC SQL C+ Declare Crsr2 Cursor C+ For Select Library, MsgFile, Msg_Id, MsgText, MsgHelp C+ From QTEMP/VFNDMSG2 C+ Where MsgText LIKE :#SELCT C+ For Fetch Only C/END-EXEC C/EXEC SQL C+ Declare Crsr2c Cursor C+ For Select Library, MsgFile, Msg_Id, MsgText, MsgHelp C+ From QTEMP/VFNDMSG2 C+ Where Upper(MsgText) LIKE :#SELCT C+ For Fetch Only C/END-EXEC C*---------------------------------------- C $LVL2 IFEQ 'Y' C $CASE IFEQ 'Y' C/EXEC SQL C+ Open Crsr1 C/END-EXEC C ELSE C/EXEC SQL C+ Open Crsr1c C/END-EXEC C ENDIF C ELSE C $CASE IFEQ 'Y' C/EXEC SQL C+ Open Crsr2 C/END-EXEC C ELSE C/EXEC SQL C+ Open Crsr2c C/END-EXEC C ENDIF C ENDIF C* See if any errors were returned in the error code parameter. C Z-ADD14 #N C EXSR ERRSQL C*---------------------------------------- C $LVL2 IFEQ 'Y' C $CASE IFEQ 'Y' C/EXEC SQL C+ Fetch Next From Crsr1 For 21 Rows Into :@MSG C/END-EXEC C ELSE C/EXEC SQL C+ Fetch Next From Crsr1c For 21 Rows Into :@MSG C/END-EXEC C ENDIF C ELSE C $CASE IFEQ 'Y' C/EXEC SQL C+ Fetch Next From Crsr2 For 21 Rows Into :@MSG C/END-EXEC C ELSE C/EXEC SQL C+ Fetch Next From Crsr2c For 21 Rows Into :@MSG C/END-EXEC C ENDIF C ENDIF C* See if any errors were returned in the error code parameter. C Z-ADD15 #N C EXSR ERRSQL C*---------------------------------------- C Z-ADDSQLER3 #CNT 20 C #CNT IFGT *ZERO C*======================================== C/EXEC SQL C+ Insert Into QTEMP/VFNDMSG :#CNT Rows Values(:@MSG) C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD8 #N C EXSR ERRSQL C*---------------------------------------- C ADD SQLER3 NNSEL C #CNT IFNE SQLER3 C MOVEL#WH,16 #STR P C MOVEA#STR #ER,18 C MOVEA#ER #MSGDT C EXSR MSGSND C ENDIF C*======================================== C ENDIF C*---------------------------------------- C $LVL2 IFEQ 'Y' C $CASE IFEQ 'Y' C/EXEC SQL C+ Close Crsr1 C/END-EXEC C ELSE C/EXEC SQL C+ Close Crsr1c C/END-EXEC C ENDIF C ELSE C $CASE IFEQ 'Y' C/EXEC SQL C+ Close Crsr2 C/END-EXEC C ELSE C/EXEC SQL C+ Close Crsr2c C/END-EXEC C ENDIF C ENDIF C* See if any errors were returned in the error code parameter. C Z-ADD17 #N C EXSR ERRSQL C*---------------------------------------- C/EXEC SQL C+ Delete From QTEMP/VFNDMSG2 C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD7 #N C EXSR ERRSQL C*---------------------------------------- C ENDSR C* * C***************************************************************** C* Subroutine to view selected messages **** C* (QCMDEXC RUNSQL) **** C***************************************************************** C* C F8SUBR BEGSR C* C CALL 'QCMDEXC' 21 C PARM #RS C PARM 50 #RSL 155 C *IN21 IFEQ *ON QCMDEXC error C* Process errors returned from the API. C MOVEL#WH,4 #STR P C MOVEA#STR #ER,18 C MOVEA#ER #MSGDT C EXSR MSGSND C ENDIF QCMDEXC error C* C ENDSR C* * C***************************************************************** C* Subroutine to copy selected messages into a file **** C* (QCMDEXC CPYF) **** C***************************************************************** C* C F9SUBR BEGSR C* C *IN26 DOWEQ*ON While not Enter C *INKL ANDEQ*OFF And not F12 C EXFMTWCOPY C ENDDO C *IN26 IFNE *ON Enter Pressed C* Prepare names and copy into C CLEAR#FNAME C CLEAR#LNAME C CLEAR#N2 C* File name... C MOVEA$FNAME #NN P C ' ' CHECK$FNAME #C 23 C 23 MOVEA#NN,#C #FNAME file...... C* Library name... C MOVEA$LNAME #NN P C ' ' CHECK$LNAME #C 23 Left char C ' ' CHEKR$LNAME #G 20 23 Right char C Z-ADD10 #J 20 Last pos to C Z-ADD#G #K 20 Last pos from C 23 #C DO #G #P C MOVE #NN,#K #N2,#J C SUB 1 #J C SUB 1 #K C ENDDO C MOVEA#N2 #LNAME .......lib C* Copying... C CALL 'QCMDEXC' 21 C PARM @COPYS C PARM 121 #RSL C *IN21 IFEQ *ON QCMDEXC error C* Process errors returned from the API. C MOVEL#WH,5 #STR P C MOVEA#STR #ER,18 C MOVEA#ER #MSGDT C EXSR MSGSND C ENDIF QCMDEXC error C ENDIF Enter Pressed C* C ENDSR C* * C***************************************************************** C* Subroutine to handle errors returned in the error code **** C* parameter (Non SQL errors). **** C***************************************************************** C* C ERRCOD BEGSR C QUSBNC IFGT *ZERO C* C* Process errors returned from the API. C MOVEL#WH,#N #STR P C MOVEA#STR #ER,18 C MOVEA#ER #MSGDT C EXSR MSGSND C* Original message returned by API C CALL 'QMHSNDPM' C PARM QUSBND C PARM #MSGF C PARM QUSBNG C PARM QUSBNC C PARM #MSGTP C PARM #QUEUE C PARM #SNDTO C PARM #MSGKY C PARM #ERRCD C* C ENDIF C ENDSR C* * C***************************************************************** C* Subroutine to handle errors returned in the error code **** C* parameter (SQL errors). **** C***************************************************************** C* C ERRSQL BEGSR C SQLCOD IFLT 0 C* C* Process errors returned from the API. C MOVEL#WH,#N #STR P C MOVEA#STR #ER,18 C MOVEA#ER #MSGDT C EXSR MSGSND C* Original message returned by API C SQLER1 IFNE 0 C MOVEA'CPF' #ID,1 C Z-ADDSQLER1 #XER1 C MOVEL#XID ##TMPS 4 C MOVEA##TMPS #ID,4 C MOVEA#ID #QSGID C CALL 'QMHSNDPM' C PARM #QSGID C PARM #QSGF C PARM SQLERM #QSGDT C PARM SQLERL #QSGDL C PARM #QSGTP C PARM #QSQUE C PARM #QSSTO C PARM #QSMKY C PARM #QSRCD C ENDIF C* Exit if tables create/drop error C #N IFEQ 1 create error C SQLCOD ANDNE-601 already exist C #N OREQ 3 create error C SQLCOD ANDNE-601 already exist C #N OREQ 10 C #N OREQ 11 C EXSR EXIT C ENDIF C* C ENDIF C ENDSR C* * C***************************************************************** C* Subroutine to send program message to current message queue**** C***************************************************************** C* C MSGSND BEGSR C CALL 'QMHSNDPM' C PARM #MSGID C PARM #MSGF C PARM #MSGDT C PARM #MSGDL C PARM #MSGTP C PARM #QUEUE C PARM #SNDTO C PARM #MSGKY C PARM #ERRCD C ENDSR C***************************************************************** C* Subroutine to exit **** C***************************************************************** C* C EXIT BEGSR C SETON LR C RETRN C ENDSR C* C***************************************************************** C***************************************************************** C* Initialization **** C***************************************************************** C* C *INZSR BEGSR C* C MOVELC#NDTO NDALL P C MOVELC#NDSE NDSEL P C* C *NAMVAR DEFN #N 20 err# C *NAMVAR DEFN #STR 23 err data C* C* Cancel Commitment C/EXEC SQL C+ Set Transaction Isolation Level No Commit C/END-EXEC C* See if any errors were returned in the error code parameter. C Z-ADD18 #N C EXSR ERRSQL C* C ENDSR C* C***************************************************************** * C***************************************************************** C* Parameters List **** C***************************************************************** C* C @RTVMS PLIST C PARM QMHCQ C PARM #RTLEN C PARM 'RTVM0300'#RTFMT 8 C PARM #RTMID 7 C PARM OBJECT C PARM *BLANK #RTRD 128 C PARM #RTRDL C PARM '*NO' #RTRSV 10 C PARM '*YES' #RTRFC 10 C PARM QUSBN C PARM #TOMID 10 C PARM #CCSID C PARM #CCSID C* C @RTVOB PLIST C PARM QRTVO C PARM #ROLEN C PARM 'OBJD0100'#ROFMT 8 C PARM OBJECT C PARM '*MSGF '#ROTYP 10 C PARM QUSBN C* C***************************************************************** * ** Error occured by ** creating table 1 1 labeling table 1 2 creating table 2 3 viewing table 1 4 copying into file 5 deleting from table 1 6 deleting from table 2 7 inserting into table 2 8 selecting from table 2 9 dropping table 1 10 dropping table 2 11 retrieving 1st message 12 retrieving message 13 opening cursor 14 fetching messages 15 multi rows processing 16 closing cursor 17 cancelling commitment 18 retrieving object info 19 retrieving message txt 20 ** RUNQRY QRYFILE((QTEMP/VFNDMSG))