|Date: ||Sun, 16 Jun 1996 02:00:27 -0700|
|Reply-To: ||Karsten Self <kmself@IX.NETCOM.COM>|
|Sender: ||"SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU>|
|From: ||Karsten Self <kmself@IX.NETCOM.COM>|
|Subject: ||Re: Thanks - Reading IBM tapes|
I'm not sure whether you've resoved your IBM (mainframe)-to-Unix issues, but
here are some pointers from someone who's been there, done that, and (mixed
blessing) forgotten much of the pain involved:
1. There is a (cheap) SAS technical report on transporting SAS datasets
between host systems. If you are working with (or can get) SAS transport
datasets, this format, in conjunction with the manual, may make life much
easier for you.
2. IBM MF - Unix transfer is very sensitive to the previously mentioned
binary/ascii file transfer options, as well as things like block size,
blocking factor, tape labeling, and a whole slew of other issues. Get as
full a technical specification of the transfer media write options as you
can, and find out how Unix interprets these and what you need to do to get
the data to your Unix box appropriately.
3. IBM raw data does not generally delimit records with line or character
feeds (the default in the DOS/Unix worlds). As a result, you generally need
to keep track of records via the record length. SAS has a number of infile
record format option specifications (RECFM= ) which are detailed in the SAS
compation for the Unix envrironment. In particular, the S370xxx family of
options refers to mainframe files. In my copy of the Unix companion, these
RECFM options are listed only with the FILE statement, and not with the
INFILE statement options. This is a printing error and was pointed out to
me by SAS technical support. FILE is documented on page 174. Generally,
the formats are:
...V - variable length record
...VB - variable block (a true beast)
...VBS - variable block spanned, aka 'very beastly sadomasochist'
You may also need to mess with the BLKSIZE= option. If you continue to
experience difficulties, try using the FSLIST window to look at the data in
both ASCII and HEX, get as much information on format from your data
supplier, and give SAS tech support a call. They can't tell you what you've
got, but if you know enough about the data, they can help you read it.
4. Finally, you may want to chop off a small piece of the data (1 - 10
records, maybe more) and mess with various options (record length, block
size) until things look like they are being read correctly. You can do this
either with a SAS 'obs=' options, or by creating a subset record in Unix
with the 'dd' command (specify some number of bytes for output. 'head'
won't work because of the lack of record delmiters -- Unix sees the raw data
as one big record). Generally, there is a majik configuration at which
everything simply pops into place, or at least the EBCDIC portions do
(packed/zone/integer binary numbers are another story).
At 03:05 PM 6/14/96 -0700, Ann Fowler wrote:
> To everyone who replied to my posting on reading some IBM
> tapes - a big thank you!
> It appeared that we did everything correct. There just
> seems be some weird stuff in the data. Anyway, we were able
> to persuade the 'tape people' to send us the data on CD.
> The files are too huge to be ftped - 200+ megabytes each!!
> Let's hope I won't have any problems reading the data this
> Once again, thanks.
> Ann F.
Karsten Self / email@example.com
What part of gestalt don't you understand?