Example 4: Updating Documents Selected from a Browse List
This example shows updating documents selected from a browse list after selection from a database using selection criteria.
********** Beginning of RDML commands **********
FUNCTION OPTIONS(*DIRECT)
********** Field definitions
DEFINE FIELD(#DATABASE) TYPE(*CHAR) LENGTH(50) INPUT_ATR(LC)
DEFAULT('''BIFTEST''')
DEFINE FIELD(#RETCODE) TYPE(*CHAR) LENGTH(2)
DEFINE FIELD(#DBHANDLE) TYPE(*CHAR) LENGTH(4)
DEFINE FIELD(#DOCHANDLE) TYPE(*CHAR) LENGTH(4)
DEFINE FIELD(#SELTYPE) TYPE(*CHAR) LENGTH(1) DEFAULT(N)
DEFINE FIELD(#CRITERIA) TYPE(*CHAR) LENGTH(80) INPUT_ATR(LC)
DEFINE FIELD(#IDTHANDLE) TYPE(*CHAR) LENGTH(4)
DEFINE FIELD(#NUMNOTES) TYPE(*DEC) LENGTH(7) DECIMALS(0)
DEFINE FIELD(#LSTNOTEID) TYPE(*DEC) LENGTH(7) DECIMALS(0)
DEFINE FIELD(#NOTEID) TYPE(*DEC) LENGTH(7) DECIMALS(0)
DEFINE FIELD(#ITEMNAME) TYPE(*CHAR) LENGTH(20)
DEFINE FIELD(#ITEMTYPE) TYPE(*DEC) LENGTH(1) DECIMALS(0)
DEFINE FIELD(#INVCODE) TYPE(*CHAR) LENGTH(10)
DEFINE FIELD(#INVAMT) TYPE(*DEC) LENGTH(15) DECIMALS(2)
EDIT_CODE(3)
DEFINE FIELD(#INVDATE) TYPE(*CHAR) LENGTH(20) INPUT_ATR(LC)
DEFINE FIELD(#DUMMY) TYPE(*CHAR) LENGTH(1)
DEF_LIST NAME(#LIST1) FIELDS((#SELECT *SELECT) (#INVCODE)
(#INVAMT) (#INVDATE) (#NOTEID *HIDDEN))
********** Open the database
USE BUILTIN(DOM_OPEN_DATABASE) WITH_ARGS('#DATABASE')
TO_GET(#RETCODE #DBHANDLE)
IF COND('#RETCODE *NE ''OK''')
MENU
ENDIF
**********
BEGIN_LOOP
CLR_LIST NAMED(#LIST1)
REQUEST FIELDS((#CRITERIA *L9 *P2)(#SELTYPE *L5 *P2 *DESC))
DESIGN(*DOWN) IDENTIFY(*LABEL) DOWN_SEP(001)
ACROSS_SEP(001) EXIT_KEY(*YES L1) MENU_KEY(*YES L1)
TEXT((*TMAP001 1 1))
********** Search all documents or using criteria
USE BUILTIN(DOM_SEARCH_DOCUMENTS) WITH_ARGS(#DBHANDLE
#SELTYPE #DUMMY #CRITERIA) TO_GET(#RETCODE #IDTHANDLE
#NUMNOTES)
IF COND('#RETCODE *NE ''OK''')
GOTO LABEL(L1)
ENDIF
********** Read all documents in Note ID Table
IF COND('#NUMNOTES > 0')
CHANGE FIELD(#LSTNOTEID) TO(0)
USE BUILTIN(DOM_GET_NXT_DOCUMENT) WITH_ARGS(#IDTHANDLE
#LSTNOTEID) TO_GET(#RETCODE #NOTEID)
**********
DOWHILE COND('#RETCODE *NE ''EF''')
CHANGE FIELD(#LSTNOTEID) TO(#NOTEID)
**********
USE BUILTIN(DOM_OPEN_DOCUMENT) WITH_ARGS(#DBHANDLE
#NOTEID) TO_GET(#RETCODE #DOCHANDLE)
********** Get data items from the document
CHANGE FIELD(#ITEMNAME) TO(INVCODE)
CHANGE FIELD(#ITEMTYPE) TO(2)
USE BUILTIN(DOM_GET_ITEM) WITH_ARGS(#DOCHANDLE #ITEMNAME
#ITEMTYPE) TO_GET(#RETCODE #INVCODE)
IF COND('#RETCODE *NE ''OK''')
GOTO LABEL(L1)
ENDIF
CHANGE FIELD(#ITEMNAME) TO(INVAMT)
CHANGE FIELD(#ITEMTYPE) TO(1)
USE BUILTIN(DOM_GET_ITEM) WITH_ARGS(#DOCHANDLE #ITEMNAME
#ITEMTYPE) TO_GET(#RETCODE #DUMMY #INVAMT)
IF COND('#RETCODE *NE ''OK''')
GOTO LABEL(L1)
ENDIF
CHANGE FIELD(#ITEMNAME) TO(INVDATE)
CHANGE FIELD(#ITEMTYPE) TO(3)
USE BUILTIN(DOM_GET_ITEM) WITH_ARGS(#DOCHANDLE #ITEMNAME
#ITEMTYPE) TO_GET(#RETCODE #INVDATE)
IF COND('#RETCODE *NE ''OK''')
GOTO LABEL(L1)
ENDIF
********** Add to list
ADD_ENTRY TO_LIST(#LIST1)
********** Close the document to release memory
USE BUILTIN(DOM_CLOSE_DOCUMENT) WITH_ARGS(#DOCHANDLE)
TO_GET(#RETCODE)
IF COND('#RETCODE *NE ''OK''')
GOTO LABEL(L1)
ENDIF
**********
USE BUILTIN(DOM_GET_NXT_DOCUMENT) WITH_ARGS(#IDTHANDLE
#LSTNOTEID) TO_GET(#RETCODE #NOTEID)
ENDWHILE
**********
ENDIF
**********
USE BUILTIN(DOM_END_SEARCH_DOCS) WITH_ARGS(#IDTHANDLE)
TO_GET(#RETCODE)
********** Show selected documents in a list
DISPLAY FIELDS((#NUMNOTES)) BROWSELIST(#LIST1) EXIT_KEY(*YES
L1) MENU_KEY(*YES L1)
********** Select documents from list to be updated
SELECTLIST NAMED(#LIST1) GET_ENTRYS(*SELECT)
********** Open the selected document
USE BUILTIN(DOM_OPEN_DOCUMENT) WITH_ARGS(#DBHANDLE
#NOTEID) TO_GET(#RETCODE #DOCHANDLE)
IF COND('#RETCODE *NE ''OK''')
GOTO LABEL(L1)
ENDIF
********** Update the invoice amount in selected documents
CHANGE FIELD(#INVAMT) TO('#INVAMT + 10')
CHANGE FIELD(#ITEMNAME) TO(INVAMT)
CHANGE FIELD(#ITEMTYPE) TO(1)
USE BUILTIN(DOM_UPDATE_ITEM) WITH_ARGS(#DOCHANDLE
#ITEMNAME #ITEMTYPE #DUMMY #INVAMT) TO_GET(#RETCODE)
IF COND('#RETCODE *NE ''OK''')
GOTO LABEL(L1)
ENDIF
********** Update the selected document in the database
USE BUILTIN(DOM_UPDATE_DOCUMENT) WITH_ARGS(#DOCHANDLE)
TO_GET(#RETCODE)
IF COND('#RETCODE *NE ''OK''')
GOTO LABEL(L1)
ENDIF
********** Close the document to release memory
USE BUILTIN(DOM_CLOSE_DOCUMENT) WITH_ARGS(#DOCHANDLE)
TO_GET(#RETCODE)
IF COND('#RETCODE *NE ''OK''')
GOTO LABEL(L1)
ENDIF
ENDSELECT
**********
END_LOOP
********** Close the database upon exit or an error
L1 USE BUILTIN(DOM_CLOSE_DATABASE) WITH_ARGS(#DBHANDLE)
TO_GET(#RETCODE)
********** End of RDML commands **********