Example 2 Selecting Documents from a Database using a View

Visual LANSA

Example 2: Selecting Documents from a Database using a View

    ********** 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(#VIEW) 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((#INVCODE) (#INVAMT) 

               (#INVDATE))

    ********** Open the database                             

    USE        BUILTIN(DOM_OPEN_DATABASE) WITH_ARGS(#DATABSE) 

               TO_GET(#RETCODE #DBHANDLE)

    IF         COND('#RETCODE *NE ''OK''')                   

    MENU                                                     

    ENDIF                                                    

    **********                                               

    BEGIN_LOOP                                               

    CLR_LIST   NAMED(#LIST1)                                 

    REQUEST    FIELDS((#VIEW *L7 *P2)) DESIGN(*DOWN) 

               IDENTIFY(*LABEL) DOWN_SEP(001) ACROSS_SEP(001) 

               EXIT_KEY(*YES L1) MENU_KEY(*YES L1)

               TEXT((*TMAP001 1 1))

    ********** Search using the requested view               

    USE        BUILTIN(DOM_SEARCH_DOCUMENTS) WITH_ARGS(#DBHANDLE 

               'V' #VIEW) 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                                                    

    ********** COND('#NUMNOTES *EQ 0')                       

    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)           

    **********                                               

    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 **********