|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: R T
Length: 6923 (0x1b0b)
Types: TextFile
Names: »READ_ME«
└─⟦180fe333a⟧ Bits:30000405 8mm tape, Rational 1000, SW CATALOG, 10_20_0
└─⟦180fe333a⟧ Bits:30000537 8mm tape, Rational 1000, SW Catalog 10_20_0
└─⟦5cb1d1d7f⟧ »DATA«
└─⟦3b1ee7bd8⟧
└─⟦this⟧
This application note should be useful to anyone who is trying to transfer
files to and from an R1000 and an IBM system runnning MVS. This document
will describe the steps one must go through in order to accomplish the
transfer, provide the JCL used on the MVS system to read and write tapes,
and refer to utilities on the R1000 that could be used to read and write
tapes.
R1000 -> MVS
============
In order to transfer a file from the R1000 to the IBM system you must make
an ANSI standard labeled tape with a fixed record format. The programs
that will be referred to will generate a tape with fixed length 80 byte
records and a blocking size of 2000 bytes. The user will have to provide
a formatter to ensure that files will not contain lines greater than
80 characters long and a function for mapping the R1000 filename to a
legal MVS data set member name.
A Make_MVS_Tape program has been written to handle the specific needs of a
particular IBM installation which accepts a string name with wildcards
to define a set of R1000 objects to put onto tape. It then creates a file
called MVSJCL which contains a set of JCL commands to read these files
off of the tape and put them into a partitioned data set. This file
is written onto the tape first, and then the R1000 files are written.
The parts of this program which are tailored to this particular site
are the methods of generating MVS data set member names and a formatter
program which is essentially a pretty printer that is used to ensure that
no lines will contain more than 80 characters and that the resulting
program meets this site's formatting standards. All of the ada units at this
site had prologs which contained the MVS 8 character name, and the mapping
was done by opening the ada unit and parsing the prolog.
In order to make this more general a generic Make_MVS_Tape procedure has been
written. The user provides the name mapping and formatting procedures.
Although the entire JCL to read the tape could be produced by this program
most developers seem to prefer getting the commands to move the files off
of the tape in the MVSJCL file and then editing this into a JCL template
already existing on the MVS system. This implemenation only produces the
commands to read off of the tape, the following is the JCL template. The
parts of this template that must be changed by the user are in lower-case.
//some type of job_id JOB ,'some other type of job_id',CLASS=A,MSGCLASS=H,
// USER=????????,PASSWORD=????????,NOTIFY=????????
//*
//* THIS JCL MOVES DATA FROM A RATIONAL TAPRE TO AN MVS DATASET.
//* IT MUST BE RUN AFTER THE FIRST FILE HAS BEEN TAKEN OFF OF THE TAPE
//* AND THAT FILE MOVED BELOW WHERE INDICATED. FILL IN THE TARGET
//* DSN ON THE SYSUT2 CARD AND THE TAPE ID ON THE SYSUT1 CARD VOL
//* PARAMETER.
//*
//MOVE PROC TNAME=,TFILE=,MNAME=
//COPY EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=TAPE,LABEL=(&TFILE.,AL),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000,DEN=3,OPTCD=Q),
// DSN=&TNAME.,DISP=(OLD,KEEP),
// VOL=(,REATIN,SER=tapeid)
//SYSUT2 DD DSN=dataset name($MNAME.),DISP=OLD
//*
//* THE FOLLOWING STATEMENT INDICATES A DATASET MEMBER WHICH CONTAINS PARAMETERS
//* FOR THIS JOB
//SYSIN DD DSN=dataset name(member name),DISP=SHR
// PEND
//*
//* PUT MVSJCL GENERATED BY RATIONAL HERE
//*
The dataset member which contains a set of parameters looks like this:
GENERATE MAXFLDS=10
RECORD FIELD=(80,1,,1)
The MVSJCL file generated by the Make_MVS_Tape program has entries which look
like this:
// EXEC MOVE,TNAME='UNIT1',TFILE=2,MNAME='8 character member name'
Before submitting this job the MVSJCL file must be read off of the
tape. The JCL to read this file is:
//some type of job_id JOB ,'some other type of job_id',CLASS=A,MSGCLASS=H,
// USER=????????,PASSWORD=????????,NOTIFY=????????
//*
//* THIS JCL READS THE FIRST FILE OFF OF THE RATIONAL TAPE. THIS FILE
//* CONTAINS ALL OF THE FILES ON THE TAPE AND WHAT THEY WILL BE RENAMED
//* TO WHEN COPIED TO AN MVS DATASET. ONCE THIS FILE HAS BEEN READ,
//* COPY IT TO THE END OF THE JCL FILE USED TO READ THE REST OF THE TAPE
//*
//SCRFILE EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=TAPE,LABEL=(1,AL),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000,DEN=3,OPTCD=Q),
// DSN=MVSJCL,DISP=(OLD,KEEP),
// VOL=(,RETAIN,SER=tapeid)
//SYSUT2 DD DSN=dataset name(MVSJCL),DISP=SHR
//* THE FOLLOWING STATEMENT INDICATES A DATASET MEMBER WHICH CONTAINS PARAMETERS
//* FOR THIS JOB. THIS IS THE SAME AS THE PREVIOUS PARAMETER INFO
//SYSIN DD DSN=dataset name(member name),DISP=SHR
Note that the DEN parameter in this JCL is 3, this indicates using low den-
sity (1600 bpi). For some reason we have not had success reading 6250 bpi
(DEN=4) tapes on IBM Model 6 tape drives, although this has not been a prob-
lem with Model 8 tape drives. In the other direction MVS -> R1000 6250 bpi
works ok, I haven't a clue as to what the problem is here.
In summary the steps are:
1. Run the Make_MVS_Tape program to make a tape on the R1000.
2. Read the first file (called "MVSJCL") off of the tape.
3. Copy this file into the JCL template to read the rest of the tape.
4. Submit the result of step 3 in order to read the files into
a dataset.
MVS -> R1000
============
In order to move files from MVS to an R1000 the following JCL must be used
to generate a tape.
*
//some type of job_id JOB ,'some other type of job_id',CLASS=A,MSGCLASS=H,
// USER=????????,PASSWORD=????????,NOTIFY=????????
//UNLOAD PROC TAPEVOL=,TAPEDSN=,SRCDSN=,FILE=
//STEP1 EXEC PGM=IBMPTPCH
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=&SRCDSN.,DISP=SHR
//SYSUT2 DD UNIT=TAPE,LABEL=(&FILE.,AL),
// DCB=(RECFM=FB,LRECL=81,BLKSIZE=1620,DEN=4,OPTCB=Q),
// DSN=&TAPEDSN.,DISP=(NEW,KEEP),
// VOL=(,RETAIN,SER=&TAPEVOL.)
//`* THE FOLLOWING STATEMENT INDICATES A DATASET MEMBER WHICH CONTAINS PARAMETERS
//* FOR THIS JOB.
//SYSIN DD DSN=dataset name(member name),DISP=SHR
// PEND
//*
//* THIS JCL WILL COPY ALL MEMBERS OF A DATASET TO A TAPE TO BE LOADED
//* ONTO A RATIONAL MACHINE. CHANGE PARAMETERS BELOW FOR YOUR
//* PARTICULAR SITUATION.
//*
// EXEC UNLOAD,TAPEVOL='tapeid',TAPEDSN='tape dataset name',
// SRCDSN='source dataset name',FILE=1
The parameter file for this job is:
PRINT TYPORG=PO,MAXLINE=9999,MAXFLDS=99
RECORD FIELD=(80,1,,1)
In the JCL above I have used the character '&' where a funny looking
non-ASCII character that looks like backwards 3 is used on the 370.
Your local IBM expert should be able to help you with that.
When this tape is read onto the R1000 the resulting file can be parsed,
although if you are not sure everything will parse it would be useful
to break it up into multiple files first.