視程データを読み込んで画面に書き出すテストプログラムの例
この例ではICOADSデータが、/work4/data/ICOADS/2.5/ECS_SCS_JSにダウンロードしてあると仮定している。
$ ls /work4/data/ICOADS/2.5/ECS_SCS_JS | head -5; echo; echo; echo; ls /work4/data/ICOADS/2.5/ECS_SCS_JS | tail -7
ICOADS2.5_Download_Info_107587.png
ICOADS2.5_Download_Info_107587.txt
IMMA.MANDA107587.1748.08-1910.08.txt
IMMA.MANDA107587.1910.09-1916.10.txt
IMMA.MANDA107587.1916.11-1923.12.txt
IMMA.MANDA107587.2012.11-2013.08.txt
IMMA.MANDA107587.2013.09-2014.07.txt
IMMA.MANDA107587.2014.08-2015.02.txt
R2.5-imma.pdf
R2.5-imma_short.pdf
get.icoads.pl*
readme_imma.manda107587
$ cd /work1/am/Sato.Manda.Tachibana.FOG/ICOADS.Map
$ ls
archive.sh* read.icoads.imma.sh* set.grid.number.sh*
output.set.grid.number/ readme_imma.manda107587.txt stat.sh*
read.icoads.imma* set.grid.number* unarchive.sh*
read.icoads.imma.f90 set.grid.number.f90
read.icoads.imma.namelist.txt set.grid.number.namelist.txt
$ read.icoads.imma.sh
2014 8 1 6.00 8.10 109.70 -9 98 33.0 29.0 27.8 31.0 89
.....
止めるときは、CTL+C
シェルスクリプト: read.icoads.imma.sh
Fortranプログラムread.icoads.imma.f90が埋め込まれており、自動的にコンパイル、実行を行う。
#!/bin/bash
# Description:
#
# Author: am
#
# Host: aofd165.fish.nagasaki-u.ac.jp
# Directory: /work1/am/Sato.Manda.Tachibana.FOG/ICOADS.Map
#
# Revision history:
# This file is created by /usr/local/mybin/nbscr.sh at 17:44 on 03-15-2015.
# Reference
# R2.5-imma_short.pdf
echo "Shell script, $(basename $0) starts."
echo
exe=$(basename $0 .sh)
indir=/work4/data/ICOADS/2.5/ECS_SCS_JS
prefix=IMMA.MANDA107587
inlist=$(ls $indir/${prefix}*.txt )
#
# Create program source file
#
src=${exe}.f90
cat <<EOF>$src
program $(echo $exe |sed -e "s/\./_/g")
character fname*80
integer lentrm
integer vyr,vmo,vdy,vvi,vvv,vb1
real vhr,vlat,vlon,vat,vwbt,vdpt,vsst
character(len=5000)::strm
namelist /para/fname
read(*,nml=para)
open(10, file=fname, action='read')
print '(A,A)','Input: ',trim(fname)
do
read(10, '(A)', iostat=ios) strm
if(ios<0)exit
print *,trim(strm)
read(strm,*)vyr,vmo,vdy,vhr,vlat,vlon,vvi,vvv,vat,&
& vwbt,vdpt,vsst,vb1
write(*, '(i5,x,i3,x,i3,x,f6.2,x,f7.2,x,f8.2,x,i2,x,i3,x,f6.1,&
x,f6.1,x,f6.1,x,f6.1,x,i3)') &
& vyr,vmo,vdy,vhr,vlat,vlon,vvi,vvv,vat,vwbt,vdpt,vsst,vb1
enddo
end program
function lentrm(str)
character str*(*)
do lentrm=len(str),1,-1
if(str(lentrm:lentrm) .ne. ' ') return
enddo
end function
EOF
#
# Compile the program
#
fort=ifort
opt="-traceback -check"
${fort} ${opt} ${src} -o ${exe}
if [ $? -ne 0 ]; then
echo
echo Compile Error.
exit 1
fi
namelist=${exe}.namelist.txt
#
# Run the program
#
for in in $inlist; do
cat <<EOF>$namelist
¶
fname="$in"
&end
EOF
${exe} < $namelist
done
echo "Done $0"
echo