IDENT GETTASV,FWA
ABS
SST
ENTRY GETTASV
ENTRY RFL=
SYSCOM B1
TITLE GETTASV - GET VSNS FOR TAPE ALTERNATE STORAGE.
*COMMENT GETTASV - GET TAPE ALTERNATE STORAGE VSN(S).
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1993.
GETTASV SPACE 4,10
*** GETTASV - GET TAPE ALTERNATE STORAGE VSN(S).
*
* R. E. DUNBAR. 93/10/11.
SPACE 4,10
*** *GETTASV* IS A UTILITY TO SELECT ONE OR TWO SYSTEM VSNS FOR
* USE AS TAPE ALTERNATE STORAGE (*TAS*) ARCHIVE VOLUMES IN A
* TAPE MANAGEMENT SYSTEM (*TMS*) ENVIRONMENT.
SPACE 4,20
*** COMMAND FORMAT.
*
*
* GETTASV(P1,P2,...,PN)
*
*
* *PN* MAY BE ONE OF THE FOLLOWING -
*
* PARAMETER DESCRIPTION
* --------- -----------
*
* SS=FILE LOCAL FILE NAME OF THE *TFSP* MACHINE-
* READABLE AUDIT FILE. FILE MUST BE IN THE
* FORMAT CREATED BY THE *TFSP* *MREADVS*
* DIRECTIVE. THE DEFAULT LFN IS *MREADVS*.
*
* P=PREFIX TWO-CHARACTER ALPHANUMERIC PREFIX FOR THE
* ARCHIVE VSNS. DEFAULT IS *AA*.
*
* N=VSNS NUMBER OF VOLUMES. THE DEFAULT IS *1*.
*
* N=1 ONE VOLUME IS SELECTED, WITH A VSN
* IN THE RANGE XX0000-XX4095, WHERE
* *XX* IS THE PREFIX SPECIFIED BY THE
* *P* PARAMETER.
*
* N=2 TWO VOLUMES ARE SELECTED, THE FIRST
* VSN IN THE RANGE XX0000-XX4095, AND
* A SECOND IN THE RANGE XX5000-XX9095.
* *XX* IS THE PREFIX SPECIFIED BY THE
* *P* PARAMETER. THE NUMERIC PORTION
* OF THE SECONDARY VSN IS EXACTLY 5000
* HIGHER THAN THAT OF THE PRIMARY VSN.
*
* D=DENSITY DUMP TAPE DENSITY. DEFAULT IS *GE*.
*
* D=HD/PE/GE, SELECT 9-TRACK MAGNETIC TAPE.
* D=CE, SELECT CARTRIDGE TAPE.
* D=AE, SELECT ACS CARTRIDGE TAPE.
*
* F=FORMAT DUMP TAPE FORMAT. DEFAULT IS *I*.
*
* F=I - INTERNAL FORMAT.
* F=LI - LONG BLOCK INTERNAL FORMAT.
*
* T=LFN1 DESTAGE TAPE LFN. THE DEFAULT IS *TAPE*.
* THE LOCAL FILE NAME FOR THE PRIMARY TAPE
* TO RECEIVE THE DESTAGED PERMANENT FILES.
*
* VF=LFN2 VERIFY TAPE LFN. THE DEFAULT IS *PFVER*.
* THE LOCAL FILE NAME FOR THE SECONDARY
* TAPE TO RECEIVE BACKUP COPIES OF THE
* DESTAGED PERMANENT FILES.
*
* C=ALTCMD ALTERNATE COMMAND. DEFAULT IS *SETTASV*.
* THE COMMAND NAME TO BE USED IN AN *EXCST*
* CALL TO PASS THE TAPE DENSITY, FORMAT AND
* SELECTED VSN(S) ON FOR FURTHER PROCESSING.
* *ALTCMD* MUST BE A PROGRAM OR PROCEDURE ON
* THE SYSTEM LIBRARY OR AVAILABLE TO THE JOB
* AS A LOCAL FILE OR IN A GLOBAL LIBRARY. IT
* IS EXECUTED VIA *EXCST* AS FOLLOWS.
*
* ALTCMD(DENSITY,FORMAT,VSN1,,LFN1)
*
* OR
*
* ALTCMD(DENSITY,FORMAT,VSN1,VSN2,LFN1,LFN2)
*
* THE PROGRAM OR PROCEDURE CALLED MUST BE
* ABLE TO ACCEPT SIX POSITIONAL PARAMETERS
* AS SHOWN IN THE ORDER SHOWN.
TITLE DAYFILE MESSAGES.
SPACE 4,20
*** DAYFILE MESSAGES.
*
* * ALTERNATE COMMAND INCORRECT.* - THE ALTERNATE COMMAND
* SPECIFIED WITH THE *C* PARAMETER DOES NOT MEET THE
* REQUIREMENTS FOR A *NOS* COMMAND NAME. IT MUST BE
* SEVEN OR FEWER ALPHANUMERIC CHARACTERS.
*
* * AUDIT FILE IS EMPTY OR MISPOSITIONED.* - END OF
* FILE OR END OF RECORD WAS DETECTED ON THE FIRST READ
* OF THE *TFSP* MACHINE-READABLE AUDIT FILE.
*
* * AUDIT FILE IS WRONG VERSION OR MISPOSITIONED.* - THE AUDIT
* FILE FILE VERSION NUMBER DOES NOT MATCH THE VERSION
* NUMBER *GETTASV* IS PREPARED TO PROCESS.
*
* * GETTASV ABORTED.* - *GETTASV* HAS DETECTED AN ERROR OR
* THE USER HAS INITIATED AN ABORT.
*
* * GETTASV ARGUMENT ERROR.* - AN INCORRECT ARGUMENT WAS
* DETECTED ON THE *GETTASV* COMMAND. THE ARGUMENT WAS
* EITHER TOO LARGE OR NOT AN ACCEPTABLE *NOS* FORMAT.
*
* * GETTASV COMPLETE.* - NORMAL COMPLETION. THE REQUESTED
* VOLUMES HAVE BEEN SELECTED.
*
* * NO PRIMARY OR SECONDARY VSNS AVAILABLE.* - *GETTASV*
* FOUND NEITHER PRIMARY NOR SECONDARY VSNS AVAILABLE
* WITH THE PREFIX SPECIFIED.
*
* * PRIMARY LFN INCORRECT.* - THE PRIMARY DESTAGE TAPE LFN
* SPECIFIED WITH THE *T* PARAMETER DOES NOT MEET THE
* REQUIREMENTS FOR A *NOS* LOCAL FILE NAME. IT MUST
* BE SEVEN OR FEWER ALPHANUMERIC CHARACTERS.
*
* * PRIMARY VSN NOT AVAILABLE.* - *GETTASV* COULD NOT FIND AN
* AVAILABLE PRIMARY VSN WITH THE PREFIX SPECIFIED.
*
* * PRIMARY/SECONDARY VSN SET NOT AVAILABLE.* - *GETTASV* FOUND
* AVAILABLE PRIMARY AND SECONDARY VSNS WITH THE PREFIX
* SPECIFIED, BUT NO MATCHING PAIR.
*
* * SECONDARY LFN INCORRECT.* - THE SECONDARY DESTAGE TAPE LFN
* SPECIFIED WITH THE *VF* PARAMETER DOES NOT MEET THE
* REQUIREMENTS FOR A *NOS* LOCAL FILE NAME. IT MUST
* BE SEVEN OR FEWER ALPHANUMERIC CHARACTERS.
*
* * SECONDARY VSN NOT AVAILABLE.* - *GETTASV* COULD NOT FIND AN
* AVAILABLE SECONDARY VSN WITH THE PREFIX SPECIFIED.
*
* * TAPE DENSITY NOT RECOGNIZED.* - THE VALUE SPECIFIED FOR THE
* *D* PARAMETER DOES NOT MATCH ANY KNOWN TAPE DENSITY.
*
* * TAPE FORMAT NOT RECOGNIZED.* - THE VALUE SPECIFIIED FOR
* THE *F* PARAMETER IS NOT ONE OF THE TAPE FORMATS
* ALLOWED FOR TAPE ALTERNATE STORAGE PURPOSES.
*
* * VSN PREFIX INCORRECT.* - THE VALUE SPECIFIED ON THE *P*
* PARAMETER IS NOT TWO ALPHANUMERIC CHARACTERS.
TITLE COMMON DECKS.
SPACE 4,10
* COMMON DECKS.
*CALL COMCCMD
*CALL COMCMAC
* BUFFER SIZE DEFINITIONS.
OBUFL EQU 1001B OUTPUT FILE BUFFER LENGTH
ABUFL EQU 1001B AUDIT FILE BUFFER LENGTH
ARECL EQU 24 AUDIT FILE RECORD LENGTH
TITLE TABLES.
FWA SPACE 4,10
ORG 110B
FWA EQU * PROGRAM ORIGIN
TITLE COMMAND ARGUMENT VARIABLES.
* COMMAND ARGUMENT VARIABLES.
ARGS SPACE 4,10
ACMD DATA C*SETTASV* ALTERNATE COMMAND PARAMETER
DENS DATA C*GE* DENSITY PARAMETER
ERFL CON 0 ERROR FLAG IF NONZERO
FRMT DATA C*I* TAPE FORMAT PARAMETER
LFN1 DATA C*TAPE* PRIMARY DESTAGE TAPE LFN
LFN2 DATA C*PFVER* SECONDARY DESTAGE TAPE LFN
MAXV VFD 12/0,24/4L4095,24/0 HIGHEST ALLOWABLE PRIMARY VSN
NVSN DATA C*1* NUMBER OF VSNS PARAMETER
PRFX DATA C*AA* PREFIX PARAMETER
TTYP DATA C*MTNT* *TMS* TAPE TYPE
VSEC CON 0 SECONDARY VSN FOUND IF NON-ZERO
TITLE ERROR MESSAGES.
* ERROR MESSAGES.
SPACE 4,10
ERAE DATA C* AUDIT FILE IS EMPTY OR MISPOSITIONED.*
ERAV DATA C* AUDIT FILE IS WRONG VERSION OR MISPOSITIONED.*
ERVE DATA C* NO PRIMARY OR SECONDARY VSNS AVAILABLE.*
ERVF DATA C* SECONDARY LFN INCORRECT.*
ERVM DATA C* PRIMARY/SECONDARY VSN SET NOT AVAILABLE.*
ERVP DATA C* PRIMARY VSN NOT AVAILABLE.*
ERVS DATA C* SECONDARY VSN NOT AVAILABLE.*
TITLE MAIN PROGRAM.
GETTASV SPACE 4,15
** GETTASV - MAIN PROGRAM.
*
* CALLS CAP, PRS, SNM.
*
* MACROS MESSAGE, READ, READC.
GETTASV BSS 0 ENTRY
RJ PRS PRESET
READ SS,R READ FIRST AUDIT RECORD
READC SS,AREC,ARECL
SX5 ERAE * AUDIT FILE IS EMPTY OR MISPOSITIONED.*
NZ X1,ABT IF EOR/EOF/EOI ON FIRST READ
SA1 AREC
MX6 -6
LX1 6
BX6 -X6*X1
SX6 X6-1R2 CHECK FOR CORRECT AUDIT FILE VERSION
ZR X6,GET2 IF CORRECT VERSION
SX5 ERAV * AUDIT FILE IS WRONG VERSION OR MISPOS..*
EQ ABT ABORT JOB
* READ AN AUDIT RECORD.
GET1 READC SS,AREC,ARECL READ AUDIT RECORD
NZ X1,GET6 IF EOR/EOF/EOI
* CHECK FOR A USER NAME ASSOCIATED WITH THIS VSN.
GET2 SA1 AREC
MX0 -12
SA2 A1+1
BX6 -X0*X1
BX2 X0*X2
BX6 X2+X6
SA3 =10H
BX6 X3-X6
NZ X6,GET1 IF ASSIGNED TO A USER
* CHECK FOR AVAILABLE, ON-SITE, CENTER-OWNED SYSTEM VSN.
SA1 AREC+18
SA2 =6LVAILON
BX6 X1-X2
AX6 24
NZ X6,GET1 IF NOT AVAILABLE OR OFF SITE
SX6 X1-3RCEN
NZ X6,GET1 IF NOT CENTER-OWNED TAPE
SA1 AREC+22
LX1 -6
SX6 X1-3RYES
NZ X6,GET1 IF NOT SYSTEM TAPE
* CHECK FOR NON-RESERVED TAPE.
SA2 =1LN
MX0 6
LX1 24
BX2 X1-X2
BX6 X0*X2
NZ X6,GET1 IF TAPE IS RESERVED
* CHECK FOR CORRECT TAPE TYPE (AT, CT, MTNT).
LX1 -18
MX0 -6
BX2 -X0*X1
SA1 A1+1
MX0 18
BX1 X0*X1
BX1 X1+X2
LX1 54
SA2 TTYP
BX6 X1-X2
NZ X6,GET1 IF NOT CORRECT TAPE TYPE
* CHECK THAT *VSN* AND *PRN* MATCH.
SA1 AREC+15
MX0 -6*5
BX6 -X0*X1 UPPER 5 OF *VSN*
SA1 A1+1
MX0 6
BX7 X0*X1 LOWER 1 OF *VSN*
BX1 X1-X7 REMOVE UPPER CHARACTER
BX6 X6+X7 MERGE UPPER 5 AND LOWER 1 OF *VSN*
MX0 6*7
LX6 6*5 LEFT JUSTIFY *VSN*
BX5 X0*X1 ISOLATE *PRN*
LX5 6 LEFT JUSTIFY *PRN*
BX7 X5-X6
NZ X7,GET1 IF *VSN* AND *PRN* DO NOT AGREE
* (X5) = (X6) = VSN.
SA2 PRFX
BX7 X2-X6
AX7 48
NZ X7,GET1 IF PREFIX DOES NOT MATCH
SA2 GETA PATTERN FOR PRIMARY VSN
SB2 6 MUST BE 6 CHARACTERS
RJ CAP CHECK FOR ALLOWED PATTERN
BX5 X6 RESTORE VSN
NZ X1,GET3 IF WRONG PATTERN FOR PRIMARY VSN
SA1 MAXV
LX6 6*6
IX1 X1-X6
NG X1,GET1 IF NUMERIC PORTION EXCEEDS 4095
SB5 GETC POINT TO COMMAND TO BE EXECUTED
SA1 NVSN
ZR X1,GET5 IF ONLY ONE VSN NEEDED
SA1 TVSN
SX7 X1+1 INCREMENT VSN COUNT
SA6 TVSN+X7 SAVE VSN IN TABLE
SA7 A1
MX6 0 SET TABLE TERMINATE
SA6 A6+B1
EQ GET1 PROCESS NEXT AUDIT RECORD
GET3 SA2 GETB PATTERN FOR SECONDARY VSN
SB2 6 MUST BE 6 CHARACTERS
RJ CAP CHECK FOR ALLOWED PATTERN
NZ X1,GET1 IF WRONG PATTERN FOR SECONDARY VSN
SA1 NVSN
SX5 ERVP * PRIMARY VSN NOT AVAILABLE.*
ZR X1,ABT IF PRIMARY VSN NEEDED AND NOT FOUND
LX6 6*6 RIGHT JUSTIFY SECONDARY VSN
SX0 5
LX0 18
IX0 X6-X0 PRIMARY VSN TO LOOK FOR
SA2 MAXV
IX2 X2-X0
NG X2,GET1 IF NUMERIC PORTION EXCEEDS 9095
SA6 VSEC FLAG QUALIFYING SECONDARY VSN FOUND
SA1 TVSN
ZR X1,ABT IF NO ENTRIES IN VSN TABLE
GET4 SA1 A1+B1
ZR X1,GET1 IF NO MORE ENTRIES
BX7 X0-X1
NZ X7,GET4 IF NO MATCH
* (X1) = PRIMARY VSN, (X6) = SECONDARY VSN.
SB2 4*6
LX5 X1,B2 SAVE AND LEFT JUSTIFY PRIMARY VSN
LX1 X6,B2 LEFT JUSTIFY SECONDARY VSN
SB2 1R#
SB5 GETD
RJ SNM SET SECONDARY VSN INTO COMMAND
SA1 LFN2
SB2 1R>
RJ SNM SET SECONDARY LFN INTO COMMAND
* (X5) = PRIMARY VSN.
GET5 SB2 1R+
BX1 X5
RJ SNM SET PRIMARY VSN INTO COMMAND
SA1 LFN1
SB2 1R<
RJ SNM SET PRIMARY LFN INTO COMMAND
SA1 FRMT
SB2 1R&
RJ SNM SET TAPE FORMAT INTO COMMAND
SA1 DENS
SB2 1R/
RJ SNM SET TAPE DENSITY INTO COMMAND
SA1 ACMD
SB2 1R-
RJ SNM SET COMMAND NAME INTO COMMAND
MESSAGE GETE,3,R * GETTASV COMPLETE.*
EXCST B5 EXECUTE CONTROL STATEMENT
ENDRUN
* AUDIT FILE IS EXHAUSTED AND NO SELECTION HAS BEEN MADE.
* DETERMINE WHY AND ABORT WITH APPROPRIATE ERROR MESSAGE.
GET6 SA1 NVSN
SX5 ERVP * PRIMARY VSN NOT AVAILABLE.*
ZR X1,ABT IF NO PRIMARY VSN FOUND
SA1 TVSN
SX5 ERVE * NO PRIMARY OR SECONDARY VSNS AVAILABLE.*
ZR X1,ABT IF NEITHER TYPE OF VSN FOUND
SA1 VSEC
SX5 ERVS * SECONDARY VSN NOT AVAILABLE.*
ZR X1,ABT IF NO SECONDARY VSN FOUND
SX5 ERVM * PRIMARY/SECONDARY VSN SET NOT AVAILABLE*
EQ ABT
GETA VFD 18/442333B,42/0 PRIMARY VSN PATTERN
GETB VFD 18/443333B,42/0 SECONDARY VSN PATTERN
GETC DATA C*-------(////,&&,++++++,,<<<<<<<)*
GETD DATA C*-------(////,&&,++++++,######,<<<<<<<,>>>>>>>)*
GETE DATA C* GETTASV COMPLETE.*
TITLE SUBROUTINES.
ABT SPACE 4,10
** ABT - ABORT PROCESSING.
*
* ENTRY (X5) = ADDRESS OF ERROR MESSAGE.
*
* EXIT ALL FILES RETURNED.
* ERROR MESSAGES ISSUED.
* *GETTASV* ABORTED.
*
* MACROS ABORT, MESSAGE, WRITEC, WRITER.
ABT BSS 0 ENTRY
MESSAGE X5,,R ISSUE ERROR MESSAGE
WRITEC O,X5
* ENTER HERE FROM PRESET IF ERRORS DETECTED.
ABT1 WRITER OUTPUT,R
MESSAGE ABTA,,R * GETTASV ABORTED.*
ABORT ABORT
ABTA DATA C* GETTASV ABORTED.*
CAP SPACE 4,30
** CAP - CHECK FOR ALLOWABLE PATTERNS.
*
* CHECK PARAMETERS FOR ALLOWABLE CHARACTER PATTERNS.
*
* ENTRY (X5) = PARAMETER, LEFT JUSTIFIED ZERO FILLED.
* (X2) = PATTERN, LEFT JUSTIFIED ZERO FILLED. PATTERN
* CONSISTS OF ONE OCTAL DIGIT FOR EACH CHARACTER
* POSITION OF THE PARAMETER. EACH OCTAL DIGIT
* INDICATES THE CHARACTERS THAT ARE VALID FOR
* THAT CHARACTER POSITION, AS FOLLOWS.
*
* 0 - ANY CHARACTER.
* 1 - CHARACTERS A THROUGH Z.
* 2 - DIGITS 0 THROUGH 4.
* 3 - DIGITS 0 THROUGH 9.
* 4 - CHARACTERS A THROUGH Z, DIGITS 0 THROUGH 9.
* 5 - NO CHARACTER IS VALID.
*
* (B2) = MINIMUM NUMBER OF 6-BIT CHARACTERS.
*
* EXIT (X1) = 0 IF PARAMETER MATCHES PATTERN.
* (X1) .NE. 0 IF PARAMETER DOES NOT MATCH PATTERN.
*
* USES X - 1, 2, 4, 5.
* A - 1.
* B - 2, 3, 4.
CAP3 SX1 B2+ CHECK MINIMUM CHARACTER COUNT
CAP SUBR ENTRY/EXIT
CAP1 LX5 6
MX1 -6
BX1 -X1*X5
BX5 X5-X1
ZR X1,CAP3 IF ALL CHARACTERS CHECKED
SB4 X1
LX2 3
SX1 X2 INDEX TO PATTERNS
ZR X1,CAP2 IF NO RESTRICTION ON THIS CHARACTER
BX2 X2-X1
LX1 2 PATTERN INDEX * 4
SB3 X1
LX1 1 PATTERN INDEX * 8
SB3 B3+X1 PATTERN INDEX * 12
SA1 CAPA
MX4 -6
LX1 X1,B3
BX4 -X4*X1
SB3 X4
GT B4,B3,CAPX IF CHARACTER OUT OF RANGE
MX4 -6
LX1 -6
BX4 -X4*X1
SB3 X4
LT B4,B3,CAPX IF CHARACTER OUT OF RANGE
CAP2 ZR B2,CAP1 IF MINIMUM SIZE REACHED
SB2 B2-1
EQ CAP1 CONTINUE WITH NEXT CHARACTER
CAPA VFD 12/2LAZ,12/2L04,12/2L09,12/2LA9,12/2L10
TITLE COMMON DECKS.
SPACE 4,10
* COMMON DECKS.
*CALL COMCCIO
*CALL COMCCPM
*CALL COMCRDC
*CALL COMCRDW
*CALL COMCSNM
*CALL COMCSYS
*CALL COMCWTC
*CALL COMCWTW
TITLE FILE ENVIRONMENT TABLES.
FETS SPACE 4,10
* FETS.
O BSS 0 OUTPUT FILE
OUTPUT FILEB OBUF,OBUFL
SS BSS 0 AUDIT FILE
MREADVS FILEB ABUF,ABUFL
SPACE 4,10
* BUFFERS AND LARGE TABLES.
TVSN CON 0 TVSN TABLE - FIRST WORD IS COUNT
AREC EQU TVSN+4098 AUDIT FILE RECORD BUFFER
ABUF EQU AREC+ARECL AUDIT FILE BUFFER
OBUF EQU ABUF+ABUFL OUTPUT FILE BUFFER
RFL= EQU OBUF+OBUFL SET INITIAL FIELD LENGTH
TITLE PRS - PRESET ROUTINES.
ORG TVSN+1
PRS SPACE 4,20
** PRS - PRESET PROGRAM.
*
* CALLS ARG, CAP.
*
* MACROS MESSAGE.
PRS SUBR ENTRY/EXIT
SB1 1
* CRACK PARAMETERS FROM COMMAND.
SA1 ACTR GET NUMBER OF ARGUMENTS
SB4 X1+
SA4 ARGR GET FIRST ARGUMENT
SB5 TCAT COMMAND ARGUMENT TABLE ADDRESS
RJ ARG PROCESS ARGUMENTS
SX5 PRSA * GETTASV ARGUMENT ERROR.*
RJ IME ISSUE MESSAGE IF ERROR ((X1).NE.0)
* CHECK ALTERNATE COMMAND PARAMETER.
SA5 ACMD
SA2 PRSC
SB2 1 MUST BE AT LEAST 1 CHARACTER
RJ CAP CHECK FOR ALLOWABLE PATTERN
SX5 PRSD * ALTERNATE COMMAND INCORRECT.*
RJ IME ISSUE MESSAGE IF ERROR ((X1).NE.0)
* CHECK PRIMARY LFN PARAMETER.
SA5 LFN1
SA2 PRSC
SB2 1 MUST BE AT LEAST 1 CHARACTER
RJ CAP CHECK FOR ALLOWABLE PATTERN
SX5 PRSI * PRIMARY LFN INCORRECT.*
RJ IME ISSUE MESSAGE IF ERROR ((X1).NE.0)
* CHECK SECONDARY LFN PARAMETER.
SA5 LFN2
SA2 PRSC
SB2 1 MUST BE AT LEAST 1 CHARACTER
RJ CAP CHECK FOR ALLOWABLE PATTERN
SX5 ERVF * SECONDARY LFN INCORRECT.*
RJ IME ISSUE MESSAGE IF ERROR ((X1).NE.0)
* CHECK PREFIX PARAMETER.
SA5 PRFX
SA2 PRSB
SB2 2 PREFIX MUST BE 2 CHARACTERS
RJ CAP CHECK FOR ALLOWABLE PATTERN
SX5 PRSH * VSN PREFIX INCORRECT.*
RJ IME ISSUE MESSAGE IF ERROR ((X1).NE.0)
SA1 PRFX COMBINE PREFIX WITH MAXIMUM DIGIT VALUE
SA2 MAXV
BX6 X1+X2
SA6 A2+
* CHECK DENSITY PARAMETER.
MX0 30
SA1 DENS
SA2 TDEN
PRS1 BX6 X1-X2
SA2 A2+1
BX7 X0*X6
ZR X7,PRS2 IF CORRECT DENSITY
NZ X2,PRS1 IF MORE DENSITIES TO CHECK
SX1 B1+ FORCE ERROR INDICATION
SX5 PRSE * TAPE DENSITY NOT RECOGNIZED.*
RJ IME ISSUE MESSAGE FOR ERROR
PRS2 LX6 30
SA6 TTYP SAVE *TMS* TAPE TYPE
* CHECK TAPE FORMAT PARAMETER.
SA1 FRMT VALIDATE TAPE FORMAT
SA2 TATF
PRS3 BX6 X1-X2
SA2 A2+1
BX7 X0*X6
ZR X7,PRS4 IF CORRECT FORMAT
NZ X2,PRS3 IF MORE FORMATS TO CHECK
SX1 B1+ FORCE ERROR INDICATION
SX5 PRSF * TAPE FORMAT NOT RECOGNIZED.*
RJ IME ISSUE MESSAGE FOR ERROR
* CHECK AND CONVERT NUMBER OF VSNS PARAMETER.
PRS4 SA1 NVSN
SX2 1R1
LX1 6
IX6 X1-X2
SX1 X6-1
SA6 NVSN STORE CONVERTED *NV* PARAMETER
ZR X6,PRS5 IF NV=1
SX5 PRSG * NUMBER OF VOLUMES MUST BE 1 OR 2.*
RJ IME ISSUE MESSAGE IF ERROR ((X1).NE.0)
* SEE IF ANY PARAMETER ERRORS OCCURRED.
PRS5 SA1 ERFL
ZR X1,PRSX IF NO ERRORS
EQ ABT1 ABORT
PRSA DATA C* GETTASV ARGUMENT ERROR.*
PRSB VFD 6/44B,24/55555555B,30/0 PREFIX VALIDATION MASK
PRSC VFD 21/4444444B,9/555B,30/0 COMMAND/LFN VALIDATION MASK
* PRESET ERROR MESSAGES.
PRSD DATA C* ALTERNATE COMMAND INCORRECT.*
PRSE DATA C* TAPE DENSITY NOT RECOGNIZED.*
PRSF DATA C* TAPE FORMAT NOT RECOGNIZED.*
PRSG DATA C* NUMBER OF VOLUMES MUST BE 1 OR 2.*
PRSH DATA C* VSN PREFIX INCORRECT.*
PRSI DATA C* PRIMARY LFN INCORRECT.*
TCAT SPACE 4,10
* COMMAND ARGUMENT TABLE.
TCAT BSS 0 COMMAND ARGUMENT TABLE
SS ARG SS,SS AUDIT FILE NAME
P ARG PRFX,PRFX PREFIX CHARACTERS
N ARG NVSN,NVSN NUMBER OF VSNS
D ARG DENS,DENS TAPE DENSITY
F ARG FRMT,FRMT TAPE FORMAT
T ARG LFN1,LFN1 PRIMARY TAPE LFN
VF ARG LFN2,LFN2 SECONDARY TAPE LFN
C ARG ACMD,ACMD ALTERNATE COMMAND
CON 0 ARGUMENT LIST TERMINATOR
TDEN SPACE 4,15
** TDEN - TABLE OF TAPE DENSITIES.
*
* *TDEN* CONTAINS THE TAPE DENSITIES RECOGNIZED BY *GETTASV*
* AND THE CORRESPONDING *TMS* TAPE TYPES.
*
*T 30/ DEN, 30/ TTYP
*
* DEN THE DISPLAY CODE SYMBOL FOR THE DENSITY.
* TTYP THE DISPLAY CODE SYMBOL FOR THE *TMS* TAPE TYPE.
TDEN BSS 0 TABLE OF TAPE DENSITIES VS DEVICE TYPES
VFD 30/2LLO,30/4LMTNT
VFD 30/2LHI,30/4LMTNT
VFD 30/2LHY,30/4LMTNT
VFD 30/2LHD,30/4LMTNT
VFD 30/2LPE,30/4LMTNT
VFD 30/2LGE,30/4LMTNT
VFD 30/2LCE,30/4LCT
VFD 30/2LAE,30/4LAT
VFD 30/3L200,30/4LMTNT
VFD 30/3L556,30/4LMTNT
VFD 30/3L800,30/4LMTNT
VFD 30/4L1600,30/4LMTNT
VFD 30/4L6250,30/4LMTNT
CON 0
TATF SPACE 4,15
** TATF - TABLE OF ALLOWABLE TAPE FORMATS.
*
* *TATF* CONTAINS THE TAPE FORMATS ALLOWED BY *GETTASV*.
*
*T 30/ FMT, 30/ 0
*
* FMT THE DISPLAY CODE TAPE FORMAT.
TATF BSS 0 TABLE OF ALLOWABLE TAPE FORMATS
VFD 30/1LI,30/0
VFD 30/2LLI,30/0
CON 0
SPACE 4,10
* PRESET SUBROUTINES.
IME SPACE 4,10
** IME - ISSUE MESSAGE IF ERROR.
*
* ENTRY (X1) = ERROR INDICATOR (NONZERO = ERROR).
* (X5) = ADDRESS OF ERROR MESSAGE.
*
*
* EXIT ERROR MESSAGE ISSUED IF (X1) NONZERO.
* ERROR FLAG SET IF (X1) NONZERO.
*
* MACROS MESSAGE, WRITEC.
IME SUBR ENTRY/EXIT
ZR X1,IMEX IF NO ERROR INDICATED
BX6 X1 SET ERROR FLAG
SA6 ERFL
MESSAGE X5,,R ISSUE ERROR MESSAGE
WRITEC O,X5
EQ IMEX RETURN
SPACE 4,10
* PRESET COMMON DECKS.
*CALL COMCARG
SPACE 4,10
* OVERFLOW CHECK.
ERRPL *-OBUF PRESET OVERFLOWS INTO OUTPUT BUFFER
SPACE 4
END