NSPOOL - Printout Spooling With Natural Front-End

This section describes the NSPOOL utility, Com-plete's printout spooling facility for sites that run Natural under Com-plete.

This document covers the following topics:


Overview

CSPOOL is the Application Programming Interface (API) to Com-plete's spooling utility and provides NSPOOL functionality. The definition of the API, as well as customization information is given in section Customization.

NSPOOL is an example Natural application distributed on the Com-plete installation medium and can be modified to provide a site-specific printout spooling facility. NSPOOL permits the flexible management and distribution of output to any online printer in the TP network.

Many applications require output to be printed on special forms. A problem often arises when different applications require different forms to be mounted on the same printer at the same time. With NSPOOL, you can create printouts on virtual printers that are not currently active in the system and subsequently route the printouts through the TP network to the physical printer where the appropriate forms have been mounted.

In addition, NSPOOL can be used to provide relevant information pertaining to each printout in the system, thus providing a comprehensive overview of all queues for all printers. You can also display the contents of a printout before requesting a print operation.

NSPOOL also supports the operation of online printers using commands such as DISPLAY STATUS, HALT, and RESET. In addition, you can route any output from the online queues to the system spool by using the special destination SYSOUT.

NSPOOL is completely menu-driven and provides the capability of full screen data entry. An online HELP facility is also available to assist you.

Natural Front-end

NSPOOL provides a front-end written in Natural. This has implications both in the areas of security and customization.

  • With Natural Security, user access to printers, printer groups and functions on printouts can be controlled and maintained by the system administrator.

  • The Natural-based user interface allows site-specific adaptation to corporate standards, as well as the integration of site-specific functions and features.

Note:
The system programmer for your Com-plete installation also has the option of restricting access to any particular NSPOOL/USPOOL function via the UUSPL0 exit. Note that the exit takes priority over any definitions made in Natural Security.

Natural Security Definitions

  1. Under Natural, you must define NSPOOL as Library to Natural Security using the Library Maintenance facility. Specify the following user exit in the library definition:

     USEREXIT: SPSE01-N
    
  2. Additionally, enter SYSSEC as Steplib using the Additional Options (see the section Additonal Options in Library Maintenance in the Natural Security documentation). Note that you can only enter SYSSEC on entry level 1-8 (do not use entry level 9).

  3. Using the User Maintenance facility in Natural Security, you must link each user to the Library NSPOOL. The link must be of type SL (special link), and you must specify user exit SPSE01-N in the special link.

NSPOOL Definitions and Authorizations

The NSPOOL definitions immediately follow the Natural Security definitions. At the application level, printers can be organized into groups that can be referred to in user authorizations. User authorizations are made at the user level.

Printer Groups

Once NSPOOL has been defined as library (NAT31 and above), the next screen allows you to define up to five printer groups for the application NSPOOL , each containing up to five printers. This table can be modified subsequently using the Modify Application/Library function of Natural Security:

                                                                                
  --------------------------PRINTOUT-SPOOLING-SECURITY--------------------------
                                 APPLICATION DATA                               
                                                                                
     Application: NSPOOL                   Prt-Group: ___  Printer: ________    
                                                                    ________    
                                                                    ________    
                                                                    ________    
                                                                    ________    
                                                                                
     Prt-Group: ___  Printer: ________     Prt-Group: ___  Printer: ________    
                              ________                              ________    
                              ________                              ________    
                              ________                              ________    
                              ________                              ________    
                                                                                
     Prt-Group: ___  Printer: ________     Prt-Group: ___  Printer: ________    
                              ________                              ________    
                              ________                              ________    
                              ________                              ________    
                              ________                              ________    
                                                                                
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       HELP  ---   END   ---   UPD   ---   ---   ---   ---   ----  ----  ----   

This table serves to make user authorization of printers more flexible: authorizing the user for one or more groups allows him/her to access the printers specified in the group(s).

Meaning of the input fields:

Prt-Group Group identifier
Printer Printer name, or selection criteria to specify several printers:
* specifies all printers
prefix* Specifies all printers whose names start with the prefix.

Press PF5 to save the printer group definitions.
Having reached the "Application Data" screen via the special link, you can branch immediately to the user authorization for NSPOOL with PF10 or PF11 (the special link must already exist between user and NSPOOL).

User Authorization

Once the special link between the user and NSPOOL has been defined, the next two screens allow you to authorize the user to perform functions on specific printers in the printer overview and on specific printouts in the printout queue.

These definitions can be modified subsequently by redisplaying the special link definitions for the user and pressing ENTER to display the first Printout Spooling Security screen:

                                                                                
  --------------------------PRINTOUT-SPOOLING-SECURITY--------------------------
                                                                                
     Application: NSPOOL    User: MBE       linked as: ADMINISTRATOR            
                                                                                
     disallowed = D                                                             
     allowed    = A       Printernames      Functions                           
     --------------       ------------      ---------                           
     A                    *_______          *__  ___  ___  ___  ___             
     _                    ________          ___  ___  ___  ___  ___             
     _                    ________          ___  ___  ___  ___  ___             
     _                    ________          ___  ___  ___  ___  ___             
                                                                                
  Functions: *   - all following Functions                                      
             PO* - Printer Overview  (PO, POS, PON)                        
             PP* - position Printout (PPT, PPB, PPA, PPR)  OPH - halt  Printer  
             OP* - operate  Printer  (OPH, OPR, OPS, OPM)  OPS - start Printer  
             OPM - mount    Form of Printer                OPR - reset Printer  
                                                                                
  Note: Cancel current Printout (OPC) and flush all Queue-Entries (OPF) are     
        controlled via the Function 'purge Queue-Entries (MQP)'.                
                                                                                
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       HELP  ---   END   ---   UPD   ---   ---   MORE  APPL  ----  ----  ----   

The top of this screen shows the application name (NSPOOL), the user ID for which the definition is valid, as well as the user type.

The input fields are explained in the table on the next page:

Disallowed/ Allowed Specifies whether the user is or is not allowed to perform the
function(s) specified in the Functions field for the specified Printer name. Possible options:
A: user is authorized.
D: function is disallowed for the user.
Printername Name of the printer or printer group for which the authorization is valid. You can either specify a printer name, a group name, or selection criteria as follows:
*: authorization is valid for all printers.
prefix*: authorization is valid for all groups or printers whose names start with this prefix.NSPOOL first checks the printer group names for a match of selection criteria and if no match is found, printer names are searched.
Functions Functions for which authorization is granted or denied. Available functions are listed in the lower half of the screen. The first two characters of the functions identify the function type (e.g., PP=Position printer), the third character identifies the function as described in the section Printer Overview below). You can specify any function value listed (*, PO* PP*, OP*, OPM, OPH, OPS, OPR, note that wildcard and prefix selection is possible). Note that any function value also includes the PO function. Note also that the values in brackets in the list of functions are valid only as a reference if your site wishes to program its own frontend.

Press PF5 to save the printer overview function authorizations.
With PF8 you continue to the List Queue function authorization table.
With PF9 you can branch immediately to the printer group definition screen described above.

The List Queue function authorization table is illustrated on the next page:

The List Queue function authorization table:

                                                                                
  --------------------------PRINTOUT-SPOOLING-SECURITY--------------------------
                                                                                
  Application: NSPOOL                                                         
                                                                                
  disallowed = D                                                                
  allowed    = A    Originator    Listnames    Functions                        
  --------------    ----------    ---------    ----------------------------     
  A                 *_______      *_______     *__  ___  ___  ___  ___  ___     
  _                 ________      ________     ___  ___  ___  ___  ___  ___     
  _                 ________      ________     ___  ___  ___  ___  ___  ___     
  _                 ________      ________     ___  ___  ___  ___  ___  ___     
                                                                                
  Functions:   *   - all following Functions                                    
               LQ* - list   Queue-Entries     (LQ, LQS, LQN)                    
               DP* - display current Printout (DP, DPN)                         
               MQ* - modify Queue-Entries     (MQU, MQC, MQM, MQP)              
               MQU - update Queue-Entry                                         
               MQC - copy   Queue-Entry                                         
               MQM - move   Queue-Entry                                         
               MQP - purge  Queue-Entry                                         
                                                                                
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       HELP  ---   END   ---   UPD   ---   UP    ---   APPL  ----  ----  ----   

The input fields are explained in the following table:

Field Meaning
Disallowed/Allowed Specifies whether the user is or is not allowed to perform the
  function(s) specified in the Functions field for the specified Originator and Listname. Possible options:
A: -- user is authorized.
D: -- function is disallowed for the user.
Originator User ID of the printout owner. You can either specify a user ID or selection criteria as follows:
*: authorization is valid for printouts belonging to any user ID.
prefix*: authorization is valid for printouts belonging to any user whose ID starts with this prefix.
Listname Name of the printout for which the authorization is valid. You can either specify a list or printout name or selection criteria as follows:
*: authorization is valid for all printouts according to the Originator specification.
prefix*: authorization is valid for all printouts whose names start with this prefix, according to the Originator specification.
Functions Functions for which authorization is granted or denied. Possible function values are listed in the lower half of the screen. The first two characters of the functions identify the function type (e.g., MQ=Modify Queue entries), the third character identifies the function as described in the section List Queue below). You can specify any value listed on the left of the function list (wildcard or prefix selection is possible). Note that any function also includes the LQ function. Note that the values in brackets on the right are valid only as a reference if your site wishes to program its own front-end.

Press PF5 to save the printer overview function authorizations.
With PF7 you return to the Printer Overview function authorization table.
With PF9 you can branch immediately to the printer group definition screen described above.

Input Interdependencies

Note that if you fill one input field of an authorization table, you must also specify values in the other fields on the same line.

If you enter an authorization in the Printer Overview authorization table, you must also specify authorization parameters in the same line of the List Queue authorization table, otherwise default values take effect (see below). This means that if you enter an A in the authorization field, you must at least fill the function field of the Printer Overview table with PO* and the function field of the List Queue table with LQ*.

Conversely, if you delete an entry from the Printer Overview table, you must also delete the entry from the same line in the List Queue table.

Default Authorization

NSPOOL can be used with or without Natural Security.

If NSPOOL runs under Natural Security, the user's logon user ID is searched in Natural Security. If the user ID is not defined, the request for NSPOOL is rejected.

If the user ID is defined to Natural Security, authorization is assigned as follows:

If the user ID has a Special Link to the application, but no security entry is made in the link, the user is assigned a default authorization. The default authorization consists of the following functions:

  • List all printers;

  • List all printouts belonging to the user ID;

  • Display any printout belonging to the user ID.

NSPOOL User Functions

To reach the NSPOOL Main Menu, enter the following command:

*NSPOOL

The following screen appears:

------------------------------PRINTOUT-SPOOLING-MAIN-MENU------------------------  
 OPTION  ===>                                                                   
                                                             Userid    MBE      
                                                             Time      09:15:49 
                                                                                
                                                                                
                                                                                
    1    LQ         - List Queue                                                
    2    PO         - Printer Overview                                          
    3    SQ         - Select  Listings                                          
    4    SP         - Select  Printer                                           
                                                                                
    END  EXIT       - Exit Spool                                                
    HELP HELP       - Display Help Information                                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       HELP        END

The NSPOOL Main Menu provides access to the major spooling management functions in the middle of the screen.

You can execute the listed functions (LQ, PO, SQ, SP) by either entering the corresponding function number in the OPTION field. You can leave NSPOOL with the END command (PF3) or invoke the help system by pressing PF1.

The spooling management functions available from the NSPOOL Main Menu are summarized in the following table and discussed in the remainder of this section.

Option Function Explanation
1/3 LQ/SQ Allows spooling display and manipulation specified by printout.
2/4 PO/SP Allows spooling display and manipulation specified by printer.

Note that the SQ and SP functions allow a more specific selection of output than the LQ and PO functions (see the sections List Queue and Printer Overview).

General PF Key Assignments

You can use the CLEAR key to return to terminate NSPOOL from any screen. The PF3 key returns you to the previous screen. Note that entering one of these keys on the Main Menu terminates NSPOOL.

Use PF1 to invoke the appropriate help display for the current screen. Type a question mark (?) in any input field to invoke a help window for the field.

List Queue

To display and/or modify one or more printouts, select one of the List Queue functions from the NSPOOL Main Menu.

SQ Function

If you select the SQ function (number 3 on the main menu), a window opens in which you can enter selection criteria to restrict the output to display specific items:

                                                                                
 --------------------------PRINTOUT-SPOOLING-MAIN-MENU------------------------- 
 OPTION  ===> 3                                                                 
                                                             Userid    MBE      
                                                             Time      10:41:07 
                                                                                
                                                                                
                                                                                
    1    +---------------------------+                                          
    2    !                           !                                          
    3    ! To confine Display        !                                          
    4    ! of List-Queue,            !                                          
         ! enter Listname: ________  !                                          
    END  !         Format: ____      !                                          
    HELP !        Printer: ________  !ormation                                  
         !           User: ________  !                                          
         ! Logical Driver: ________  !                                          
         !    Disposition: _         !                                          
         +---------------------------+                                          
                                                                                
                                                                                
                                                                                
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       HELP        END                                                          

The items in the window correspond to some column headings in the output display (see next figure). The following input values are valid:

name specific name of the item.
* select all items (default).
prefix* select all items with this prefix.
prefix> display all items, starting from item with this prefix.

SQ/LQ

If you select the function LQ (number 1 from the main menu) or enter selection criteria in the prompt window invoked by the SQ function, the printout queue is displayed in the following format:

                                                                                
 -----------------------------------LIST-QUEUE--------------------------------- 
 COMMAND  ===>                                                                  
                                                                                
   FC  Listname List-No Form Disp Lines Copy Pri   Userid    Log-Drv   Printer  
       A>______         ____ _                     ________  ________ ________  
   *   ***************************** top of list *****************************  
   .   RKLLISTE 43           H    199   0    8     RKL                DAEPRT15  
   .   HARDCOPY 220          R    50    0    8     JWO                DAEPRT53  
   .   HARDCOPY 267          R    50    0    8     TSH                DAEPRT53  
   .   HARDCOPY 268          R    36    0    8     JWO                DAEPRT53  
   .   RMT      281          R    554   0    8     RMT                STUPRT06  
   .   HARDCOPY 283          R    26    0    8     JWO                DAEPRT53  
   .   HARDCOPY 289          R    58    0    8     WHE                DUENN535  
   .   HARDCOPY 377          R    50    0    8     FMU                DAEPRT63  
   .   HARDCOPY 379          R    54    0    8     FMU                DAEPRT63  
   .   XCOMV012 473          R    569   0    8     WSL                HAMPRT01  
   *   *************************** bottom of list ****************************  
                                                                                
                                                                                
                                                                                
                                                                                
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       HELP  MENU  END                           DOWN              DATE         

The above example display was generated by entering A> in theListname field of the window invoked by the SQ function (see previous figure).

You can modify the output by entering selection criteria in the input fields under some of the column headings as described under the headingSQabove.

Note that each line represents one printout.

If the number of printouts exceeds the screen size, press PF8 to scroll down.

Press PF11 to display the date and time the printout(s) were created in place of the Log-Drv and Printer columns. PF10 redisplays the Log-Drv and Printer names.

The meaning of the fields are explained in the table on the next page.

The following table describes the column headings on the NSPOOL List Queue screen.

Field Meaning
FC Specifies the Function Code. Type the value directly over the "." in the FC column. The following values are permitted:
S SHOW function: Displays the contents of the specified printout at your terminal. (This invokes the "Printout Queue Display".) See the section Display Printout on Screen.
M MOVE function: Moves the printout to another printer, that is, queues it for another printer and deletes it from the queue of the original printer. Note that this value must be accompanied by a new name in the Printer field. The values for Pri (priority) and Copy (number of copies) can also be modified at the same time.
C COPY function: Same as M (above) except that the printout is copied, not moved; that is, it is not deleted from the queue of the original printer.
P PURGE function: Purges the printout from the printer queue.
U UPDATE function: Updates the specifications of the printout. All fields marked as modifiable can be changed.
Listname Specifies name of the printout as specified by the originator.
List-No Specifies the Com-plete identification number assigned to the printout.
Form Specifies the printout form specification (is modifiable).
Disp Specifies the disposition of this printout:
I Is inputting, that is, the printout has not finished.
R Is ready; is waiting for printer to get ready.
H Is ready but will be held until Disp is changed to "R."
L Is ready and printed, but is still left in the spooling system.
O Is outputting, that is, the printout is currently being printed.
Note that "R" Disp status can be modified to "H" or a request to leave the printout in the spool (Disp "L") can be made. In addition, "H" can be changed to "R" or a request to leave the printout in the spool ("L") can be made.
Lines Specifies the number of text lines for this printout.
Copy Specifies the number of additional copies requested for this printout (modifiable).
Pri Allows the priority of the printer to be specified. Note that the highest priority is 1. This field is modifiable to generate a list according to priority.
Userid Specifies the User ID of the printout originator.
Either:
Log-Drv Specifies the name of the logical output driver routine, which can perform additional output formatting during printing. This field is modifiable to generate a list according to logical output driver.
Printer Specifies the name of the destination for this printout (modifiable with the COPY or MOVE function).
Or:
Date Date the printout was created.
Time Time the printout was created.

Route to System Printer

You can route printouts within the Com-plete TP spooling system to the operating spooling system by using the COPY and MOVE functions (see the preceding table) and defining SYSOUT as the new printer name. The output is then be transferred to the output class "A" as default. To select another output class, specify SYSOUT=x.

List Queue Commands

You can issue any of the following commands from the command line of the List Queue display screen:

Command Meaning
MENU Return to NSPOOL main menu.
END Return to previous screen.
HELP Display spooling help menu.
PO Call Printer Overview.
LQ Call List Queue.
DOWN Scroll forward.
DATE Switch display to DATE/TIME mode.
DEST Switch display to LOG-DRV/PRINTER mode.

The available functions for displayed printouts are described in the above table in the explanation of the column headed FC.

Printer Overview

To display and/or operate one or more printers, select the PO or SP function from the NSPOOL main menu (number 2 or 4 respectively).

SP

If you select the SP function (number 4 on the main menu), a window opens in which you can enter selection criteria to restrict the output to display specific items:

The items in the window correspond to some column headings in the output display (see next figure). The following input values are valid:

name name of the item (printer name, terminal ID or printer status).
* select all items (default, not valid for Tid-Nr.).
prefix* select all items with this prefix (not valid for Tid-Nr. ).
prefix> display all items, starting from item with this prefix (not valid for Tid-Nr. ).

Note that the Printer-Name field and Tid-Nr. field are mutually exclusive.

SP/PO

If you select the function PO (number 2 from the main menu) or enter selection criteria in the prompt window invoked by the SP function, the printer overview is displayed in the following format:

                                                                                
 --------------------------------PRINTER-OVERVIEW------------------------------ 
 COMMAND  ===>                                                                  
                                                                                
   FC  Printer     Tid   Dev-Type   Status     Form   Q-Num                     
       ________    ____             ________                                    
   *   ***************************** top of list *****************************  
   .   SYSOUT      1     BATCH      WAIT              0                         
   .   DUPPRT14    2     3288  L    SIMLOGO           3                         
   .   DAEPTR75    3     3288  L    SIMLOGO           2                         
   .   SAEPRT25    4     3288  L    SIMLOGO           1                         
   .   DAERPT35    5     3288  L    SIMLOGO           2                         
   .   DUGPR14     6     3288  L    SIMLOGO           1                         
   .   HUGO        7     3288  L    SIMLOGO           2                         
   .   LPRTSM02    8     3288  L    SIMLOGO           1                         
   .   LPRTSM03    9     3288  L    SIMLOGO           1                         
   .   LPRTSM04    10    3288  L    SIMLOGO           1                         
   .   FF          11    3288  L    SIMLOGO           2                         
   .   DAEPRT1     12    3288  L    SIMLOGO           2                         
   .   MZCPRT      13    3288  L    SIMLOGO           3                         
   .   XXX00001    14    3288  L    SIMLOGO           1                         
   .   DAEPTR30    15    3288  L    SIMLOGO           3                         
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       HELP  MENU  END               TOP         DOWN                           

The above example display was obtained by invoking the SP function and leaving all fields blank in the prompt window (see previous figure).

You can modify the output by entering selection criteria in the input fields under some of the column headings as described under the heading SP above.

Note that each printer name can be associated with either a real or virtual printer.

If the list of printers exceeds the screen size, press PF8 to scroll down. Press PF6 to redisplay the first output page.

The meaning of the fields according to column heading is described in the table on the next page:

The following table describes the column headings on the NSPOOL Printer Overview screen.

Field Meaning
FC Specifies the function code. Type the value directly over '.' in the FC column. The following values are permitted:
M MOUNT new form function: Mount another output format on the printer. Note that this value must be accompanied by a new entry in the "FORM" field.
S START printer function: start a printer that has been halted.
R RESET function: recover after I/O error.
H HALT function: halt current printout.
P POSITION printout function: positions the current printout, that is, stops printing and resumes printing at any specified page within the printout. You specify the place at which printing is to be resumed by filling the Mode and Num parameters in the prompt window that appears when invoking the P function. Possible values for the Mode field are:
T Top Printing will resume from the top of the printout.
B Bottom Printing will resume from the bottom of the print-out (last page is printed).
A Absolute Printing will resume at the page specified in the Num field.
R Relative Printing will resume nnn pages from the current page forward or backward. The number of pages must be specified in the Num field. Forward pages are specified by the number, backward pages the number preceded by the minus sign(e.g., -5).
Q QUEUE function: Displays the queue for the printer, that is, switches to the List Queue of Printouts display. (This function is the same as selecting the NSPOOL Main Menu LQ function, described earlier in this section).
C CANCEL function: Cancels the current printout for the printer, that is, the List Queue of the current printout is displayed. The field FC is filled with value "P". Press to purge the list. Printing will resume with the next printout.
F FLUSH function: Cancels all queue entries for this printer. Is the same as cancel current printout for all printouts of the printer.
Printer Specifies the logical name of the printer.
Tid Specifies the unique Terminal ID as specified in the TIBTAB.
Dev-Typ Specifies the device type of the printer.
Status Specifies the current status of the printer. Possible values:
WAIT Is waiting for work.
RUN Is currently active.
HALT Is held up due to operator intervention.
ERROR Is held due to physical I/O error during output.
SIMLOGO Is currently in simlogon required status. This status is indicated if output was scheduled for this printer and Com-plete is waiting for a session to be established.
INTVREQ Is waiting for operator intervention (for example, paper is out), before the printer can be put online.
UNDEFIN Is currently undefined in the spooling system.This status is indicated if output was scheduled for this printout, but Com-plete has no corresponding active session.
Form Specifies the output form currently mounted on printer. You can change the form by typing M in the function field, a new form ID in the Form field and pressing .
Q-Num Number of printouts in the queue for this printer.

Printer Overview Commands

You can issue any of the following commands from the command line of the Printer Overview display screen:

Command Meaning
MENU Return to NSPOOL main menu.
END Return to previous screen.
HELP Display spooling help menu.
PO Call Printer Overview.
LQ Call List Queue.
DOWN Scroll forward.
TOP Restart printer overview from the top.

The available functions for displayed printers are described in the above table in the explanation of the column headed FC.

NSPOOL Display Printout on Screen (SHOW or QUEUE Function)

The SHOW or QUEUE function enables you to display the contents of a specific printout at your terminal. You can request the display from either the List Queue screen (Function Code "S") or from the Printer Overview screen (Function Code "Q").

The following figure shows a sample of the output produced by selecting this function.

                                                                                
 --------------------------------PRINTOUT-DISPLAY------------------------------ 
 PRINTOUT: RKLLISTE                                             COLUMNS 001 079 
 COMMAND  ===>                                                                  
                                                                                
  ********************************* top of list ********************************
  109:03:50        Current Object  MTMENU0P in library SG--PROD        92-02-05 
   0010 * MTMENU0P SAG System Products Maintenance Tool Menu         GW 88-02-06
   0020 *                                                                       
   0030 DEFINE DATA                                                             
   0040    GLOBAL USING MT00000G                                                
   0050    LOCAL  USING +PFK-LDA                                                
   0060    LOCAL  USING MTMENU0L                                                
   0070    LOCAL  1 #I (I2)                                                     
   0080 END-DEFINE                                                              
   0090 *                                                                       
   0100 * ----------------------------------------------------------------------
   0110 DEFINE SUBROUTINE INITIALIZATION                                        
   0120 * ----------------------------------------------------------------------
   0130 *                                                                       
   0140 ASSIGN #PF-VALUE (3)  = 'END'                                           
   0150 ASSIGN #PF-VALUE (6)  = 'SYS'                                           
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
                   END                           DOWN        LEFT  RIGHT        

When viewing the printout, use PF8 to display the next page (if there are more lines available). To shift the start column of the output to the left, use PF10 to shift to the right, use PF11. The maximum line size of the output is 256 characters. Normally the columns 1 to 79 will be shown. Most of the printouts have 133 columns. In this case, a shift right shows column 55 to 133, and a shift left 1 to 79. If more columns available, it will be shifted to the next 79 lines to the right or left. To return to previous screen, press PF3.

Printout Display Commands

You can issue any of the following commands from the command line of the printout display screen:

Command Meaning
END Return to previous screen.
HELP Display spooling help menu.
PO Call Printer Overview.
LQ Call List Queue.
DOWN Scroll forward.
LEFT Shift display to the left.
RIGHT Shift display to the right.

Customization

NSPOOL functionality is provided by the module CSPOOL which is provided in source format (see the section Installation Considerations above).

CSPOOL references the CMSPCB macro. This macro generates the DSECT for the control block SPCB, as well as the DSECTs for the input and output lines (inp-arg, out-arg), depending on the selected function. For a description of the macro, see the CMSPCB copybook on the supplied source library.

The NSPOOL user interface is written in Natural. The Natural front-end programs use the data areas for communication with CSPOOL listed in the following table:

Source Structure Length Remarks
SPWK01-A #SPWK01A OP 4 For INIT/TERM
SPCB01-A #SPCB SPCB 200  
SPQI01-A #QI-WRKLINE inp-arg 80  
SPQO01-A #QO-WRKLINE out-arg 200 All subfunctions except DP and DPN
SPQO02-A #DPO-WRKARRAY out-arg 256 Subfunctions DP and DPN only

Parameter Areas

SPWK01-A

*   TITLE........: Common Work-area for Communication with SPCB01-N
*   NAME.........: SPWK01-A
*   TYPE.........: A
* - -------------------------------- - ---- -----------------------
  1 #SPWK01A
  2 #OP                              A    4
R 2 #OP                                     /* REDEF. BEGIN : #OP
  3 #OP-1                            A    1
  3 #OP-2                            A    1
  3 #OP-3                            A    1
  3 #OP-4                            A    1

SPCB01-A

*   TITLE........: Communication-area for corresponding via CSPOOL
*   NAME.........: SPCB01-A
*   TYPE.........: A
* - -------------------------------- - ---- -----------------------
  1 #SPCB                            A  200
R 1 #SPCB                                   /* REDEF. BEGIN : #SPCB
  2 #SP-ID                           B    4 /* 'SPCB'
  2 #SP-DATO                         B    4 /* INTERNAL
  2 #SP-DATI                         B    4 /* INTERNAL
  2 #SP-REQID                        B    4
  2 #SP-REQIDC                       B    4
  2 #SP-OP                           A    4
  2 #SP-LREQ                         B    2
  2 #SP-LLEN                         B    2
  2 #SP-DISP                         B    2 /* DISPL. IN LINE
  2 #SP-RETCD                        B    2
  2 #SP-MSGNUM                       B    2
  2 #SP-RLINS                        B    2
  2 #SP-DYNW                         B    4 /* INTERNAL
  2 #SP-DYNWL                        B    4 /* INTERNAL
  2 FILL1                            A   28
  2 #SP-LNAMEL                       B    2
  2 #SP-LNAME                        A    8
  2 FILL2                            A    8
  2 #SP-FORML                        B    2
  2 #SP-FORM                         A    8
  2 FILL3                            A    8
  2 #SP-DESTL                        B    2
  2 #SP-DEST                         A    8
  2 FILL4                            A    8
  2 #SP-USERL                        B    2
  2 #SP-USER                         A    8
  2 FILL5                            A    8
  2 #SP-LDRVL                        B    2
  2 #SP-LDRV                         A    8
  2 FILL6                            A    8
  2 #SP-STATL                        B    2
  2 #SP-STAT                         A    8
  2 FILL7                            A   28

SPQI01-A

*   TITLE........: input  Work-line
*   NAME.........: SPQI01-A
*   TYPE.........: A
* - -------------------------------- - ---- ---------------------------
  1 #QI-WRKLINE                      A   80
  1 #QI-WRKLINE                             /* RED. BEGIN : #QI-WRKLINE
  2 #LQI-ID                          B    4
  2 #LQI-NAME                        A    8
  2 #LQI-NUM                         B    2
  2 #LQI-FORM                        A    4
  2 #LQI-STAT                        A    1
  2 #LQI-LINS                        B    2
  2 #LQI-COPIES                      I    2
  2 #LQI-PRIO                        I    2
  2 #LQI-USER                        A    8
  2 #LQI-LDRV                        A    8
  2 #LQI-DEST                        A    8
  2 #LQI-DATE                        A    8
  2 #LQI-TIME                        A    8
  2 #LQI-FILL1                       A   15
R 1 #QI-WRKLINE                             /* RED. BEGIN : #QI-WRKLINE
  2 #PQI-ID                          B    4
  2 #PQI-NAME                        A    8
  2 #PQI-TID                         B    2
  2 #PQI-DTYPE                       A    8
  2 #PQI-FORM                        A    4
  2 #PQI-NUM                         B    2
  2 #PQI-STAT                        A    8
  2 #PQI-FILL1                       A   44

SPQO01-A

*   TITLE........: output Work-line
*   NAME.........: SPQO01-A
*   TYPE.........: A
* - -------------------------------- - ---- ---------------------------
  1 #QO-WRKLINE                      A  200
R 1 #QO-WRKLINE                             /* RED. BEGIN : #QI-WRKLINE
  2 #LQO-ID                          B    4
  2 #LQO-NAME                        A    8
  2 #LQO-NUM                         B    2
  2 #LQO-FORM                        A    4
  2 #LQO-STAT                        A    1
  2 #LQO-LINS                        B    2
  2 #LQO-COPIES                      I    2
  2 #LQO-PRIO                        I    2
  2 #LQO-USER                        A    8
  2 #LQO-LDRV                        A    8
  2 #LQO-DEST                        A    8
  2 #LQO-DATE                        A    8
  2 #LQO-TIME                        A    8
  2 #LQO-FILL1                       A  135
R 1 #QO-WRKLINE                             /* RED. BEGIN : #QI-WRKLINE
  2 #PQO-ID                          B    4
  2 #PQO-NAME                        A    8
  2 #PQO-TID                         B    2
  2 #PQO-DTYPE                       A    8
  2 #PQO-FORM                        A    4
  2 #PQO-NUM                         B    2
  2 #PQO-STAT                        A    8
  2 #PQO-FILL1                       A  164

SPQO02-A

*   TITLE........: output Work-line only for display Printout
*   NAME.........: SPQO02-A
*   TYPE.........: A
* - -------------------------------- - ---- ---------------------------
  1 #DPO-WRKARRAY
  2 #DPO-WRKLINE                     A  200
R 2 #DPO-WRKLINE                            /* RED. BEGIN: #DPO-WRKLINE
  3 #DPO-ID                          B    4
  3 #DPO-NAME                        A    8
  3 #DPO-NUM                         B    2
  3 #DPO-FORM                        A    4
  3 #DPO-STAT                        A    1
  3 #DPO-LINS                        B    2
  3 #DPO-COPIES                      I    2
  3 #DPO-PRIO                        I    2
  3 #DPO-USER                        A    8
  3 #DPO-LDRV                        A    8
  3 #DPO-DEST                        A    8
  3 #DPO-DATE                        A    8
  3 #DPO-TIME                        A    8
  3 #DPO-FILL1                       A  135
  2 #DPO-A56                         A   56

Supported Functions and Subfunctions

The following table provides an overview of the functions and subfunctions supported by NSPOOL's Natural front-end.

Function Subfunction Meaning
PO   List printer overview
  OP Operate printer
  PP Modify printer
LQ   List printout queue
  DP Display printout
  MP Modify printout

General Programming Considerations

When customizing the NSPOOL front-end, the following points must be considered:

Logic in general:
   CALL 'CSPOOL' 'INIT' SPCB
// CALL 'CSPOOL' SPCB inp-arg out-arg //
   CALL 'CSPOOL' 'TERM' SPCB
Initialization

The storage areas for the SPCB must be provided by the calling program. It is initialized by the following call:

CALL 'CSPOOL' 'INIT' SPCB

The reserved fields in the SPCB must not be modified by the user program. CSPOOL will keep addresses of internal work areas in those fields.

Termination

To release the storage areas acquired by CSPOOL, a termination call is required:

CALL 'CSPOOL' 'TERM' SPCB

For more detailed information of CALL 'CSPOOL' ('INIT' / 'TERM') SPCB see frontend program SPCB01-N.

Communication

The calling program sets the function code in the field #SP-OP in the #SPCB(SPCB-name in the frontend programs). The keyword table in the #SPCB (#SP-NAMEL #SP-NAME etc.) can be filled to specify search criterias. Call :

   CALL 'CSPOOL' #SPCB #QI-WRKLINE #DPO-WRKARRAY (Names in frontend
   CALL 'CSPOOL' #SPCB #QI-WRKLINE #QO-WRKLINE    programs)

Note that inp-arg points to a copy of the out-arg of a previous (LQ/PO) request, if any subfunction is used. The field #SP-REQID in the #SPCB must also contain the value from (#LQO-ID/#PQO-ID).

Printer Overview

Function Meaning
PO first entry
POS same entry again / position to referred entry
PON next in queue

The following table lists the operands that must be filled in the used front-end program before calling CSPOOL. Which operands are relevant to which functions can be seen from the matrix following the table.

Data area Fields in #SPCB Format/length Value
SPCB01-A #SP-OP A4 Operation code (PO, POS, PON)
SPCB01-A #SP-LREQ B2 1
SPCB01-A #SP-REQID B4 TIB address
SPCB01-A #SP-DESTL B2 Length of destination name or TID number
SPCB01-A #SP-DEST A8 Destination name or TID number

Matrix:

- PO, POS PO, POS PO, POS, PON
#SP-OP (1) in (1) in (1) in
#SP-LREQ (1) in (1) in (1) in
#SP-REQID (2) in - -
#SP-DESTL - (3) in (3) in
#SP-DEST - (2) in (2) in

Key:

(1) Required.
(2) Optional.
(3) If destination-name (#SP-DEST) is filled, the length of destination-name is required in #SP-DESTL.
in Input field

For more detailed information, see the source of front-end program SPPQ01-S.

Operate Printer

Operate Printer (OP) is a subfunction of the Printer Overview function and consists of the following:

OPM mount printer format
OPS start printer
OPR reset printer
OPH halt printer

The following table lists the operands that must be filled in the used front-end program before calling CSPOOL. Which operands are relevant to which functions can be seen from the matrix following the table.

Data area Fields in #SPCB Format/length Value
SPCB01-A #SP-OP A4 Operation code (OPM, OPS, OPR, OPH)
SPCB01-A #SP-LREQ B2 1
SPCB01-A #SP-REQID B4 TIB address (#PQD-ID)
SPQI01-A #QI-WRKLINE A80 Out-arg (#QO-WRKLINE)
SPCI01-A #PQI-FORM A4 Printer format

Matrix:

  OPM OPS OPR OPN
#SP-OP (1) in (1) in (1) in (1) in
#SP-LREQ (1) in (1) in (1) in (1) in
#SP-REQID (1) in (1) in (1) in (1) in
#QI-WRKLINE (1) in (1) in (1) in (1) in
#PQI-FORM (1) in - - -

Key:

(1) Required.
in Input field

Subfunction OP is only possible after a successful function PO. For more detailed information, see the source of front-end program SPOP01-P.

Position Current Printout

This subfunction branches to the function List Queue Overview. For execution, #SP-DESTL and #SP-DEST are filled. Subfunction Position Current Printout can then be used as described below.

Position Current Printout is a subfunction of List Queue Overview and consists of the following:

PPT position current printout top
PPB position current printout bottom
PPA position current printout absolute
PPR position current printout relative

The following table lists the operands that must be filled in the used front-end program before calling CSPOOL. Which operands are relevant to which functions can be seen from the matrix following the table.

Data area Fields in #SPCB Format/length Value
SPCB01-A #SP-OP A4 Operation code (PPT, PPB, PPA, PPR)
SPCB01-A #SP-LREQ B2 With PPA and PPR, number of pages requested. Otherwise, 1
SPCB01-A #SP-REQID B4 TIB address (#PQD-ID)
SPQI01-A #QI-WRKLINE A80 Out-arg (#QO-WRKLINE)

Matrix:

  PPT PPB PPA PPR
#SP-OP (1) in (1) in (1) in (1) in
#SP-LREQ (1) in (1) in (1) in (1) in
#SP-REQID (1) in (1) in (1) in (1) in
#QI-WRKLINE (1) in (1) in (1) in (1) in

Key:

(1) Required.
in Input field

Subfunction PP is only possible after a successful PO and LQ request. For more detailed information, see source of front-end program SPPP01-S.

EXCEPTION!

The following two subfunctions are simulated.

OPC cancel current printout
OPF flush all queue entries

With these subfunctions, the function List Queue Overview is branched to. For execution, #SP-DESTL and #SP-DEST are filled. Subfunction Modify Queue entry purge (MQP) can then be used as described below.

List Queue Overview

Function Meaning
LQ first entry
LQS same entry again / position to referred entry
LQN next in queue

The following table lists the operands that must be filled in the used front-end program before calling CSPOOL. Which operands are relevant to which functions can be seen from the matrix following the table.

Data area Fields in #SPCB Format/length Value
SPCB01-A #SP-OP A4 Operation code (LQ, LQS, LQN)
SPCB01-A #SP-LREQ B2 1
SPCB01-A #SP-REQID B4 MCQ address
SPCB01-A #SP-LNAMEL B2 Length of printout name
SPCB01-A #SP-LNAME A8 Printout name
SPCB01-A #SP-FORML B2 Length of format name
SPCB01-A #SP-FORM A8 Format name
SPCB01-A #SP-DESTL B2 Length of destination name
SPCB01-A #SP-DEST A8 Destination name
SPCB01-A #SP-USERL B2 Length of user ID
SPCB01-A #SP-USER A8 User ID
SPCB01-A #SP-LDRVL B2 Length of logical driver name
SPCB01-A #SP-LDRV A8 Logical driver name
SPCB01-A #SP-STATL B2 Length of status name
SPCB01-A #SP-STAT A8 Status name

Matrix:

  LQ, LQS LQ, LQS, LQN LQ, LQS, LQN
#SP-OP (1) in (1) in (1) in
#SP-LREQ (1) in (1) in (1) in
#SP-REQID (2) in - -
#SP-LNAMEL - (3) in -
#SP-LNAMEL - (2) in -
#SP-FORML - (3) in -
#SP-FORM - (2) in -
#SP-DESTL - (5) in -
#SP-DEST - (2) in -
#SP-USERL - (6) in -
#SP-USER - (2) in -
#SP-LDRVL - (7) in -
#SP-LDRV - (2) in -
#SP-STATL - (8) in -
#SP-STAT - (2) in -

Key:

in Input field
(1) Required.
(2) Optional.
(3) If printout-name (#SP-LNAME) is filled, the length of the printout name is required in #SP-LNAMEL.
(4) If format-name (#SP-FORM) is filled, the length of the format name is required in #SP-FORML.
(5) If destination-name (#SP-DEST) is filled, the length of the destination name is required in #SP-DESTL.
(6) If user-id (#SP-USER) is filled, the length of the user ID is required in #SP-USERL.
(7) If logical driver-name (#SP-LDRV) is filled, the length of the logical driver-name is required in #SP-LDRVL.
(8) If status-name (#SP-STAT) is filled, the length of the status name is required in #SP-STATL.

For more detailed information, see source of frontend program SPLQ01-N.

Printout Display

Printout Display is a subfunction of List Queue Overview and consists of the following:

DP first entry
DPN next line

The following table lists the operands that must be filled in the used front-end program before calling CSPOOL. Which operands are relevant to which functions can be seen from the matrix following the table.

Data area Fields in #SPCB Format/length Value
SPCB01-A #SP-OP A4 Operation code (DP, DPN)
SPCB01-A #SP-LREQ B2 1
SPCB01-A #SP-REQID B4 MCQ address (#LQO-ID)
SPCB01-A #SP-LLEN B2 Length of output line (max. 256)
SPQI01-A #QI-WRKLINE A80 Out-arg (#QO-WRKLINE)

Matrix:

- DP DPN
#SP-OP (1) in (1) in
#SP-LREQ (1) in (1) in
#SP-REQID (1) in -
#SP-LLEN (1) in -
#QI-WRKLINE (1) in -

Key:

in Input field
(1) Required.

Subfunction DP is only possible after a successful LQ request. For more detailed information, see source of front-end program SPDP01-P.

Modify Queue Entry

Modify Queue Entry is a subfunction of List Queue Overview and consists of the following:

MQU modify queue entry update
MQP purge queue entry
MQC copy queue entry
MQM move queue entry

The following table lists the operands that must be filled in the used front-end program before calling CSPOOL. Which operands are relevant to which functions can be seen from the matrix following the table.

Data area Fields in #SPCB Format/length Value
SPCB01-A #SP-OP A4 Operation code (MQU, MQP, MQC, MQM)
SPCB01-A #SP-LREQ B2 1
SPCB01-A #SP-REQID B4 MCQ address (#LQO-ID)
SPQI01-A #QI-WRKLINE A80 Out-arg (#QO-WRKLINE)
SPQI01-A #LQI-FORM A4 Printout format
SPQI01-A #LQI-STAT A1 Printout status
SPQI01-A #LQI-COPIES B2 Number of printout copies
SPQI01-A #LQI-PRIO B2 Printout priority
SPQI01-A #LQI-LDRV A8 Printout logical driver
SPQI01-A #LQI-DEST A8 Printout destination

Matrix:

- MQU MQP MQC MQM
#SP-OP (1) in (1) in (1) in (1) in
#SP-LREQ (1) in (1) in (1) in (1) in
#SP-REQID (1) in (1) in (1) in (1) in
#QI-WRKLINE (1) in (1) in (1) in (1) in
#LQI-FORM (2) in - (2) in (2) in
#LQI-STAT (2) in - (2) in (2) in
#LQI-COPIES (2) in - (2) in (2) in
#LQI-PRIO (2) in - (2) in (2) in
#LQI-LDRV (2) in - (2) in (2) in
#LQI-DEST - - (1) in (1) in

Key:

(1) Required.
(2) Optional.
in Input field.

Subfunction MQ is only possible after a successful LQ request. For more detailed information, see source of front-end program SPMQ01-P.