So you can't get management to spring for Office on your AS/400, or worse, they won't even get you a PC with WordPerfect. Don't worry. Be happy! You have SEU. While it may not look like much of a word processor, it will do in a pinch. It has a full screen editor, some tolerable move and copy commands, and some semblance of Tabs. The big problem with SEU as a word processor is those ugly headings it puts on your letters, and sequence numbers can really make a resume look tacky. However, with a few simple programs we can fix that.
There are just a few things you need to make SEU a respectable word processor. First, set up a source file called QTXTSRC in your library or in a special library just for documents. QTXTSRC is just like QCLSRC or QRPGSRC - it simply helps you organize documents by placing them in a file separate from your programs. When you create a new member in QTXTSRC, specify TXT as the type so you will not be getting syntax errors while you are writing a letter to Mom. Next, work in Program Development Manager (PDM) to make the printing and editing very easy.
Now, all you need is a program to print your correspondence, sans SEU headings and line numbers. RPG and CL to the rescue. 1 contains a CL program that does an override to the source file and the printer file, and calls an RPG program that prints that letter to "dear old Mom." More parameters can be added to specify print quality, CPI, and other printer values to make it more sophisticated.
Now, all you need is a program to print your correspondence, sans SEU headings and line numbers. RPG and CL to the rescue. Figure 1 contains a CL program that does an override to the source file and the printer file, and calls an RPG program that prints that letter to "dear old Mom." More parameters can be added to specify print quality, CPI, and other printer values to make it more sophisticated.
2 is a listing of the RPG program that prints the documents. This is a very simple program that basically reads in a record and prints it.
Figure 2 is a listing of the RPG program that prints the documents. This is a very simple program that basically reads in a record and prints it.
3 is the external print file. Once you have keyed in the lines of source, use the CRTPRTF command to create the file and then compile the RPG program.
Figure 3 is the external print file. Once you have keyed in the lines of source, use the CRTPRTF command to create the file and then compile the RPG program.
4 is the source listing for the command to run the print program. Once you have keyed in the source for the command, run the CRTCMD command to create the PRTSRC command.
Figure 4 is the source listing for the command to run the print program. Once you have keyed in the source for the command, run the CRTCMD command to create the PRTSRC command.
This by itself provides a fairly decent way to print your documents, but there is one more step that makes it even better.
If you have done any work in PDM, you have noticed all the things you can do to a source member by simply placing an option number next to it: 2 to Edit, 5 to Browse, 14 to Compile, and so on. And it is smart enough to know which compiler to use. Well, you can add your own options too. For the SEU low-rent word processor print program, I have created a user-defined option, Print Source (PS), to print any member easily.
For complete information about creating user-defined PDM options, please refer to Chapter 6 of the PDM: User's Guide and Reference (SC09-1173). In my case, I defined PS as the following:
?PRTSRC MBRNAM(&N) SRCFILE(&L/&F)
Well that's about it. Just a word of advice. Don't let management see how slick this is, or you may never get one of those fancy word processors with the classy spell checker.
Dennis Ruud Virginia Beach, Virginia
TechTalk: Low-Rent Word Processor
Figure 1 CL program PRTSRC
PRTSRC: + PGM PARM(&SMBR &FILLIB &PRINTER) DCL VAR(&SMBR) TYPE(*CHAR) LEN(10) DCL VAR(&FILLIB) TYPE(*CHAR) LEN(20) DCL VAR(&PRINTER) TYPE(*CHAR) LEN(10) DCL VAR(&FILE) TYPE(*CHAR) LEN(10) DCL VAR(&LIBR) TYPE(*CHAR) LEN(10) CHGVAR VAR(&FILE) VALUE(%SST(&FILLIB 1 10)) CHGVAR VAR(&LIBR) VALUE(%SST(&FILLIB 11 10)) OVRDBF FILE(SOURCE) TOFILE(&LIBR/&FILE) MBR(&SMBR) SEQONLY(*YES + 200) OVRPRTF FILE(PRTS$) DEV(&PRINTER) PAGESIZE(66 132) LPI(6) + CPI(10) OVRFLW(64) FONT(011) PRTQLTY(*NLQ) OUTQ(*DEV) + FORMTYPE(8X11) CALL PGM(PRTS) DLTOVR FILE(SOURCE) END: + ENDPGM
TechTalk: Low-Rent Word Processor
Figure 2 RPG program PRTS
FSOURCE IPE F 92 DISK FPRTS$ O E 97 PRINTER ISOURCE AA 01 I 1 62SRCSEQ I 13 92 INSRCS * C FRSTIM IFNE '1' C SETON 97 C MOVEL'1' FRSTIM 1 C END * C *IN97 IFEQ '1' C WRITE$PAGHDR C SETOF 97 C END * C MOVELINSRCS SRCSTA C WRITE$ALINE
TechTalk: Low-Rent Word Processor
Figure 3 Printer file PRTS$
A R $PAGHDR TEXT('Standard report header ') A SKIPB(1) * A 1' ' * A R $ALINE TEXT('ONE LINE OF SOURCE') A SPACEB(1) * A SRCSTA 86 1
TechTalk: Low-Rent Word Processor
Figure 4 Command PRTSRC
CMD PROMPT('Print Source Members') PARM KWD(MBRNAM) TYPE(*CNAME) LEN(10) MIN(1) + PROMPT('Source Member to Print') PARM KWD(SRCFILE) TYPE(QUAL1) RSTD(*NO) MIN(1) + PROMPT('Source File Name') PARM KWD(PRINTER) TYPE(*CNAME) LEN(10) DFT(PRT02) + PROMPT(PRINTER) QUAL1: QUAL TYPE(*NAME) LEN(10) DFT(*NONE) SPCVAL((*NONE)) QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) + SPCVAL((*LIBL)) PROMPT('Library')
LATEST COMMENTS
MC Press Online