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
|
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(<EXT) 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(<EXT) +
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(<EXT)
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