function loop (var) 'c' 'set vpage off' * set up virtual page dimensions (two small plots on top, one larger plot on bottom) _vp.1='0 4.25 6.5 11' _vp.2='4.25 8.5 6.5 11' _vp.3='0 8.5 0 6.5' * check that window is portrait 'q gxinfo' res=result pline=sublin(res,2) xsize=subwrd(pline,4) ysize=subwrd(pline,6) if(xsize>ysize); say 'this script needs to be run in portrait window. exiting...';exit;endif * get file info 'q files' res=result l1=sublin(res,1) f1=subwrd(l1,4) l2=sublin(res,4) f2=subwrd(l2,4) 'q file' qfile=result sizeline=sublin(qfile,5) zsize=subwrd(sizeline,9) nvarline=sublin(qfile,6) nvars=subwrd(nvarline,5) say nvarline * turn on print of statistical output with each display (in script mode, output goes to var "result") 'set stat on' * start loop ivar=1 qplot='' backup=0 while(ivar<=nvars) if(ivar=0);say "cannot backup beyond first plot";ivar=1;endif * get info for variable number ivar nline=6+ivar varline=sublin(qfile,nline) var=subwrd(varline,1) nlev=subwrd(varline,2) len=strlen(varline) dstart=wrdpos(varline,4) desc=substr(varline,dstart,len-dstart+1) if(substr(desc,1,3)='** '); desc=substr(varline,dstart+3,len-dstart-2) endif if(nlev=0);klev=1;else;klev=nlev;endif * normally going to first level for variable, but if backing up bring us back to old variable, we want the last level for that var if(backup=0) ilev=1 else ilev=klev endif while(ilev<=klev & ilev<=zsize & qplot != 'q') say ivar' 'ilev 'c' rc=setup(1) 'set z 'ilev res=result zlev=subwrd(res,4) plev.ilev=0 'set gxout stat' 'd 'var res=result line1=sublin(res,1) if(substr(line1,1,20)='Data Request Warning') say 'Need new descriptor file to display 'var' at level 'zlev ilev=ilev+1 continue endif cline=sublin(res,7) if(substr(cline,1,11) != 'Undef count') say 'ERROR IN SCRIPT LOGIC. SKIP 'var' at level 'zlev ilev=ilev+1 continue endif valid=subwrd(cline,8) if(valid=0) if(backup=1) ilev=ilev-1 continue else say 'no 'var' for lev 'ilev'...skip to 'ilev+1 ilev=ilev+1 if(ilev>klev & nlev !=0 & klev < zsize) say 'not all levels available for var 'var'.' if(ivar!=nvar); say 'move on to next variable';endif endif continue endif endif backup=0 if(nlev>0) levtitle=' at lev='zlev else levtitle='' endif noplot=0 if(noplot=0) 'set gxout shaded' 'd 'var res=result clin1=sublin(res,15) say clin1 'draw title 'var levtitle'\file: 'f1 keeplevs() rc=setup(2) 'set ccols '_cols 'set clevs '_levs 'd 'var'.2' res=result clin2=sublin(res,15) say clin2 'draw title 'var levtitle'\file: 'f2 * 'cbarnv 0.8 0 4.25 7.00 1' * '/climate/save/wx24ds/grads/cbarnskip 2 0.8 0 4.25 7.00 1' 'cbarnskip 2 0.8 0 4.25 7.00 1' rc=setup(3) 'd 'var'-'var'.2' minmax=sublin(result,8) say var' at lev='zlev' 'minmax 'draw title difference\'desc' 'levtitle'\'minmax * 'cbarn' 'cbarnskip 2' else say '**** 'var levtitle' ilev='ilev endif * end of noplot plev.ilev=1 say 'enter 'q' to quit, 'b' to backup one plot, otherwise continue' pull qplot; qplot=subwrd(qplot,1) if (qplot=q) break endif if (qplot=b) while(ilev>0) ilev=ilev-1 if(plev.ilev=1);break;endif endwhile if(ilev=0);break;endif else ilev=ilev+1 endif if(ilev>klev & nlev !=0 & klev < zsize) say 'not all levels available for var 'var'.' endif endwhile if(ilev=0) ivar=ivar-1 backup=1 else ivar=ivar+1 endif endwhile function setup(args) pnum=subwrd(args,1) 'set vpage '_vp.pnum *'set xlint 5' *'set ylint 5' *'set xlopts 1 4 0.18' *'set ylopts 1 4 0.18' 'set grads off' 'q time' res=result _tstamp=subwrd(res,3) return function keeplevs() 'query gxinfo' gxinfo_rec1 = sublin(result,1) grtyp=subwrd(gxinfo_rec1,4) if ( grtyp = 'Shaded' | grtyp = 'GrFill' ) 'query shades' shdinfo = result if (subwrd(shdinfo,1)='None') say 'no shading info. use default' else cnum = subwrd(shdinfo,5) num = 0 _cols = '' _levs = '' while (num