program pie # # # This program accepts parameters from either a command file defined # as a start parm or ineractively from the VDU. # # byte ipf(30),itle(25),fmt(20),fnme(30) byte cmd(80),icl,isav,savfil(30),namdiv(10,25) logical colour,vdu,cmdout # lu=5 call getmcr(cmd,n) if (n.le.3.OR.(n.eq.4.and.cmd(4).eq.' ')) { vdu=.true. print 213 read(lu,(a1))isav if(isav.eq.'Y'.or.isav.eq.'y') { cmdout=.true. print 214 read(lu,(30a1))savfil savfil(30)=0 open(unit=2,name=savfil,status='new',carriagecontrol='list') } else cmdout=.false. } else { vdu=.false. lu=1 cmd(n+1)=0 i=4 if(cmd(4).eq.'@') i=i+1 open(unit=1,name=cmd(i),status='old',readonly) } if (vdu) print 200 read(lu,*)nplts if (nplts.gt.1) print 500 if(cmdout) write(2,*)nplts if (vdu) print 201 read(lu,(30a1))ipf ipf(30)=0 if(cmdout) write(2,(30a1))ipf if (vdu) print 202 read(lu,(a1))icl if(cmdout) write(2,(a1))icl if (icl.eq.Y.or.icl.eq.'y') colour=.true. else colour=.false. do i=1,nplts { if(vdu.and.(nplts.gt.1)) write(lu,('0PARAMTERS FOR PLOT ',i2))i if (vdu) print 203 read(lu,*)xstart,ystart if(cmdout) write(2,*)xstart,ystart if (vdu) print 204 read(lu,*)fact if(cmdout) write(2,*)fact if (vdu) print 205 read(lu,(25a1))itle if(cmdout) write(2,(25a1))itle call cnvtuc(30,itle) if (vdu) print 206 do jnme=1,25 { read(lu,(10a1))(namdiv(n,jnme),n=1,10) if(cmdout) write(2,(10a1))(namdiv(n,jnme),n=1,10) if (namdiv(1,jnme).eq.'/') break call cnvtuc(10,namdiv(1,jnme)) } jnme=jnme-1 if (vdu) print 208 read(lu,(30a1))fnme if(cmdout) write(2,(30a1))fnme fnme(30)=0 if (vdu) print 209 read(lu,(20a1))fmt if(cmdout) write(2,(20a1))fmt if (fmt(1).ne.'(') call stinse('(',1,fmt,19) for (j=20; j.ne.0; j=j-1) { if (fmt(j).ne.' ') { fmt(j+1)=')' break } } if (vdu) print 207 if (vdu) print 210 read(lu,*)bstart if(cmdout) write(2,*)bstart if (vdu) print 211 read(lu,*)binc if(cmdout) write(2,*)binc if (vdu) print 212 read(lu,*)nbars if(cmdout) write(2,*)nbars # if (i.eq.1) ist=0 else ist=i call pie1(ipf,colour,xstart,ystart,fact,itle,ist) if (bstart.eq.0..and.binc.eq.0..and.nbars.eq.0) ist=2 else ist=1 if (i.eq.nplts) ist=abs(ist) else ist=-ist call pie2(fnme,fmt,,namdiv,bstart,binc,nbars,ist) } write(5,(' Pie Plot is in file ',29a1))(ipf(i),i=1,29) stop 200 format('$Enter number of plots (integer) ->') 201 format('$Enter name of output plot file ->') 202 format('$Colour ? (Y/N) ->') 203 format('$Enter coords bottom/left (X,Y) ->') 204 format('$Enter amplification factor ->') 205 format('$Enter pie chart title (30 max) ->') 206 format(' Enter pie segment names - one per line',/_ ,' finish with a slash (/)') 207 format('0If data is already processed answer 0 to',/_ ,' the following three questions') 208 format('$Enter name of input data file ->') 209 format('$Enter read format (F-type) ->') 210 format('$Enter value of first seg (real) ->') 211 format('$Enter segment increment (real) ->') 212 format('$Number of segments (integer) ->') 213 format('$Save answers in a file ?(Y/N) ->') 214 format('$Enter name of save file ->') 500 format('0All plots will be done without any inter-plot delays.') end