PreviousNext
Help > Programming with LAUNCHER Office > Advanced programming > CL programs samples > W_DEMO Example
W_DEMO Example

 This example illustrates the main features of LAUNCHER Office for creating a Word document :

o    retrieving information from the AS/400 and sending it to the PC (serial number, user, time)

o    filling a table

o    inserting a document, inserting a picture.

 

 

This is the resulting Word document

 

image\ebd_Ebd11.gif

 

LAUNCHER Office

 

 

AS/400 Serial Number : : 4486D0A

Current User  : QPGMR

System Time  : 17:51:04

 

 

Your AS/400 created this document, using Word’s functionality with LAUNCHER Office features.

 

The program you just called has created the document from the following template :

« C:\Program Files\LAUNCHER<X>\Samples\LNCMODEL.DOC  »,

and the data was read or calculated on the AS/400.

You can see the CL source in the QCLSRC file of the LAUNCHER Office library.

 

The final document, as you see it now, was saved by the AS/400 program under this name :

« C:\Program Files\LAUNCHER<X>\Samples\LncResult-175157.doc »

 

 

Insert data from the AS/400

 

Calculated values on the AS/400 have been inserted into this document.

The serial number, the current user and system time you can see above all come from the AS/400.

 

To insert these values, the CL program uses Word bookmarks. They are specific positions in the text identified by their name.

 

To see the bookmarks you need to configure Word :

Menu "Tools" – "Options" – "Display", then check the Bookmark option.

 

To know the bookmark names :

Menu "Insert" – "Bookmarks"

 

Insert external paragraphs

 

This paragraph does not exist in the main document. It is a distinct Word file named "LncModel_Para01.doc", located in Launchers "Samples" directory. 

 

The AS/400 program asked Word to insert this paragraph. This feature is very useful for including specific clauses for which the AS/400 has the references in its database.

 

This paragraph could also be a free text. LAUNCHER Office can ask the user to type or change text in Word, save it into a distinct file and then insert it in another document to print.

 

Working with Word tables

 

LAUNCHER Office can create and fill in Word tables.

The following table exists in the template but without any values, except the column headings.

We display in this table the library list of the AS/400 but it can of course list invoices, articles or any commercial data...

 

Library

Description

Owner

 

 

 

LAUNCHER

 

QSECOFR

QGPL

 

QSYS

QSYS

System Library

QSYS

QHLPSYS

 

QSYS

QUSRSYS

 

QSYS

 

Insert pictures

 

The picture in the upper left corner was inserted by the CL program.

As for the text, a bookmark is placed into the template and the program just gives the name of the picture file to insert ; « LNCModel_img01.gif ».

 

This is the CL source

 

              PGM        PARM(&SVRADDR)                              

              DCL        VAR(&SVRADDR) TYPE(*CHAR) LEN(30)           

 /* VARIABLES USED TO OPEN COMMUNICATION AND SEND COMMANDS ...*/     

              DCL        VAR(&HANDLE) TYPE(*CHAR) LEN(50)            

              DCL        VAR(&CCSID) TYPE(*CHAR) LEN(10)             

              DCL        VAR(&CMD) TYPE(*CHAR) LEN(10)               

              DCL        VAR(&OPT) TYPE(*CHAR) LEN(1)                

              DCL        VAR(&PARM1) TYPE(*CHAR) LEN(512)            

              DCL        VAR(&PARM2) TYPE(*CHAR) LEN(1024)           

              DCL        VAR(&RESULT) TYPE(*CHAR) LEN(512)           

                                                                     

              DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7)              

              DCL        VAR(&MSG1) TYPE(*CHAR) LEN(80)              

              DCL        VAR(&MSG2) TYPE(*CHAR) LEN(80)              

              DCL        VAR(&USER) TYPE(*CHAR) LEN(10)              

              DCL        VAR(&SRLN) TYPE(*CHAR) LEN(8)               

              DCL        VAR(&TIME) TYPE(*CHAR) LEN(7)               

              DCL        VAR(&ULIBL) TYPE(*CHAR) LEN(275)            

              DCL        VAR(&SLIBL) TYPE(*CHAR) LEN(165)            

              DCL        VAR(&LTEXT) TYPE(*CHAR) LEN(50)             

              DCL        VAR(&LOWNR) TYPE(*CHAR) LEN(10)             

              DCL        VAR(&LLIB) TYPE(*CHAR) LEN(10)              

                                                                     

              DCL        VAR(&IDX) TYPE(*DEC) LEN(4)                 

                                                                     

              DCL        VAR(&DOTTED) TYPE(*CHAR) LEN(30)            

              DCL        VAR(&ROW) TYPE(*DEC) LEN(2)                 

              DCL        VAR(&COL) TYPE(*DEC) LEN(2)                 

              DCL        VAR(&C_ROW) TYPE(*CHAR) LEN(2)              

              DCL        VAR(&C_COL) TYPE(*CHAR) LEN(2)              

                                                                     

              RTVJOBA    USER(&USER) USRLIBL(&ULIBL) SYSLIBL(&SLIBL) 

              RTVSYSVAL  SYSVAL(QSRLNBR) RTNVAR(&SRLN)               

              RTVSYSVAL  SYSVAL(QTIME) RTNVAR(&TIME)                 

                                                                     

 /* OPEN ONLY ONE CONVERSATION WITH THE SERVER */                    

              CHGVAR     VAR(&HANDLE) VALUE('*ONLY')                 

 /* TRANSLATE CCSID ACCORDING TO THE JOB CCSID */                    

              CHGVAR     VAR(&CCSID) VALUE('*JOB')                   

                                                                     

 /* CONNECT TO THE SERVER ...*/                                      

              CALL       PGM(LNCOPEN) PARM(&HANDLE &SVRADDR &CCSID)  

              MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR0))    

                                                                     

 /* START WORD ON THE WINDOWS STATION */                             

                                                                     

              CHGVAR     VAR(&CMD) VALUE('WORDOPEN ')                

              CHGVAR     VAR(&PARM1) VALUE(' ')                      

              CHGVAR     VAR(&PARM2) VALUE(' ')                      

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))     

                                                                     

              CHGVAR     VAR(&CMD) VALUE('WORDHIDE')                 

              CHGVAR     VAR(&PARM1) VALUE(' ')                      

              CHGVAR     VAR(&PARM2) VALUE(' ')                      

  /*          CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +     */ 

  /*                     &PARM1 &PARM2 &RESULT)                 */   

  /*          MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))  */ 

                                                                     

 /* OPEN A DOCUMENT FILE ON THE WINDOWS STATION */                   

                                                                     

              CHGVAR     VAR(&CMD) VALUE('WNEWFILE ')                

              CHGVAR     VAR(&PARM1) VALUE('%LNCDIR%\SAMPLES\LNCMODEL.DOC’)

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))     

                                                                     

 /*  WRITE TEXT AT A BOOKMARK */                                     

                                                                     

              CHGVAR     VAR(&CMD) VALUE('WBOOKMARK ')               

              CHGVAR     VAR(&PARM1) VALUE('USER')                   

              CHGVAR     VAR(&PARM2) VALUE(&USER)                    

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              CHGVAR     VAR(&PARM1) VALUE('SNAS400')                

              CHGVAR     VAR(&PARM2) VALUE(&SRLN)                    

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

                                                                     

              CHGVAR     VAR(&PARM1) VALUE('TIME')                   

              CHGVAR     VAR(&PARM2) VALUE(%SST(&TIME 1 2) *CAT ':' +

                         *CAT %SST(&TIME 3 2) *CAT ':' *CAT +        

                         %SST(&TIME 5 2))                            

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

                                                                     

              CHGVAR     VAR(&CMD) VALUE('WBOOKMARK ')               

              CHGVAR     VAR(&PARM1) VALUE('TABLE')                  

FRST_ROW:    CHGVAR     VAR(&IDX) VALUE(1)                           

NEXT_ROW:                                                            

              CHGVAR     VAR(&LLIB) VALUE(%SST(&ULIBL &IDX 10))      

              CHGVAR     VAR(&IDX) VALUE(&IDX + 11)                  

              IF         COND(&LLIB *EQ '          ') THEN(GOTO +    

                         CMDLBL(END_LIST))                           

              RTVOBJD    OBJ(&LLIB) OBJTYPE(*LIB) TEXT(&LTEXT) +     

                         OWNER(&LOWNR)                               

              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(NEXT_ROW))  

                                                                     

              CHGVAR     VAR(&PARM2) VALUE(&LLIB)                    

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              CHGVAR     VAR(&PARM1) VALUE('*RIGHT')                 

              CHGVAR     VAR(&PARM2) VALUE(&LTEXT)                   

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              CHGVAR     VAR(&PARM2) VALUE(&LOWNR)                   

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

                                                                     

              GOTO       CMDLBL(NEXT_ROW)                            

                                                                     

 END_LIST:                                                           

              CHGVAR     VAR(&ULIBL) VALUE(&SLIBL)                   

              CHGVAR     VAR(&SLIBL) VALUE(*BLANK)                   

             IF         COND(&ULIBL *NE *BLANK) THEN(GOTO +          

                         CMDLBL(FRST_ROW))                           

                                                                     

              CHGVAR     VAR(&CMD) VALUE(WSELECT)                    

              CHGVAR     VAR(&PARM1) VALUE(*ROW)                     

              CHGVAR     VAR(&PARM2) VALUE(' ')                      

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

                                                                     

              CHGVAR     VAR(&CMD) VALUE(WSETPROP)                   

              CHGVAR     VAR(&PARM1) +                               

                         VALUE('Selection.Borders.Item(wdBorderBotto+

                         m).LineStyle')                              

              CHGVAR     VAR(&PARM2) VALUE('wdLineStyleSingle')      

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))     

                                                                     

              CHGVAR     VAR(&CMD) VALUE('WBOOKMARK ')               

              CHGVAR     VAR(&PARM1) VALUE('PARA01')                 

              CHGVAR     VAR(&PARM2) VALUE(' ')                      

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              CHGVAR     VAR(&CMD) VALUE(WINSERTF)                   

              CHGVAR     VAR(&PARM1) +                               

                         VALUE('%LNCDIR%\SAMPLES\LNCpara01.DOC ')    

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))     

                                                                     

              CHGVAR     VAR(&CMD) VALUE('WBOOKMARK ')               

              CHGVAR     VAR(&PARM1) VALUE('IMG01')                  

              CHGVAR     VAR(&PARM2) VALUE(' ')                      

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              CHGVAR     VAR(&CMD) VALUE(WINSERTIMG)                 

              CHGVAR     VAR(&PARM1) +                               

                         VALUE('%LNCDIR%\SAMPLES\LNCIMG01.GIF ')     

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))     

                                                                     

                                                                     

              CHGVAR     VAR(&CMD) VALUE('WORDSHOW')                 

              CHGVAR     VAR(&PARM1) VALUE(' ')                      

              CHGVAR     VAR(&PARM2) VALUE(' ')                      

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))     

                                                                     

              CHGVAR     VAR(&CMD) VALUE('WORDWAIT')                 

              CHGVAR     VAR(&PARM1) VALUE(' ')                      

              CHGVAR     VAR(&PARM2) VALUE(' ')                      

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))     

                                                                     

 /* END OF COMMUNICATION WITH THE SERVER STATION ... */              

 CLOSE:                                                              

              CHGVAR     VAR(&CMD) VALUE('END ')                     

              CHGVAR     VAR(&PARM1) VALUE(' ')                      

              CHGVAR     VAR(&PARM2) VALUE(' ')                      

 /*           CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +     /* 

 /*                      &PARM1 &PARM2 &RESULT)                   */ 

 /*           MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))  */ 

                                                                     

              CALL       PGM(LNCCLOSE) PARM(&HANDLE)                 

              MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))     

              GOTO END                                               

 ERROR:                                                              

              CHGVAR     VAR(&CMD) VALUE('END ')                     

              CHGVAR     VAR(&PARM1) VALUE(' ')                      

              CHGVAR     VAR(&PARM2) VALUE(' ')                      

              CALL       PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +        

                         &PARM1 &PARM2 &RESULT)                      

              MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR0))    

 ERROR0:                                                             

              CALL       PGM(LNCCLOSE) PARM(&HANDLE)                 

                                                                     

              RCVMSG     MSG(&MSG1) SECLVL(&MSG2) MSGID(&MSGID)      

              SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) +              

                         MSGDTA('Error !!!!! ' *CAT &MSGID *CAT ' +  

                         ' *CAT &MSG1 *CAT ' ' *CAT &MSG2) +         

                         MSGTYPE(*ESCAPE)                            

 END:                                                                

              SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) +              

                         MSGDTA('Document ''result.doc'' saved by +  

                         ' *CAT &USER *CAT 'in samples directory') + 

                         MSGTYPE(*COMP)                              

              ENDPGM