.cs 1 on The SPROSC command copies a file or files from tape to disk. By default, a tape is read from the current position, but the user may instead request a specific file number. SPROSC will also do limited label-checking on standard-label tapes - the user may request that the tape and/or data set name be verified before copying. Any validation failure aborts the command. When multiple files are to be read, only the first one's name can be verified. SPROSC is most convenient for labeled volumes, but it may be used even with unlabeled tapes, provided that the user knows the relevant DCB information (see the O/S JCL Reference Manual for a full description of DCB parameters if you dare). Most DCB information can usually be omitted anyway because defaults are supplied or because the information is irrelevant under CMS. SPROSC has the option of deblocking or reblocking files in the process of copying. Input data from an ASCII source will be translated to EBCDIC by default (the source can be declared "ASCII" either explicitly in the command or implicitly, by the presence of ANSI standard labels). In addition, files from ANSI standard-label tapes are automatically converted from VAX-style VFC to ANSI carriage control if necessary. Normally, SPROSC will overwrite any existing CMS file of the chosen name, but when the tape file is the continuation of a multi-reel dataset (as indicated by a volume SEQUENCE number greater than 1 in the header label), SPROSC will append the file to an existing file of the same name, if any. Optionally, before copying from tape, SPROSC will position the tape to the requested file. A labeled tape is positioned by reading the labels and spacing forward or backward as needed. An unlabeled tape is first rewound and then spaced forward to the correct file. When the command has finished copying, the tape is normally positioned at the next file, that is, after the file mark that ends the trailer labels (on a labeled tape) or the data (on an unlabeled tape). If the disk file-id is omitted from the command, SPROSC will just position the tape to the correct file. If the tape is labeled, SPROSC will display the DSN and leave the tape positioned at the beginning of the header file. Examples: 1. Copy 4 files from a labeled tape, beginning with file 7, keeping the same file names, deblocking if necessary. SPROSC TAP1 = (SL 7 EOF 4 2. Copy file 12 from a non-labeled tape, using file-id "fn ft", assuming OS-style varying-length record format (VBS). SPROSC TAP1 fn ft A4 (NL 12 3. Copy the current file from a non-labeled tape, assuming fixed-length 80-byte records, deblocking if necessary. SPROSC TAP1 fn ft (RECFM F 4. Copy a two-reel file from labeled tapes, starting at file 3 of the first tape. SPROSC TAP1 = (SL 3 SPROSC TAP2 = (SL 1 5. Copy all files with names beginning with the string "IK0" from the whole tape. SPROSC TAP1 = = A1 (SL 1 EOT PREFIX IK0 Problems/bugs should be reported to the author: J.F. Chandler (BITNET) (Internet) .cs 1 off .cs 2 on +---------+-------------------------------------------------------------------+ | | | | | -- -- -- -- -- -- | | SPROSC | TAPN | fn ft | fm | | | ( options | | | | | = = -- -- | -- -- | | | -- -- | | | ? | | | | | | | | | Options: | | | RECFM ccc LRECL nnnnn | | | | | | ( BLKSIze nnn ) ( NL -- -- ) | | | ( BLock nnn ) ( SL | nnn | ) | | | ( FILE -- -- ) | | | ( VOLume volid ) | | | ( VOLID volid ) DSName dsn | | | | | | ( EBCdic ) ( EOF n ) | | | ( ASCii ) ( EOT ) | | | | | | REBlock nnn PREfix sss | | | | +---------+-------------------------------------------------------------------+ .cs 2 off .cs 3 on Parameters: TAPn is the device name for a tape drive (n may be 0-9) preferably already positioned to the correct file (beginning of header label if SL tape, beginning of data if NL tape) ? causes SPROSC to display its version number. fn ft fm gives the file-id of the output CMS copy. The default filemode is "A1", except that files of type VS or VBS are forced to filemode 4. If multiple files are to be read, only the first one receives this file-id, and subsequent files are named from the input data set labels, just as if "=" had been specified. The filemode is retained for subsequent files. = specifies that the output CMS file is to be given a default CMS file-id formed from the input data set label, which must have a non-empty name. This form (=) is valid only for input from labeled tape. The last two qualifiers of a multi-level DSNAME become the filename and filetype of the output file with one exception: when there are at least three qualifiers, and the last one consists of a letter plus a digit (0-6), the digit is taken to be the filemode number of the output file, and the previous two tokens are used for the filename and filetype. If the name has only one qualifier, that is used as the filename, and the filetype is TAPEFILE. For example, a DSN of "WWW.X.Y.Z" would yield a file-id of "Y Z A1", but "WWW.X2.Y2.Z2" would yield "X2 Y2 A2". .cs 3 off .cs 4 on Options: Note: the options RECFM, LRECL, and BLKSIZE are used only in copying files from an unlabeled tape or if tape label processing is bypassed (by positioning to a data file). Whenever SPROSC reads data set labels, the encoded attributes supersede the command options. RECFM gives the record format for the input data set. The default is U. LRECL gives the logical record length for the input data set. This option is ignored for all data sets with varying-length records. The default is 80. BLKSIZE (or BLOCK) gives the block size for the input data set. This option defaults to 32756 and is, therefore, unnecessary for VBS tape data sets. It is also unnecessary for files being deblocked, but it should be specified for any F or FB data set destined for filemode 4 from an unlabeled tape. REBLOCK gives the block size for the output file, assuming it is to be filemode number 4 and converted from VBS or VS to VB. The value must be at least 4 more than the LRECL of the input data set but should be less than 32768. If the value is too small, the copy operation will halt. SL signifies a standard-label tape and optionally gives the input file number. If no number is given, SPROSC will read from the current tape file. If a number is given, SPROSC will space forward or backward as needed to find the requested file before reading data, even if the tape is currently positioned at a data (rather than label) file. NL signifies a non-labeled tape (the default) and optionally gives the input file number. If no number is given, SPROSC will read from the current tape file. If a number is given, SPROSC will rewind and then space forward to find the requested file. If the tape is labeled after all, and the requested file is a label, SPROSC will still read the file as data. FILE gives the file number on tape. By default SPROSC reads the current file. The label status should be specified separately by the "SL" or "NL" option (or by default to NL). VOLUME gives the expected volume name of a SL tape. When the name is specified, it will be checked against the name encoded in the volume and/or data set header labels. SPROSC will halt if they do not match. Note that the volume name is never checked in the header label of the second or subsequent part of a multi-reel data set, since the label encodes the name of the first volume. DSN gives the expected data set name of a SL tape file. This option must be specified last in the command, since all subsequent tokens are concatenated with "." separators to form the DSN. The result must not be more than 44 characters. Only the last 17 characters are used in the comparison, but the entire name will be used if necessary for supplying a default CMS file-id (see above). For example, the specification "DSN AAA1234 INPUT STREAM CNTRL" would yield a DSN of "AAA1234.INPUT.STREAM.CNTRL", but only "NPUT.STREAM.CNTRL" would be significant in the comparison. ASCII specifies that the input tape is encoded in ASCII and that the labels, if any, are ANSI standard. The data will be translated to EBCDIC. This option is the default when reading an ANSI standard-label tape. EBCDIC specifies that the input tape is encoded in EBCDIC (or is binary) and that the labels, if any, are presumably IBM standard. The data will not be translated, even if the labels turn out to be ANSI labels. EOF gives the number of consecutive files to be read from the input tape. This option may be specified only for a labeled tape. If fewer files exist than are requested, this is equivalent to the EOT option. EOT specifies that consecutive files are to be read from the input tape up to the end. This option may be specified only for a labeled tape. .cs 4 off .cs 6 on Error messages: SPROSC071E UNKNOWN OPTION '........' SPROSC083E MISSING FILEID SPROSC095E NO VALUE SUPPLIED FOR '........' OPTION SPROSC098E ILLEGAL PARAMETER '........' SPROSC283E INSUFFICIENT STORAGE FOR BUFFERS SPROSC308E ILLEGAL ........ VALUE '........' SPROSC340E INCONSISTENT OPTION '........' SPROSC770I '........' (.... BLOCKS) COPIED TO '.....' SPROSC771E MISSING TAPE ID SPROSC772I REACHED EOT ON .... SPROSC773E REBLOCK SIZE TOO SMALL SPROSC775E ERROR WHILE OPENING DDNAME '........' - BAD DCB SPROSC779E INVALID TAPE LABELS SPROSC780I TAPE VOLUME: ...... SPROSC781I TAPE ...... DSN: . . . ................. FILE .... SPROSC782I EXECUTING .... ........ ON .... ... SPROSC783I ONE OR MORE TAPE BLOCKS WERE OF IMPROPER LENGTH SPROSC784E MISSING OR EMPTY FILE ON INPUT TAPE SPROSC785E VOLUME LABEL '......' DOES NOT MATCH 'VOLID ......' OPTION SPROSC786E DSNAME '....' DOES NOT MATCH 'DSN .....' OPTION SPROSC787E DSNAME VALUE LONGER THAN 44 BYTES SPROSC788E SPANNED OR INVALID RECORD FOUND IN INPUT FILE SPROSC789E NO DSN/FID AVAILABLE FOR INPUT FILE .cs 6 off