IBM AS/400 Support Line
Technical Document

Document Number:   8011926
____________________________________________________________
Functional Area:                       Print
SubFunctional Area:               Data Collection/Traces
SubSubFunctional Area:       General
____________________________________________________________
Product:  OS/400 PRINT/SPOOL (5769SS1SP); OS/400 PRINT/SPOOL (5716SS1SP);
OS/400 PRINT/SPOOL (5763SS1SP)
Release:  ALL

Classification:     Registered

Keywords:
____________________________________________________________
Document Title:Using QSPGETF and QSPPUTF APIs with Command Source
Document Description:

This document covers usage of the QSPGETF and QSPPUTF print APIs.  The
command source for the QSPGETF API is supplied if the user wants to
facility usage at a command entry screen.  This is intended for archiving
or AS/400 support diagnostics when the spoolfile printer device type is
*AFPDS, *IPDS, or special controls in the spoolfile that does not allow the
CPYSPLF command to work.

These are the instructions to archive the spool file to a physical file.
Use QSPPUTF to restore as a spoolfile.

Let the program create the file for you.  If you have problems with it
creating,  then create before running the program.

Enter at the command line:

CRTPF  FILE(  )  RCDLEN(4083)  MAXMBRS(*NOMAX)  +
SIZE(*NOMAX)  LVLCHK(*NO)

Example usage of the QSPGETF API to write to a member in your database
file:

CALL PGM(QSYS/QSPGETF) PARM('QPRINT    ' 'SPOOLDB   USER1LIB   ' 'DSP03 USER1     010160'   X'0001' 'MBR1      ')

This API call dumps a spool file QPRINT to a database file SPOOLDB in
USER1LIB library, member MBR1.  The spool file number is 1.  The spool file
job is 010160/user1/dsp03.  This information can be seen in the WRKSPLF
screen by pressing F11 or using Option 2.

The parameter values must be in uppercase and there must be a space between
the single quotation marks.

Following are the parts to the parameter list:
                                                                     
o     The 10-character spool file name.                                  
o     A 20-character database file and library. Allow for 10             
  characters for each name.                                          
o     A 26-character qualified job name for the spool file.  This name   
  can be seen in the WRKSPLF screen (press F11).  Allow 10           
  characters each for the job name and user, and 6 positions for     
  the job number.                                                    
o     Numeric file number, 1 through 9999.  Use the hexadecimal          
  representation as in the example.  Make sure a space is inserted   
  after the previous single quotation mark and the X'0001'.          
o     10 characters for the database member.                             
                                                                     

To restore the spool file from the database follow the example and
instructions below.

Example usage of the QSPPUTF API to create a spoolfile from a member in
your database file:

CALL  PGM(QSYS/QSPPUTF)  PARM('SPOOLDB  USER1LIB  '  'USER1      QGPL      '
'MBR1      ')

This API call creates a spool file in USER1 output queue in QGPL library
from the MBR1 member in the SPOOLDB database file.

The parameter values must be in uppercase, and there must be a space
between the quotes.  Following are the parts to the parameter list:
                                                                     
                                                                     
o     20-character database file and library.  Allow for 10  characters  
  for each name.                                                     
o     20-character output queue name and library.  Allow for 10          
  characters for each name.                                          
o     10 characters for the database member.                             

The above API programs can be run from the command line or from a CL
program.  If you are going to use these APIs on a regular  basis, a command
interface would be more convenient.    The following is the command source
for the QSPGETF API.

The source code for command GETSPLF, command interface to QSYS/QSPGETF
follows.  To compile the command, on the OS/400 command line type the
following:

CRTCMD  CMD(lib_name/GETSPLF)  PGM(QSYS/QSPGETF)  +
SRCFILE(lib_name/file_name)  SRCMBR(*CMD)

    GETSPLF: CMD PROMPT('Get Spooled File')
    PARM KWD(FILE) TYPE(*NAME) LEN(10) RTNVAL(*NO)  RSTD(*NO) MIN(1) +
         MAX(1) FILE(*IN) FULL(*NO) EXPR(*YES)  VARY(*NO) PASSATR(*NO) +
         PROMPT('Spooled file')
    PARM KWD(TOFILE) TYPE(Q1) RTNVAL(*NO) MIN(1) MAX(1) FILE(*OUT) +
         PROMPT('To data base file')
    PARM KWD(JOB) TYPE(Q2) RTNVAL(*NO) DFT(*) SNGVAL(*) MIN(0) MAX(1) +
         FILE(*NO) PROMPT('Job name')
    PARM KWD(SPLNBR) TYPE(*INT2) RTNVAL(*NO) RSTD(*NO) DFT(*ONLY) +
         RANGE(1 9999) SPCVAL((*ONLY 0) (*LAST -1)) MIN(0) MAX(1) +
         EXPR(*YES) VARY(*NO) PASSATR(*NO) PROMPT('Spooled file number')
    PARM KWD(TOMBR) TYPE(*NAME) LEN(10) RTNVAL(*NO) RSTD(*NO) +
         DFT(*FIRST) SPCVAL(*FIRST) MIN(0) MAX(1) FILE(*NO) FULL(*NO) +
         EXPR(*YES) VARY(*NO) PASSATR(*NO) PROMPT('To member')
    Q1:  QUAL TYPE(*NAME) LEN(10) RSTD(*NO) MIN(1) FULL(*NO) VARY(*NO) +
              EXPR(*YES) PASSATR(*NO)
         QUAL TYPE(*NAME) LEN(10) RSTD(*NO) DFT(*LIBL) MIN(0) FULL(*NO) +
              SPCVAL((*LIBL) (*CURLIB *CURLIB)) VARY(*NO) EXPR(*YES)+
              PASSATR(*NO) PROMPT('Library')
    Q2:  QUAL TYPE(*NAME) LEN(10) RSTD(*NO) MIN(1) FULL(*NO) +
              VARY(*NO) EXPR(*YES) PASSATR(*NO)
         QUAL TYPE(*NAME) LEN(10) RSTD(*NO) MIN(0) FULL(*NO) VARY(*NO) +
              EXPR(*YES) PASSATR(*NO) PROMPT('User')
         QUAL TYPE(*CHAR) LEN(6) RSTD(*NO) RANGE(000000 999999) MIN(0) +
              FULL(*YES) EXPR(*YES) PASSATR(*NO) PROMPT('Number')

The source code for command PUTSPLF, command interface to QSYS/QSPPUTF
follows (see Note below).  To compile the command, on the OS/400 command
line type the following:

CRTCMD  CMD(lib_name/PUTSPLF)  PGM(QSYS/QSPPUTF)  +
SRCFILE(lib_name/file_name) SRCMBR(*CMD)

Note:  The source is not included,  Use the GETSPLF as an example.

Here’s the source that we setup.

/*********************************************************************/
/* COMMAND FROM IBM - CALLS API QSPPUTF                              */
/*   THIS COMMAND WILL COPY AN AFPDS OR IPDS DISK  FILE BACK TO A    */
/*   SPOOL FILE.  THE SPOOL FILE WILL BE QPRINT.                     */
/*   OF THE CONTROL CHARACTERS IN THE SPOOL FILE.                    */
/*   THIS COMMAND WILL RESTORE THE SPOOL FILE FROM A 4083 CHARACTER  */
/*   FILE.  USE THE GETSPLF COMMAND TO STORE TO A DISK FILE.         */
/*********************************************************************/
PUTSPLF:    CMD        PROMPT('Put Back To Spooled File')

       PARM       KWD(TOFILE) TYPE(Q1) RTNVAL(*NO) MIN(1) +
                 MAX(1) FILE(*OUT) PROMPT('From data base file')

       PARM       KWD(OUTQ) TYPE(Q2) PROMPT('Spooled Output +
                    Queue Name:')
       PARM       KWD(FRMMBR) TYPE(*NAME) LEN(10) RTNVAL(*NO) +
                    RSTD(*NO) DFT(*FIRST) SPCVAL((*FIRST)) +
                    MIN(0) MAX(1) FILE(*NO) FULL(*NO) +
                    EXPR(*YES) VARY(*NO) PASSATR(*NO) +
                    PROMPT('From member')

Q1:         QUAL       TYPE(*NAME) LEN(10) RSTD(*NO) MIN(1) +
                    FULL(*NO) EXPR(*YES) VARY(*NO) PASSATR(*NO)

       QUAL       TYPE(*NAME) LEN(10) RSTD(*NO) DFT(*LIBL) +
                    SPCVAL((*LIBL) (*CURLIB *CURLIB)) MIN(0) +
                    FULL(*NO) EXPR(*YES) VARY(*NO) +
                    PASSATR(*NO) PROMPT('Library')

Q2:         QUAL       TYPE(*NAME) LEN(10) DFT(*PRTFILE) +
                    SPCVAL((*PRTFILE)) EXPR(*YES)
       QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +
                   SPCVAL((*LIBL)) EXPR(*YES) +
                   PROMPT('Library Name:')

Still have questions? We can help. Submit a case to Technical Support.

Last Modified On: December 10, 2016