There are times when it is necessary, or desirable, to download a document which has been prepared in AS/400 Office to an ASCII PC file. Then, on the PC, you can pull it into a PC word processor such as WordPerfect and further manipulate it. By comparison, there are no easy ways to do this using IBM- supplied facilities on either a PC or the AS/400.
The command, CL program and RPG program (Figures 1-3, on pages 65 and 66) are a way to do it rather easily. The CL program performs a PRTDOC command whose purpose is to create a disk file from the document. However, the disk file contains a lot of control information and header records which are not part of the text of the document.
Each line of text appears as one record in the file. In addition, each format change creates a record. The text record has a 60 code in the first two positions of the record; format changes have a 40 code with either FMT or DOCUMENT in positions 5 through 12.
The RPG program reads the document disk file, DOCOUT, and strips off all the control information and header records. A word of caution: it assumes a left margin set of 15. If the margin is more or less than that, you will have to set the margin at 15 in order to have all the text appear in the output file ASCII. Also, if the text line is greater than 90 characters, the program would have to be modified to deal with the wider line.
The records created by exception output FMTCHG and RTNFMT will appear in the file and will act as a reminder that a format change existed at this point in the document.
At a PC with PC Support, download the file to a diskette and you have an ASCII file that can be read by almost every PC word processor on the market. Obviously, on the PC you will have to repaginate, set margins, do format changes (look for ** FMT CHG ** and ** RETURN FMT **), but at least you won't have to rekey the whole document.
TechTalk: Converting an AS/400 Document to ASCII
Figure 1 CVTDOCASCI command
CVTDOCASCI: CMD PROMPT('Convert Document to ASCII File') PARM KWD(DOC) TYPE(*CHAR) LEN(12) MIN(1) + PROMPT('Document name') PARM KWD(FOLDER) TYPE(*CHAR) LEN(32) MIN(1) + PROMPT('Folder name') PARM KWD(OUTLIB) TYPE(*NAME) LEN(10) MIN(1) + PROMPT('Output library')
TechTalk: Converting an AS/400 Document to ASCII
Figure 2 CL program DOC001CL
DOC001CL: + PGM PARM(&DOC &FOLDER &OUTLIB) DCL VAR(&DOC) TYPE(*CHAR) LEN(12) DCL VAR(&FOLDER) TYPE(*CHAR) LEN(32) DCL VAR(&OUTLIB) TYPE(*CHAR) LEN(10) CHKOBJ OBJ(&OUTLIB) OBJTYPE(*LIB) MONMSG MSGID(CPF9801) EXEC(DO) SNDPGMMSG MSG('Library' *BCAT &OUTLIB *BCAT 'not found.') + MSGTYPE(*DIAG) SNDPGMMSG MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE) GOTO CMDLBL(ENDPGM) ENDDO PRTDOC DOC(&DOC) FLR(&FOLDER) OPTIONS(*OUTFILE) + OUTFILE(&OUTLIB/DOCOUT) OUTDTATYP(*ALL) CLRPFM FILE(&OUTLIB/ASCII) MONMSG MSGID(CPF0000) EXEC(DO) CRTPF FILE(&OUTLIB/ASCII) RCDLEN(90) MONMSG MSGID(CPF0000) ENDDO OVRDBF FILE(DOCOUT) TOFILE(&OUTLIB/DOCOUT) OVRDBF FILE(ASCII) TOFILE(&OUTLIB/ASCII) CALL PGM(DOC001RG) ENDPGM: + ENDPGM
TechTalk: Converting an AS/400 Document to ASCII
Figure 3 RPG program DOC001RG
FDOCOUT IP F 256 DISK FASCII O F 90 DISK A * IDOCOUT NS I 1 2 CODE1 I 5 7 CODE2 I 36 124 TEXT * C CODE1 IFEQ '60' C EXCPTWRTTXT C ELSE C CODE1 IFEQ '40' C CODE2 IFEQ 'FMT' C EXCPTFMTCHG C ELSE C CODE2 IFEQ 'DOC' C EXCPTRTNFMT C END C END C END C END * OASCII EADD WRTTXT O TEXT 90 O EADD FMTCHG O 13 '** FMT CHG **' O EADD RTNFMT O 16 '** RETURN FMT **'
LATEST COMMENTS
MC Press Online