#!/bin/sh # External files names dlst=diags.lst dinc=diagnostics.inc ivinc=diagnostics_init_vals.inc # Temporary files dc=diagnostics_char.inc dec=diagnostics_equiv_char.inc dikn=diagnostics_ikn.inc dei=diagnostics_equiv_i.inc dek=diagnostics_equiv_k.inc den=diagnostics_equiv_n.inc ivc=diagnostics_init_vals_cdiag.inc ivt=diagnostics_init_vals_tdiag.inc ivu=diagnostics_init_vals_udiag.inc ivg=diagnostics_init_vals_gdiag.inc ndiags=`wc -l < $dlst` echo Number of diagnostics in \"$dlst\" = $ndiags rm -f $dc $dec $dikn $dei $dek $den $ivc $ivt ln=0 for (( ; 1+ndiags- ++ln ; )); do ln3=`printf "%3i" $ln` line=`nl -s" " $dlst | egrep "^ *$ln " -` line=`echo $line | sed "s/' '/,/g" | sed "s/'//g" | sed 's/[0-9]* [A-Z0-9_]* //'` vname=`echo $line | awk -F ',' '{print $1}'` title=`echo $line | awk -F ',' '{print $3}'` units=`echo $line | awk -F ',' '{print $4}'` grid=`echo $line | awk -F ',' '{print $2}'` echo "$ln3: $vname $title" echo " CHARACTER*8 "C$vname >> $dc echo " EQUIVALENCE ( CDIAG($ln3) , C$vname )" >> $dec echo " INTEGER I$vname , K$vname , N$vname" >> $dikn echo " EQUIVALENCE ( IDIAG($ln3) , I$vname )" >> $dei echo " EQUIVALENCE ( KDIAG($ln3) , K$vname )" >> $dek echo " EQUIVALENCE ( NDIAG($ln3) , N$vname )" >> $den rv=`echo $vname | rev` rv=`printf "%8.8s" $rv | rev` echo " CDIAG($ln3) = '$rv'" >> $ivc echo " TDIAG($ln3) =" >> $ivt echo " .'$title'" >> $ivt echo " UDIAG($ln3) = '$units'" >> $ivu echo " GDIAG($ln3) = '$grid'" >> $ivg done # Build the Fortran header file cat $dc > $dinc echo >> $dinc cat $dec >> $dinc echo >> $dinc cat $dikn >> $dinc echo >> $dinc echo "c Diagnostic Pointers" >> $dinc echo "c -------------------" >> $dinc cat $dei >> $dinc echo >> $dinc echo "c Diagnostic Levels" >> $dinc echo "c -------------------" >> $dinc cat $dek >> $dinc echo >> $dinc echo "c Diagnostic Counters" >> $dinc echo "c -------------------" >> $dinc cat $den >> $dinc rm -f $dc $dec $dikn $dei $dek $den # Build the Fortran init vals file cat $ivc > $ivinc echo >> $ivinc cat $ivt > $ivinc echo >> $ivinc cat $ivu > $ivinc echo >> $ivinc cat $ivg > $ivinc echo >> $ivinc rm -f $ivc $ivt $ivu $ivg