Only two types of files are supported in CL programs: display files and database files. You can write to and receive input from a display file and you can read data from a database file. But you can't write to a printer file. The QUSRTOOL Print (PRINT) command solves this problem. The PRINT command does just what its name implies-it allows you to print from within a CL program. This eliminates the need to write a separate program in order to produce a report. For example, you could write a CL program which reads records from a database file and uses the PRINT command to produce a report showing selected fields.
PRINT does not support external printer files. Print specifications such as heading and detail layout must be described within the CL program. Print specifications are handled through parameters passed to the PRINT command. As a result, using the PRINT tool for anything other than simple reports wouldn't be practical. Yet, there are plenty of times when you need to produce basic reports; PRINT facilitates the task.
Creating a report from within a CL program requires that you execute the PRINT command multiple times. Each time you execute the PRINT command, you request one out of four possible actions you want performed:
1. *OPN-open spool file and print headings.
2. *PRT-print a detail line.
3. *PAG-advance to a new page.
4. *CLO-print a specified number of detail lines and close the spool file.
You must use *OPN on the first PRINT command and *CLO on the last one. You can use the *PRT and *PAG actions anywhere in between those two points. The *PAG action is necessary only if you want to force a page break. Otherwise, normal page-breaking occurs, at which time the headings used on the *OPN action are automatically repeated.
To illustrate the use of the PRINT command, I have created the CL program shown in 1. The program executes the Open Query File (OPNQRYF) command to select and sequence records from a database file. It executes the PRINT command to open a spool file and print the report headings. The program then drops into a loop to read the selected records. For each record, the program executes the PRINT command to print one detail line. After all of the records have been processed, the program executes the PRINT command one last time to close the spool file. 2 shows the results of this example.
To illustrate the use of the PRINT command, I have created the CL program shown in Figure 1. The program executes the Open Query File (OPNQRYF) command to select and sequence records from a database file. It executes the PRINT command to open a spool file and print the report headings. The program then drops into a loop to read the selected records. For each record, the program executes the PRINT command to print one detail line. After all of the records have been processed, the program executes the PRINT command one last time to close the spool file. Figure 2 shows the results of this example.
When you use the PRINT command to print a detail line, you will probably want to format the line by concatenating blanks between fields, as I have done in the example program in 1. Alternatively, you can use the QUSRTOOL's Build Print Line (BLDPRTLIN) command. This tool allows you to format a line of text using starting positions and edit codes, which simplifies the code and gives your reports a more polished look.
When you use the PRINT command to print a detail line, you will probably want to format the line by concatenating blanks between fields, as I have done in the example program in Figure 1. Alternatively, you can use the QUSRTOOL's Build Print Line (BLDPRTLIN) command. This tool allows you to format a line of text using starting positions and edit codes, which simplifies the code and gives your reports a more polished look.
For times when you need to print a simple report or listing, the PRINT command from QUSRTOOL might be just what you need.
Parameters
LINE Specify the text to be printed when ACTION(*PRT) is specified.
*NONE: No text is printed.
text: Specify up to 132 positions of text to be printed.
ACTION
Specify the action to be performed.
*PRT: Prints the text specified in the LINE parameter.
*OPN: Opens the print file and prints headings.
*PAG: Skips to a new page and prints the same headings specified on ACTION(*OPN).
*CLO: Closes the print file.
SPCBFR
Specify the number of lines to space before printing when ACTION(*PRT) is specified.
0: No lines are spaced before printing.
space-before-lines: Specify be-tween 0 to 3 lines to space.
SPCAFT
Specify the number of lines to space after printing when ACTION(*PRT) is specified.
1: One line is spaced after printing.
space-after-lines: Specify between 0 to 3 lines to space.
COUNT
Specify whether or not to increment the number of records printed at the end of the report when ACTION(*PRT) is specified.
*YES: Increment the number of records printed.
*NO: Do not increment the number of records printed.
TITLE
Specify the text for the report title which appears at the top of every page.
*NONE: No text is supplied for the report title.
text: Specify up to 80 characters of text for the report title.
COLHD1
Specify the first line of column headings when ACTION(*OPN) is specified.
*NONE: No first-line column headings are printed.
column-heading-1: Specify up to 132 characters of text for the first line of column headings.
COLHD2
Specify the second line of column headings when ACTION(*OPN) is specified.
*NONE: No second-line column headings are printed.
column-heading-2: Specify up to 132 characters of text for the second line of column headings.
COLHD3
Specify the third line of column headings when ACTION(*OPN) is specified.
*NONE: No third-line column headings are printed.
column-heading-3: Specify up to 132 characters of text for the third line of column headings.
USRDTA
Specify the user data assigned to the spool file when ACTION(*OPN) is specified.
*NONE: No user data is assigned to the spool file.
text: Specify up to 10 characters of user data to assign to the spool file.
SPLFNAM
Specify the name of the spool file when ACTION(*OPN) is specified.
QPRINT: The spool file name is QPRINT.
text: Specify up to 10 characters for the name of the spool file.
Robin Klima is a senior technical editor for Midrange Computing.
This tool is documented in Midrange Computing's QUSRTOOL Command Reference. The manual contains explanations and syntax diagrams for more than 300 obscure yet useful tools.
PGM DCLF FILE(ITEMPF) /* Select and sequence records */ OVRDBF FILE(ITEMPF) SHARE(*YES) OPNQRYF FILE((ITEMPF)) QRYSLT('ITQTY *LT ITMIN') + KEYFLD((ITNUM)) /* Print headings */ PRINT ACTION(*OPN) TITLE('Order Listing') + COLHD1('Item # Description') /* Read loop */ LOOP: RCVF MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(EOF)) /* Print detail line */ PRINT LINE(&ITNUM *CAT ' ' *CAT &ITDESC) + ACTION(*PRT) GOTO CMDLBL(LOOP) /* Clear files */ EOF: PRINT ACTION(*CLO) CLOF OPNID(ITEMPF) DLTOVR FILE(ITEMPF) ENDPGM 6/02/94 16:22:10 MCPGMR Order Listing Page 1 Item # Description 134868 LOCKING GAS CAP 335461 SPARK PLUG 578495 WINDSHEILD WIPER BLADE 698767 HALOGEN HEADLIGHT 724893 BRAKE PAD 924354 TRANSMISSION FLUID Records printed- 6
LATEST COMMENTS
MC Press Online