Hi Folks,
This is for people who are interested in copying tapes, or tape
files. Direct relevance is if you want to strip all the labels from an
SL tape to make an NL tape. Programs referred to, can be found on CBT
Tape File 229 (www.cbttape.org) on the UPDATES page.
Historically, I have had a need to strip tape labels off (a copy of)
an SL tape, to make an NL tape. Recently, I found that both of my tools
for that purpose, the programs COPYMODS (with PARM=STRIP) and COPYSLNL
(derived from the COPYFILE program, originally from File 316), had two
separate problems, and both of them did not work properly. (Trouble!)
Now I have fixed both problems, as I shall explain, and have placed
updated source and load, on CBT Tape Files 229, 316, and 035) on the
Updates page of www.cbttape.org.
The problem with COPYMODS was a bug. When stripping labels from SL
tapes (option STRIP) in COPYMODS, if the tape DATA file contained a
block with length EXACTLY 80 bytes, then the program would not put a
tape mark after that file, on the copied tape. (Bad error, but it
doesn't occur often. Very annoying when it does occur.) This was fixed
in COPYMODS levels 082 and 083.
COPYSLNL, which strips the labels off the copy of a SL tape (by
counting, not by "feel", as COPYMODS does), had an intermittent I/O
error which caused a bad WRITE unpredictably. I fixed that one by
replacing Frank Yates' original "double buffering" doing a WRITE and
then a READ, by the very straightforward READ and WRITE into a single
64K buffer which is part of the program and is not GETMAINed. This is a
more reliable method, which COPYMODS also uses. Double buffering made
more sense in 1975, when that code was written. We have faster hardware
now. Single buffering seems good enough, and seems also to be more
reliable in later z/OS versions.
As an aside, the COPYMODS program, which used to be just for making
multiple copies of NL tapes, has been taken from Level 002 to Level 083
by me, over the years. Any tape copying program can also be used as a
tape mapping program, since it works by reading a block of tape data
into a buffer, and then copying the data out to wherever you say. While
you have the tape data in the buffer, you can do whatever you want with
it, including measure it, or make note of the characteristics of the
data it contains. So tape copying programs and tape measuring programs
can be one and the same. Therefore, I educated the COPYMODS program
through 81 new levels, in 81 stages. Since I had most of the
intermediate levels of the program still lying around, I decided to make
a CBT Tape file out of them, File 847 (Updates page). It's a good thing
to learn from. In this file, I retrofitted the bug fix (mentioned
above) to all levels from Level 050 (when PARM=STRIP was introduced)
thru Level 081 (the level before it was fixed). A load library is
included with all the load modules too. The purpose of doing this, was
to provide an example of a piece of program development, that people
might learn from. Many program developers don't keep all their
intermediate stages, in source code, especially in FREE source code. I
had all of these lying around. They're free code too. So I thought
that maybe they'd benefit somebody.
COPYMODS Level 083 uses 44 separate options (out of a possible 80,
currently), and you might like to see how it was done, keeping all the
options straight and accounted for. Again, I hope this helps somebody.
Anyway, it's all out there.
All the best of everything to all of you.......
Sincerely, Sam
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html