Native Mode Spooler (continued) [ COMMUNICATOR 3000/XL XL RELEASE 2.1 ] MPE/iX Communicators
COMMUNICATOR 3000/XL XL RELEASE 2.1
Native Mode Spooler (continued)
SPFXFER Error Messages
The following is a list of possible error messages reported by SPFXFER:
10750 INVALID PURGE OPTION IN COMMAND STRING
10751 FILE SPECIFIER TOO LONG IN COMMAND STRING
10752 INVALID COMMAND NAME
10753 INVALID TAPE FILENAME IN COMMAND STRING
10754 INVALID USER NAME IN COMMAND STRING
10755 INVALID COMMAND Syntax
10756 INVALID DELIMITER IN COMMAND STRING
10757 KEYWORD MISSING IN COMMAND STRING
10758 INVALID PARAMETERS IN COMMAND STRING
10759 COMMAND IS TOO LONG
10760 AN ERROR HAS BEEN RETURNED BY MYCOMMAND
10761 TERMINAL I/O ERROR
10762 NO FILES WERE FOUND UNDER THE SPECIFIED USER.ACCOUNT
10763 UNABLE TO OPEN TAPE DEVICE
10764 CANNOT OPEN SPOOLFILE ON DISK
10765 INVALID TAPE FORMAT
10766 ERROR WHILE READING TAPE
10773 EOF MARK NOT FOUND
10774 WRONG REEL - INCORRECT TAPE LABEL
10775 WRONG REEL - INCORRECT REEL NUMBER
10776 WRONG REEL - INCORRECT SPOOK VERSION
10777 UNABLE TO CLOSE TAPE DEVICE
10778 ERROR WHILE READING FILE
10779 ERROR WHILE WRITING FILE
10780 ERROR WHILE WRITING TO TAPE
10781 FILE NOT FOUND
10782 INVALID FILE ID
10785 INSUFFICIENT CAPABILITY
10786 UNEXPECTED END OF TAPE ENCOUNTERED
10787 WRONG REEL HAS BEEN MOUNTED
10788 MULTI REEL ABORT
10789 ERROR OCCURRED WHILE ACCESSING NATIVE MODE DEVICE FILES
10790 ERROR IN SPOOK TAPE DEVICE CLASS DIRECTORY
10791 INVALID SPOOLFILE BLOCK FORMAT
10792 ERROR WHILE DELIMITING DEVICE NAME
10793 CANNOT GET UFID
10794 CANNOT GET SPOOLFILE ID
10795 ERROR RETURNED BY FCONTROL
10796 ERROR RETURNED BY FFILEINFO
10797 CANNOT OPEN SPOOLFILE ON SYSTEM DISK
10798 CANNOT CLOSE SPOOLFILE ON SYSTEM DISK
10799 ERROR RETURNED BY SP_FM_SET
10800 INVALID TARGET DEVICE
10801 SPOOKTAPE DEVICE DIRECTORY OVERFLOW
10802 ERROR RETURNED BY FCHECK
10803 ERROR RETURNED BY SP_FM_INFO
10804 CANNOT OPEN STDLIST
THE PRINTSPF UTILITY
In order to provide the functionality of the SPOOK "mode c=on", a new
utility program called PRINTSPF is provided with the release of the
Native Mode Spooler. PRINTSPF provides a way to display spoolfile
contents in a formatted manner so that the contents of both the data and
the special overhead area of each record can be examined.
The syntax of PRINTSPF is modeled after the MPE XL PRINT command. It can
be used to print ranges of records (both absolute and EOF-relative) and
it can also display the record number of each record for easy reference.
Note that the quotation marks are required.
Syntax
PRINTSPF "[FILE=]<filename>
[;[START=]<startrec>]
[;[END=]<endrec>]
[;[WIDTH=]<linewidth>]
[;NUM]"
Parameter Definitions
filename Actual file name of the file to be printed to STDLIST.
The filename parameter may specify a permanent disk
file. File equations are ignored unless an asterisk ( *
) precedes the filename, indicating a backreference. If
the file name is of the form I####### or O####### then
PRINTSPF will search the current (logon) directory for
the spoolfile first. If the file is not found there,
PRINTSPF will then search the IN.HPSPOOL (for I#######)
or OUT.HPSPOOL (for O#######) directories for the file.
Note that this searching procedure is done only if the
filename is not qualified with a group or account name.
For example: :PRINTSPF O2353 searches for O2353 in the
current directory first. If O2353 is not found then
PRINTSPF will search for O2353.OUT.HPSPOOL.
startrec Specifies the record number of the first file record to
be displayed. If positive, startrec is relative to 1.
If it is negative, it specifies a record location
relative to the end-of-file, that is, -5 indicates the
fifth (5th) record from the end-of-file. Zero is
changed to a 1. Default is the first record of the file
(1).
endrec Specifies the last record of the file to be displayed.
If positive, endrec is relative to 1. If negative, it
specifies a location relative to the end-of-file, that
is, -5 indicates the fifth (5th) record from the
end-of-file. Zero is changed to a 1. Default is the
last record of the file.
linewidth Specifies the number of characters to display on each
line. The default is the record size of STDLIST minus
one. If the line contains more characters than
linewidth, they are truncated.
NUM Specifies numbering of the lines as they are displayed.
The numbers appear in front of the line (record) being
displayed. The number displayed is the actual record
number (relative to 1) of each line displayed. By
default, record numbers are not displayed.
STORE/RESTORE
NMS output spoolfiles, as normal disk files, can now be stored and
restored. Input spoolfiles are private files and cannot be stored or
restored (see the next section on spoolfile security and the definition
of private spoolfiles). The rest of this description applies only to
non-private, output spoolfiles.
NOTE A tape created with STORE/RESTORE cannot be used to input
spoolfiles to an MPE V/E or CM Spooler system. Spoolfiles output
to tape with either the SPOOK or SPOOK5 utility cannot be input
with the STORE/RESTORE utility.
The use of an auxiliary directory (the SPFDIR), and the association of
each spoolfile with two accounts (HPSPOOL and the creator's account) and
one creating user (not necessarily in the HPSPOOL account) make this
operation more complex than for non-spoolfiles. Below is a summary of
some of the STORE/RESTORE rules when dealing with Native Mode spoolfiles.
Refer to the STORE/RESTORE external specifications for full details.
* Linked spoolfiles reside in the HPSPOOL account but are created by
users in other accounts. Normally, STORE would only allow a user
with SM capability (or a user in the HPSPOOL account with AM
capability) to store files from the HPSPOOL account. This would
prevent users from storing their own spoolfiles, which is one of the
major enhancements of the Native Mode Spooler. Therefore, STORE has
been enhanced to allow the creating user to store his/her own
spoolfiles from the HPSPOOL account. Additionally, an account
manager may store any spoolfiles in HPSPOOL created from his/her
account, and the system manager and HPSPOOL account manager may store
all spoolfiles in HPSPOOL.
* The ;PURGE option of STORE is supported. The SPFDIR entry for the
spoolfile is deleted when the file is purged. Checkpoint files
associated with the spoolfile will also be deleted.
* If a spooler process finishes its last copy of a spoolfile while that
file is being stored, the spooler will be unable to delete the file.
The file management routines will leave the file in the DELPND state,
where it will remain until one of the following occurs:
* Someone opens and closes it (say, with :PURGE or :SPOOLF
;DELETE).
* STORE completes and the PURGE option was selected.
* It is resurrected (made READY) by raising the number of copies
such that after the :SPOOLF...; ALTER completes, the number of
copies to be printed exceeds the number already printed..
* A spoolfile successfully restored to OUT.HPSPOOL is automatically
linked to the SPFDIR and its name is changed to match the new spoolid
assigned by the file management routines. This avoids potential ID
and name conflicts. The SHOW=LONG option displays both the old and
the new fully qualified file names.
* Files may be restored to OUT.HPSPOOL in one of three ways:
* By restoring files which were stored to tape from the OUT.HPSPOOL
group. This is the recommended method, since only spoolfiles
should ever be in that group, so only spoolfiles will ever be
restored there. An SM or OP user can restore files created by
any user (even if that user does not exist on the system, see
below). An AM user can restore files created by any user in
his/her account. Any other user can only restore files s/he
created.
* By a user logged on in OUT.HPSPOOL who specifies the ;LOCAL
keyword. This is not recommended, since non-spoolfiles in the
selected fileset will also be restored to that group.
* By an SM or OP user logged on anywhere who specifies the
GROUP=OUT; ACCOUNT=HPSPOOL option. Again this is not recommended
because it will also restore non-spoolfiles in the selected
fileset to OUT.HPSPOOL.
* If files are restored to OUT.HPSPOOL by a user with SM or OP
capability, the existence of the creating user in the creating
account is not checked unless the CREATOR option is specified
explicitly. This allows spoolfiles to be restored on a print hub for
users which exist only on other systems.
* An account manager may only restore spoolfiles created by users in
his/her account. The ;CREATE=CREATOR option will create the file
creator's user, if necessary.
* If an account manager restores files created by other users in
his/her account, those users must have ND capability at the time of
the restore or the restore will fail.
* If the HPSPOOL account, or any group within it, does not exist, the
;CREATE=GROUP and/or ;CREATE=ACCOUNT options will not create it.
* Assuming that OUT.HPSPOOL exists, an SM or OP user who specifies
CREATE will create the file creator's account and user, if they do
not already exist. The file is still restored to OUT.HPSPOOL, not to
the creator's account.
* Specifying ;CREATOR=<newuser>; GROUP=OUT; ACCOUNT=HPSPOOL changes
only the file's account, not the creator's account.
* Any spoolfile restored to OUT.HPSPOOL which is destined for a device
or class not configured on the target system is put in the PROBLM
state and linked to the queue of its device or class. The queue is
created if necessary. Subsequent files destined for the same device
or class will also be put in the PROBLM state and linked to the same
queue.
SPOOLFILE SECURITY
A modified MPE file system security is enforced on linked spoolfiles
(that is, those with entries in the spoolfile directory) at all times.
Private Spoolfiles
A user or application may choose to mark an output spoolfile as private
(the default is non-private). All input spoolfiles are forced private.
If output spoolfiles contain sensitive information, they should be marked
as private in order to provide the file security which was previously
available to all spoolfiles. Private output spoolfiles differ from
normal output spoolfiles as follows:
* Private spoolfiles are File System Level 2 (privileged) files, and
can therefore be accessed only by processes which call HPFOPEN while
running at Level 2. This corresponds roughly to an MPE CM program
which has been PREPped with PM capability and is running in a group
which has PM capability. In the bullets which follow, we assume that
users are not using such a process to access these files.
* A user may not ;SPSAVE a private file. It is assumed that the
spoolfile data is sensitive enough that a permanent disk copy of it
should not exist (except while printing the file).
* No one can :STORE a private file.
* No one can copy, browse, or otherwise open a private spoolfile as a
disk file. This applies to both input and output spoolfiles.
* No one can alter the number-of-copies attribute. This prevents an
unauthorized user from generating an extra copy of sensitive data for
himself or herself.
* No one except a user with System Manager (SM) capability can alter
the device attribute. This restricts rerouting the output away from
a possibly secured output device.
* The only other control over such a file is to raise or lower its
priority (including DEFERring/UNDEFERring it), or to delete it
completely.
The :SPOOLF ..;ALTER command uses the same ordered set of rules as for
non-private spoolfiles to determine who may access a private spoolfile.
However, the functions available in the command are restricted (with one
exception) to altering the file's priority, deleting it or deferring it.
In particular, :SPOOLF ;ALTER will not allow any user to ;SPSAVE the
file, or change the number of copies.
The exception of the previous paragraph is that the user with SM
capability is able to change the target device. This is a bailout
mechanism if the intended device is unavailable (say, because it is
broken), an appropriate substitute device is available, and the output
cannot wait for the original device to become available once more.
Neither private output spoolfiles nor input spoolfiles may be STOREd or
RESTOREd by any user.
Non-private Spoolfiles
The following ordered set of rules governs access to non-private
spoolfiles:
* The console user or any user with SM capability can access any
spoolfile on the system. A user who has :ASSOCIATEd herself or
himself to a device class can access and control any spoolfile whose
destination device is in that class. Such a user can read, write,
delete, append to, or change the attributes of a spoolfile, using
either NMS commands and intrinsics or standard MPE commands and
intrinsics.
* A user with AM capability has the same rights over any spoolfile
whose creating user is in the same account.
* A creating user has the same rights over any of his/her spoolfiles.
* The last check is standard MPE file security. Again, the access
modes available to a given user determine what that user can do with
the file.
Non-private spoolfiles may be STOREd and RESTOREd by any user who has
read access to them. Write access is required to use the ;PURGE option
of STORE.
DEVICE CLASSES ON 2.1
The Native Mode Spooler (NMS) adheres to the Native Mode Device File
strategy, also released on MPE XL 2.1. Under that strategy, device
classes are now treated solely as collections of logical devices. This
means that operations applied to a device class are applied to all
devices in the class.
In the past, device classes had some identity of their own, independent
of the devices in them. For example, you could OPENQ LP without opening
the queues of any devices in class LP. Worse, STARTSPOOL 6 created a
spooler process which owned Ldev 6, but STARTSPOOL LP merely opened
queues for class LP, creating no spooler process. This became very
confusing at times and, in the final analysis, unsupportable.
For 2.1, commands such as OPENQ LP are now applied to all devices in
class LP. There is no separate class structure to which OPENQ LP is
applied. This is also true of commands such as STARTSPOOL LP (or the 2.1
version, SPOOLER LP;START). These latter commands will attempt to start
spooler processes for each device in class LP.
This behavior affects customers who configure non-existent devices. A
SPOOLER <class>;START, where <class> includes such a device, will create
a spooler process which will be unable to open its device. Because the
process is not fully up and running, you are also unable to SUSPEND it.
If you inadvertently create a spooler process for a nonexistent device,
remove the process with SPOOLER...;STOP;OPENQ. Non-existent devices are
generally used to accumulate spoolfiles destined to be networked to a
print hub. As such, it is only necessary that their queues be opened.
No spooler process is required. For such devices:
* During SYSGEN:
* Do not configure them as initially spooled.
* Define a unique class name for each such device or for all such
devices. Do not include any actual (existing) devices in any of
these classes.
* In the SYSSTART file:
* OPENQ each of these classes. Make sure this is done before any
jobs which direct output to a device in any such class are
streamed.
* Do NOT SPOOLER...; START any of these classes nor any device in
any of these classes.
SPOOLFILE LOG RECORD FORMAT
The formats fo the Native Mode Spooler (NMS) Spoolfile Done log record
(Type 120) for both output and input spoolfiles are shown below. The NMS
records are similar to the corresponding MPE XL Compatibility Mode (CM)
Spoolfile Done log records (Type 108). The differences are:
* Eight bytes have been reserved following each of the User, Account,
Job and File Designator fields for possible future expansion.
* The 15-bit Device File ID (DFID) is now a 31-bit SPOOLID. The I/O bit
is now at the end of the field instead of at the beginning.
* The 16-bit spoolee LDEV number is now an eight-byte ASCII device name
with an additional eight bytes reserved for possible future
expansion.
* Several of the fields have either been moved or expanded to
accommodate 32-bit boundaries.
* The maximum possible number of copies has been raised to 65535.
* The copy number is now the current copy number. This number is
counted upward from 1 and is unique, unlike the CM copy number which
was the Number of Copies Remaining. The latter number could be
repeated if a user increased the number of copies.
The following table shows the NMS Spoolfile Done log record for output
spoolfiles:
NMS Spoolfile Done log record (output)
Word Word
(hex) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (dec)
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0 | Record type (= 120) | 0
+---------------------------------------------------------------+
| Record length (= 62 halfwords) |
+---------------------------------------------------------------+
1 | PIN | 1
+---------------------------------------------------------------+
| Time |
2 | stamp | 2
| |
+-------+-------------------------------------------------------+
3 |Jb type| Job | 3
+-------+ |
| number |
+---------------------------------------------------------------+
4 | | 4
| User |
5 | name | 5
| |
+---------------------------------------------------------------+
6 |///////////////////////////////////////////////////////////////| 6
|////////////////////////// Reserved /////////////////////////|
7 |///////////////////////////////////////////////////////////////| 7
|///////////////////////////////////////////////////////////////|
+---------------------------------------------------------------+
8 | | 8
| Account |
9 | name | 9
| |
+---------------------------------------------------------------+
a |///////////////////////////////////////////////////////////////| 10
|////////////////////////// Reserved /////////////////////////|
b |///////////////////////////////////////////////////////////////| 11
|///////////////////////////////////////////////////////////////|
+---------------------------------------------------------------+
c | | 12
| Job |
d | name | 13
| |
+---------------------------------------------------------------+
NMS Spoolfile Done log record (output) (continued)
Word Word
(hex) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (dec)
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
e |///////////////////////////////////////////////////////////////| 14
|////////////////////////// Reserved /////////////////////////|
f |///////////////////////////////////////////////////////////////| 15
|///////////////////////////////////////////////////////////////|
+---------------------------------------------------------------+
10 | | 16
| File |
11 | name | 17
| |
+---------------------------------------------------------------+
12 |///////////////////////////////////////////////////////////////| 18
|////////////////////////// Reserved /////////////////////////|
13 |///////////////////////////////////////////////////////////////| 19
|///////////////////////////////////////////////////////////////|
+-------+-------------------------------------------------------+
14 |Jb type| Job | 20
+-------+ |
| number |
+---------------------------------------------------------------+
15 | | 21
| Spoolid +---+
| |I/O|
+-----------------------------------------------------------+---+
16 | | 22
| Device |
17 | name | 23
| |
+---------------------------------------------------------------+
18 |///////////////////////////////////////////////////////////////| 24
|////////////////////////// Reserved /////////////////////////|
19 |///////////////////////////////////////////////////////////////| 25
|///////////////////////////////////////////////////////////////|
+---------------------------------------------------------------+
1a | Number of records processed | 26
| (may be > records in file if internal looping or pfail) |
+---------------------------------------------------------------+
1b | Number of sectors | 27
| in spoolfile |
+-------------------------------+-------------------------------+
1c | Device type | Device subtype | 28
+-------------------------------+-------------------------------+
|/////////// Reserved //////////| Output priority |
+-------------------------------+-------------------------------+ 29
1d | Current copy number |
+-------------------------------+---------------+---------------+
| Logical pages/physical page |///Reserved////| File dispostn |
+-------------------------------+---------------+---------------+
1e | Number of | 30
| physical pages |
+---------------------------------------------------------------+
The following table shows the NMS Spoolfile Done log record for input
spoolfiles:
NMS Spoolfile Done log record (input)
Word Word
(hex) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (dec)
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0 | Record type (= 120) | 0
+---------------------------------------------------------------+
| Record length (= 62 halfwords) |
+---------------------------------------------------------------+
1 | PIN | 1
+---------------------------------------------------------------+
| Time |
2 | stamp | 2
| |
+-------+-------------------------------------------------------+
3 |Jb type| Job | 3
+-------+ |
| number |
+---------------------------------------------------------------+
4 | | 4
| User |
5 | name | 5
| |
+---------------------------------------------------------------+
6 |///////////////////////////////////////////////////////////////| 6
|////////////////////////// Reserved /////////////////////////|
7 |///////////////////////////////////////////////////////////////| 7
|///////////////////////////////////////////////////////////////|
+---------------------------------------------------------------+
8 | | 8
| Account |
9 | name | 9
| |
+---------------------------------------------------------------+
a |///////////////////////////////////////////////////////////////| 10
|////////////////////////// Reserved /////////////////////////|
b |///////////////////////////////////////////////////////////////| 11
|///////////////////////////////////////////////////////////////|
+---------------------------------------------------------------+
c | | 12
| Job |
d | name | 13
| |
+---------------------------------------------------------------+
e |///////////////////////////////////////////////////////////////| 14
|////////////////////////// Reserved /////////////////////////|
f |///////////////////////////////////////////////////////////////| 15
|///////////////////////////////////////////////////////////////|
+---------------------------------------------------------------+
NMS Spoolfile Done log record (input) (continued)
Word Word
(hex) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (dec)
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
10 | | 16
| File |
11 | name | 17
| |
+---------------------------------------------------------------+
12 |///////////////////////////////////////////////////////////////| 18
|////////////////////////// Reserved /////////////////////////|
13 |///////////////////////////////////////////////////////////////| 19
|///////////////////////////////////////////////////////////////|
+-------+-------------------------------------------------------+
14 |Jb type| Job | 20
+-------+ |
| number |
+---------------------------------------------------------------+
15 | | 21
| Spoolid +---+
| |I/O|
+-----------------------------------------------------------+---+
16 | | 22
| Device |
17 | name | 23
| |
+---------------------------------------------------------------+
18 |///////////////////////////////////////////////////////////////| 24
|////////////////////////// Reserved /////////////////////////|
19 |///////////////////////////////////////////////////////////////| 25
|///////////////////////////////////////////////////////////////|
+---------------------------------------------------------------+
1a | Number of records | 26
| in spoolfile |
+---------------------------------------------------------------+
1b | Number of sectors | 27
| in spoolfile |
+-------------------------------+-------------------------------+
1c | Device type | Device subtype | 28
+-------------------------------+-------------------------------+
|/////////// Reserved //////////| 0 |
+-------------------------------+-------------------------------+
1d | 0 | 29
+-------------------------------+---------------+---------------+
| 0 |///Reserved////| File dispostn |
+-------------------------------+---------------+---------------+
1e | | 30
| 0 |
+---------------------------------------------------------------+
MPE/iX Communicators