SEGYREAD - read an SEG-Y tape segyread > stdout tape= or SEG-Y data stream ... | segyread tape=- > stdout Required parameter: tape= input tape device or seg-y filename (see notes) Optional parameters: buff=1 for buffered device (9-track reel tape drive) =0 possibly useful for 8mm EXABYTE drives verbose=0 silent operation =1 ; echo every 'vblock' traces vblock=50 echo every 'vblock' traces under verbose option hfile=header file to store ebcdic block (as ascii) bfile=binary file to store binary block over=0 quit if bhed format not equal 1, 2, or 3 = 1 ; override and attempt conversion format=bh.format if over=1 try to convert assuming format value conv=1 convert data to native format = 0 ; assume data is in native format ns=bh.hns number of samples (use if bhed ns wrong) trmin=1 first trace to read trmax=INT_MAX last trace to read endian=1 set =0 for little-endian machines(PC's,DEC,etc.) errmax=0 allowable number of consecutive tape IO errors remap=...,... remap key(s) byte=...,... formats to use for header remapping Notes: Traditionally tape=/dev/rmt0. However, in the modern world tape device names are much less uniform. The magic name can often be deduced by "ls /dev". Likely man pages with the names of the tape devices are: "mt", "sd" "st". Also try "man -k scsi", " man mt", etc. Sometimes "mt status" will tell the device name. For a SEG-Y diskfile use tape=filename. Remark: a SEG-Y file is not the same as an su file. A SEG-Y file consists of three parts: an ebcdic header, a binary reel header, and the traces. The traces are (usually) in 32 bit IBM floating point format. An SU file consists only of the trace portion written in the native binary floats. Formats supported: 1: ibm floating point, 2: ibm fixed point, 4 byte, 3: ibm fixed point, 2 byte tape=- read from standard input. Caveat, under Solaris, you will need to use the buff=1 option, as well. Header remap: The value of header word remap is mapped from the values of byte Map a float at location 221 to sample spacing d1: segyread outdata remap=d1 byte=221f Map a long at location 225 to source location sx: segyread outdata remap=sx byte=225l Map a short at location 229 to gain constant igc: segyread outdata remap=igc byte=229s Or all combined: segyread outdata remap=d1,sx,igc byte=221f,225l,229s Segy header words are accessed as Xt where X denotes the byte number starting at 1 in correspondance with the SEGY standard (1975) Known types include: f float (4 bytes) l long int (4 bytes) s short int (2 bytes) b byte (1 bytes) type: sudoc segyread for further information Note: If you have a tape with multiple sequences of ebcdic header, binary header,traces, use the device that invokes the no-rewind option and issue multiple segyread commands (making an appropriate shell script if you want to save all the headers). Consider using >> if you want a single trace file in the end. Similar considerations apply for multiple reels of tapes, but use the standard rewind on end of file. Note: For buff=1 (default) tape is accessed with 'read', for buff=0 tape is accessed with fread. We suggest that you try buff=1 even with EXABYTE tapes. Caveat: may be slow on an 8mm streaming (EXABYTE) tapedrive Warning: segyread or segywrite to 8mm tape is fragile. Allow sufficient time between successive reads and writes. Warning: may return the error message "efclose: fclose failed" intermittently when segyreading/segywriting to 8mm (EXABYTE) tape even if actual segyread/segywrite is successful. However, this error message may be returned if your tape drive has a fixed block size set. Caution: When reading or writing SEG-Y tapes, the tape drive should be set to be able to read variable block length tape files. Credits: SEP: Einar Kjartansson CWP: Jack K. Cohen, Brian Sumner, Chris Liner : John Stockwell (added 8mm tape stuff) conv parameter added by: Tony Kocurko Department of Earth Sciences Memorial University of Newfoundland St. John's, Newfoundland read from stdin via tape=- added by Tony Kocurko bhed format = 2,3 conversion by: Remco Romijn (Applied Geophysics, TU Delft) J.W. de Bruijn (Applied Geophysics, TU Delft) header remap feature added by: Matthias Imhof, Virginia Tech -------------------------- Additional Notes: Brian's subroutine, ibm_to_float, which converts IBM floating point to IEEE floating point is NOT portable and must be altered for non-IEEE machines. See the subroutine notes below. A direct read by dd would suck up the entire tape; hence the dancing around with buffers and files.