Demonstration of v5.0 binary stream file features

Below is an annotated version of the script binary_read_demo.jnl



!
!binary_read_demo.jnl (4/99) *js*
!
 
!Description: Demonstration of v5.0 binary read capabilities
 
!Usage: yes? GO binary_read_demo
 
 
 
!
!Create temporary file consisting of REAL*4 values 0:47
!and create sample grid for this file
!
 
def sym file sDemoPermutedBinaryTest.dat
sp rm -f ($file)
 !-> sp rm -f sDemoPermutedBinaryTest.dat
list/i=1:48/form=stream/file=($file) i-1
 !-> list/i=1:48/form=stream/file=sDemoPermutedBinaryTest.dat i-1
 LISTing to file sDemoPermutedBinaryTest.dat
canc data/all

def axis/x=1:1:1 xax
def axis/y=1:2:1 yax
def axis/z=1:3:1 zax
def axis/t=1:4:1 tax
def grid/x=xax/y=yax/z=zax/t=tax mygrid
 
!
!Now load the file in "normal order." The first variable (num) should
!contain the values 0:23, and the second variable will contain the
!values 24:47
!
 
 
file/format=stream/var=num,num1/grid=mygrid ($file)
 !-> SET DATA/EZ/format=stream/var=num,num1/grid=mygrid sDemoPermutedBinaryTest.dat
list num
             NUM
             X: 1
             DATA SET: ./sDemoPermutedBinaryTest.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:   0.00   1.00
 2   / 2:   2.00   3.00
 3   / 3:   4.00   5.00
 ---- L:2 T:   2
 1   / 1:   6.00   7.00
 2   / 2:   8.00   9.00
 3   / 3:  10.00  11.00
 ---- L:3 T:   3
 1   / 1:  12.00  13.00
 2   / 2:  14.00  15.00
 3   / 3:  16.00  17.00
 ---- L:4 T:   4
 1   / 1:  18.00  19.00
 2   / 2:  20.00  21.00
 3   / 3:  22.00  23.00
list num1
             NUM1
             X: 1
             DATA SET: ./sDemoPermutedBinaryTest.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:  24.00  25.00
 2   / 2:  26.00  27.00
 3   / 3:  28.00  29.00
 ---- L:2 T:   2
 1   / 1:  30.00  31.00
 2   / 2:  32.00  33.00
 3   / 3:  34.00  35.00
 ---- L:3 T:   3
 1   / 1:  36.00  37.00
 2   / 2:  38.00  39.00
 3   / 3:  40.00  41.00
 ---- L:4 T:   4
 1   / 1:  42.00  43.00
 2   / 2:  44.00  45.00
 3   / 3:  46.00  47.00
! !Now the file will be loaded and permuted. In the following example, !the order is tzyx instead of the default of xyzt !
 
file/format=stream/var=num,num1/grid=mygrid/order=tzyx ($file)
 !-> SET DATA/EZ/format=stream/var=num,num1/grid=mygrid/order=tzyx sDemoPermutedBinaryTest.dat
list num
             NUM
             X: 1
             DATA SET: ./sDemoPermutedBinaryTest.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:   0.00  12.00
 2   / 2:   4.00  16.00
 3   / 3:   8.00  20.00
 ---- L:2 T:   2
 1   / 1:   1.00  13.00
 2   / 2:   5.00  17.00
 3   / 3:   9.00  21.00
 ---- L:3 T:   3
 1   / 1:   2.00  14.00
 2   / 2:   6.00  18.00
 3   / 3:  10.00  22.00
 ---- L:4 T:   4
 1   / 1:   3.00  15.00
 2   / 2:   7.00  19.00
 3   / 3:  11.00  23.00
list num1
             NUM1
             X: 1
             DATA SET: ./sDemoPermutedBinaryTest.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:  24.00  36.00
 2   / 2:  28.00  40.00
 3   / 3:  32.00  44.00
 ---- L:2 T:   2
 1   / 1:  25.00  37.00
 2   / 2:  29.00  41.00
 3   / 3:  33.00  45.00
 ---- L:3 T:   3
 1   / 1:  26.00  38.00
 2   / 2:  30.00  42.00
 3   / 3:  34.00  46.00
 ---- L:4 T:   4
 1   / 1:  27.00  39.00
 2   / 2:  31.00  43.00
 3   / 3:  35.00  47.00
! !Variables can also be part of the permutation. The 'v' option !can be used in the order qualifier. In the following example, !the order is vxyzt !
 
file/format=stream/var=num,num1/grid=mygrid/order=vxyzt ($file)
 !-> SET DATA/EZ/format=stream/var=num,num1/grid=mygrid/order=vxyzt sDemoPermutedBinaryTest.dat
list num
             NUM
             X: 1
             DATA SET: ./sDemoPermutedBinaryTest.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:   0.00   2.00
 2   / 2:   4.00   6.00
 3   / 3:   8.00  10.00
 ---- L:2 T:   2
 1   / 1:  12.00  14.00
 2   / 2:  16.00  18.00
 3   / 3:  20.00  22.00
 ---- L:3 T:   3
 1   / 1:  24.00  26.00
 2   / 2:  28.00  30.00
 3   / 3:  32.00  34.00
 ---- L:4 T:   4
 1   / 1:  36.00  38.00
 2   / 2:  40.00  42.00
 3   / 3:  44.00  46.00
list num1
             NUM1
             X: 1
             DATA SET: ./sDemoPermutedBinaryTest.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:   1.00   3.00
 2   / 2:   5.00   7.00
 3   / 3:   9.00  11.00
 ---- L:2 T:   2
 1   / 1:  13.00  15.00
 2   / 2:  17.00  19.00
 3   / 3:  21.00  23.00
 ---- L:3 T:   3
 1   / 1:  25.00  27.00
 2   / 2:  29.00  31.00
 3   / 3:  33.00  35.00
 ---- L:4 T:   4
 1   / 1:  37.00  39.00
 2   / 2:  41.00  43.00
 3   / 3:  45.00  47.00
sp rm -f ($file) !-> sp rm -f sDemoPermutedBinaryTest.dat ! !The following commands are used to determine if your system !is a big-endian or little-endian system. This is used to determine !which binary files to use for upcoming examples
 
def sym isbig ($BYTEORDER%|BIG>TRUE|*>FALSE%)
 !-> def sym isbig TRUE
if ($isbig) then def sym file int.dat else def sym file intSwapped.dat
 !-> if TRUE then def sym file int.dat else def sym file intSwapped.dat
! !Now, read in a list of INTEGER*4 numbers. Note the addition of the !/type=i4 qualifier !
 
file/format=stream/var=num,num1/grid=mygrid/type=i4 ($file)
 !-> SET DATA/EZ/format=stream/var=num,num1/grid=mygrid/type=i4 int.dat
list num
             NUM
             X: 1
             DATA SET: ./int.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:   0.00   1.00
 2   / 2:   2.00   3.00
 3   / 3:   4.00   5.00
 ---- L:2 T:   2
 1   / 1:   6.00   7.00
 2   / 2:   8.00   9.00
 3   / 3:  10.00  11.00
 ---- L:3 T:   3
 1   / 1:  12.00  13.00
 2   / 2:  14.00  15.00
 3   / 3:  16.00  17.00
 ---- L:4 T:   4
 1   / 1:  18.00  19.00
 2   / 2:  20.00  21.00
 3   / 3:  22.00  23.00
list num1
             NUM1
             X: 1
             DATA SET: ./int.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:  24.00  25.00
 2   / 2:  26.00  27.00
 3   / 3:  28.00  29.00
 ---- L:2 T:   2
 1   / 1:  30.00  31.00
 2   / 2:  32.00  33.00
 3   / 3:  34.00  35.00
 ---- L:3 T:   3
 1   / 1:  36.00  37.00
 2   / 2:  38.00  39.00
 3   / 3:  40.00  41.00
 ---- L:4 T:   4
 1   / 1:  42.00  43.00
 2   / 2:  44.00  45.00
 3   / 3:  46.00  47.00
! !Same as before, but with INTEGER*2 (using /type=i2) ! if ($isbig) then def sym file short.dat else def sym file shortSwapped.dat !-> if TRUE then def sym file short.dat else def sym file shortSwapped.dat
file/format=stream/var=num,num1/grid=mygrid/type=i2 ($file)
 !-> SET DATA/EZ/format=stream/var=num,num1/grid=mygrid/type=i2 short.dat
list num
             NUM
             X: 1
             DATA SET: ./short.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:   0.00   1.00
 2   / 2:   2.00   3.00
 3   / 3:   4.00   5.00
 ---- L:2 T:   2
 1   / 1:   6.00   7.00
 2   / 2:   8.00   9.00
 3   / 3:  10.00  11.00
 ---- L:3 T:   3
 1   / 1:  12.00  13.00
 2   / 2:  14.00  15.00
 3   / 3:  16.00  17.00
 ---- L:4 T:   4
 1   / 1:  18.00  19.00
 2   / 2:  20.00  21.00
 3   / 3:  22.00  23.00
list num1
             NUM1
             X: 1
             DATA SET: ./short.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:  24.00  25.00
 2   / 2:  26.00  27.00
 3   / 3:  28.00  29.00
 ---- L:2 T:   2
 1   / 1:  30.00  31.00
 2   / 2:  32.00  33.00
 3   / 3:  34.00  35.00
 ---- L:3 T:   3
 1   / 1:  36.00  37.00
 2   / 2:  38.00  39.00
 3   / 3:  40.00  41.00
 ---- L:4 T:   4
 1   / 1:  42.00  43.00
 2   / 2:  44.00  45.00
 3   / 3:  46.00  47.00
! !Finally, we'll use a file of 24 INTEGER*2 followed by 24 REAL*8 numbers !and read it in using /type=i2,r8 ! if ($isbig) then def sym file mixed.dat else def sym file mixedSwapped.dat !-> if TRUE then def sym file mixed.dat else def sym file mixedSwapped.dat
file/format=stream/var=num,num1/grid=mygrid/type=i2,r8 ($file)
 !-> SET DATA/EZ/format=stream/var=num,num1/grid=mygrid/type=i2,r8 mixed.dat
list num
             NUM
             X: 1
             DATA SET: ./mixed.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:   0.00   1.00
 2   / 2:   2.00   3.00
 3   / 3:   4.00   5.00
 ---- L:2 T:   2
 1   / 1:   6.00   7.00
 2   / 2:   8.00   9.00
 3   / 3:  10.00  11.00
 ---- L:3 T:   3
 1   / 1:  12.00  13.00
 2   / 2:  14.00  15.00
 3   / 3:  16.00  17.00
 ---- L:4 T:   4
 1   / 1:  18.00  19.00
 2   / 2:  20.00  21.00
 3   / 3:  22.00  23.00
list num1
             NUM1
             X: 1
             DATA SET: ./mixed.dat
             1      2    
             1      2
 ---- L:1 T:   1
 1   / 1:  24.00  25.00
 2   / 2:  26.00  27.00
 3   / 3:  28.00  29.00
 ---- L:2 T:   2
 1   / 1:  30.00  31.00
 2   / 2:  32.00  33.00
 3   / 3:  34.00  35.00
 ---- L:3 T:   3
 1   / 1:  36.00  37.00
 2   / 2:  38.00  39.00
 3   / 3:  40.00  41.00
 ---- L:4 T:   4
 1   / 1:  42.00  43.00
 2   / 2:  44.00  45.00
 3   / 3:  46.00  47.00
canc sym file set mode/last verify yes? quit

oar.pmel.contact_ferret@noaa.gov