TAPESCAN can be used to read a tape volume and produce a report giving an overview of the contents. Although perhaps of less value running against virtual tapes in the Hercules environment, it also has the ability to copy datasets and recover data past the first end-of-volume indicator. Information on the report produced includes record and byte count, length estimate (again not very useful in our environment), and the display of the first 100 bytes of a specifiable number of records from the beginning of each data block read.
TAPESCAN is located in File #102 of the CBT tape and was written by Will Daland at the University of North Carolina at Chapel Hill. It was modified by Sam Golob in 2000 to handle 64K blocks.
I have extracted the Assembler source from the CBT tape and added JCL to assemble using IFOX00.. I made three modifications to the source so that it would assemble under IFOX00:
The resulting jobstream - tapescan.jcl - is contained in the archive tapescan.tgz [MD5: 15A752D72815F403632FE06492675AFD]. Download the archive and extract the jobstream (WinZip on Windows/?? or tar on Linux). Submit the jobstream to assemble and link the single load module for LISTPDS into SYS2.LINKLIB. If you don't have SYS2.LINKLIB defined, you will need to modify the jobstream to specify a target load library. Note: The load module must reside in an authorized library.
Here is an example jobstream to run TAPESCAN:
This execution of TAPESCAN will copy the fourth and fifth files of a standard labeled seven track 556 BPI even parity tape needing translation and conversion, to the second and third files of a tape which had only one file. The volume header record will not be copied and the hexadecimal output will not be included on the report to SYSPRINT. The first twenty records of the input datasets will be listed. Processing will stop after five I/O errors occur.
//COPYTAPE EXEC PGM=TAPESCAN,PARM=('COPY,NOVOLSER', // 'EOVMOD,SKIPTM10,MAXTM16,LIST20,NOHEX') //SYSPRINT DD SYSOUT=A (MESSAGES) //INPUT DD UNIT=2400-7,DISP=OLD,DCB=(TRTCH=ET,DEN=1, // EROPT=ACC),VOL=SER=TRACK7 //OUTPUT DD UNIT=2400-4,LABEL=2,VOL=SER=OTPTTP
The default parameters are: LIST4,SKIPTM0,MAXEOV1,SKIPEOV0,ERRLIM50.
COPY Create a copy of the input datasets, labels and tape marks requested on output. The OUTPUT DD statement must be included. NOCOUNT may not be specified. By default, this parameter is assumed not to be in effect. EOVMOD Places the input data to be copied after the last dataset on output. The OUTPUT DD statement must be included. This parameter implies COPY. NOCOUNT may not be specified. By default, this parameter is assumed not to be in effect. ERRLIMn The maximum number of I/O errors allowed before processing is terminated is specified by the value of "n". The default is ERRLIM50. LISTn The number of blocks which have one line produced on SYSPRINT is specified by the value of "n". The default is LIST4. MAXEOVn Processing will continue until "n" end of volume indicators have been found. Processing will stop when either MAXTMn or MAXEOVn is exceeded. The default value is MAXEOV1 and if SKIPEOVn is used then MAXEOVn must be one greater than SKIPEOVn. MAXTMn Stop processing after "n" tape marks have been encountered. This will not go past the end of volume indicator. The default is to process to the end of the volume. NOCOUNT To save I/O time the counting feature may be turned off by this parameter. The number of physical blocks, the maximum, average, and minimum block sizes, the length, and the total number of bytes processed will not be reported. This parameter may not be used with COPY or EOVMOD. By default the parameter is assumed not to be in effect. NOHEX Do not produce the hexadecimal equivalent of the first lines of each block printed on SYSPRINT. By default the parameter is assumed to be off. NOLIST Functions the same as LIST0. By default the parameter is assumed not to be in effect. NOSUMMARY Do not produce the summary of datasets for standard labeled tape on SYSPRINT. By default the parameter is assumed not to be in effect. NOVOLSER During a copy operation between two standard label tapes, the volume header label will not be copied. By default the parameter is assumed not to be in effect. SKIPEOVn Processing will start after "n" number of end of volume indicators have been encountered. Insure that MAXEOV is at least one greater than SKIPEOVn. The default is SKIPEOV0. SKIPTMn Start processing after "n" tape marks have been encountered. Processing will not start past the end of volume indicator. When both SKIPTMn and SKIPEOVn are specified, the maximum amount of skipping is done. The default is SKIPTM0. VTOC For a standard label tape, produce only the VTOC report, and not the sample dump of each file.
I hope that you have found my instructions useful. If you have questions that I can answer to help expand upon my explanations and examples shown here, please don't hesitate to send them to me:
Return to Site Home Page
This page was last updated on January 17, 2015 .