SUBROUTINE DPFACT(NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2, 1IANGLU,MAXNPP, 1CLLIMI,CLWIDT, 1ICONT,NUMHPP,NUMVPP,IMANUF, 1XMATN,YMATN,XMITN,YMITN, 1ISQUAR, 1IVGMSW,IHGMSW, 1IMPSW,IMPNR,IMPNC,IMPCO, 1PMXMIN,PMXMAX,PMYMIN,PMYMAX, 1TEMP,TEMP2,TEMP3,XTEMP1,XTEMP2,MAXNXT, 1ALOWFR,ALOWDG, 1IFORSW, 1ANOPL1,ANOPL2,ISEED,IBOOSS,BARHEF,BARWEF, 1ICAPSW, 1IBUGG2,IBUGG3,IBUGCO,IBUGEV,IBUGQ, 1IBUGUG,IBUGU2,IBUGU3,IBUGU4,ISUBRO, 1IFOUND,IERROR) C C PURPOSE--GENERATE A FACTOR PLOT C THAT IS, C FACTOR PLOT Y X1 X2 X3 X4 X5 X6 C PLOTS Y VS X1, Y VS X2, ETC. AS A MULTIPLOT ON C A SINGLE PAGE. C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2899 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--99/10 C ORIGINAL VERSION (AS A SEPARATE SUBROUTINE)--OCTOBER 1999. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES--------------- C INCLUDE 'DPCOPA.INC' C CHARACTER*4 ICASPL CHARACTER*4 ICAPSW CHARACTER*4 ICASEQ CCCCC CHARACTER*4 ICASAN CHARACTER*4 ICONT CHARACTER*4 IAND1 CHARACTER*4 IAND2 CHARACTER*4 IANGLU CHARACTER*4 IFORSW C CHARACTER*4 IBUGG2 CHARACTER*4 IBUGG3 CHARACTER*4 IBUGUG CHARACTER*4 IBUGU2 CHARACTER*4 IBUGU3 CHARACTER*4 IBUGU4 CHARACTER*4 IBUGCO CHARACTER*4 IBUGEV CHARACTER*4 IBUGQ C CHARACTER*4 ISUBRO CHARACTER*4 ISUBN0 CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IEMPTY CHARACTER*4 IERAS2 CHARACTER*4 IFENC2 CHARACTER*4 IPPTB2 CHARACTER*4 ISORS2 CHARACTER*4 ISQUAR CHARACTER*4 IVGMSW CHARACTER*4 IHGMSW CHARACTER*4 IREPCH CHARACTER*4 IMPSW CHARACTER*4 IMPSW3 CHARACTER*4 IFPLFZ CHARACTER*4 IFPLTZ CHARACTER*4 IFPLPZ CHARACTER*4 IFPLLZ CHARACTER*4 IFPLL2 CHARACTER*4 IFPLXZ CHARACTER*4 IFPLYZ CHARACTER*4 IFPLDZ CHARACTER*4 IFPLZT CHARACTER*4 IFPLZ2 CHARACTER*4 IFPLZ3 CHARACTER*4 IFPLZ4 C CHARACTER*4 IFEED9 C CHARACTER*4 IMANUF C CHARACTER*4 ICHAP2(100) CHARACTER*4 ILINP2(100) CHARACTER*4 ISPIS2(100) CHARACTER*4 IBARS2(100) CHARACTER*4 IX1TSV CHARACTER*4 IX2TSV CHARACTER*4 IY1TSV CHARACTER*4 IY2TSV CHARACTER*4 IX1ZSV CHARACTER*4 IX2ZSV CHARACTER*4 IY1ZSV CHARACTER*4 IY2ZSV CHARACTER*4 IY1MNS CHARACTER*4 IY1MXS CHARACTER*4 IY1LJ2 CHARACTER*4 IY1LD2 CHARACTER*4 IY2MNS CHARACTER*4 IY2MXS CHARACTER*4 IX1MNS CHARACTER*4 IX1MXS CHARACTER*4 IX2MNS CHARACTER*4 IX2MXS CHARACTER*4 IX1FSV CHARACTER*4 IX2FSV CHARACTER*4 IY1FSV CHARACTER*4 IY2FSV CHARACTER*4 ILFLAX CHARACTER*4 ILFLAY CHARACTER*4 IFPLLD CHARACTER*4 IFPLDI CHARACTER*4 IX1LT2(MAXCH) CHARACTER*4 IX2LT2(MAXCH) CHARACTER*4 IY1LT2(MAXCH) CHARACTER*4 IY2LT2(MAXCH) CHARACTER*4 ITITSV(MAXCH) CHARACTER*4 IPLOTT CHARACTER*4 ISUBSZ C CHARACTER*80 IFILE5 CHARACTER*12 ISTAT5 CHARACTER*12 IFORM5 CHARACTER*12 IACCE5 CHARACTER*12 IPROT5 CHARACTER*12 ICURS5 CHARACTER*4 IERRF5 CHARACTER*4 IENDF5 CHARACTER*4 IREWI5 INCLUDE 'DPCOF2.INC' C CHARACTER*4 ICT CHARACTER*4 IC2T CHARACTER*4 IHT(5) CHARACTER*4 IH2T(5) CHARACTER*4 ISU2SW(MAXSUB) C C MAXY IS THE MAXIMUM NUMBER OF VARIABLES TO USE IN CREATING THE C FACTOR PLOT CURVE C PARAMETER(MAXY=50) C DIMENSION IVARN1(MAXY) DIMENSION IVARN2(MAXY) DIMENSION ILIS(MAXY) DIMENSION ICOLL(MAXY) C CHARACTER*4 IHRIGH CHARACTER*4 IHRIG2 CHARACTER*4 IHWUSE CHARACTER*4 MESSAG CHARACTER*4 ISTEPN CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 IVARN1 CHARACTER*4 IVARN2 CCCCC CHARACTER*4 IWRITE C DIMENSION TEMP(*) DIMENSION TEMP2(*) DIMENSION TEMP3(*) DIMENSION XTEMP1(*) DIMENSION XTEMP2(*) C C-----COMMON------------------------------------------------------ C C INCLUDE 'DPCOZZ.INC' INCLUDE 'DPCOPC.INC' INCLUDE 'DPCOHK.INC' INCLUDE 'DPCODA.INC' INCLUDE 'DPCOST.INC' C C-----COMMON VARIABLES (GENERAL)---------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT------------------------------------------------- C IFOUND='YES' IERROR='NO' C ISUBN1='DPFACT' ISUBN2=' ' C ICASPL='FACT' IFPLLD='ON' IFPLDI='LINE' C IFLAGV=5 C C ***************************************** C ** TREAT THE FACTOR PLOT CASE ** C ***************************************** C IF(IBUGG2.EQ.'OFF'.AND.ISUBRO.NE.'FACT')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFACT--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)ICASPL,IAND1,IAND2 52 FORMAT('ICASPL,IAND1,IAND2 = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)IBUGG2,IBUGG3,IBUGQ 53 FORMAT('IBUGG2,IBUGG3,IBUGQ = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)NUMARG 54 FORMAT('NUMARG = ',I8) CALL DPWRST('XXX','BUG ') IF(NUMARG.LE.0)GOTO69 DO61I=1,NUMARG WRITE(ICOUT,62)I,IHARG(I),IARGT(I) 62 FORMAT('I,IHARG(I),IARGT(I) = ',I8,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') 61 CONTINUE 69 CONTINUE WRITE(ICOUT,71)IFPLLA 71 FORMAT('IFPLLA = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,72)IFPLTA 72 FORMAT('IFPLTA = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,73)IFPLPT 73 FORMAT('IFPLPT = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,74)IFPLFI 74 FORMAT('IFPLFI = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,75)IFPLFR 75 FORMAT('IFPLFR = ',A4) CALL DPWRST('XXX','BUG ') 90 CONTINUE C C ****************************************************** C ** STEP 1-- ** C ** SHIFT COMMAND LINE ARGMENTS ** C ****************************************************** C ISTEPN='1' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FACT') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(NUMARG.GE.1.AND.IHARG(1).EQ.'PLOT')THEN ISHIFT=1 CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) IF(IERROR.EQ.'YES')GOTO9000 ENDIF ICOM='PLOT' ICOM2=' ' IFOUND='YES' C C ******************************************************* C ** STEP 2-- ** C ** CHECK FOR THE PROPER NUMBER OF INPUT ARGUMENTS. ** C ******************************************************* C ISTEPN='2' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FACT') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C MINN2=2 MINNA=2 MAXNA=100 CALL CHECKA(NUMARG,MINNA,MAXNA,IANS,IWIDTH,ISUBN1,ISUBN2,IERROR) IF(IERROR.EQ.'YES')GOTO9000 C C ***************************************** C ** STEP 11-- ** C ** CHECK TO SEE THE TYPE SUBCASE ** C ** (BASED ON THE QUALIFIER)-- ** C ** 1) UNQUALIFIED (THAT IS, FULL); ** C ** 2) SUBSET/EXCEPT; OR ** C ** 3) FOR. ** C ***************************************** C ISTEPN='11' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FACT') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ICASEQ='FULL' ILOCQ=NUMARG+1 IF(NUMARG.LT.1)GOTO1180 DO1100J=1,NUMARG J1=J IF(IHARG(J).EQ.'SUBS'.AND.IHARG2(J).EQ.'ET ')GOTO1110 IF(IHARG(J).EQ.'EXCE'.AND.IHARG2(J).EQ.'PT ')GOTO1110 IF(IHARG(J).EQ.'FOR '.AND.IHARG2(J).EQ.' ')GOTO1120 1100 CONTINUE GOTO1180 1110 CONTINUE ICASEQ='SUBS' ILOCQ=J1 GOTO1190 1120 CONTINUE ICASEQ='FOR' ILOCQ=J1 GOTO1190 C 1180 CONTINUE GOTO1190 C 1190 CONTINUE IF(IBUGG2.EQ.'OFF'.AND.ISUBRO.NE.'FACT')GOTO1195 WRITE(ICOUT,1191)NUMARG,ILOCQ,ICASEQ 1191 FORMAT('NUMARG,ILOCQ,ICASEQ = ',I8,I8,2X,A4) CALL DPWRST('XXX','BUG ') 1195 CONTINUE C C ************************************************** C ** STEP 12-- ** C ** DETERMINE THE NUMBER OF VARIABLES ** C ** TO BE INCLUDED AS PLOT COMPONENTS ** C ** IF THE TO FEATURE IS USED IN THE ** C ** ARGUMENT LIST, TRANSLATE THE TO TO ** C ** EXPLICIT VARIABLE NAMES ** C ************************************************** C ISTEPN='12' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FACT') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C JMIN=1 JMAX=ILOCQ-1 CALL EXTVAR(IHARG,IHARG2,NUMARG,JMIN,JMAX,MAXY, 1IHNAME,IHNAM2,IUSE,NUMNAM, 1IVARN1,IVARN2,NUMVAR,IBUGG2,ISUBRO,IERROR) IF(IERROR.EQ.'YES')GOTO9000 C C *************************************** C ** STEP 13-- ** C ** CHECK THE VALIDITY OF EACH ** C ** OF THE VARIABLES. ** C ** ALSO CHECK TO ASSURE THAT EACH ** C ** OF THE VARIABLES HAS AT LEAST ** C ** 2 OBSERVATIONS. ** C *************************************** C ISTEPN='13' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FACT') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C MAXCP1=MAXCOL+1 MAXCP2=MAXCOL+2 MAXCP3=MAXCOL+3 MAXCP4=MAXCOL+4 MAXCP5=MAXCOL+5 MAXCP6=MAXCOL+6 C IFLAG=0 IFLAG2=0 DO1300I=1,NUMVAR C IHRIGH=IVARN1(I) IHRIG2=IVARN2(I) IHWUSE='V' MESSAG='YES' CALL CHECKN(IHRIGH,IHRIG2,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) IF(IERROR.EQ.'YES')GOTO9000 C NTEMP=IN(ILOCV) IF(I.EQ.1)THEN NRIGHT=NTEMP ELSE NRIGH2=NTEMP IF(NRIGH2.NE.NRIGHT)IFLAG=1 ENDIF ILIS(I)=ILOCV C IF(NTEMP.GT.MINN2)GOTO1390 C 1309 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1311) 1311 FORMAT('***** ERROR IN DPFACT--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1312) 1312 FORMAT(' THE INPUT NUMBER OF OBSERVATIONS FOR WHICH A') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1321) 1321 FORMAT(' FACTOR PLOT WAS TO HAVE BEEN FORMED') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1326)MINN2 1326 FORMAT(' MUST BE ',I8,' OR LARGER; SUCH WAS NOT THE CASE', 1' HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1327)I,NTEMP 1327 FORMAT(' VARIABLE ',I8,' HAS ',I8,' OBSERVATIONS.') WRITE(ICOUT,1328) 1328 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,1329)(IANS(J),J=1,MIN(IWIDTH,100)) 1329 FORMAT(' ',100A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 1390 CONTINUE C 1300 CONTINUE C C C ****************************************************** C ** STEP 1.4-- ** C ** CHECK THAT VARIABLES HAVE THE SAME NUMBER OF ** C ** ELEMENTS. ** C ****************************************************** C 1400 CONTINUE ISTEPN='1.4' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FACT') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IFLAG.EQ.0)GOTO1490 IF(IFPLPT.EQ.'HIST')GOTO1490 IF(IFPLPT.EQ.'PERC')GOTO1490 IF(IFPLPT.EQ.'RUNS')GOTO1490 IF(IFPLPT.EQ.'SPEC')GOTO1490 IF(IFPLPT.EQ.'LAG ')GOTO1490 IF(IFPLPT.EQ.'AUTO ')GOTO1490 C 1410 CONTINUE WRITE(ICOUT,1411) 1411 FORMAT('***** ERROR IN DPFACT--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1413) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1414) CALL DPWRST('XXX','BUG ') 1413 FORMAT(' THE NUMBER OF OBSERVATIONS FOR EACH OF THE', 1'VARIABLES') 1414 FORMAT(' MUST BE THE SAME; SUCH WAS NOT THE CASE HERE.') DO1417I=1,NUMVAR I2=ILIS(I) WRITE(ICOUT,1416)IVARN1(I2),IVARN2(I2),IN(I2) 1416 FORMAT(' VARIABLE ',A4,A4,' HAS ',I8,' OBSERVATIONS;') CALL DPWRST('XXX','BUG ') 1417 CONTINUE WRITE(ICOUT,1420) 1420 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,1421)(IANS(I),I=1,MIN(IWIDTH,100)) 1421 FORMAT(' ',100A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 1490 CONTINUE C C ************************************************** C ** STEP 1-- ** C ** SAVE INITIAL SETTINGS ** C ************************************************** C ISTEPN='1' IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'FACT') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C PXMN2=PXMIN PXMX2=PXMAX PYMN2=PYMIN PYMX2=PYMAX PWXMN2=PWXMIN PWXMX2=PWXMAX PWYMN2=PWYMIN PWYMX2=PWYMAX IF(IFPLFR.EQ.'DEFA')THEN PXMIN=0.0 PXMAX=100.0 PYMIN=0.0 PYMAX=100.0 ENDIF C IERAS2=IERASW IFENC2=IFENSW IPPTB2=IPPTBI ISORS2=ISORSW C ILFLAX='OFF' ILFLAY='OFF' IF(IY1MIN.EQ.'FIXE'.AND.IY1MAX.EQ.'FIXE')THEN ILFLAY='ON' ENDIF IF(IX1MIN.EQ.'FIXE'.AND.IX2MAX.EQ.'FIXE')THEN ILFLAX='ON' ENDIF C IX1TSV=IX1TSW IX2TSV=IX2TSW IY1TSV=IY1TSW IY2TSV=IY2TSW IX1ZSV=IX1ZSW IX2ZSV=IX2ZSW IY1ZSV=IY1ZSW IY2ZSV=IY2ZSW PX1LD2=PX1LDS PX2LD2=PX2LDS PY1LD2=PY1LDS PY1LA2=PY1LAN IY1LJ2=IY1LJU IY1LD2=IY1LDI GY1MNS=GY1MIN GY1MXS=GY1MAX GY2MNS=GY2MIN GY2MXS=GY2MAX GX1MNS=GX1MIN GX1MXS=GX1MAX GX2MNS=GX2MIN GX2MXS=GX2MAX IY1MNS=IY1MIN IY1MXS=IY1MAX IY2MNS=IY2MIN IY2MXS=IY2MAX IX1MNS=IX1MIN IX1MXS=IX1MAX IX2MNS=IX2MIN IX2MXS=IX2MAX IX1FSV=IX1FSW IX2FSV=IX2FSW IY1FSV=IY1FSW IY2FSV=IY2FSW PX1ZD2=PX1ZDS PX2ZD2=PX2ZDS PY1ZD2=PY1ZDS PY2ZD2=PY2ZDS DO1495I=1,100 ICHAP2(I)=ICHAPA(I) ILINP2(I)=ILINPA(I) ISPIS2(I)=ISPISW(I) IBARS2(I)=ISPISW(I) 1495 CONTINUE C DO1500I=1,MAXCH IX1LT2(I)=IX1LTE(I) IX2LT2(I)=IX2LTE(I) IY1LT2(I)=IY1LTE(I) IY2LT2(I)=IY2LTE(I) 1500 CONTINUE NCX1L2=NCX1LA NCX2L2=NCX2LA NCY1L2=NCY1LA NCY2L2=NCY2LA C IFPLL2=IFPLLA IFPLTZ=IFPLTA IFPLFZ=IFPLFR IFPLPZ=IFPLPT IFPLLZ=IFPLLD IFPLZT=IFPLST IFPLZ2=IFPLS2 IFPLZ3=IFPLS3 IFPLZ4=IFPLS4 IFPLXZ=IFPLXA IFPLYZ=IFPLYA IFPLDZ=IFPLDI IF(IFPLFR.EQ.'USER'.AND.IFPLLA.EQ.'BOX')IFPLLA='ON' IF(IFPLFR.EQ.'CONN')IFPLFR='DEFA' IF(IFPLLA.EQ.'BOX ')THEN IFPLLD='ON' CCCCC IFPLXA='BOTT' CCCCC IFPLYA='LEFT' IF(IFPLDI.EQ.'BLAN')IFPLDI='LINE' ENDIF C IFEED9=IFEEDB C IF(IFPLPT.EQ.'YOUD')THEN IFPLTA='ON' ENDIF C IFEED9=IFEEDB C DO110I=1,MAXCH ITITSV(I)=ITITTE(I) 110 CONTINUE NCTITS=NCTITL PTITDZ=PTITDS C IF(IFPLTA.EQ.'ON')THEN ISHIFT=ILOCQ-1 CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) IF(IERROR.EQ.'YES')GOTO9000 ISHIFT=NUMVAR-1 CALL SHIFTR(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) IF(IERROR.EQ.'YES')GOTO9000 DO1509I=1,NUMVAR-1 IHARG(I)=IVARN1(I) IHARG2(I)=IVARN2(I) 1509 CONTINUE NUMVAR=NUMVAR-1 IF(IFPLPT.EQ.'HIST'.OR.IFPLPT.EQ.'RUNS'.OR.IFPLPT.EQ.'PERC'.OR. 1 IFPLPT.EQ.'AUTO'.OR.IFPLPT.EQ.'SPEC'.OR.IFPLPT.EQ.'LAG ')THEN IF(NUMVAR.LT.1)GOTO9000 ELSE IF(NUMVAR.LT.2)GOTO9000 ENDIF ILOCQ=ILOCQ-1 ENDIF C DO1530I=1,NUMVAR IHRIGH=IVARN1(I) IHRIG2=IVARN2(I) IHWUSE='V' MESSAG='YES' CALL CHECKN(IHRIGH,IHRIG2,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) IF(IERROR.EQ.'YES')GOTO9000 C ICOLL(I)=IVALUE(ILOCV) 1530 CONTINUE C IOUNI5=IST5NU IFILE5=IST5NA ISTAT5=IST5ST IFORM5=IST5FO IACCE5=IST5AC IPROT5=IST5PR ICURS5=IST5CS ISUBN0='SPMA' IERRF5='NO' C IREWI5='ON' CALL DPOPFI(IOUNI5,IFILE5,ISTAT5,IFORM5,IACCE5,IPROT5,ICURS5, 1IREWI5,ISUBN0,IERRF5,IBUGG3,ISUBRO,IERROR) IF(IERRF5.EQ.'YES')IOUNI5=0 C IMPSW3=IMPSW IMPCO2=IMPCO IMPNR2=IMPNR IMPNC2=IMPNC IMPSW='ON' IMPCO=1 C IFPLRV=INT(PFPLRV+0.5) IF(IFPLRV.LT.1)IFPLRV=1 NPLOTS=NUMVAR IFACTV=NPLOTS-IFPLRV IF(IFACTV.LT.1)THEN IFACTV=1 IFPLRV=NPLOTS-1 ENDIF C NPLOTS=IFPLRV*IFACTV C IF(IFPLRV.GT.1)THEN IMPNR=IFPLRV IMPNC=IFACTV ELSEIF(IMPNR*IMPNC.LT.NPLOTS)THEN IMPNC=INT(SQRT(REAL(NPLOTS-1)))+1 IMPNR=1 IF(NPLOTS.GE.11)THEN IMPNR=INT(NPLOTS/IMPNC)+1 ELSEIF(NPLOTS.GE.7)THEN IMPNR=3 ELSEIF(NPLOTS.GE.3)THEN IMPNR=2 ENDIF ENDIF C IROWT=IFPLRV ICOLT=IFACTV IF(IFPLLA.EQ.'BOX')THEN IMPNR=IMPNR+1 IMPNC=IMPNC+1 IROWT=IFPLRV+1 ICOLT=IFACTV+1 ENDIF C C ************************************* C ** STEP 21-- ** C ** GENERATE THE SCATTER PLOTS ** C ************************************* C 2100 CONTINUE ISTEPN='21' IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'DPFACT') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C C C 2-VARIABLE PLOTS C IF(IFPLPT.EQ.'PLOT')THEN ICT='PLOT' IC2T=' ' NCCOMM=0 IPLOTT='FPLO' GOTO5299 ENDIF IF(IFPLPT.EQ.'STAT')THEN ICT=IFPLST IC2T=IFPLS2 NCCOMM=0 IF(IFPLS3.NE.' ')THEN NCCOMM=NCCOMM+1 IHT(NCCOMM)=IFPLS3 IH2T(NCCOMM)=IFPLS4 ENDIF NCCOMM=NCCOMM+1 IHT(NCCOMM)='STAT' IH2T(NCCOMM)='ISTI' NCCOMM=NCCOMM+1 IHT(NCCOMM)='PLOT' IH2T(NCCOMM)=' ' IPLOTT='STAT' GOTO5299 ENDIF IF(IFPLPT.EQ.'BIHI')THEN ICT='RELA' IC2T='TIVE' IHT(1)='BIHI' IH2T(1)='STOG' NCCOMM=1 IPLOTT='BIHI' GOTO5299 ENDIF IF(IFPLPT.EQ.'QQPL')THEN ICT='QUAN' IC2T='TILE' IHT(1)='QUAN' IH2T(1)='TILE' IHT(2)='PLOT' IH2T(2)=' ' NCCOMM=2 IPLOTT='QQFP' GOTO5299 ENDIF IF(IFPLPT.EQ.'BOXC')THEN ICT='BOX ' IC2T=' ' IHT(1)='COX ' IH2T(1)=' ' IHT(2)='LINE' IH2T(2)='ARIT' IHT(3)='PLOT' IH2T(3)=' ' NCCOMM=3 IPLOTT='BOXC' GOTO5299 ENDIF C C UNIVARIATE PLOTS C IF(IFPLPT.EQ.'HIST'.OR.IFPLPT.EQ.'PERC'.OR.IFPLPT.EQ.'RUNS'.OR. 1 IFPLPT.EQ.'SPEC'.OR.IFPLPT.EQ.'LAG '.OR.IFPLPT.EQ.'AUTO'.OR. 1 IFPLPT.EQ.'PROB'.OR.IFPLPT.EQ.'PPCC')THEN IFPLRV=NUMVAR NPLOTS=NUMVAR IFACTV=0 IF(IMPNR*IMPNC.LT.NPLOTS)THEN IMPNC=INT(SQRT(REAL(NPLOTS-1)))+1 IMPNR=1 IF(NPLOTS.GE.11)THEN IMPNR=INT(NPLOTS/IMPNC)+1 ELSEIF(NPLOTS.GE.7)THEN IMPNR=3 ELSEIF(NPLOTS.GE.3)THEN IMPNR=2 ENDIF ENDIF ENDIF IF(IFPLLA.EQ.'BOX')IFPLLA='ON' C IF(IFPLPT.EQ.'HIST')THEN ICT='RELA' IC2T='TIVE' IHT(1)='HIST' IH2T(1)='OGRA' NCCOMM=1 IPLOTT='HIST' GOTO5999 ENDIF IF(IFPLPT.EQ.'RUNS')THEN ICT='RUN ' IC2T=' ' IHT(1)='SEQU' IH2T(1)='ENCE' IHT(1)='PLOT' IH2T(1)=' ' NCCOMM=2 IPLOTT='RUNS' GOTO5999 ENDIF IF(IFPLPT.EQ.'PERC')THEN ICT='PERC' IC2T='CENT' IHT(1)='POIN' IH2T(1)='T ' IHT(2)='PLOT' IH2T(2)=' ' NCCOMM=2 IPPTB2=IPPTBI IPPTBI='UNBI' IPLOTT='PERC' GOTO5999 ENDIF IF(IFPLPT.EQ.'AUTO')THEN ICT='AUTO' IC2T='CORR' IHT(1)='PLOT' IH2T(1)=' ' NCCOMM=1 IPLOTT='AUTO' GOTO5999 ENDIF IF(IFPLPT.EQ.'SPEC')THEN ICT='SPEC' IC2T='TRAL' IHT(1)='PLOT' IH2T(1)=' ' NCCOMM=1 IPLOTT='SPEC' GOTO5999 ENDIF IF(IFPLPT.EQ.'LAG ')THEN ICT='LAG ' IC2T=' ' IHT(1)='PLOT' IH2T(1)=' ' NCCOMM=1 IPLOTT='LAG ' GOTO5999 ENDIF IF(IFPLPT.EQ.'PROB')THEN IF(IFPLP1.EQ.' ')THEN ICT='NORM' IC2T='AL ' IHT(1)='PROB' IH2T(1)='ABIL' IHT(2)='PLOT' IH2T(2)=' ' NCCOMM=2 ELSE ICT=IFPLP1 IC2T=' ' NCCOMM=0 IF(IFPLP2.NE.' ')THEN NCCOMM=NCCOMM+1 IHT(NCCOMM)=IFPLP2 IH2T(NCCOMM)=' ' ENDIF IF(IFPLP3.NE.' ')THEN NCCOMM=NCCOMM+1 IHT(NCCOMM)=IFPLP3 IH2T(NCCOMM)=' ' ENDIF IF(IFPLP4.NE.' ')THEN NCCOMM=NCCOMM+1 IHT(NCCOMM)=IFPLP4 IH2T(NCCOMM)=' ' ENDIF IF(IFPLP5.NE.' ')THEN NCCOMM=NCCOMM+1 IHT(NCCOMM)=IFPLP5 IH2T(NCCOMM)=' ' ENDIF NCCOMM=NCCOMM+1 IHT(NCCOMM)='PROB' IH2T(NCCOMM)='ABIL' NCCOMM=NCCOMM+1 IHT(NCCOMM)='PLOT' IH2T(NCCOMM)=' ' ENDIF IPLOTT='PROB' GOTO5999 ENDIF IF(IFPLPT.EQ.'PPCC')THEN ICT=IFPLC1 IC2T=' ' NCCOMM=0 IF(IFPLC2.NE.' ')THEN NCCOMM=NCCOMM+1 IHT(NCCOMM)=IFPLC2 IH2T(NCCOMM)=' ' ENDIF IF(IFPLC3.NE.' ')THEN NCCOMM=NCCOMM+1 IHT(NCCOMM)=IFPLC3 IH2T(NCCOMM)=' ' ENDIF IF(IFPLC4.NE.' ')THEN NCCOMM=NCCOMM+1 IHT(NCCOMM)=IFPLC4 IH2T(NCCOMM)=' ' ENDIF IF(IFPLC5.NE.' ')THEN NCCOMM=NCCOMM+1 IHT(NCCOMM)=IFPLC5 IH2T(NCCOMM)=' ' ENDIF NCCOMM=NCCOMM+1 IHT(NCCOMM)='PPCC' IH2T(NCCOMM)=' ' NCCOMM=NCCOMM+1 IHT(NCCOMM)='PLOT' IH2T(NCCOMM)=' ' IPLOTT='PPCC' GOTO5999 ENDIF C C ************************************* C ** GENERATE 2-VARIABLE PLOTS ** C ************************************* 5299 CONTINUE C IF(NPLOTS.LT.1)GOTO8000 C ISHIFT=ILOCQ-1 CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) ISHIFT=NCCOMM+2 IF(IFPLTA.EQ.'ON')ISHIFT=ISHIFT+1 CALL SHIFTR(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) ICOM=ICT ICOM2=IC2T IF(NCCOMM.GT.0)THEN DO5301II=1,NCCOMM IHARG(II)=IHT(II) IHARG2(II)=IH2T(II) 5301 CONTINUE ENDIF IHARG(NCCOMM+1)=IVARN1(1) IHARG2(NCCOMM+1)=IVARN2(1) IHARG(NCCOMM+2)=IVARN1(2) IHARG2(NCCOMM+2)=IVARN2(2) IF(IFPLTA.EQ.'ON')THEN IHARG(NCCOMM+3)=IVARN1(NUMVAR+1) IHARG2(NCCOMM+3)=IVARN2(NUMVAR+1) ENDIF NARGT=NUMARG C IPLOT=0 IF(IFPLLA.EQ.'BOX')THEN NPLOTS=NPLOTS+IMPNR+IMPNC-1 ENDIF DO5300IRES=1,IROWT DO5400IFAC=1,ICOLT C IPLOT=IPLOT+1 IXLIST=IFAC IROW=INT(IPLOT/IMPNC)+1 IF(MOD(IPLOT,IMPNC).EQ.0)IROW=IROW-1 ICOL=MOD(IPLOT,IMPNC) IF(ICOL.EQ.0)ICOL=IMPNC C IEMPTY='NO' ITEMP=IFAC IF(IFPLLA.EQ.'BOX')THEN ICOL=ICOL-1 ITEMP=IFAC-1 IF(ITEMP.EQ.0)IEMPTY='YES' IF(IROW.EQ.IMPNR)IEMPTY='YES' ENDIF C IF(IRES.LE.IFPLRV)THEN IHARG(NCCOMM+1)=IVARN1(IRES) IHARG2(NCCOMM+1)=IVARN2(IRES) IDY=IRES ELSE IHARG(NCCOMM+1)=IVARN1(IFPLRV) IHARG2(NCCOMM+1)=IVARN2(IFPLRV) IDY=IFPLRV ENDIF C IX=IFPLRV+ITEMP IDX=ITEMP IF(IDX.LE.0)IDX=1 IF(IX.GT.IFPLRV)THEN IHARG(NCCOMM+2)=IVARN1(IX) IHARG2(NCCOMM+2)=IVARN2(IX) ELSE IHARG(NCCOMM+2)=IVARN1(IFPLRV+1) IHARG2(NCCOMM+2)=IVARN2(IFPLRV+1) ENDIF C IF(IEMPTY.EQ.'YES')THEN DO5304I=1,MAXSUB ISU2SW(I)=ISUBSW(I) ISUBSW(I)='OFF' 5304 CONTINUE ENDIF IOPTN=3 CALL DPSPM4(ICASPL,IOPTN,IDX,IDY, 1 ISUBNU,ISUBSW, 1 ASUBXL,ASUBXU,ASUBYL,ASUBYU, 1 ISUBN9,ISUBSZ, 1 ASBXL2,ASBXU2,ASBYL2,ASBYU2, 1 PFPXSL,PFPXSU,PFPYSL,PFPYSU, 1 IBUGG2,ISUBRO,IERROR) C ICASPL='FACT' CALL DPSPM1(ICASPL,IVARN1,IVARN2,ICOLL, 1 IMPNR,IMPNC,IROW,ICOL,IRES,IX,IPLOT, 1 NPLOTS,NUMVAR, 1 ICHAP2,ILINP2, 1 GY1MNS,GY1MXS,GY2MNS,GY2MXS, 1 GX1MNS,GX1MXS,GX2MNS,GX2MXS, 1 IY1MNS,IY1MXS,IY2MNS,IY2MXS, 1 IX1MNS,IX1MXS,IX2MNS,IX2MXS, 1 IX1TSV,IX2TSV,IY1TSV,IY2TSV, 1 IX1ZSV,IX2ZSV,IY1ZSV,IY2ZSV, 1 PX1LD2,PX2LD2, 1 IY1LJ2,IY1LD2,PY1LD2,PY1LA2, 1 IX1LT2,IX2LT2,IY1LT2,IY2LT2, 1 NCX1L2,NCX2L2,NCY1L2,NCY2L2, 1 PFPXLL,PFPXUL,PFPYLL,PFPYUL,IXLIST, 1 IFPLLA,IFPLLD,IPLOTT,IFPLFR,IFPLXA,IFPLYA, 1 IFPLDI, 1 IFPLTD,PFPLTD,IVNMEX, 1 IBUGG2,ISUBRO) C IF(IEMPTY.EQ.'YES')THEN DO5306I=1,100 ICHAPA(I)='BLAN' ILINPA(I)='BLAN' ISPISW(I)='OFF' IBARSW(I)='OFF' 5306 CONTINUE ENDIF C CALL MAINGR(ANOPL1,ANOPL2,NPLOTV,NPLOTP,NS,ICASPL, 1 MAXNPP,ISEED,IBOOSS, 1 IX1TSV,IX2TSV,IY1TSV,IY2TSV, 1 IX1ZSV,IX2ZSV,IY1ZSV,IY2ZSV, 1 BARHEF,BARWEF, 1 IRHSTG,IHSTCW, 1 ICAPSW,IFORSW, 1 IAND1,IAND2,ICONT,NUMHPP,NUMVPP, 1 TEMP,TEMP2,TEMP3,XTEMP1,XTEMP2,MAXNXT, 1 ISUBRO,IFOUND,IERROR) IF(IEMPTY.EQ.'NO')THEN CALL DPSPM3(ICASPL,IOUNI5, 1 IROW,ICOL, 1 PX2LD2,NPLOTP, 1 IFORSW, 1 IFPX2L,ISPX2P,ISPX2S, 1 IHRIGH,IHRIG2,IHWUSE, 1 ISUBN1,ISUBN2,MESSAG, 1 IBUGG2,ISUBRO,IERROR) ENDIF C ICONT=IDCONT(1) NUMHPP=IDNHPP(1) IMPARG=2 CALL DPGRAP(Y,X,X3D,D,N,NPLOTP,ICASPL,ICONT,NUMHPP, 1 XMATN,YMATN,XMITN,YMITN, 1 ISQUAR, 1 IVGMSW,IHGMSW, 1 IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM, 1 IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH, 1 YPLOT,XPLOT,X2PLOT,TAGPLO, 1 IMPSW,IMPNR,IMPNC,IMPCO, 1 IMPARG, 1 PMXMIN,PMXMAX,PMYMIN,PMYMAX, 1 MAXCOL, 1 DSIZE,DSYMB,DCOLOR,DFILL, 1 ICAPSW, 1 IBUGUG,IBUGU2,IBUGU3,IBUGU4,ISUBRO, 1 IERROR) IF(IERROR.EQ.'NO')IAND1=IAND2 IF(IERROR.EQ.'YES')GOTO5499 C IF(IFPLPT.NE.'PLOT')GOTO5499 IF(IFPLFI.EQ.'NONE')GOTO5499 IF(IEMPTY.EQ.'YES')GOTO5499 C IMPCO=IMPCO-1 IF(IMPCO.LE.1)IERASW='OFF' C CALL DPSPM2(ICASPL,IVARN1,IVARN2,ICOLL,NUMVAR,NPLOTP, 1 IRES,IX,ICHAP2,ILINP2, 1 TEMP,TEMP2,TEMP3,XTEMP1,XTEMP2,MAXNXT, 1 ALOWFR,ALOWDG, 1 IANGLU,MAXNPP,IAND1,IAND2, 1 IFPLFI,IFPLTA, 1 XMATN,YMATN,XMITN,YMITN, 1 ISQUAR, 1 IVGMSW,IHGMSW, 1 IMPSW,IMPNR,IMPNC,IMPCO, 1 IREPCH, 1 PMXMIN,PMXMAX,PMYMIN,PMYMAX, 1 IBUGG2,IBUGG3,IBUGCO,IBUGEV,IBUGQ, 1 IBUGUG,IBUGU2,IBUGU3,IBUGU4, 1 ISUBRO,IFOUND,IERROR) IF(IERROR.EQ.'YES')GOTO5499 5499 CONTINUE IERROR='NO' ISHIFT=NARGT-NUMARG IF(ISHIFT.GT.0)THEN CALL SHIFTR(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) ELSEIF(ISHIFT.LT.0)THEN ISHIFT=-ISHIFT CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) ENDIF ICOM=ICT ICOM2=IC2T IF(NCCOMM.GT.0)THEN DO5401II=1,NCCOMM IHARG(II)=IHT(II) IHARG2(II)=IH2T(II) 5401 CONTINUE ENDIF IHARG(NCCOMM+1)=IVARN1(1) IHARG2(NCCOMM+1)=IVARN2(1) IHARG(NCCOMM+2)=IVARN1(1) IHARG2(NCCOMM+2)=IVARN2(1) IF(IFPLTA.EQ.'ON')THEN IHARG(NCCOMM+3)=IVARN1(NUMVAR+1) IHARG2(NCCOMM+3)=IVARN2(NUMVAR+1) ENDIF C 5490 CONTINUE PX1LDS=PX1LD2 GX1MIN=GX1MNS GX1MAX=GX1MXS GX2MIN=GX2MNS GX2MAX=GX2MXS GY1MIN=GY1MNS GY1MAX=GY1MXS GY2MIN=GY2MNS GY2MAX=GY2MXS IX1MIN=IX1MNS IX1MAX=IX1MXS IX2MIN=IX2MNS IX2MAX=IX2MXS IY1MIN=IY1MNS IY1MAX=IY1MXS IY2MIN=IY2MNS IY2MAX=IY2MXS PX1ZDS=PX1ZD2 PX2ZDS=PX2ZD2 PY1ZDS=PY1ZD2 PY2ZDS=PY2ZD2 IF(IEMPTY.EQ.'YES')THEN DO5407I=1,MAXSUB ISUBSW(I)=ISU2SW(I) 5407 CONTINUE ENDIF DO5408I=1,100 ICHAPA(I)=ICHAP2(I) ILINPA(I)=ILINP2(I) ISPISW(I)=ISPIS2(I) IBARSW(I)=IBARS2(I) 5408 CONTINUE IF(IERROR.EQ.'YES')GOTO5400 C 5400 CONTINUE 5300 CONTINUE GOTO8000 C C ************************************* C ** GENERATE 1-VARIABLE PLOTS ** C ************************************* 5999 CONTINUE C IF(NPLOTS.LT.1)GOTO8000 C ISHIFT=ILOCQ-1 CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) ISHIFT=NCCOMM+1 CALL SHIFTR(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) ICOM=ICT ICOM2=IC2T DO6001II=1,NCCOMM IHARG(II)=IHT(II) IHARG2(II)=IH2T(II) 6001 CONTINUE IHARG(NCCOMM+1)=IVARN1(1) IHARG2(NCCOMM+1)=IVARN2(1) NARGT=NUMARG C IPLOT=0 DO6100IRES=1,IFPLRV C IHARG(NCCOMM+1)=IVARN1(IRES) IHARG2(NCCOMM+1)=IVARN2(IRES) IPLOT=IPLOT+1 C IX=0 IXLIST=1 IROW=INT(IPLOT/IMPNC)+1 IF(MOD(IPLOT,IMPNC).EQ.0)IROW=IROW-1 ICOL=MOD(IPLOT,IMPNC) IF(ICOL.EQ.0)ICOL=IMPNC C IEMPTY='NO' IF(IFPLLA.EQ.'BOX')THEN ICOL=ICOL-1 IF(ICOL.EQ.0)IEMPTY='YES' IF(IROW.EQ.IMPNR)IEMPTY='YES' ENDIF C IF(IEMPTY.EQ.'YES')THEN DO6104I=1,MAXSUB ISU2SW(I)=ISUBSW(I) ISUBSW(I)='OFF' 6104 CONTINUE ENDIF IOPTN=3 IDY=IRES IDX=1 CALL DPSPM4(ICASPL,IOPTN,IDX,IDY, 1 ISUBNU,ISUBSW, 1 ASUBXL,ASUBXU,ASUBYL,ASUBYU, 1 ISUBN9,ISUBSZ, 1 ASBXL2,ASBXU2,ASBYL2,ASBYU2, 1 PFPXSL,PFPXSU,PFPYSL,PFPYSU, 1 IBUGG2,ISUBRO,IERROR) C ICASPL='FACT' CALL DPSPM1(ICASPL,IVARN1,IVARN2,ICOLL, 1 IMPNR,IMPNC,IROW,ICOL,IRES,IRES,IPLOT, 1 NPLOTS,NUMVAR, 1 ICHAP2,ILINP2, 1 GY1MNS,GY1MXS,GY2MNS,GY2MXS, 1 GX1MNS,GX1MXS,GX2MNS,GX2MXS, 1 IY1MNS,IY1MXS,IY2MNS,IY2MXS, 1 IX1MNS,IX1MXS,IX2MNS,IX2MXS, 1 IX1TSV,IX2TSV,IY1TSV,IY2TSV, 1 IX1ZSV,IX2ZSV,IY1ZSV,IY2ZSV, 1 PX1LD2,PX2LD2, 1 IY1LJ2,IY1LD2,PY1LD2,PY1LA2, 1 IX1LT2,IX2LT2,IY1LT2,IY2LT2, 1 NCX1L2,NCX2L2,NCY1L2,NCY2L2, 1 PFPXLL,PFPXUL,PFPYLL,PFPYUL,IXLIST, 1 IFPLLA,IFPLLD,IPLOTT,IFPLFR,IFPLXA,IFPLYA, 1 IFPLDI, 1 IFPLTD,PFPLTD,IVNMEX, 1 IBUGG2,ISUBRO) C IF(IEMPTY.EQ.'YES')THEN DO6106I=1,100 ICHAPA(I)='BLAN' ILINPA(I)='BLAN' ISPISW(I)='OFF' IBARSW(I)='OFF' 6106 CONTINUE ENDIF C CALL MAINGR(ANOPL1,ANOPL2,NPLOTV,NPLOTP,NS,ICASPL, 1 MAXNPP,ISEED,IBOOSS, 1 IX1TSV,IX2TSV,IY1TSV,IY2TSV, 1 IX1ZSV,IX2ZSV,IY1ZSV,IY2ZSV, 1 BARHEF,BARWEF, 1 IRHSTG,IHSTCW, 1 ICAPSW,IFORSW, 1 IAND1,IAND2,ICONT,NUMHPP,NUMVPP, 1 TEMP,TEMP2,TEMP3,XTEMP1,XTEMP2,MAXNXT, 1 ISUBRO,IFOUND,IERROR) IF(IEMPTY.EQ.'NO')THEN CALL DPSPM3(ICASPL,IOUNI5, 1 IROW,ICOL, 1 PX2LD2,NPLOTP, 1 IFORSW, 1 IFPX2L,ISPX2P,ISPX2S, 1 IHRIGH,IHRIG2,IHWUSE, 1 ISUBN1,ISUBN2,MESSAG, 1 IBUGG2,ISUBRO,IERROR) ENDIF C ISHIFT=NARGT-NUMARG IF(ISHIFT.GT.0)THEN CALL SHIFTR(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) ELSEIF(ISHIFT.LT.0)THEN ISHIFT=-ISHIFT CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG, 1 IBUGG2,IERROR) ENDIF ICOM=ICT ICOM2=IC2T DO6101II=1,NCCOMM IHARG(II)=IHT(II) IHARG2(II)=IH2T(II) 6101 CONTINUE IHARG(NCCOMM+1)=IVARN1(1) IHARG2(NCCOMM+1)=IVARN2(1) C C ************************************************** C ** STEP 25-- ** C ** PLOT THE CURRENT PLOT ** C ************************************************** 6190 CONTINUE ICONT=IDCONT(1) NUMHPP=IDNHPP(1) IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'FACT')THEN WRITE(ICOUT,6197)IMANUF,NUMDEV,IDMANU(1) 6197 FORMAT('IMANUF,NUMDEV,IDMANU(1) = ',A4,I8,2X,A4) CALL DPWRST('XXX','BUG ') ENDIF IMPARG=2 CALL DPGRAP(Y,X,X3D,D,N,NPLOTP,ICASPL,ICONT,NUMHPP, 1 XMATN,YMATN,XMITN,YMITN, 1 ISQUAR, 1 IVGMSW,IHGMSW, 1 IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM, 1 IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH, 1 YPLOT,XPLOT,X2PLOT,TAGPLO, 1 IMPSW,IMPNR,IMPNC,IMPCO, 1 IMPARG, 1 PMXMIN,PMXMAX,PMYMIN,PMYMAX, 1 MAXCOL, 1 DSIZE,DSYMB,DCOLOR,DFILL, 1 ICAPSW, 1 IBUGUG,IBUGU2,IBUGU3,IBUGU4,ISUBRO, 1 IERROR) IF(IERROR.EQ.'NO')IAND1=IAND2 PX1LDS=PX1LD2 PX1ZDS=PX1ZD2 PX2ZDS=PX2ZD2 PY1ZDS=PY1ZD2 PY2ZDS=PY2ZD2 GX1MIN=GX1MNS GX1MAX=GX1MXS GX2MIN=GX2MNS GX2MAX=GX2MXS GY1MIN=GY1MNS GY1MAX=GY1MXS GY2MIN=GY2MNS GY2MAX=GY2MXS IX1MIN=IX1MNS IX1MAX=IX1MXS IX2MIN=IX2MNS IX2MAX=IX2MXS IY1MIN=IY1MNS IY1MAX=IY1MXS IY2MIN=IY2MNS IY2MAX=IY2MXS IF(IEMPTY.EQ.'YES')THEN DO6107I=1,MAXSUB ISUBSW(I)=ISU2SW(I) 6107 CONTINUE ENDIF DO6108I=1,100 ICHAPA(I)=ICHAP2(I) ILINPA(I)=ILINP2(I) ISPISW(I)=ISPIS2(I) IBARSW(I)=IBARS2(I) 6108 CONTINUE C 6100 CONTINUE GOTO8000 C C C ************************************************** C ** STEP 28-- ** C ** REINSTATE INITIAL SETTINGS ** C ************************************************** C 8000 CONTINUE 2800 CONTINUE ISTEPN='28' IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'4PLO') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) IF(IBUGG3.EQ.'ON')WRITE(ICOUT,8807)IMANUF,NUMDEV,IDMANU(1) 8807 FORMAT('IMANUF,NUMDEV,IDMANU(1) = ',A4,I8,2X,A4) IF(IBUGG3.EQ.'ON')CALL DPWRST('XXX','BUG ') C PWXMIN=PWXMN2 PWXMAX=PWXMX2 PWYMIN=PWYMN2 PWYMAX=PWYMX2 PXMIN=PXMN2 PXMAX=PXMX2 PYMIN=PYMN2 PYMAX=PYMX2 GX1MIN=GX1MNS GX1MAX=GX1MXS GX2MIN=GX2MNS GX2MAX=GX2MXS GY1MIN=GY1MNS GY1MAX=GY1MXS GY2MIN=GY2MNS GY2MAX=GY2MXS IX1MIN=IX1MNS IX1MAX=IX1MXS IX2MIN=IX2MNS IX2MAX=IX2MXS IY1MIN=IY1MNS IY1MAX=IY1MXS IY2MIN=IY2MNS IY2MAX=IY2MXS IX1TSW=IX1TSV IX2TSW=IX2TSV IY1TSW=IY1TSV IY2TSW=IY2TSV IX1ZSW=IX1ZSV IX2ZSW=IX2ZSV IY1ZSW=IY1ZSV IY2ZSW=IY2ZSV PX1LDS=PX1LD2 PX2LDS=PX2LD2 PY1LDS=PY1LD2 PY1LAN=PY1LA2 IY1LJU=IY1LJ2 IY1LDI=IY1LD2 PX1ZDS=PX1ZD2 PX2ZDS=PX2ZD2 PY1ZDS=PY1ZD2 PY2ZDS=PY2ZD2 C DO8820I=1,100 ICHAPA(I)=ICHAP2(I) ILINPA(I)=ILINP2(I) ISPISW(I)=ISPIS2(I) IBARSW(I)=IBARS2(I) 8820 CONTINUE C CCCCC IMPSW=IMPSW3 IMPSW='OFF' IMPCO=1 IMPNR=IMPNR2 IMPNC=IMPNC2 C IERASW='ON' IFENSW=IFENC2 ISORSW=ISORS2 IPPTBI=IPPTB2 C DO8500I=1,MAXCH IX1LTE(I)=IX1LT2(I) IX2LTE(I)=IX2LT2(I) IY1LTE(I)=IY1LT2(I) IY2LTE(I)=IY2LT2(I) 8500 CONTINUE NCX1LA=NCX1L2 NCX2LA=NCX2L2 NCY1LA=NCY1L2 NCY2LA=NCY2L2 C IFPLLA=IFPLL2 IFPLTA=IFPLTZ IFPLFR=IFPLFZ IFPLPT=IFPLPZ IFPLLD=IFPLLZ IFPLXA=IFPLXZ IFPLYA=IFPLYZ IFPLDI=IFPLDZ IFPLST=IFPLZT IFPLS2=IFPLZ2 IFPLS3=IFPLZ3 IFPLS4=IFPLZ4 C IFEEDB=IFEED9 C DO8809I=1,MAXCH ITITTE(I)=ITITSV(I) 8809 CONTINUE NCTITL=NCTITS C IENDF5='OFF' IREWI5='ON' IF(IOUNI5.GT.0) 1CALL DPCLFI(IOUNI5,IFILE5,ISTAT5,IFORM5,IACCE5,IPROT5,ICURS5, 1IENDF5,IREWI5,ISUBN0,IERRF5,IBUGG3,ISUBRO,IERROR) IF(IERRF5.EQ.'YES')GOTO9000 C PTITDS=PTITDZ IF(IERROR.EQ.'YES')GOTO9000 GOTO9000 C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGG2.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFACT--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IFOUND,IERROR 9012 FORMAT('IFOUND,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2 9013 FORMAT('NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2 = ', 1I8,I8,I8,2X,A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)NUMARG 9014 FORMAT('NUMARG = ',I8) CALL DPWRST('XXX','BUG ') IF(NUMARG.LE.0)GOTO9029 DO9021I=1,NUMARG WRITE(ICOUT,9022)I,IHARG(I),IARGT(I) 9022 FORMAT('I,IHARG(I),IARGT(I) = ',I8,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') 9021 CONTINUE 9029 CONTINUE 9090 CONTINUE C RETURN END SUBROUTINE DPFAIR(NPTS,NLAB, 1AMEAN,ASD,N, 1XFAIR,XFAIS2,SEFWK1,SEFWK2, 1DLOWFW,DHIGFW,DLOWF2,DHIGF2,DLOWF3,DHIGF3, 1IWRITE, 1ICAPSW,ICAPTY,IFLAG9, 1ISUBRO,IBUGA3,IERROR) C C PURPOSE--IMPLEMENT FAIRWEATHER APPROACH TO CONSENSUS MEANS C PRINTING--YES C SUBROUTINES NEEDED--NONE C REFERENCES--ADAPTED FROM MATLAB SCRIPT PROVIDED BY C ANDREW RUHKIN OF THE NIST STATISTICAL C ENGINEERING DIVISION C --FAIRWEATHER (1972), "A METHOD FOR OBTAINING C AN EXACT CONFIDENCE INTERVAL FOR THE COMMON C MEAN OF SEVERAL NORMAL POPULATIONS", C APPLIED STATISTICS, 21, PP. 229-233. C --M. G. COX (2002), "THE EVALUATION OF KEY C COMPARISON DATA", METROLOGIA, 39, PP. 589-595. C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C INFORMATION TECHNOLOGY LABORATORY C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY C GAITHERSBURG, MD 20899-8980 C PHONE--301-975-2899 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--2006/4 C ORIGINAL VERSION--APRIL 2006. C UPDATED --OCTOBER 2006. CALL LIST TO TPPF C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------- C IMPLICIT DOUBLE PRECISION (A-H, O-Z) C CHARACTER*4 ICAPSW CHARACTER*4 ICAPTY CHARACTER*4 ISUBRO CHARACTER*4 ISUBN0 CHARACTER*4 IBUGA3 CHARACTER*4 IERROR C CHARACTER*4 IWRITE C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C CHARACTER*1 IBASLC C CHARACTER*20 IMETH C REAL AMEAN(*) REAL ASD(*) C REAL APPF REAL XFAIR REAL XFAIS2 REAL SEFWK1 REAL SEFWK2 C LOGICAL IFLAG9 C INTEGER N(*) C C---------------------------------------------------------------- C INCLUDE 'DPCOST.INC' C PARAMETER (MAXHED=50) INTEGER IWIDTH(MAXHED) INTEGER NUMDI2(MAXHED) CHARACTER*8 ALIGN(MAXHED) CHARACTER*8 VALIGN(MAXHED) COMMON/HTML4/IWIDTH,NUMDI2,ALIGN,VALIGN CHARACTER*45 IVALUE(MAXHED) INTEGER NCHAR(MAXHED) REAL AVALUE(MAXHED) C LOGICAL IFLAG1 LOGICAL IFLAG2 LOGICAL IFLAG3 C CHARACTER*132 ITTEMP CHARACTER*132 IHEAD C CHARACTER*4 IRTFMD COMMON/COMRTF/IRTFMD C REAL CPUMIN REAL CPUMAX CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT------------------------------------------------ C IERROR='NO' C ISUBN1='DPGR' ISUBN2='AY ' C IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'FAIR')THEN WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFAIR--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)NPTS,NLAB 52 FORMAT('NPTS,NLAB = ',2I8) CALL DPWRST('XXX','BUG ') ENDIF C C STEP 1: COMPUTE THE FAIRWEATHER CONSENSUS MEAN C IFLAG9=.TRUE. DSUM1=0.0D0 DO910I=1,NLAB DNI=DBLE(N(I)) IF(N(I).GT.5)THEN DSUM1=DSUM1 + (DNI-3.0D0)/(DNI-1.0D0) ELSE IFLAG9=.FALSE. XFAIR=0.0 DLOWFW=0.0D0 DHIGFW=0.0D0 GOTO9000 ENDIF 910 CONTINUE DU1=DSUM1 C DSUM1=0.0D0 DO920I=1,NLAB DNI=DBLE(N(I)) DVARI=DBLE(ASD(I))**2 CK=(DNI-3.0D0)/(DNI-1.0D0) CF=CK/DU1 U=DVARI/DNI WF=CF/DSQRT(U) DSUM1=DSUM1 + WF 920 CONTINUE DSS=DSUM1 C DSUM1=0.0D0 DO930I=1,NLAB DNI=DBLE(N(I)) DMEAN=DBLE(AMEAN(I)) DVARI=DBLE(ASD(I))**2 CK=(DNI-3.0D0)/(DNI-1.0D0) CF=CK/DU1 U=DVARI/DNI WF=CF/DSQRT(U) DWI=WF/DSS DSUM1=DSUM1 + DWI*DMEAN 930 CONTINUE XFAIR=REAL(DSUM1) C DP=DBLE(NLAB) DPP=1.0D0/DBLE(NLAB-1) DRR=DP**(DP*DPP/2.0D0) IDF=NLAB-1 ALPHA=0.975 CALL TPPF(REAL(ALPHA),REAL(IDF),APPF) DPH=DBLE(APPF)/DRR/(DSQRT(DP-1.0D0)) C DSUM2=0.0D0 DSUM3=0.0D0 DSUM4=0.0D0 DSUM5=0.0D0 C DPROD1=1.0D0 DO940I=1,NLAB DNI=DBLE(N(I)) DMEAN=DBLE(AMEAN(I)) DVARI=DBLE(ASD(I))**2 CK=(DNI-3.0D0)/(DNI-1.0D0) CF=CK/DU1 U=DVARI/DNI WF=CF/DSQRT(U) DWI=WF/DSS DSUM2=DSUM2 + DWI*(DMEAN - DBLE(XFAIR))**2 DPROD1=DPROD1*DWI DSUM3=DSUM3 + CF*CF/(DNI-5.0D0) DSUM4=DSUM4 + WF**4/(CK*CK*(DNI-5.0D0)) DSUM5=DSUM5 + WF**2/CK 940 CONTINUE DPROD1=DPROD1**DPP DRI=DPH*DSQRT(DSUM2)/DSQRT(DPROD1) SU2=DSUM3 SU=DSUM4 UD=DSUM5 NR=INT(4.0D0 + (1.0D0/SU2)) ALPHA=0.975 CALL TPPF(REAL(ALPHA),REAL(NR),APPF) FC=DSQRT((DBLE(NR)-2.0D0)/(DBLE(NR)*DU1)) TF=FC*DBLE(APPF) NU=INT(4.0 + (UD*UD/SU)) C DLOWF2=DBLE(XFAIR) - (TF/DSS) DHIGF2=DBLE(XFAIR) + (TF/DSS) C CALL TPPF(REAL(ALPHA),REAL(NU),APPF) RC=DSQRT(UD*(DBLE(NU) - 2.0D0)/DBLE(NU)) DLOWF3=DBLE(XFAIR) - (RC*DBLE(APPF)) DHIGF3=DBLE(XFAIR) + (RC*DBLE(APPF)) C C DLOWFW=DBLE(XFAIR) - DRI DHIGFW=DBLE(XFAIR) + DRI C IF(IPRINT.EQ.'ON')THEN IF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'HTML')THEN C WRITE(ICOUT,5107) 5107 FORMAT('') C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5170) 5170 FORMAT(' 11. Method: Fairweather') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5155) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5171) 5171 FORMAT('      ', 1 'Estimate of Consensus Mean:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5152)XFAIR CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5176) 5176 FORMAT('      ', 1 'Lower 95% (Fairweather) Confidence Limit:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5152)REAL(DLOWF2) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5177) 5177 FORMAT('      ', 1 'Upper 95% (Fairweather) Confidence Limit:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5152)REAL(DHIGF2) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5182) 5182 FORMAT('      ', 1 'Lower 95% (Ruhkin) Confidence Limit:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5152)REAL(DLOWFW) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5183) 5183 FORMAT('      ', 1 'Upper 95% (Ruhkin) Confidence Limit:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5152)REAL(DHIGFW) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5184) 5184 FORMAT('      ', 1 'Note: Fairweather Best Usage:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5155) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5185) 5185 FORMAT('      ', 1 '         ', 1 'Minimum within Lab Sample Size > 5
') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5155) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) CALL DPWRST('XXX','WRIT') C ELSEIF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'LATE')THEN C CALL DPCONA(92,IBASLC) C 8002 FORMAT(A1,'begin{table}') 8005 FORMAT(A1,'begin{center}') 8006 FORMAT(5X,A1,'begin{tabular} {lr}') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8002)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8005)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8006)IBASLC CALL DPWRST('XXX','WRIT') C 8011 FORMAT(5X,'{',A1,'bf 11. Method: Fairweather:} & ', 1 2X,A1,A1) 8012 FORMAT(5X,'Estimate of Consensus Mean: & ', 1 F15.7,2X,A1,A1) C WRITE(ICOUT,8011)IBASLC,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8012)XFAIR,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') C 8021 FORMAT(5X,'Lower 95',A1,'% (Fairweather) Confidence ', 1 'Interval: & ',F15.7,2X,A1,A1) 8022 FORMAT(5X,'Upper 95',A1,'% (Fairweather) Confidence ', 1 'Interval: & ',F15.7,2X,A1,A1) 8026 FORMAT(5X,'Lower 95',A1,'% (Ruhkin) Confidence Interval: & ', 1 F15.7,2X,A1,A1) 8027 FORMAT(5X,'Upper 95',A1,'% (Ruhkin) Confidence Interval: & ', 1 F15.7,2X,A1,A1) 8028 FORMAT(5X,'Note: Fairweather Best Usage: & ', 1 2X,A1,A1) 8029 FORMAT(5X,' Minimum within Lab Size > 5 & ', 1 2X,A1,A1) WRITE(ICOUT,8026)IBASLC,REAL(DLOWF2),IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8027)IBASLC,REAL(DHIGF2),IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8026)IBASLC,REAL(DLOWFW),IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8027)IBASLC,REAL(DHIGFW),IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8028)IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8029)IBASLC,IBASLC CALL DPWRST('XXX','WRIT') C 8030 FORMAT(A1,'end{tabular}') 8031 FORMAT(A1,'end{center}') 8032 FORMAT(A1,'end{table}') WRITE(ICOUT,8030)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8031)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8032)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C ELSEIF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'RTF ')THEN C CALL DPCONA(92,IBASLC) C 6191 FORMAT(A1,'f',I1) IF(IRTFFF.EQ.'Courier New')THEN ITEMP=1 ELSEIF(IRTFFF.EQ.'Lucida Console')THEN ITEMP=8 ELSE ITEMP=1 ENDIF WRITE(ICOUT,6191)IBASLC,ITEMP CALL DPWRST(ICOUT,'WRIT') C NCOL=4 IDEFPS=20 IFRST=IRTFPS*5500/IDEFPS IINC1=IRTFPS*1540/IDEFPS C DO6105ISET1=1,NCOL VALIGN(ISET1)='b' ALIGN(ISET1)='r' IF(NUMDI2(ISET1).LT.0.OR.NUMDI2(ISET1).GT.9)NUMDI2(ISET1)=7 6105 CONTINUE ALIGN(1)='l' NUMDI2(1)=0 NUMDI2(2)=7 C IWIDTH(1)=IFRST IWIDTH(2)=IWIDTH(1) + IINC1 C ITTEMP=' ' NCTEMP=0 NHEAD=0 C CALL DPRTF1(ITTEMP,NCTEMP,IHEAD,NHEAD) C NHEAD=2 IFLAG1=.FALSE. IFLAG2=.FALSE. C IVALUE(1)=' b 11. Method: Fairweather' IVALUE(1)(1:1)=IBASLC NCHAR(1)=27 IVALUE(2)=' ' NCHAR(2)=0 CALL DPRTF4(IVALUE,NCHAR,NHEAD,IFLAG1,IFLAG2) C IFLAG1=.FALSE. NHEAD=1 C NCHAR(1)=30 IVALUE(1)=' Estimate of Consensus Mean:' AVALUE(2)=XFAIR CALL DPRTF5(IVALUE(1),NCHAR(1),AVALUE,NHEAD,IFLAG1) C NCHAR(1)=44 IVALUE(1)=' Lower 95% (Fairweather) Confidence Limit:' AVALUE(2)=REAL(DLOWF2) CALL DPRTF5(IVALUE(1),NCHAR(1),AVALUE,NHEAD,IFLAG1) C NCHAR(1)=44 IVALUE(1)=' Upper 95% (Fairweather) Confidence Limit:' AVALUE(2)=REAL(DHIGF2) CALL DPRTF5(IVALUE(1),NCHAR(1),AVALUE,NHEAD,IFLAG1) C NCHAR(1)=39 IVALUE(1)=' Lower 95% (Ruhkin) Confidence Limit:' AVALUE(2)=REAL(DLOWFW) CALL DPRTF5(IVALUE(1),NCHAR(1),AVALUE,NHEAD,IFLAG1) C NCHAR(1)=39 IVALUE(1)=' Upper 95% (Ruhkin) Confidence Limit:' AVALUE(2)=REAL(DHIGFW) CALL DPRTF5(IVALUE(1),NCHAR(1),AVALUE,NHEAD,IFLAG1) C IVALUE(1)=' Note: Fairweather Best Usage:' NCHAR(1)=34 IVALUE(2)=' ' NCHAR(2)=0 CALL DPRTF4(IVALUE,NCHAR,NHEAD,IFLAG1,IFLAG2) C IVALUE(1)=' Minimum Within Lab Size > 5' NCHAR(1)=35 IVALUE(2)=' ' NCHAR(2)=0 CALL DPRTF4(IVALUE,NCHAR,NHEAD,IFLAG1,IFLAG2) C CALL DPRTF6(NHEAD) IFLAG1=.TRUE. IFLAG2=.FALSE. C ELSEIF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'WOML')THEN ELSE C IF(.NOT.IFLAG9)GOTO9000 C WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,4001) 4001 FORMAT('11. Method: Fairweather') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,4002)XFAIR 4002 FORMAT(' Estimate of Consensus Mean: ', 1 F15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,4006)NR 4006 FORMAT(' Degrees of Freedom (Fairweather): ', 1 I8) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,4007)NU 4007 FORMAT(' Degrees of Freedom (Cox): ', 1 I8) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,4021)REAL(DLOWF2) 4021 FORMAT(' Lower 95% (Fairweather) Confidence Limit: ', 1 F15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,4022)REAL(DHIGF2) 4022 FORMAT(' Upper 95% (Fairweather) Confidence Limit: ', 1 F15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,4023)REAL(DLOWF3) 4023 FORMAT(' Lower 95% (Cox) Confidence Limit: ', 1 F15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,4024)REAL(DHIGF3) 4024 FORMAT(' Upper 95% (Cox) Confidence Limit: ', 1 F15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,4025)REAL(DLOWFW) 4025 FORMAT(' Lower 95% (Ruhkin) Confidence Limit: ', 1 F15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,4026)REAL(DHIGFW) 4026 FORMAT(' Upper 95% (Ruhkin) Confidence Limit: ', 1 F15.7) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,4031) 4031 FORMAT(' Note: Fairweather Best Usage:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,4032) 4032 FORMAT(' Minimum Sample Size for Lab', 1 ' > 5') CALL DPWRST('XXX','WRIT') C ENDIF ENDIF C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'FAIR')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFAIR--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IERROR 9012 FORMAT('IERROR = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)NPTS,NLAB 9013 FORMAT('NPTS,NLAB = ',2I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)XFAIR,XFAIS2 9014 FORMAT('XFAIR,XFAIS2 = ',2G15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9015)DLOWFW,DHIGFW 9015 FORMAT('DLOWFW,DHIGFW = ',2G15.7) CALL DPWRST('XXX','BUG ') ENDIF C RETURN END SUBROUTINE DPFEED(IHARG,NUMARG, 1IFEED2,IFOUND,IERROR) C C PURPOSE--SPECIFY THE FEEDBACK SWITCH WHICH IN TURN C DETERMINES WHETHER ANY SUBSEQUENT FEEDBACK OUTPUT C (LIKE, SAY, FROM A SUBSET SPECIFICATION) C WILL BE PRINTED OR NOT. C THIS CAPABILITY IS USEFUL IF ONE WISHES TO SUPPRESS C FEEDBACK OUTPUT FROM ALL SWITCH SETTING COMMANDS C SO AS TO NOT CLUTTER UP THE SCREEN C IN FORMING (FOR EXAMPLE) DIAGRAMMATIC GRAPHICS. C THE SPECIFIED FEEDBACK SWITCH SPECIFICATION C WILL BE PLACED IN THE HOLLERITH VARIABLE IFEED2. C INPUT ARGUMENTS--IHARG (A HOLLERITH VECTOR) C --NUMARG (AN INTEGER VARIABLE) C OUTPUT ARGUMENTS--IFEED2 (A HOLLERITH VARIABLE) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--MAY 1981. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IFEED2 CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IHOLD C C--------------------------------------------------------------------- C DIMENSION IHARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C 1110 CONTINUE IF(NUMARG.LE.0)GOTO1150 IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1160 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150 GOTO1199 C 1150 CONTINUE IHOLD='ON' GOTO1180 C 1160 CONTINUE IHOLD='OFF' GOTO1180 C 1180 CONTINUE IFOUND='YES' IFEED2=IHOLD IFEEDB=IFEED2 C CCCCC GOTO1189 CCCCC IF(IFEEDB.EQ.'OFF')GOTO1189 CCCCC WRITE(ICOUT,999) CC999 FORMAT(1X) CCCCC CALL DPWRST('XXX','BUG ') CCCCC WRITE(ICOUT,1181)IFEED2 C1181 FORMAT('THE FEEDBACK SWITCH HAS JUST BEEN SET TO ', CCCCC CALL DPWRST('XXX','BUG ') CCCCC1A4) C1189 CONTINUE GOTO1199 C 1199 CONTINUE RETURN END SUBROUTINE DPFENC(IHARG,NUMARG, 1IFENSW,IFOUND,IERROR) C C PURPOSE--SPECIFY THE FENCE SWITCH WHICH IN TURN C DETERMINES WHETHER SUCCEEDING BOX PLOTS WILL HAVE C VALUES BEYOND THE INNER FENCE AND OUTER FENCE INDICATED. C THE SPECIFIED FENCE SWITCH SPECIFICATION C WILL BE PLACED IN THE CHARACTER VARIABLE IFENSW. C INPUT ARGUMENTS--IHARG (A CHARACTER VECTOR) C --NUMARG (AN INTEGER VARIABLE) C OUTPUT ARGUMENTS--IFENSW (A CHARACTER VARIABLE) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--83/7 C ORIGINAL VERSION--JULY 1983. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IFENSW CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IHOLD C C--------------------------------------------------------------------- C DIMENSION IHARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C 1110 CONTINUE IF(NUMARG.LE.0)GOTO1150 IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1160 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1160 GOTO1150 C 1150 CONTINUE IHOLD='ON' GOTO1180 C 1160 CONTINUE IHOLD='OFF' GOTO1180 C 1180 CONTINUE IFOUND='YES' IFENSW=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181)IFENSW 1181 FORMAT('THE FENCE SWITCH (FOR BOX PLOTS) HAS JUST ', 1'BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO1199 C 1199 CONTINUE RETURN END SUBROUTINE DPFICN(ICOM,IHARG,IHARG2,IARGT,ARG,NUMARG, 1IPARNC,IPANC2,IPAROP,PARLIM,NUMCON,MAXCON,IFOUND,IERROR,IBUG) C C PURPOSE--DEFINE CONSTRAINTS TO BE USED C IN CONJUNCTION WITH THE FIT COMMAND C (AND THE PRE-FIT COMMAND). C THE SPECIFIED CONSTRAINED PARAMETER NAME WILL BE PLACED C IN AN ELEMENT OF THE HOLLERITH VARIABLES C IPARNC(.) AND IPANC2(.). C THE SPECIFIED MATHEMATICAL OPERATION C (< OR <= OR = OR >= OR >) C INVOLVED WITH THE CONSTRAINT C WILL BE PLACED IN THE CORRESPONDING ELEMENT C OF THE HOLLARIRTH VECTOR IPAROP(.). C THE SPECIFIED NUMBER WHICH SERVES AS THE BOUNDARY VALUE C IN THE CONSTRAINT WILL BE PLACED IN THE CORRESPONDING C ELEMENT OF THE FLOATING POINT VECTOR PARLIM(.). C INPUT ARGUMENTS--ICOM (A HOLLERITH VECTOR) C --IHARG (A HOLLERITH VECTOR) C --IHARG2 (A HOLLERITH VECTOR) C --IARGT (A HOLLERITH VECTOR) C --ARG (A FLOATING POINT VECTOR) C --NUMARG (AN INTEGER VARIABLE) C OUTPUT ARGUMENTS--IPARNC (A HOLLERITH VECTOR) C --IPANC2 (A HOLLERITH VECTOR) C --IPAROP (A HOLLERITH VECTOR) C --PARLIM (A FLOATING POINT VECTOR) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--JUNE 1979. C UPDATED --JULY 1979. C UPDATED --DECEMBER 1980. C UPDATED --JANUARY 1981. C UPDATED --NOVEMBER 1981. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICOM CHARACTER*4 IHARG CHARACTER*4 IHARG2 CHARACTER*4 IARGT CHARACTER*4 IPARNC CHARACTER*4 IPANC2 CHARACTER*4 IPAROP CHARACTER*4 IFOUND CHARACTER*4 IERROR CHARACTER*4 IBUG C CHARACTER*4 IH1 CHARACTER*4 IH2 CHARACTER*4 NEWCON C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C C--------------------------------------------------------------------- C DIMENSION IHARG(*) DIMENSION IHARG2(*) DIMENSION IARGT(*) DIMENSION ARG(*) C DIMENSION IPARNC(*) DIMENSION IPANC2(*) DIMENSION IPAROP(*) DIMENSION PARLIM(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C ISUBN1='DPFI' ISUBN2='CN ' C ICON=0 C NEWCON='UNKN' C IF(IBUG.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,61) 61 FORMAT('***** AT THE BEGINNING OF DPFICN--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,62)NUMARG 62 FORMAT('NUMARG = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,63)ICOM 63 FORMAT('ICOM = ',A4) CALL DPWRST('XXX','BUG ') IF(NUMARG.LE.0)GOTO67 DO65I=1,NUMARG WRITE(ICOUT,66)I,IHARG(I),IHARG2(I),ARG(I) 66 FORMAT('I,IHARG(I),IHARG2(I),ARG(I) = ', 1I8,2X,A4,2X,A4,2X,E15.7) CALL DPWRST('XXX','BUG ') 65 CONTINUE 67 CONTINUE C WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,72)NUMCON,MAXCON,NEWCON,IBUG 72 FORMAT('NUMCON,MAXCON,NEWCON,IBUG = ',I8,I8,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') IF(NUMCON.LE.0)GOTO77 DO75I=1,NUMCON WRITE(ICOUT,76)I,IPARNC(I),IPANC2(I),IPAROP(I),PARLIM(I) 76 FORMAT('I,IPARNC(I),IPANC2(I),IPAROP(I),PARLIM(I) = ', 1I8,2X,A4,2X,A4,2X,A4,2X,E15.7) CALL DPWRST('XXX','BUG ') 75 CONTINUE 77 CONTINUE C 90 CONTINUE C C ********************************************** C ** STEP 1-- ** C ** DETERMINE IF HAVE THE TOTAL RESET CASE ** C ********************************************** C ISTEPN='1' IF(IBUG.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IFOUND='NO' IERROR='NO' C IF(NUMARG.GE.1.AND.ICOM.EQ.'FIT'.AND.IHARG(1).EQ.'CONS'.AND. 1IHARG2(1).EQ.'TRAI')GOTO100 GOTO900 C 100 CONTINUE IF(NUMARG.LE.1)GOTO110 IF(NUMARG.EQ.2.AND.IHARG(2).EQ.'ON')GOTO110 IF(NUMARG.EQ.2.AND.IHARG(2).EQ.'OFF')GOTO110 IF(NUMARG.EQ.2.AND.IHARG(2).EQ.'AUTO')GOTO110 IF(NUMARG.EQ.2.AND.IHARG(2).EQ.'DEFA')GOTO110 GOTO190 C 110 CONTINUE IFOUND='YES' DO120I=1,MAXCON IPARNC(I)=' ' IPANC2(I)=' ' IPAROP(I)='NONE' PARLIM(I)=CPUMIN 120 CONTINUE NUMCON=0 C IF(IFEEDB.EQ.'OFF')GOTO129 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,121) 121 FORMAT('ALL PARAMETERS HAVE JUST BEEN SET SO AS ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,122) 122 FORMAT(' TO BE UNCONSTRAINED') CALL DPWRST('XXX','BUG ') 129 CONTINUE GOTO900 C 190 CONTINUE C C ******************************************************** C ** STEP 2-- ** C ** DETERMINE IF NAME OF PARAMETER TO BE CONSTRAINED ** C ** ALREADY EXISTS IN CONSTRAINT TABLE. ** C ******************************************************** C ISTEPN='2' IF(IBUG.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IH1=IHARG(2) IH2=IHARG2(2) C CC NEWCON='NO' CC ICON=0 CC IF(NUMCON.LE.0)GOTO220 CC DO200I=1,NUMCON CC I2=I CC IF(IH1.EQ.IPARNC(I).AND.IH2.EQ.IPANC2(I))GOTO210 CC200 CONTINUE CC GOTO220 CC CC210 CONTINUE CC ICON=I2 CC GOTO290 CC 220 CONTINUE ICON=NUMCON+1 IF(ICON.LE.MAXCON)GOTO229 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,221) 221 FORMAT('***** ERROR IN DPFICN--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,222) 222 FORMAT(' THE NUMBER OF CONSTRAINTS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,224) 224 FORMAT(' HAS JUST EXCEEDED THE MAXIMUM SIZE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,225)MAXCON 225 FORMAT(' (',I5,') OF THE INTERNAL CONSTRAINT TABLE.') CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO900 229 CONTINUE C NEWCON='YES' NUMCON=ICON GOTO290 C 290 CONTINUE C C *********************************************** C ** STEP 3-- ** C ** ENTER THE PARAMETER NAME (IF NECESSARY) ** C ** INTO THE NAME VECTORS IPARNC(.) AND ** C ** IPANC2(.) ** C *********************************************** C ISTEPN='3' IF(IBUG.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IPARNC(ICON)=IH1 IPANC2(ICON)=IH2 C C ****************************************** C ** STEP 4-- ** C ** ENTER THE CONSTRAINT OPERATION ** C ** INTO THE OPERATION VECTOR IPAROP(.) ** C ****************************************** C ISTEPN='4' IF(IBUG.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IPAROP(ICON)='NONE' IF(NUMARG.LE.3)GOTO410 IF(IHARG(3).EQ.'ON')GOTO410 IF(IHARG(3).EQ.'OFF')GOTO410 IF(IHARG(3).EQ.'DEFA')GOTO410 IF(IHARG(3).EQ.'AUTO')GOTO410 C IF(IHARG(3).EQ.'<'.AND.IHARG(4).NE.'=')GOTO420 IF(IHARG(3).EQ.'<'.AND.IHARG(4).EQ.'=')GOTO430 IF(IHARG(3).EQ.'='.AND.IHARG(4).EQ.'<')GOTO430 IF(IHARG(3).EQ.'='.AND.IHARG(4).NE.'<'.AND. 1IHARG(4).NE.'>')GOTO440 IF(IHARG(3).EQ.'>'.AND.IHARG(4).EQ.'=')GOTO450 IF(IHARG(3).EQ.'='.AND.IHARG(4).EQ.'>')GOTO450 IF(IHARG(3).EQ.'>'.AND.IHARG(4).NE.'=')GOTO460 GOTO470 C 410 CONTINUE IPAROP(ICON)='NONE' GOTO490 C 420 CONTINUE IPAROP(ICON)='<' GOTO490 C 430 CONTINUE IPAROP(ICON)='<=' GOTO490 C 440 CONTINUE IPAROP(ICON)='=' GOTO490 C 450 CONTINUE IPAROP(ICON)='>=' GOTO490 C 460 CONTINUE IPAROP(ICON)='>' GOTO490 C 470 CONTINUE IERROR='YES' WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,471) 471 FORMAT('ERROR IN DPFICN--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,472) 472 FORMAT(' THE SECOND ARGUMENT IN THE FIT CONSTRAINT ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,473) 473 FORMAT(' COMMAND SHOULD BE ONE OF THE FOLLOWING 5 ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,474) 474 FORMAT(' MATHEMATICAL OPERATIONS-- < <= = >= >') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,475) 475 FORMAT(' OR SHOULD BE ONE OF THE FOLLOWING 4 WORDS--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,476) 476 FORMAT(' ON OFF AUTOMATIC DEFAULT,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,477) 477 FORMAT(' BUT WAS NOT.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,478) 478 FORMAT(' THE FOLLOWING ILLUSTRATIVE EXAMPLE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,479) 479 FORMAT(' DEMONSTRATES THE ALLOWABLE FORM--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,480) 480 FORMAT(' SUPPOSE THE ANALYST WISHES TO') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,481) 481 FORMAT(' CONSTRAIN THE PARAMETER ALPHA IN A FIT') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,482) 482 FORMAT(' TO BE STRICTLY GREATER THAN 0 AND') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,483) 483 FORMAT(' ALSO TO BE LESS THAN OR EQUAL TO 100,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,484) 484 FORMAT(' THEN THE FOLLOWING MAY BE ENTERED--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,485) 485 FORMAT(' FIT CONSTRAINT ALPHA > 0') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,486) 486 FORMAT(' FIT CONSTRAINT ALPHA <= 100') CALL DPWRST('XXX','BUG ') IF(NEWCON.EQ.'NO')GOTO489 NUMCON=NUMCON-1 IPARNC(ICON)=' ' IPANC2(ICON)=' ' 489 CONTINUE GOTO900 C 490 CONTINUE C C ************************************** C ** STEP 5-- ** C ** ENTER THE CONSTRAINT LIMITS ** C ** INTO THE VECTOR PARLIM(.) ** C ************************************** C ISTEPN='5' IF(IBUG.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IPAROP(ICON).EQ.'NONE')GOTO590 IF(IARGT(NUMARG).EQ.'NUMB')GOTO510 GOTO570 C 510 CONTINUE IFOUND='YES' PARLIM(ICON)=ARG(NUMARG) GOTO590 C 570 CONTINUE IERROR='YES' WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,571) 571 FORMAT('ERROR IN DPFICN--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,572) 572 FORMAT(' THE THIRD ARGUMENT IN THE FIT CONSTRAINT') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,573) 573 FORMAT(' COMMAND SHOULD BE A NUMBER ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,574) 574 FORMAT(' OR A PREVIOUSLY-DEFINED PARAMETER,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,575) 575 FORMAT(' BUT WAS NOT.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,576) 576 FORMAT(' THE FOLLOWING ILLUSTRATIVE EXAMPLE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,577) 577 FORMAT(' DEMONSTRATES THE ALLOWABLE FORM--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,578) 578 FORMAT(' SUPPOSE THE ANALYST WISHES TO') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,579) 579 FORMAT(' CONSTRAIN THE PARAMETER ALPHA IN A FIT') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,480) 580 FORMAT(' TO BE STRICTLY GREATER THAN 0 AND') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,581) 581 FORMAT(' ALSO TO BE LESS THAN OR EQUAL TO 100,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,582) 582 FORMAT(' THEN THE FOLLOWING MAY BE ENTERED--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,583) 583 FORMAT(' FIT CONSTRAINT ALPHA > 0') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,584) 584 FORMAT(' FIT CONSTRAINT ALPHA <= 100') CALL DPWRST('XXX','BUG ') IF(NEWCON.EQ.'NO')GOTO589 NUMCON=NUMCON-1 IPARNC(ICON)=' ' IPANC2(ICON)=' ' 589 CONTINUE GOTO900 590 CONTINUE C C **************************** C ** STEP 6-- ** C ** WRITE OUT A MESSAGE. ** C **************************** C ISTEPN='6' IF(IBUG.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IPAROP(ICON).EQ.'NONE')GOTO610 IF(IPAROP(ICON).EQ.'<')GOTO620 IF(IPAROP(ICON).EQ.'<=')GOTO630 IF(IPAROP(ICON).EQ.'=')GOTO640 IF(IPAROP(ICON).EQ.'>=')GOTO650 IF(IPAROP(ICON).EQ.'>')GOTO660 GOTO690 C 610 CONTINUE IF(IFEEDB.EQ.'OFF')GOTO619 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,611)IPARNC(ICON),IPANC2(ICON) 611 FORMAT('THE PARAMETER ',A4,A4,' HAS JUST BEEN SET') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,612) 612 FORMAT(' SO AS TO BE UNCONSTRAINED') CALL DPWRST('XXX','BUG ') 619 CONTINUE GOTO670 C 620 CONTINUE IF(IFEEDB.EQ.'OFF')GOTO629 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,621)IPARNC(ICON),IPANC2(ICON) 621 FORMAT('THE PARAMETER ',A4,A4,' HAS JUST BEEN CONSTRAINED ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,622)PARLIM(ICON) 622 FORMAT(' TO BE STRICTLY LESS THAN ',E15.7) CALL DPWRST('XXX','BUG ') 629 CONTINUE GOTO690 C 630 CONTINUE IF(IFEEDB.EQ.'OFF')GOTO639 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,631)IPARNC(ICON),IPANC2(ICON) 631 FORMAT('THE PARAMETER ',A4,A4,' HAS JUST BEEN CONSTRAINED ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,632)PARLIM(ICON) 632 FORMAT(' TO BE LESS THAN OR EQUAL TO ',E15.7) CALL DPWRST('XXX','BUG ') 639 CONTINUE GOTO690 C 640 CONTINUE IF(IFEEDB.EQ.'OFF')GOTO649 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,641)IPARNC(ICON),IPANC2(ICON) 641 FORMAT('THE PARAMETER ',A4,A4,' HAS JUST BEEN CONSTRAINED ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,642)PARLIM(ICON) 642 FORMAT(' TO BE IDENTICALLY EQUAL TO ',E15.7) CALL DPWRST('XXX','BUG ') 649 CONTINUE GOTO690 C 650 CONTINUE IF(IFEEDB.EQ.'OFF')GOTO659 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,651)IPARNC(ICON),IPANC2(ICON) 651 FORMAT('THE PARAMETER ',A4,A4,' HAS JUST BEEN CONSTRAINED ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,652)PARLIM(ICON) 652 FORMAT(' TO BE GREATER THAN OR EQUAL TO ',E15.7) CALL DPWRST('XXX','BUG ') 659 CONTINUE GOTO690 C 660 CONTINUE IF(IFEEDB.EQ.'OFF')GOTO669 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,661)IPARNC(ICON),IPANC2(ICON) 661 FORMAT('THE PARAMETER ',A4,A4,' HAS JUST BEEN CONSTRAINED ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,662)PARLIM(ICON) 662 FORMAT(' TO BE STRICTLY GREATER THAN ',E15.7) CALL DPWRST('XXX','BUG ') 669 CONTINUE GOTO690 C 670 CONTINUE NUMCO2=NUMCON IF(NUMCON.LE.0)GOTO679 DO671I=1,NUMCON IF(I.GT.NUMCO2)GOTO679 I2=I IF(IH1.EQ.IPARNC(I).AND.IH2.EQ.IPANC2(I))GOTO672 GOTO671 C 672 CONTINUE J=I JM1=J-1 JMIN=I+1 JMAX=NUMCO2 IF(JMIN.GT.JMAX)GOTO674 DO673J=JMIN,JMAX JM1=J-1 IPARNC(JM1)=IPARNC(J) IPANC2(JM1)=IPANC2(J) IPAROP(JM1)=IPAROP(J) PARLIM(JM1)=PARLIM(J) 673 CONTINUE 674 CONTINUE NUMCO2=JM1 C 671 CONTINUE 679 CONTINUE NUMCON=NUMCO2 GOTO690 C 690 CONTINUE C C **************** C ** STEP 9-- ** C ** EXIT ** C **************** C 900 CONTINUE IF(IBUG.EQ.'OFF')GOTO990 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,901) 901 FORMAT('***** AT THE END OF DPFICN--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,902)NUMCON,MAXCON,NEWCON,IBUG 902 FORMAT('NUMCON,MAXCON,NEWCON,IBUG = ',I8,I8,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,903)ICON 903 FORMAT('ICON = ',I8) CALL DPWRST('XXX','BUG ') IF(NUMCON.LE.0)GOTO990 DO910I=1,NUMCON WRITE(ICOUT,911)I,IPARNC(I),IPANC2(I),IPAROP(I),PARLIM(I) 911 FORMAT('I,IPARNC(I),IPANC2(I),IPAROP(I),PARLIM(I) = ', 1I8,2X,A4,2X,A4,2X,A4,2X,E15.7) CALL DPWRST('XXX','BUG ') 910 CONTINUE 990 CONTINUE C RETURN END SUBROUTINE DPFIFO(IHARG,NUMARG, 1IOUTTY,IFOUND,IERROR) C C PURPOSE--SET THE FORMAT/TYPE SWITCH FOR THE OUTPUT FILE. C INPUT ARGUMENTS--IHARG (A HOLLERITH VECTOR) C --NUMARG (AN INTEGER VARIABLE) C OUTPUT ARGUMENTS--IOUTTY (A HOLLERITH VARIABLE) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--92/4 C ORIGINAL VERSION--MARCH 1992. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IOUTTY CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IHOLD C C--------------------------------------------------------------------- C DIMENSION IHARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C 1110 CONTINUE IF(NUMARG.LE.0)GOTO1150 IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1150 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150 IF(IHARG(NUMARG).EQ.'?')GOTO1160 GOTO1170 C 1150 CONTINUE IHOLD='ASCI' GOTO1180 C 1160 CONTINUE IF(IFEEDB.EQ.'OFF')GOTO1169 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1161)IOUTTY 1161 FORMAT('THE CURRENT FORMAT OF THE OUTPUT FILE IS ',A4) CALL DPWRST('XXX','BUG ') 1169 CONTINUE IFOUND='YES' GOTO1199 C 1170 CONTINUE IHOLD=IHARG(NUMARG) GOTO1180 C 1180 CONTINUE IFOUND='YES' IOUTTY=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181)IOUTTY 1181 FORMAT('THE OUTPUT FILE FORMAT SWITCH HAS JUST ', 1'BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO1199 C 1199 CONTINUE RETURN END SUBROUTINE DPFIIT(IHARG,IARGT,IARG,NUMARG,IDEFFI, 1IFITIT,IFOUND,IERROR) C C PURPOSE--DEFINE THE UPPER BOUND FOR THE NUMBER OF FIT ITERATIONS. C THE SPECIFIED FIT ITERATION VALUE WILL BE PLACED C IN THE INTEGER VARIABLE IFITIT. C INPUT ARGUMENTS--IHARG (A HOLLERITH VECTOR) C --IARGT (A HOLLERITH VECTOR) C --IARG (AN INTEGER VECTOR) C --NUMARG (AN INTEGER VARIABLE) C --IDEFFI (AN INTEGER VARIABLE) C OUTPUT ARGUMENTS--IFITIT (AN INTEGER VARIABLE) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--NOVEMBER 1980. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IARGT CHARACTER*4 IFOUND CHARACTER*4 IERROR C C--------------------------------------------------------------------- C DIMENSION IHARG(*) DIMENSION IARGT(*) DIMENSION IARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C IF(NUMARG.EQ.0)GOTO1199 IF(NUMARG.GE.2.AND.IHARG(2).EQ.'=')GOTO1199 IF(NUMARG.GE.1.AND.IHARG(1).EQ.'ITER')GOTO1110 GOTO1199 C 1110 CONTINUE IF(IHARG(NUMARG).EQ.'ITER')GOTO1150 IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1150 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150 IF(IARGT(NUMARG).EQ.'NUMB')GOTO1160 GOTO1120 C 1120 CONTINUE IERROR='YES' WRITE(ICOUT,1121) 1121 FORMAT('***** ERROR IN DPFIIT--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1122) 1122 FORMAT(' ILLEGAL FORM FOR FIT ITERATIONS ', 1'COMMAND.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1124) 1124 FORMAT(' TEST EXAMPLE TO DEMONSTRATE THE ', 1'PROPER FORM--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1125) 1125 FORMAT(' SUPPOSE THE THE ANALYST WILL BE CARRYING OUT ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1126) 1126 FORMAT(' A NON-LINEAR FIT , ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1127) 1127 FORMAT(' AND SUPPOSE THE ANALYST WISHES TO TERMINATE ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1128) 1128 FORMAT(' THE FIT IF THE NUMBER OF ITERATIONS ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1129) 1129 FORMAT(' HAPPENS TO REACH 30;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1130) 1130 FORMAT(' THEN THE ALLOWABLE FORM IS--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1131) 1131 FORMAT(' FIT ITERATIONS 30 ') CALL DPWRST('XXX','BUG ') GOTO1199 C 1150 CONTINUE IHOLD=IDEFFI GOTO1180 C 1160 CONTINUE IHOLD=IARG(NUMARG) GOTO1180 C 1180 CONTINUE IFOUND='YES' IFITIT=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181)IFITIT 1181 FORMAT('THE FIT ITERATIONS HAVE JUST BEEN SET TO ', 1I8) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO1199 C 1199 CONTINUE RETURN END SUBROUTINE DPFILE(IANS,IWIDTH,IWORD, 1IOFILE,IBUGS2,ISUBRO,IERROR) C C PURPOSE--SCAN THE IWORD-TH WORD OF THE INPUT LINE. C AND DETERMINE IF IT IS A FILE NAME. C THE CRITERION IS THAT IF THAT WORD C CONTAINS THE CHARACTER IFCHAR , C THEN IT IS CONSIDERED A FILE NAME, C OTHERWISE IT IS CONSIDERED NOT TO BE A FILE NAME. C OUTPUT ARGUMENT--IOFILE ('YES' OR 'NO') C NOTE--THIS SUBROUTINE IS "SYSTEM-DEPENDENT" IN THE SENSE C THAT IFCHAR MAY DIFFER FROM ONE SYSTEM TO ANOTHER. C NOTE--IFCHAR IS SET AT TIMPLEMENTATION TIME C IN THE SUBROUTINE INITFO. C NOTE--THE DEFAULT SETTING FOR IFCHAR IS . (= PERIOD). C THUS YOU MAY ENTER READ X. Y Z C TO TELL DATAPLOT TO READ VARIABLES Y AND Z C FROM FILE X C AS OPPOSED TO ENTERING READ X Y Z C TO TELL DATAPLOT TO READ VARIABLES X, Y, AND Z C FROM THE TERMINAL. C READ X. Y Z C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--86/1 C ORIGINAL VERSION--NOVEMBER 1977. C UPDATED --OCTOBER 1978. C UPDATED --NOVEMBER 1980. C UPDATED --JUNE 1981. C UPDATED --MAY 1982. C UPDATED --DECEMBER 1986. C UPDATED --DECEMBER 1988. DESLATTES FILE NAME INSIDE QUOTE PROBLEM C UPDATED --JULY 2002. OPTION (IFILQU=ON/OFF) TO C DETERMINE IF FILE NAME CAN C BE ENCLOSED IN QUOTES C UPDATED --JULY 2003. BUG: EVEN THOUGH FILE NAMES C MAY BE RESTRICTED TO 80 C CHARACTERS, THE COMMAND LINE C CONTAINING THEM CAN BE C LONGER. ADJUST DIMENSIONING C TO ACCOUNT FOR THIS. ALSO ADD C CHECK FOR FILE NAMES EXCEEDING C 80 CHARACTERS. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IANS CHARACTER*4 IOFILE CHARACTER*4 IBUGS2 CHARACTER*4 ISUBRO CHARACTER*4 IERROR C CHARACTER*4 IANSI CCCCC CHARACTER*80 ICANS CCCCC CHARACTER*80 ISTRIN CHARACTER*255 ICANS CHARACTER*255 ISTRIN C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C DIMENSION IANS(*) C PARAMETER (MAXFNC=80) C C-----COMMON---------------------------------------------------------- C INCLUDE 'DPCOF2.INC' INCLUDE 'DPCOST.INC' C C-----COMMON VARIABLES (GENERAL)-------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C ISUBN1='DPFI' ISUBN2='LE ' C IERROR='NO' C IF(IBUGS2.EQ.'OFF'.AND.ISUBRO.NE.'FILE')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFILE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)IWIDTH,IWORD 52 FORMAT('IWIDTH,IWORD = ',2I8) CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)THEN WRITE(ICOUT,53)(IANS(I),I=1,MIN(100,IWIDTH)) 53 FORMAT('IANS(.) = ',100A1) CALL DPWRST('XXX','BUG ') ENDIF WRITE(ICOUT,54)IFCHAR 54 FORMAT('IFCHAR = ',A1) CALL DPWRST('XXX','BUG ') 90 CONTINUE C C *************************************** C ** STEP 1-- ** C ** DETERMINE IF HAVE THE FILE CASE ** C *************************************** C ISTEPN='1' IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'FILE') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C DO1110I=1,MIN(255,IWIDTH) IANSI=IANS(I) ICANS(I:I)=IANSI(1:1) 1110 CONTINUE C ISTART=1 ISTOP=IWIDTH CALL DPEXWO(ICANS,ISTART,ISTOP,IWORD, 1ICOL1,ICOL2,ISTRIN,NCSTRI, 1IBUGS2,ISUBRO,IERROR) C IOFILE='NO' IF(NCSTRI.LE.0)GOTO1290 C THE FOLLOWING LINE WAS INSERTED DECEMBER 1988 TO C SOLVE THE DESLATTES PROBLEM WRITE "(EXAMPLE--ABC.DEF)" C JULY 2002: MAKE QUOTE OPTIONAL (PC FILES CAN HAVE SPACES, C SO ENCLOSE IN QUOTES TO EXTRACT) CCCCC IF(ICANS(1:1).EQ.'"')GOTO1290 IF(ICANS(1:1).EQ.'"' .AND. IFILQU.EQ.'OFF')GOTO1290 IF(ICOL1.GT.ICOL2)GOTO1290 DO1200I=ICOL1,ICOL2 IF(ICANS(I:I).EQ.IFCHAR)GOTO1250 1200 CONTINUE GOTO1290 1250 CONTINUE IOFILE='YES' NC=ICOL2-ICOL1+1 IF(IFILQU.EQ.'ON' .AND. ICANS(ICOL1:ICOL1).EQ.'"')NC=NC-1 IF(IFILQU.EQ.'ON' .AND. ICANS(ICOL2:ICOL2).EQ.'"')NC=NC-1 IF(NC.GT.MAXFNC)THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1251)MAXFNC 1251 FORMAT('***** FATAL ERROR: FILE NAME EXCEEDS MAXIMUM ', 1 'LENGTH OF ',I8,' CHARACTERS.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1253)NC 1253 FORMAT(' REQUESTED FILE NAME HAS ',I8,' CHARACTERS.') CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 ENDIF GOTO1290 1290 CONTINUE C C **************** C ** STEP 90-- ** C ** EXIT. ** C **************** C 9000 CONTINUE IF(IBUGS2.EQ.'OFF'.AND.ISUBRO.NE.'FILE')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFILE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IWIDTH,IWORD 9012 FORMAT('IWIDTH,IWORD = ',2I8) CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)THEN WRITE(ICOUT,9013)(IANS(I),I=1,MIN(100,IWIDTH)) 9013 FORMAT('IANS(.) = ',100A1) CALL DPWRST('XXX','BUG ') ENDIF WRITE(ICOUT,9014)IFCHAR 9014 FORMAT('IFCHAR = ',A1) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9015)ICOL1,ICOL2,NCSTRI 9015 FORMAT('ICOL1,ICOL2,NCSTRI = ',3I8) CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)THEN WRITE(ICOUT,9021)(ICANS(I:I),I=1,MIN(100,IWIDTH)) 9021 FORMAT('ICANS(.:.) = ',100A1) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9022)(ISTRIN(I:I),I=1,MIN(100,IWIDTH)) 9022 FORMAT('ISTRIN(.:.) = ',100A1) CALL DPWRST('XXX','BUG ') ENDIF WRITE(ICOUT,9031)IBUGS2,IERROR 9031 FORMAT('IBUGS2,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9032)IOFILE 9032 FORMAT('IOFILE = ',A4) CALL DPWRST('XXX','BUG ') 9090 CONTINUE C RETURN END SUBROUTINE DPFIL2(ICHAR,IMIN,IMAX,IANS2,IWID, 1LOCCHA,NAM,NPACKC,IBUG,IERROR) C C PURPOSE--EXTRACT QUALIFIER, FILE, OR SUBFILE C NAME FROM A STRING. C INPUT ARGUMENTS--IMIN = INTEGER VARIABLE C CONTAINING THE START LOCATION C (IN THE VECTOR IANS2(.)) C FOR THE SEARCH. C --IMAX = INTEGER VARIABLE C CONTAINING THE STOP LOCATION C (IN THE VECTOR IANS2(.)) C FOR THE SEARCH. C --ICHAR = HOLLERITH VARIABLE GIVING C THE SOUGHT-AFTER CHARACTER C IN THE SEARCH. C --IANS2 = HOLLERITH VECTOR BEING SEARCHED. C --IWID = THE NUMBER OF ELEMENTS C IN THE HOLLERITH VECTOR IANS2(.) C OUTPUT ARGUMENTS--LOCCHA = INTEGER VARIABLE C CONTAINING THE LOCATION C (IN THE VECTR IANS2(.)) C WHERE THE CHARACTER WAS FOUND. C --NAM = HOLLERITH VECTOR C INTO WHICH THE PACKED NAME C IS PLACED. C --NPACKC = INTEGER VARIABLE C CONTAINING THE NUMBER OF WORDS C IN THE VARIABLE NAM(.) FOR C THE PACKED VERSION OF THE C QUALIFIER, FILE, AND/OR SUBFILE NAME C (WHERE THE WORDS ARE PACKED-- C 4, 6, 10, ETC. CHARACTERS PER WORD). C NOTE--IF THE NAME DOES NOT EXIST, C THE LOCCHA IS SET TO IMIN-1, C NAM(.) IS FILLED WITH BLANKS, C AND NPACKC IS SET TO 0 . C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION (AS A SEPARATE SUBROUTINE)--JUNE 1981. C UPDATED --NOVEMBER 1981. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICHAR CHARACTER*4 IANS2 CHARACTER*4 NAM CHARACTER*4 IBUG CHARACTER*4 IERROR C C--------------------------------------------------------------------- C DIMENSION IANS2(*) DIMENSION NAM(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IERROR='NO' C IF(IBUG.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFIL2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)ICHAR,IMIN,IMAX 52 FORMAT('ICHAR,IMIN,IMAX = ',A4,2I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)IWID 53 FORMAT('IWID = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)(IANS2(I),I=1,IWID) 54 FORMAT('IANS2(.)--',120A1) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,55)IBUG,IERROR 55 FORMAT('IBUG,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') 90 CONTINUE C C **************************************** C ** STEP 1-- ** C ** ZERO-OUT AND BLANK-OUT ** C ** THE OUTPUT VARIABLES AND VECTOR. ** C **************************************** C LOCCHA=IMIN-1 NPACKC=0 C DO1110J=1,10 NAM(J)=' ' 1110 CONTINUE C C ******************************************* C ** STEP 2-- ** C ** SEARCH FOR THE TARGET CHARACTER; ** C ** DETERMINE ITS LOCATION IN IANS2(.); ** C ** PLACE THE LOCATION VALUE IN LOCCHA. ** C ******************************************* C IF(ICHAR.EQ.'END')GOTO1126 IF(IMAX.LE.0)GOTO1190 IF(IMIN.GT.IMAX)GOTO1190 DO1120I=IMIN,IMAX I2=I IF(IBUG.EQ.'ON')WRITE(ICOUT,1111)I,IANS2(I),ICHAR 1111 FORMAT('I,IANS2(I),ICHAR = ',I6,A6,A6) IF(IBUG.EQ.'ON')CALL DPWRST('XXX','BUG ') IF(IANS2(I).EQ.ICHAR)GOTO1125 1120 CONTINUE GOTO1190 1125 CONTINUE LOCCHA=I2 GOTO1129 1126 CONTINUE LOCCHA=IMAX+1 GOTO1129 1129 CONTINUE C C ************************************************* C ** STEP 3-- ** C ** EXTRACT THE NAME BETWEEN LOCATION IMIN ** C ** AND THE LOCATION OF THE TARGET CHARACTER. ** C ** PACK THE NAME INTO NAM(.) ** C ** COMPUTE NPACKC = THE NUMBER OF PACKED WORDS** C ** IN NAM(.) NEEDED FOR THE NAME. ** C ************************************************* C NUMCH=0 IMAX2=LOCCHA-1 IF(IMAX2.LE.0)GOTO1190 IF(IMIN.GT.IMAX2)GOTO1190 DO1130I=IMIN,IMAX2 CCCCC J=((I-IMIN)/NUMBPC)+1 J=((I-IMIN)/NUMCPW)+1 IF(IANS2(I).EQ.' ')GOTO1130 NUMCH=NUMCH+1 ISTAR3=(NUMBPC*(NUMCH-1)) - (NUMBPW*(J-1)) ISTAR3=IABS(ISTAR3) CALL DPCHEX(0,NUMBPC,IANS2(I),ISTAR3,NUMBPC,NAM(J)) 1130 CONTINUE NPACKC=J 1139 CONTINUE C 1190 CONTINUE C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUG.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFIL2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)ICHAR,IMIN,IMAX 9012 FORMAT('ICHAR,IMIN,IMAX = ',A4,2I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)IWID 9013 FORMAT('IWID = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)(IANS2(I),I=1,IWID) 9014 FORMAT('IANS2(.)--',120A1) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9015)IBUG,IERROR 9015 FORMAT('IBUG,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9016)LOCCHA,NPACKC 9016 FORMAT('LOCCHA,NPACKC = ',2I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9017)(NAM(I),I=1,10) 9017 FORMAT('NAM(.)--',10A6) CALL DPWRST('XXX','BUG ') 9090 CONTINUE C RETURN END SUBROUTINE DPFILL(IHARG,NUMARG, 1IDEFFI, 1ITEXFI, 1IBUGD2,ISUBRO,IFOUND,IERROR) C C PURPOSE--DEFINE THE FILL SWITCH (ON OR OFF) FOR C TEXT SCRIPT AND OTHER DIAGRAMMATIC FIGURES C ON A PLOT. C THE FILL SWITCH WILL BE PLACED C IN THE CHARACTER VARIABLE ITEXFI. C INPUT ARGUMENTS--IHARG (A CHARACTER VECTOR) C --NUMARG C --IDEFFI C --IBUGD2 C OUTPUT ARGUMENTS--ITEXFI C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--APRIL 1981. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IDEFFI CHARACTER*4 ITEXFI CHARACTER*4 IBUGD2 CHARACTER*4 ISUBRO CHARACTER*4 IFOUND CHARACTER*4 IERROR C C--------------------------------------------------------------------- C DIMENSION IHARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C IF(IBUGD2.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFILL--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)IDEFFI 53 FORMAT('IDEFFI = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)NUMARG 54 FORMAT('NUMARG = ',I8) CALL DPWRST('XXX','BUG ') DO55I=1,NUMARG WRITE(ICOUT,56)I,IHARG(I) 56 FORMAT('I,IHARG(I) = ',I8,2X,A4) CALL DPWRST('XXX','BUG ') 55 CONTINUE 90 CONTINUE C C ************************************ C ** TREAT THE FILL CASE ** C ************************************ C IF(NUMARG.LE.0)GOTO1161 IF(IHARG(NUMARG).EQ.'ON')GOTO1161 IF(IHARG(NUMARG).EQ.'OFF')GOTO1162 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1161 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1165 GOTO1170 C 1161 CONTINUE ITEXFI='ON' GOTO1180 C 1162 CONTINUE ITEXFI='OFF' GOTO1180 C 1165 CONTINUE ITEXFI=IDEFFI GOTO1180 C 1170 CONTINUE IERROR='YES' WRITE(ICOUT,1171) 1171 FORMAT('***** ERROR IN DPFILL--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1172) 1172 FORMAT(' ILLEGAL ENTRY FOR FILL ', 1'COMMAND.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1173) 1173 FORMAT(' TEST EXAMPLE TO DEMONSTRATE THE ', 1'PROPER FORM--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1174) 1174 FORMAT(' SUPPOSE THE THE ANALYST WISHES ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1175) 1175 FORMAT(' TO HAVE ALL TEXT AND FIGURES FILLED,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1177) 1177 FORMAT(' THEN ALLOWABLE FORMS ARE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1178) 1178 FORMAT(' FILL ON ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1179) 1179 FORMAT(' FILL ') CALL DPWRST('XXX','BUG ') GOTO9000 C 1180 CONTINUE IFOUND='YES' C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181) 1181 FORMAT('THE FILL (FOR TEXT AND FIGURES) ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1182)ITEXFI 1182 FORMAT('HAS JUST BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO9000 C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGD2.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFILL') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IBUGD2,ISUBRO,IFOUND,IERROR 9012 FORMAT('IBUGD2,ISUBRO,IFOUND,IERROR = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)IDEFFI,ITEXFI 9013 FORMAT('IDEFFI,ITEXFI = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') 9090 CONTINUE C RETURN END SUBROUTINE DPFIMA(PXMIN,PYMIN,PXMAX,PYMAX, 1ICASPL,ICAS3D, 1IMARCO) C C PURPOSE--FILL THE MARGIN REGION ON THE SCREEN C (THE REGION OUTSIDE THE FRAME LINES). C C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--83.6 C ORIGINAL VERSION (AS A SEPARATE SUBROUTINE)--MAY 1983. C UPDATED --FEBRUARY 1988. STAR PLOT C UPDATED --JUNE 1988. CALL TO GRFIRE C UPDATED --JANUARY 1989. MODIFY CALL TO GRFIRE (ALAN) C C-----NON-COMMON VARIABLES (GRAPHICS)------------------------------------------- C CHARACTER*4 ICASPL CHARACTER*4 ICAS3D C CHARACTER*4 IMARCO C CHARACTER*4 IFIG CHARACTER*4 IPATT CHARACTER*4 ICOLB CHARACTER*4 ICOLP C CHARACTER*4 ICOL C CHARACTER*4 ICASE C CHARACTER*4 IHORPA CHARACTER*4 IVERPA CHARACTER*4 IDUPPA CHARACTER*4 IDDOPA C CHARACTER*4 IPATT2 C DIMENSION PX(10) DIMENSION PY(10) C C-----COMMON---------------------------------------------------------- C INCLUDE 'DPCOGR.INC' INCLUDE 'DPCOBE.INC' C C-----COMMON VARIABLES (GENERAL)-------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C C-----START POINT----------------------------------------------------- C IF(IBUGG4.EQ.'OFF'.AND.ISUBG4.NE.'FIMA')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFIMA--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)PXMIN,PYMIN,PXMAX,PYMAX 52 FORMAT('PXMIN,PYMIN,PXMAX,PYMAX = ',4F10.5) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)ICASPL,ICAS3D 53 FORMAT('ICASPL,ICAS3D = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)IMARCO 54 FORMAT('IMARCO = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,59)IBUGG4,ISUBG4,IERRG4 59 FORMAT('IBUGG4,ISUBG4,IERRG4 = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') 90 CONTINUE C IPATT2='SOLI' C IF(ICASPL.EQ.'PIEC')GOTO9000 IF(ICASPL.EQ.'STAR')GOTO9000 IF(ICAS3D.EQ.'ON')GOTO9000 C C ********************************** C ** STEP 0-- ** C ** COPY OVER THE MARGIN COLOR ** C ********************************** C ICASE='REGI' IFIG='BOX' IPATT='SOLI' IF(IGCOLO.EQ.'OFF')IPATT='EMPT' PTHICK=0.0 PXGAP=0.0 PYGAP=0.0 ICOLB=IMARCO ICOLP=IMARCO C C ********************************************** C ** STEP 1-- ** C ** TRANSLATE THE CHARACTER REPRESENTATION ** C ** OF THE FILL COLOR ** C ** INTO A NUMERIC REPRESENTATION ** C ** WHICH CAN BE UNDERSTOOD BY THE ** C ** GRAPHICS DEVICE. ** C ********************************************** C ICOL=ICOLB CALL GRTRCO(ICASE,ICOL,JCOL) JCOLB=JCOL C C ******************************* C ** STEP 2-- ** C ** SET THE FILL COLOR ** C ** ON THE GRAPHICS DEVICE. ** C ******************************* C CALL GRSECO(ICASE,ICOL,JCOL) C C ********************************************** C ** STEP 3-- ** C ** TRANSLATE THE CHARACTER REPRESENTATION ** C ** OF THE FILL PATTERN ** C ** INTO A NUMERIC REPRESENTATION ** C ** WHICH CAN BE UNDERSTOOD BY THE ** C ** GRAPHICS DEVICE. ** C ********************************************** C CALL GRTRPA(ICASE,IPATT,PXGAP,PYGAP, 1JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2) C C ******************************* C ** STEP 4-- ** C ** SET THE FILL PATTERN ** C ** ON THE GRAPHICS DEVICE. ** C ******************************* C CALL GRSEPA(ICASE,IPATT,PXGAP,PYGAP, 1JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2) C C ********************************************** C ** STEP 5-- ** C ** TRANSLATE THE CHARACTER REPRESENTATION ** C ** OF THE PATTERN COLOR ** C ** INTO A NUMERIC REPRESENTATION ** C ** WHICH CAN BE UNDERSTOOD BY THE ** C ** GRAPHICS DEVICE. ** C ********************************************** C ICOL=ICOLP CALL GRTRCO(ICASE,ICOL,JCOL) JCOLP=JCOL C C ******************************* C ** STEP 6-- ** C ** SET THE PATTERN COLOR ** C ** ON THE GRAPHICS DEVICE. ** C ******************************* C CALL GRSECO(ICASE,ICOL,JCOL) C C ********************************************** C ** STEP 7-- ** C ** TRANSLATE THE DESIRED ** C ** LINE THICKNESS (OF THE PATTERN) ** C ** INTO A NUMERIC REPRESENTATION ** C ** WHICH CAN BE UNDERSTOOD BY THE ** C ** GRAPHICS DEVICE. ** C ********************************************** C CALL GRTRTH(ICASE,PTHICK,JTHICK,PTHIC2) C C ******************************* C ** STEP 8-- ** C ** SET THE LINE THICKNESS ** C ** (OF THE PATTERN) ** C ** ON THE GRAPHICS DEVICE. ** C ******************************* C CALL GRSETH(ICASE,PTHICK,JTHICK,PTHIC2) C C *********************************** C ** STEP 11-- ** C ** FILL THE REGION ** C ** BELOW THE BOTTOM FRAME LINE ** C *********************************** C PX(1)=0.0 PY(1)=0.0 PX(2)=100.0 PY(2)=0.0 PX(3)=100.0 PY(3)=PYMIN PX(4)=0.0 PY(4)=PYMIN NP=4 CALL GRFIRE(PX,PY,NP,IFIG, 1IPATT,JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2, 1PTHICK,JTHICK,PTHIC2, 1ICOLB,JCOLB,ICOLP,JCOLP, 1IPATT2) C C ******************************************** C ** STEP 12-- ** C ** FILL THE REGION ** C ** TO THE RIGHT OF THE RIGHT FRAME LINE ** C ******************************************** C PX(1)=PXMAX PY(1)=PYMIN PX(2)=100.0 PY(2)=PYMIN PX(3)=100.0 PY(3)=100.0 PX(4)=PXMAX PY(4)=100.0 NP=4 CALL GRFIRE(PX,PY,NP,IFIG, 1IPATT,JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2, 1PTHICK,JTHICK,PTHIC2, 1ICOLB,JCOLB,ICOLP,JCOLP, 1IPATT2) C C ******************************** C ** STEP 13-- ** C ** FILL THE REGION ** C ** ABOVE THE TOP FRAME LINE ** C ******************************** C PX(1)=0.0 PY(1)=PYMAX PX(2)=PXMAX PY(2)=PYMAX PX(3)=PXMAX PY(3)=100.0 PX(4)=0.0 PY(4)=100.0 NP=4 CALL GRFIRE(PX,PY,NP,IFIG, 1IPATT,JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2, 1PTHICK,JTHICK,PTHIC2, 1ICOLB,JCOLB,ICOLP,JCOLP, 1IPATT2) C C ****************************************** C ** STEP 14-- ** C ** FILL THE REGION ** C ** TO THE LEFT OF THE LEFT FRAME LINE ** C ****************************************** C PX(1)=0.0 PY(1)=PYMIN PX(2)=PXMIN PY(2)=PYMIN PX(3)=PXMIN PY(3)=PYMAX PX(4)=0.0 PY(4)=PYMAX NP=4 CALL GRFIRE(PX,PY,NP,IFIG, 1IPATT,JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2, 1PTHICK,JTHICK,PTHIC2, 1ICOLB,JCOLB,ICOLP,JCOLP, 1IPATT2) C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGG4.EQ.'OFF'.AND.ISUBG4.NE.'FIMA')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFIMA--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)PXMIN,PYMIN,PXMAX,PYMAX 9012 FORMAT('PXMIN,PYMIN,PXMAX,PYMAX = ',4F10.5) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)ICASPL,ICAS3D 9013 FORMAT('ICASPL,ICAS3D = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)IMARCO 9014 FORMAT('IMARCO = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9015)IFIG,IPATT,ICOLB,ICOLP 9015 FORMAT('IFIG,IPATT,ICOLB,ICOLP = ',A4,2X,A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9019)IBUGG4,ISUBG4,IERRG4 9019 FORMAT('IBUGG4,ISUBG4,IERRG4 = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') 9090 CONTINUE C RETURN END SUBROUTINE DPFIPW(IHARG,IARGT,ARG,NUMARG,DEFFPW, 1FITPOW,IFOUND,IERROR) C C PURPOSE--DEFINE THE POWER IN THE FIT CRITERION C IN THE FIT COMMAND (AND THE PRE-FIT COMMAND). C THE SPECIFIED FIT POWER VALUE WILL BE PLACED C IN THE FLOATING POINT VARIABLE FITPOW. C NOTE--POWER = 2 YIELDS THE LEAST SQUARES CRITERION. C --POWER = 1 YIELDS THE L1 CRITERION. C --POWER = INFINITY YIELDS THE MINIMAX CRITERION. C INPUT ARGUMENTS--IHARG (A HOLLERITH VECTOR) C --IARGT (A HOLLERITH VECTOR) C --ARG (A FLOATING POINT VECTOR) C --NUMARG (AN INTEGER VARIABLE) C --DEFFPW (A FLOATING POINT VARIABLE) C OUTPUT ARGUMENTS--FITPOW (A FLOATING POINT VARIABLE) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--NOVEMBER 1980. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IARGT CHARACTER*4 IFOUND CHARACTER*4 IERROR C C--------------------------------------------------------------------- C DIMENSION IHARG(*) DIMENSION IARGT(*) DIMENSION ARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C IF(NUMARG.EQ.0)GOTO1199 IF(NUMARG.GE.2.AND.IHARG(2).EQ.'=')GOTO1199 IF(NUMARG.GE.1.AND.IHARG(1).EQ.'POWE')GOTO1110 GOTO1199 C 1110 CONTINUE IF(IHARG(NUMARG).EQ.'POWE')GOTO1150 IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1150 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150 IF(IARGT(NUMARG).EQ.'NUMB')GOTO1160 GOTO1120 C 1120 CONTINUE IERROR='YES' WRITE(ICOUT,1121) 1121 FORMAT('***** ERROR IN DPFIPW--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1122) 1122 FORMAT(' ILLEGAL FORM FOR FIT POWER ', 1'COMMAND.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1124) 1124 FORMAT(' TEST EXAMPLE TO DEMONSTRATE THE ', 1'PROPER FORM--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1125) 1125 FORMAT(' SUPPOSE THE THE ANALYST WILL BE CARRYING OUT ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1126) 1126 FORMAT(' A FIT , ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1127) 1127 FORMAT(' AND SUPPOSE THE ANALYST WISHES TO USE ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1128) 1128 FORMAT(' POWER OF 1.5 IN THE FIT CRITERION; ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1130) 1130 FORMAT(' THEN THE ALLOWABLE FORM IS--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1131) 1131 FORMAT(' FIT POWER 1.5 ') CALL DPWRST('XXX','BUG ') GOTO1199 C 1150 CONTINUE HOLD=DEFFPW GOTO1180 C 1160 CONTINUE HOLD=ARG(NUMARG) GOTO1180 C 1180 CONTINUE IFOUND='YES' FITPOW=HOLD C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181)FITPOW 1181 FORMAT('THE FIT POWER HAS JUST BEEN SET TO ', 1E15.7) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO1199 C 1199 CONTINUE RETURN END SUBROUTINE DPFIRE(PX,PY,NP, 1IFIG,IPATT,PTHICK,PXGAP,PYGAP,ICOLF,ICOLP, 1IPATT2) C ABOVE LINE ADDED SEPTEMBER, 1987 C CONTAINS THE PATTERN FOR THE LINE (I.E., SOLID DASH, ETC.) C C C PURPOSE--FOR A GENERAL GRAPHICS DEVICE, C FILL THE REGION C DEFINED BY THE VERTICES AS GIVEN C IN THE PX(.) AND PY(.) VECTORS. C THIS REGION HAS SPECIFIED FILL PATTERN, C BACKGROUND COLOR, PATTERN LINE THICKNESS, C PATTERN LINE GAPCING, AND PATTERN COLOR. C C NOTE--THE COORDINATES IN (PX(.),PY(.)) ARE IN C STANDARDIZED (0.0 TO 100.0) UNITS. C NOTE--THERE ARE NP SUCH COORDINATE PAIRS. C (BUT NP SHOULD ALWAYS = 2 FOR THIS SUBROUTINE). C C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--83.6 C ORIGINAL VERSION (AS A SEPARATE SUBROUTINE)--MAY 1983. C UPDATED --JANUARY 1989. ADDED PARAMETER TO CALL LIST (ALAN) C UPDATED --JANUARY 1989. MODIFY CALL TO GRFIRE (ALAN) C UPDATED --JANUARY 1989. BUGS FOR BAR PLOT COMMAND (ALAN) C UPDATED --MARCH 1990. MOVE CALL TO SEPA BEFORE COLOR C ROUTINES. EITHER SET PATTERN C OR FILL COLOR, BUT NOT BOTH (PATTERN C COLOR WAS OVER-RIDING FILL COLOR) C C-----NON-COMMON VARIABLES (GRAPHICS)------------------------------------------- C CHARACTER*4 IFIG CHARACTER*4 IPATT CHARACTER*4 ICOL CHARACTER*4 ICOLF CHARACTER*4 ICOLP C CHARACTER*4 ICASE C CHARACTER*4 IHORPA CHARACTER*4 IVERPA CHARACTER*4 IDUPPA CHARACTER*4 IDDOPA C CHARACTER*4 IPATT2 C DIMENSION PX(*) DIMENSION PY(*) C C-----COMMON---------------------------------------------------------- C INCLUDE 'DPCOGR.INC' INCLUDE 'DPCOBE.INC' C C-----COMMON VARIABLES (GENERAL)-------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C C-----START POINT----------------------------------------------------- C IF(IBUGG4.EQ.'OFF'.AND.ISUBG4.NE.'FIRE')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFIRE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)NP 54 FORMAT('NP = ',I8) CALL DPWRST('XXX','BUG ') DO55I=1,NP WRITE(ICOUT,56)PX(I),PY(I) 56 FORMAT('PX(I),PY(I) = ',E15.7,E15.7) CALL DPWRST('XXX','BUG ') 55 CONTINUE WRITE(ICOUT,61)IFIG 61 FORMAT('IFIG = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,62)IPATT 62 FORMAT('IPATT = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,63)PTHICK 63 FORMAT('PTHICK = ',E15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,64)PXGAP,PYGAP 64 FORMAT('PXGAP,PYGAP = ',2E15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,65)ICOLF 65 FORMAT('ICOLF = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,66)ICOLP 66 FORMAT('ICOLP = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,69)IBUGG4,ISUBG4,IERRG4 69 FORMAT('IBUGG4,ISUBG4,IERRG4 = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') 90 CONTINUE C ICASE='REGI' C FOLLOWING BLOCK MOVED MARCH, 1990. PATTERN COLOR WAS C OVERRIDING FILL COLOR. DETERMINE WHICH ONE TO CALL C (EITHER PATTERN OR FILL, BUT NOT BOTH) C C ********************************************** C ** STEP X-- ** C ** TRANSLATE THE CHARACTER REPRESENTATION ** C ** OF THE FILL PATTERN ** C ** INTO A NUMERIC REPRESENTATION ** C ** WHICH CAN BE UNDERSTOOD BY THE ** C ** GRAPHICS DEVICE. ** C ********************************************** C CALL GRTRPA(ICASE,IPATT,PXGAP,PYGAP, 1JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2) C C ******************************* C ** STEP X-- ** C ** SET THE FILL PATTERN ** C ** ON THE GRAPHICS DEVICE. ** C ******************************* C CALL GRSEPA(ICASE,IPATT,PXGAP,PYGAP, 1JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2) C IF(IPATT.EQ.'SOLI')GOTO1099 IF(IPATT.EQ.'FILL')GOTO1099 GOTO1199 1099 CONTINUE C C ********************************************** C ** STEP 1-- ** C ** TRANSLATE THE CHARACTER REPRESENTATION ** C ** OF THE FILL COLOR ** C ** INTO A NUMERIC REPRESENTATION ** C ** WHICH CAN BE UNDERSTOOD BY THE ** C ** GRAPHICS DEVICE. ** C ********************************************** C ICOL=ICOLF CALL GRTRCO(ICASE,ICOL,JCOL) JCOLF=JCOL C C ******************************* C ** STEP 2-- ** C ** SET THE FILL COLOR ** C ** ON THE GRAPHICS DEVICE. ** C ******************************* C CALL GRSECO(ICASE,ICOL,JCOL) C FOLLOWING LINE ADDED MARCH 1990. GOTO1999 C C ********************************************** C ** STEP 3-- ** C ** TRANSLATE THE CHARACTER REPRESENTATION ** C ** OF THE FILL PATTERN ** C ** INTO A NUMERIC REPRESENTATION ** C ** WHICH CAN BE UNDERSTOOD BY THE ** C ** GRAPHICS DEVICE. ** C ********************************************** C CCCCC CALL GRTRPA(ICASE,IPATT,PXGAP,PYGAP, CCCCC1JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2) C C ******************************* C ** STEP 4-- ** C ** SET THE FILL PATTERN ** C ** ON THE GRAPHICS DEVICE. ** C ******************************* C CCCCC CALL GRSEPA(ICASE,IPATT,PXGAP,PYGAP, CCCCC1JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2) C C ********************************************** C ** STEP 5-- ** C ** TRANSLATE THE CHARACTER REPRESENTATION ** C ** OF THE PATTERN COLOR ** C ** INTO A NUMERIC REPRESENTATION ** C ** WHICH CAN BE UNDERSTOOD BY THE ** C ** GRAPHICS DEVICE. ** C ********************************************** C CCCCC FOLLOWING LINE ADDED MARCH 1990. 1199 CONTINUE ICOL=ICOLP CALL GRTRCO(ICASE,ICOL,JCOL) JCOLP=JCOL C C ******************************* C ** STEP 6-- ** C ** SET THE PATTERN COLOR ** C ** ON THE GRAPHICS DEVICE. ** C ******************************* C CALL GRSECO(ICASE,ICOL,JCOL) CCCCC FOLLOWING LINE ADDED MARCH 1990. 1999 CONTINUE C C ********************************************** C ** STEP 7-- ** C ** TRANSLATE THE DESIRED ** C ** LINE THICKNESS (OF THE PATTERN) ** C ** INTO A NUMERIC REPRESENTATION ** C ** WHICH CAN BE UNDERSTOOD BY THE ** C ** GRAPHICS DEVICE. ** C ********************************************** C CALL GRTRTH(ICASE,PTHICK,JTHICK,PTHIC2) C C ******************************* C ** STEP 8-- ** C ** SET THE LINE THICKNESS ** C ** (OF THE PATTERN) ** C ** ON THE GRAPHICS DEVICE. ** C ******************************* C CALL GRSETH(ICASE,PTHICK,JTHICK,PTHIC2) C C ********************* C ** STEP 11-- ** C ** FILL THE BOX ** C ********************* C CALL GRFIRE(PX,PY,NP,IFIG, 1IPATT,JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXGAP2,PYGAP2, 1PTHICK,JTHICK,PTHIC2, 1ICOLF,JCOLF,ICOLP,JCOLP, 1IPATT2) C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGG4.EQ.'OFF'.AND.ISUBG4.NE.'FIRE')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFIRE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)NP 9014 FORMAT('NP = ',I8) CALL DPWRST('XXX','BUG ') DO9015I=1,NP WRITE(ICOUT,9016)PX(I),PY(I) 9016 FORMAT('PX(I),PY(I) = ',E15.7,E15.7) CALL DPWRST('XXX','BUG ') 9015 CONTINUE WRITE(ICOUT,9021)IFIG 9021 FORMAT('IFIG = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9022)IPATT,JPATT 9022 FORMAT('IPATT,JPATT = ',A4,I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9023)PTHICK,JTHICK,PTHIC2 9023 FORMAT('PTHICK,JTHICK,PTHIC2 = ',E15.7,I8,E15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9024)PXGAP,PYGAP 9024 FORMAT('PXGAP,PYGAP = ',2E15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9025)ICOLF,JCOLF 9025 FORMAT('ICOLF,JCOLF = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9026)ICOLP,JCOLP 9026 FORMAT('ICOLP,JCOLP = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9029)IBUGG4,ISUBG4,IERRG4 9029 FORMAT('IBUGG4,ISUBG4,IERRG4 = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') 9090 CONTINUE C RETURN END SUBROUTINE DPFISD(IHARG,IARGT,ARG,NUMARG,DEFFSD, 1FITSD,IFOUND,IERROR) C C PURPOSE--DEFINE THE LOWER BOUND FOR THE FIT STANDARD DEVIATION. C THE RESIDUAL STANDARD DEVIATION AFTER EACH C ITERATION OF A FIT WILL BE COMPARED C TO THE SPECIFIED FIT STANDARD DEVIATION. C THE SPECIFIED FIT STANDARD DEVIATION VALUE WILL BE PLACED C IN THE FLOATING POINT VARIABLE FITSD. C THE RESIDUAL STANDARD DEVIATION WILL BE C COMPARED TO THE FIT STANDARD DEVIATION VALUE. C INPUT ARGUMENTS--IHARG (A HOLLERITH VECTOR) C --IARGT (A HOLLERITH VECTOR) C --ARG (A FLOATING POINT VECTOR) C --NUMARG (AN INTEGER VARIABLE) C --DEFFSD (A FLOATING POINT VARIABLE) C OUTPUT ARGUMENTS--FITSD (A FLOATING POINT VARIABLE) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--NOVEMBER 1980. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IARGT CHARACTER*4 IFOUND CHARACTER*4 IERROR C C--------------------------------------------------------------------- C DIMENSION IHARG(*) DIMENSION IARGT(*) DIMENSION ARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C IF(NUMARG.EQ.0)GOTO1199 IF(NUMARG.GE.3.AND.IHARG(3).EQ.'=')GOTO1199 IF(NUMARG.GE.2.AND.IHARG(1).EQ.'STAN'.AND. 1IHARG(2).EQ.'DEVI')GOTO1110 GOTO1199 C 1110 CONTINUE IF(IHARG(NUMARG).EQ.'DEVI')GOTO1150 IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1150 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150 IF(IARGT(NUMARG).EQ.'NUMB')GOTO1160 GOTO1120 C 1120 CONTINUE IERROR='YES' WRITE(ICOUT,1121) 1121 FORMAT('***** ERROR IN DPFISD--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1122) 1122 FORMAT(' ILLEGAL FORM FOR FIT STANDARD DEVIATION ', 1'COMMAND.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1124) 1124 FORMAT(' TEST EXAMPLE TO DEMONSTRATE THE ', 1'PROPER FORM--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1125) 1125 FORMAT(' SUPPOSE THE THE ANALYST WILL BE CARRYING OUT ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1126) 1126 FORMAT(' A NON-LINEAR FIT , ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1127) 1127 FORMAT(' AND SUPPOSE THE ANALYST WISHES TO TERMINATE ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1128) 1128 FORMAT(' THE FIT ITERATIONS WHENEVER THE RESIDUAL ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1129) 1129 FORMAT(' STANDARD DEVIATION REACHES .0001 OR SMALLER; ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1130) 1130 FORMAT(' THEN THE ALLOWABLE FORM IS--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1131) 1131 FORMAT(' FIT STANDARD DEVIATION .0001 ') CALL DPWRST('XXX','BUG ') GOTO1199 C 1150 CONTINUE HOLD=DEFFSD GOTO1180 C 1160 CONTINUE HOLD=ARG(NUMARG) GOTO1180 C 1180 CONTINUE IFOUND='YES' FITSD=HOLD C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181)FITSD 1181 FORMAT('THE FIT STANDARD DEVIATION HAS JUST BEEN SET TO ', 1E15.7) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO1199 C 1199 CONTINUE RETURN END SUBROUTINE DPFITH(IHARG,IARGT,ARG,NUMARG,PDEFFT,MAXFIL,PFILTH, 1IBUGP2,IFOUND,IERROR) C C PURPOSE--DEFINE THE FILL THICKNESSES. C THESE ARE LOCATED IN THE VECTOR PFILTH(.). C INPUT ARGUMENTS--IHARG (A CHARACTER VECTOR) C --IARGT (A CHARACTER VECTOR) C --ARG C --NUMARG C --PDEFFT C --MAXFIL C --IBUGP2 ('ON' OR 'OFF' ) C OUTPUT ARGUMENTS--PFILTH (A FLOATING POINT VECTOR) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--DECEMBER 1983. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG C CHARACTER*4 IBUGP2 CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IHOLD1 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C DIMENSION IHARG(*) DIMENSION IARGT(*) DIMENSION ARG(*) DIMENSION PFILTH(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C NUMFIL=0 IHOLD1='-999' HOLD1=-999.0 HOLD2=-999.0 C IF(IBUGP2.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFITH--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)IBUGP2,IFOUND,IERROR 52 FORMAT('IBUGP2,IFOUND,IERROR = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)MAXFIL,NUMFIL 53 FORMAT('MAXFIL,NUMFIL = ',I8,I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)IHOLD1,HOLD1,HOLD2 54 FORMAT('IHOLD1,HOLD1,HOLD2 = ',A4,2E15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,55)PDEFFT 55 FORMAT('PDEFFT = ',E15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,60)NUMARG 60 FORMAT('NUMARG = ',I8) CALL DPWRST('XXX','BUG ') DO65I=1,NUMARG WRITE(ICOUT,66)IHARG(I),IARGT(I),ARG(I) 66 FORMAT('IHARG(I),IARGT(I),ARG(I) = ',A4,2X,A4,I8) CALL DPWRST('XXX','BUG ') 65 CONTINUE WRITE(ICOUT,70)PFILTH(1) 70 FORMAT('PFILTH(1) = ',E15.7) CALL DPWRST('XXX','BUG ') DO75I=1,10 WRITE(ICOUT,76)I,PFILTH(I) 76 FORMAT('I,PFILTH(I) = ',I8,2X,E15.7) CALL DPWRST('XXX','BUG ') 75 CONTINUE 90 CONTINUE C C ************************************** C ** STEP 1-- ** C ** BRANCH TO THE APPROPRIATE CASE ** C ************************************** C ISTEPN='1' IF(IBUGP2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(NUMARG.LE.0)GOTO9000 IF(NUMARG.EQ.1)GOTO1110 IF(NUMARG.EQ.2)GOTO1120 IF(NUMARG.EQ.3)GOTO1130 GOTO1140 C 1110 CONTINUE GOTO1200 C 1120 CONTINUE IF(IHARG(2).EQ.'ALL')IHOLD1=' ' IF(IHARG(2).EQ.'ALL')HOLD1=PDEFFT IF(IHARG(2).EQ.'ALL')GOTO1300 GOTO1200 C 1130 CONTINUE IF(IHARG(2).EQ.'ALL')IHOLD1=IHARG(3) IF(IHARG(2).EQ.'ALL')HOLD1=ARG(3) IF(IHARG(2).EQ.'ALL')GOTO1300 IF(IHARG(3).EQ.'ALL')IHOLD1=IHARG(2) IF(IHARG(3).EQ.'ALL')HOLD1=ARG(2) IF(IHARG(3).EQ.'ALL')GOTO1300 GOTO1200 C 1140 CONTINUE GOTO1200 C C ************************************************* C ** STEP 2-- ** C ** TREAT THE INDIVIDUAL SPECIFICATIONS CASE ** C ************************************************* C 1200 CONTINUE ISTEPN='2' IF(IBUGP2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(NUMARG.LE.1)GOTO1210 GOTO1220 C 1210 CONTINUE NUMFIL=1 PFILTH(1)=PDEFFT GOTO1270 C 1220 CONTINUE NUMFIL=NUMARG-1 IF(NUMFIL.GT.MAXFIL)NUMFIL=MAXFIL DO1225I=1,NUMFIL J=I+1 IHOLD1=IHARG(J) HOLD1=ARG(J) HOLD2=HOLD1 IF(IHOLD1.EQ.'ON')HOLD2=PDEFFT IF(IHOLD1.EQ.'OFF')HOLD2=PDEFFT IF(IHOLD1.EQ.'AUTO')HOLD2=PDEFFT IF(IHOLD1.EQ.'DEFA')HOLD2=PDEFFT PFILTH(I)=HOLD2 1225 CONTINUE GOTO1270 C 1270 CONTINUE IF(IFEEDB.EQ.'OFF')GOTO1279 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') DO1278I=1,NUMFIL WRITE(ICOUT,1276)I,PFILTH(I) 1276 FORMAT('FILL THICKNESS ',I6,' HAS JUST BEEN SET TO ', 1E15.7) CALL DPWRST('XXX','BUG ') 1278 CONTINUE 1279 CONTINUE IFOUND='YES' GOTO9000 C C ************************** C ** STEP 2-- ** C ** TREAT THE ALL CASE ** C ************************** C 1300 CONTINUE ISTEPN='3' IF(IBUGP2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C NUMFIL=MAXFIL HOLD2=HOLD1 IF(IHOLD1.EQ.'ON')HOLD2=PDEFFT IF(IHOLD1.EQ.'OFF')HOLD2=PDEFFT IF(IHOLD1.EQ.'AUTO')HOLD2=PDEFFT IF(IHOLD1.EQ.'DEFA')HOLD2=PDEFFT DO1315I=1,NUMFIL PFILTH(I)=HOLD2 1315 CONTINUE GOTO1370 C 1370 CONTINUE IF(IFEEDB.EQ.'OFF')GOTO1319 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') I=1 WRITE(ICOUT,1316)PFILTH(I) 1316 FORMAT('ALL FILL THICKNESSES HAVE JUST BEEN SET TO ', 1A4) CALL DPWRST('XXX','BUG ') 1319 CONTINUE IFOUND='YES' GOTO9000 C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGP2.EQ.'OFF')GOTO9090 WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFITH--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IBUGP2,IFOUND,IERROR 9012 FORMAT('IBUGP2,IFOUND,IERROR = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)MAXFIL,NUMFIL 9013 FORMAT('MAXFIL,NUMFIL = ',I8,I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)IHOLD1,HOLD1,HOLD2 9014 FORMAT('IHOLD1,HOLD1,HOLD2 = ',A4,2E15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9015)PDEFFT 9015 FORMAT('PDEFFT = ',E15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9020)NUMARG 9020 FORMAT('NUMARG = ',I8) CALL DPWRST('XXX','BUG ') DO9025I=1,NUMARG WRITE(ICOUT,9026)IHARG(I),IARGT(I),ARG(I) 9026 FORMAT('IHARG(I),IARGT(I),ARG(I) = ',A4,2X,A4,I8) CALL DPWRST('XXX','BUG ') 9025 CONTINUE WRITE(ICOUT,9030)PFILTH(1) 9030 FORMAT('PFILTH(1) = ',E15.7) CALL DPWRST('XXX','BUG ') DO9035I=1,10 WRITE(ICOUT,9036)I,PFILTH(I) 9036 FORMAT('I,PFILTH(I) = ',I8,2X,E15.7) CALL DPWRST('XXX','BUG ') 9035 CONTINUE 9090 CONTINUE C RETURN END SUBROUTINE DPFIWI(IHARG,IARGT,ARG,NUMARG,DEFFW, 1FILWID,IFOUND,IERROR) C C PURPOSE--DEFINE THE WIDTH (USUALLY INTEGER) OF THE FILTER C FOR A SMOOTHING OPERATION C FOR USE IN THE SMOOTH COMMAND. C THE SPECIFIED WIDTH WILL BE PLACED C IN THE FLOATING POINT VARIABLE FILWID. C INPUT ARGUMENTS--IHARG (A HOLLERITH VECTOR) C --IARGT (A HOLLERITH VECTOR) C --ARG (A HOLLERITH VECTOR) C --NUMARG (AN INTEGER VARIABLE) C --DEFFW (A FLOATING POINT VARIABLE) C OUTPUT ARGUMENTS--FILWID (A FLOATING POINT INTEGER VARIABLE) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--MAY 1981. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IARGT CHARACTER*4 IFOUND CHARACTER*4 IERROR C C--------------------------------------------------------------------- C DIMENSION IHARG(*) DIMENSION IARGT(*) DIMENSION ARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C 1110 CONTINUE IF(NUMARG.LE.0)GOTO1150 IF(NUMARG.EQ.1.AND.IHARG(1).EQ.'WIDT')GOTO1150 IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1150 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150 IF(IARGT(NUMARG).EQ.'NUMB')GOTO1160 GOTO1120 C 1120 CONTINUE IERROR='YES' WRITE(ICOUT,1121) 1121 FORMAT('***** ERROR IN DPFIWI--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1122) 1122 FORMAT(' ILLEGAL FORM FOR FILTER WIDTH ', 1'COMMAND.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1124) 1124 FORMAT(' TEST EXAMPLE TO DEMONSTRATE THE ', 1'PROPER FORM--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1125) 1125 FORMAT(' SUPPOSE THE THE ANALYST WISHES ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1126) 1126 FORMAT(' TO SET THE FILTER WIDTH = 7 OBSERVATIONS ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1127) 1127 FORMAT(' FOR SOME SMOOTHING OPERATION,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1128) 1128 FORMAT(' THEN AN ALLOWABLE FORM IS--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1129) 1129 FORMAT(' FILTER WIDTH 7 ') CALL DPWRST('XXX','BUG ') GOTO1199 C 1150 CONTINUE HOLD=DEFFW GOTO1180 C 1160 CONTINUE HOLD=ARG(NUMARG) GOTO1180 C 1180 CONTINUE IFOUND='YES' FILWID=HOLD C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181)FILWID 1181 FORMAT('THE FILTER WIDTH HAS JUST BEEN SET TO ', 1E15.7) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO1199 C 1199 CONTINUE RETURN END SUBROUTINE DPFLTE(YTEMP,XTEMP,MAXNXT, 1IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR) C C PURPOSE--CARRY OUT F TEST FOR SHIFT IN LOCATION C EXAMPLE--F LOCATION TEST Y X C REFERENCE--XX C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--97/9 C ORIGINAL VERSION--SEPTEMBER 1997. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IBUGA2 CHARACTER*4 IBUGA3 CHARACTER*4 IBUGQ CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IHWUSE CHARACTER*4 MESSAG CHARACTER*4 ICASEQ C CHARACTER*4 IH11 CHARACTER*4 IH12 CHARACTER*4 IH21 CHARACTER*4 IH22 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C CHARACTER*4 IUSE1 CHARACTER*4 IUSE2 C CCCCC MAY 1995. ADD FOLLOWING DECLARATIONS CHARACTER*4 IH CHARACTER*4 IH2 CHARACTER*4 IHOST1 CHARACTER*4 ISUBN0 C C--------------------------------------------------------------------- C DIMENSION YTEMP(*) DIMENSION XTEMP(*) C C-----COMMON---------------------------------------------------------- C INCLUDE 'DPCOPA.INC' C DIMENSION YMEAN(MAXOBV) DIMENSION YBARIV(MAXOBV) DIMENSION DTAG(MAXOBV) C INCLUDE 'DPCOZZ.INC' EQUIVALENCE(GARBAG(IGARB1),YBARIV(1)) EQUIVALENCE(GARBAG(IGARB2),DTAG(1)) EQUIVALENCE(GARBAG(IGARB3),YMEAN(1)) C INCLUDE 'DPCOHK.INC' INCLUDE 'DPCOSU.INC' INCLUDE 'DPCODA.INC' C C-----COMMON VARIABLES (GENERAL)-------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C ISUBN1='DPFL' ISUBN2='TE ' C MAXCP1=MAXCOL+1 MAXCP2=MAXCOL+2 MAXCP3=MAXCOL+3 MAXCP4=MAXCOL+4 MAXCP5=MAXCOL+5 MAXCP6=MAXCOL+6 C IFOUND='NO' IERROR='NO' C N1=(-999) N2=(-999) C NS1=(-999) NS2=(-999) C IUSE1='-999' IUSE2='-999' C ILOCV=(-999) C VALUE1=(-999.0) VALUE2=(-999.0) C ICOL1=(-999) ICOL2=(-999) C MINN2=2 C IFOUND='YES' C NLEFT=0 C ICASEQ='UNKN' C C ************************************** C ** TREAT THE F LOCATION TEST CASE ** C ************************************** C IF(IBUGA2.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFLTE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)IBUGA2,IBUGA3 52 FORMAT('IBUGA2,IBUGA3 = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)IBUGQ 53 FORMAT('IBUGQ = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,55)MAXNXT 55 FORMAT('MAXNXT = ',I8) CALL DPWRST('XXX','BUG ') 90 CONTINUE C C ******************************************************* C ** STEP 2-- ** C ** CHECK FOR THE PROPER NUMBER OF INPUT ARGUMENTS. ** C ******************************************************* C ISTEPN='2' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C MINNA=2 MAXNA=100 CALL CHECKA(NUMARG,MINNA,MAXNA,IANS,IWIDTH,ISUBN1,ISUBN2, 1IERROR) IF(IERROR.EQ.'YES')GOTO9000 C C **************************************** C ** STEP 11-- ** C ** CHECK THE VALIDITY OF ARGUMENT 1 ** C ** (THIS SHULD BE A VARIABLE.) ** C **************************************** C ISTEPN='11' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IH11=IHARG(1) IH12=IHARG2(1) IHWUSE='V' MESSAG='YES' CALL CHECKN(IH11,IH12,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) C IF(IERROR.EQ.'YES')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1141) 1141 FORMAT('***** ERROR IN DPFLTE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1142) 1142 FORMAT(' FOR F LOCATION TEST,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1145) 1145 FORMAT(' BOTH ARGUMENTS MUST BE A VARIABLE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1146) 1146 FORMAT(' (AS OPPOSED TO A PARAMETER OR FUNCTION).') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1147) 1147 FORMAT(' ARGUMENT 1 WAS NOT A VARIABLE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1148) 1148 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,1150)(IANS(I),I=1,IWIDTH) 1150 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 ENDIF C IUSE1=IUSE(ILOCV) ICOL1=IVALUE(ILOCV) N1=IN(ILOCV) 1190 CONTINUE C C ******************************************************* C ** STEP 12-- ** C ** IF ARGUMENT 1 IS A VARIABLE, ** C ** CHECK THAT THE INPUT NUMBER OF OBSERVATIONS (N1) ** C ** FOR ARGUMENT 1 IS 2 OR MORE. ** C ******************************************************* C ISTEPN='12' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IUSE1.NE.'V')GOTO1290 IF(N1.GE.MINN2)GOTO1290 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1211) 1211 FORMAT('***** ERROR IN DPFLTE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1212) 1212 FORMAT(' THE INPUT NUMBER OF OBSERVATIONS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1213) 1213 FORMAT(' (FOR WHICH F LOCATION TEST ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1214) 1214 FORMAT(' WAS TO HAVE BEEN CARRIED OUT)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1215)MINN2 1215 FORMAT(' MUST BE ',I8,' OR LARGER;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1216) 1216 FORMAT(' SUCH WAS NOT THE CASE HERE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1217)IH11,IH12 1217 FORMAT(' FOR VARIABLE ',A4,A4,' WHICH HAD') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1218)N1 1218 FORMAT(' NUMBER OF OBSERVATIONS = ',I8,';') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1219) 1219 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,1220)(IANS(I),I=1,IWIDTH) 1220 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 1290 CONTINUE C C **************************************** C ** STEP 21-- ** C ** CHECK THE VALIDITY OF ARGUMENT 2 ** C ** (THIS SHOULD ALSO BE A VARIABLE) ** C **************************************** C ISTEPN='21' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IH21=IHARG(2) IH22=IHARG2(2) IHWUSE='V' MESSAG='YES' CALL CHECKN(IH21,IH22,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) C IF(IERROR.EQ.'YES')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2141) 2141 FORMAT('***** ERROR IN DPFLTE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2142) 2142 FORMAT(' FOR F LOCATION TEST,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2145) 2145 FORMAT(' BOTH ARGUMENTS MUST BE A VARIABLE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2146) 2146 FORMAT(' (AS OPPOSED TO A PARAMETER OR FUNCTION).') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2147) 2147 FORMAT(' ARGUMENT 2 WAS NOT A VARIABLE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2148) 2148 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,2150)(IANS(I),I=1,IWIDTH) 2150 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 ENDIF C IUSE2=IUSE(ILOCV) ICOL2=IVALUE(ILOCV) N2=IN(ILOCV) 2190 CONTINUE C C ******************************************************** C ** STEP 22-- ** C ** IF ARGUMENT 2 IS A VARIABLE, ** C ** CHECK THAT THE INPUT NUMBER OF OBSERVATIONS (N2) ** C ** FOR ARGUMENT 2 IS THE SAME AS ARGUMENT 1. ** C ******************************************************** C ISTEPN='22' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IUSE2.NE.'V')GOTO2290 IF(N2.EQ.N1)GOTO2290 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2211) 2211 FORMAT('***** ERROR IN DPFLTE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2212) 2212 FORMAT(' THE INPUT NUMBER OF OBSERVATIONS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2213) 2213 FORMAT(' (FOR VARIABLE 2 OF F LOCATION TEST ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2214) 2214 FORMAT(' MUST BE THE SAME AS VARIABLE 1') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2215) 2215 FORMAT(' SUCH WAS NOT THE CASE HERE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2216)N1,N2 2216 FORMAT(' N1 = ',I8,' N2 = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2219) 2219 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,2220)(IANS(I),I=1,IWIDTH) 2220 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 2290 CONTINUE C C ***************************************** C ** STEP 40-- ** C ** CHECK TO SEE THE TYPE CASE-- ** C ** 1) UNQUALIFIED (THAT IS, FULL); ** C ** 2) SUBSET/EXCEPT; OR ** C ** 3) FOR. ** C ***************************************** C ISTEPN='40' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ICASEQ='FULL' ILOCQ=NUMARG+1 IF(NUMARG.LT.1)GOTO4090 DO4000J=1,NUMARG J1=J IF(IHARG(J).EQ.'SUBS'.AND.IHARG2(J).EQ.'ET ') GOTO4010 IF(IHARG(J).EQ.'EXCE'.AND.IHARG2(J).EQ.'PT ') GOTO4010 IF(IHARG(J).EQ.'FOR '.AND.IHARG2(J).EQ.' ') GOTO4020 4000 CONTINUE GOTO4090 4010 CONTINUE ICASEQ='SUBS' ILOCQ=J1 GOTO4090 4020 CONTINUE ICASEQ='FOR' ILOCQ=J1 GOTO4090 4090 CONTINUE IF(IBUGA2.EQ.'OFF')GOTO4095 WRITE(ICOUT,4091)NUMARG,ILOCQ 4091 FORMAT('NUMARG,ILOCQ = ',2I8) CALL DPWRST('XXX','BUG ') 4095 CONTINUE C C *********************************************** C ** STEP 41-- ** C ** TEMPORARILY FORM THE VARIABLE Y(.) ** C ** WHICH WILL HOLD THE DATA FROM SAMPLE 1. ** C ** FORM THIS VARIABLE BY ** C ** BRANCHING TO THE APPROPRIATE SUBCASE ** C ** (FULL, SUBSET, OR FOR). ** C *********************************************** C IF(IUSE1.NE.'V')GOTO4190 C ISTEPN='41' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(ICASEQ.EQ.'FULL')GOTO4110 IF(ICASEQ.EQ.'SUBS')GOTO4120 IF(ICASEQ.EQ.'FOR')GOTO4130 C 4110 CONTINUE DO4115I=1,N1 ISUB(I)=1 4115 CONTINUE NQ=N1 GOTO4150 C 4120 CONTINUE NIOLD=N1 CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERROR) NQ=NIOLD GOTO4150 C 4130 CONTINUE NIOLD=N1 CALL DPFOR(NIOLD,NFOR,IROW1,IROWN, 1NLOCAL,ILOCS,NS,IBUGQ,IERROR) NQ=NFOR GOTO4150 C 4150 CONTINUE IF(NQ.GE.MINN2)GOTO4160 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4151) 4151 FORMAT('***** ERROR IN DPFLTE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4152) 4152 FORMAT(' AFTER THE APPROPRIATE SUBSET HAS BEEN ', 1'EXTRACTED,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4153)IH11,IH12 4153 FORMAT(' THE NUMBER OF OBSERVATIONS REMAINING', 1'FROM VARIABLE ',A4,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4154) 4154 FORMAT(' (FOR WHICH F LOCATION TEST ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4155) 4155 FORMAT(' IS TO BE CARRIED OUT)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4156)MINN2 4156 FORMAT(' MUST BE ',I8,' OR LARGER;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4157)NQ 4157 FORMAT(' SUCH WAS NOT THE CASE HERE. (N = ',I8,')') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4158) 4158 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,4159)(IANS(I),I=1,IWIDTH) 4159 FORMAT(' ',80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 4160 CONTINUE J=0 IMAX=N1 IF(NQ.LT.N1)IMAX=NQ DO4170I=1,IMAX IF(ISUB(I).EQ.0)GOTO4170 J=J+1 C IJ=MAXN*(ICOL1-1)+I IF(ICOL1.LE.MAXCOL)Y(J)=V(IJ) IF(ICOL1.EQ.MAXCP1)Y(J)=PRED(I) IF(ICOL1.EQ.MAXCP2)Y(J)=RES(I) IF(ICOL1.EQ.MAXCP3)Y(J)=YPLOT(I) IF(ICOL1.EQ.MAXCP4)Y(J)=XPLOT(I) IF(ICOL1.EQ.MAXCP5)Y(J)=X2PLOT(I) IF(ICOL1.EQ.MAXCP6)Y(J)=TAGPLO(I) C 4170 CONTINUE NS1=J C 4190 CONTINUE C C *********************************************** C ** STEP 42-- ** C ** TEMPORARILY FORM THE VARIABLE X(.) ** C ** WHICH WILL HOLD THE DATA FROM SAMPLE 2. ** C ** FORM THIS VARIABLE BY ** C ** BRANCHING TO THE APPROPRIATE SUBCASE ** C ** (FULL, SUBSET, OR FOR). ** C *********************************************** C IF(IUSE2.NE.'V')GOTO4290 C ISTEPN='42' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(ICASEQ.EQ.'FULL')GOTO4210 IF(ICASEQ.EQ.'SUBS')GOTO4220 IF(ICASEQ.EQ.'FOR')GOTO4230 C 4210 CONTINUE DO4215I=1,N2 ISUB(I)=1 4215 CONTINUE NQ=N2 GOTO4250 C 4220 CONTINUE NIOLD=N2 CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERROR) NQ=NIOLD GOTO4250 C 4230 CONTINUE NIOLD=N2 CALL DPFOR(NIOLD,NFOR,IROW1,IROWN, 1NLOCAL,ILOCS,NS,IBUGQ,IERROR) NQ=NFOR GOTO4250 C 4250 CONTINUE IF(NQ.GE.MINN2)GOTO4260 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4251) 4251 FORMAT('***** ERROR IN DPFLTE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4252) 4252 FORMAT(' AFTER THE APPROPRIATE SUBSET HAS BEEN ', 1'EXTRACTED,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4253)IH21,IH22 4253 FORMAT(' THE NUMBER OF OBSERVATIONS REMAINING', 1'FROM VARIABLE ',A4,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4254) 4254 FORMAT(' (FOR WHICH F LOCATION TEST ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4255) 4255 FORMAT(' IS TO BE CARRIED OUT)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4256)MINN2 4256 FORMAT(' MUST BE ',I8,' OR LARGER;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4257)NQ 4257 FORMAT(' SUCH WAS NOT THE CASE HERE. (N = ',I8,')') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4258) 4258 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,4259)(IANS(I),I=1,IWIDTH) 4259 FORMAT(' ',80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 4260 CONTINUE J=0 IMAX=N2 IF(NQ.LT.N2)IMAX=NQ DO4270I=1,IMAX IF(ISUB(I).EQ.0)GOTO4270 J=J+1 C IJ=MAXN*(ICOL2-1)+I IF(ICOL2.LE.MAXCOL)X(J)=V(IJ) IF(ICOL2.EQ.MAXCP1)X(J)=PRED(I) IF(ICOL2.EQ.MAXCP2)X(J)=RES(I) IF(ICOL2.EQ.MAXCP3)X(J)=YPLOT(I) IF(ICOL2.EQ.MAXCP4)X(J)=XPLOT(I) IF(ICOL2.EQ.MAXCP5)X(J)=X2PLOT(I) IF(ICOL2.EQ.MAXCP6)X(J)=TAGPLO(I) C 4270 CONTINUE NS2=J C 4290 CONTINUE C C ********************************* C ** STEP 52-- ** C ** DO F LOCATION TEST ** C ********************************* C ISTEPN='52' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IBUGA2.EQ.'OFF')GOTO5290 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,5211) 5211 FORMAT('***** FROM DPFLTE, AS WE ARE ABOUT TO CALL DPFLT2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,5212)N1,N2,NS1,NS2,MAXN 5212 FORMAT('N1,N2,NS1,NS2,MAXN = ',5I8) CALL DPWRST('XXX','BUG ') DO5215I=1,NS1 WRITE(ICOUT,5216)I,Y(I) 5216 FORMAT('I,Y(I) = ',I8,2E15.7) CALL DPWRST('XXX','BUG ') 5215 CONTINUE DO5217I=1,NS1 WRITE(ICOUT,5218)I,Y(I) 5218 FORMAT('I,Y(I) = ',I8,2E15.7) CALL DPWRST('XXX','BUG ') 5217 CONTINUE CCCCC IBUGA3='ABCD' WRITE(ICOUT,5231)IBUGA3 5231 FORMAT('IBUGA3 = ',A4) CALL DPWRST('XXX','BUG ') 5290 CONTINUE C CALL DPFLT2(Y,X,NS1, 1YTEMP,XTEMP,YMEAN,YBARIV,DTAG,MAXNXT, 1STATVA,STATCD,CUT0,CUT50,CUT75,CUT90,CUT95,CUT99,CUT999, 1IBUGA3,IERROR) C C *************************************** C ** STEP 61-- ** C ** UPDATE INTERNAL DATAPLOT TABLES ** C *************************************** C ISTEPN='61' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ISUBN0='DPLT' C IH='STAT' IH2='VAL ' VALUE0=STATVA CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='STAT' IH2='CDF ' VALUE0=STATCD CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF0 ' VALUE0=CUT0 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF50' VALUE0=CUT50 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF75' VALUE0=CUT75 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF90' VALUE0=CUT90 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF95' VALUE0=CUT95 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF99' VALUE0=CUT99 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='F999' VALUE0=CUT99 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGA2.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFLTE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IBUGA2,IBUGA3 9012 FORMAT('IBUGA2,IBUGA3 = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)IBUGQ 9013 FORMAT('IBUGQ = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)NLEFT,NS 9014 FORMAT('NLEFT,NS = ',2I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9015)ICASEQ 9015 FORMAT('ICASEQ = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9016)IFOUND,IERROR 9016 FORMAT('IFOUND,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') 9090 CONTINUE C RETURN END SUBROUTINE DPFLT2(Y,TAG,N, 1YTEMP,XTEMP,YMEAN,YBARIV,DTAG,MAXNXT, 1STATVA,STATCD,CUT0,CUT50,CUT75,CUT90,CUT95,CUT99,CUT999, 1IBUGA3,IERROR) C C PURPOSE--THIS ROUTINE CARRIES OUT AN F TEST FOR SHIFT IN LOCATION C EXAMPLE--F LOCATION'S TEST Y TAG C REFERENCE--XX C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--97/9 C ORIGINAL VERSION--SEPTEMBER 1997. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IBUGA3 CHARACTER*4 IERROR C CHARACTER*4 IWRITE C CHARACTER*6 ICONC1 CHARACTER*6 ICONC2 CHARACTER*6 ICONC3 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C DOUBLE PRECISION DSUM1 C C--------------------------------------------------------------------- C DIMENSION Y(*) DIMENSION TAG(*) DIMENSION DTAG(*) DIMENSION YTEMP(*) DIMENSION XTEMP(*) DIMENSION YMEAN(*) DIMENSION YBARIV(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C ISUBN1='DPBT' ISUBN2='E2 ' C IERROR='NO' C IF(IBUGA3.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,51) 51 FORMAT('**** AT THE BEGINNING OF DPFLT2--') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,52)IBUGA3 52 FORMAT('IBUGA3 = ',A4) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,55)N 55 FORMAT('N = ',I8) CALL DPWRST('XXX','WRIT') DO56I=1,N WRITE(ICOUT,57)I,Y(I) 57 FORMAT('I,Y(I) = ',I8,E15.7) CALL DPWRST('XXX','WRIT') 56 CONTINUE WRITE(ICOUT,65)N 65 FORMAT('N = ',I8) CALL DPWRST('XXX','WRIT') DO66I=1,N WRITE(ICOUT,67)I,TAG(I) 67 FORMAT('I,TAG(I) = ',I8,E15.7) CALL DPWRST('XXX','WRIT') 66 CONTINUE 90 CONTINUE C C ******************************************** C ** STEP 11-- ** C ** CHECK THE INPUT ARGUMENTS FOR ERRORS ** C ******************************************** C ISTEPN='11' IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(N.GE.1)GOTO1119 WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1111) 1111 FORMAT('***** ERROR IN DPFLT2--THE NUMBER OF OBSERVATIONS ', 1'FOR VARIABLE 1 IS NON-POSITIVE') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1112)N 1112 FORMAT('SAMPLE SIZE = ',I8) CALL DPWRST('XXX','WRIT') IERROR='YES' GOTO9000 1119 CONTINUE C IF(N.EQ.1)GOTO1120 GOTO1129 1120 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1121) 1121 FORMAT('***** NOTE FROM DPFLT2--VARIABLE 1 ', 1'HAS ONLY 1 ELEMENT') CALL DPWRST('XXX','WRIT') GOTO9000 1129 CONTINUE C HOLD=Y(1) DO1135I=2,N IF(Y(I).NE.HOLD)GOTO1139 1135 CONTINUE 1130 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1131)HOLD 1131 FORMAT('***** NOTE FROM DPFLT2--VARIABLE 1 ', 1'HAS ALL ELEMENTS = ',E15.7) CALL DPWRST('XXX','WRIT') GOTO9000 1139 CONTINUE C IF(N.GE.1)GOTO1219 WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1211) 1211 FORMAT('***** ERROR IN DPFLT2--THE NUMBER OF OBSERVATIONS ', 1'FOR VARIABLE 2 IS NON-POSITIVE') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1212)N 1212 FORMAT('SAMPLE SIZE = ',I8) CALL DPWRST('XXX','WRIT') IERROR='YES' GOTO9000 1219 CONTINUE C IF(N.EQ.1)GOTO1220 GOTO1229 1220 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1221) 1221 FORMAT('***** NOTE FROM DPFLT2--VARIABLE 2 ', 1'HAS ONLY 1 ELEMENT') CALL DPWRST('XXX','WRIT') GOTO9000 1229 CONTINUE C HOLD=TAG(1) DO1235I=2,N IF(TAG(I).NE.HOLD)GOTO1239 1235 CONTINUE 1230 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1231)HOLD 1231 FORMAT('***** NOTE FROM DPFLT2--VARIABLE 2 ', 1'HAS ALL ELEMENTS = ',E15.7) CALL DPWRST('XXX','WRIT') GOTO9000 1239 CONTINUE C 1290 CONTINUE C C ****************************** C ** STEP 41-- ** C ** CARRY OUT CALCULATIONS ** C ** FOR F LOCATION TEST ** C ****************************** C 4100 CONTINUE C ISTEPN='41' IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IWRITE='OFF' CALL DISTIN(TAG,N,IWRITE,DTAG,NUMDIS,IBUGA3,IERROR) C CALL MEAN(Y,N,IWRITE,YBAR,IBUGA3,IERROR) C IF(IBUGA3.EQ.'ON')THEN WRITE(ICOUT,4901)YBAR 4901 FORMAT('YBAR = ',G15.7) CALL DPWRST('XXX','BUG') DO4905I=1,N WRITE(ICOUT,4906)I,TAG(I),DTAG(I),Y(I) 4906 FORMAT('I,TAG(I),DTAG(I),Y(I)=',I8,3G15.7) CALL DPWRST('XXX','BUG') 4905 CONTINUE ENDIF C DO5200IDIS=1,NUMDIS J=0 DO5300I=1,N IF(TAG(I).EQ.DTAG(IDIS))THEN J=J+1 YTEMP(J)=Y(I) ENDIF 5300 CONTINUE CALL MEAN(YTEMP,J,IWRITE,YMEAN(IDIS),IBUGA3,IERROR) DO5400I=1,N IF(TAG(I).EQ.DTAG(IDIS))YBARIV(I)=YMEAN(IDIS) 5400 CONTINUE 5200 CONTINUE C IF(IBUGA3.EQ.'ON')THEN DO5205I=1,N WRITE(ICOUT,5206)I,TAG(I),DTAG(I),YBARIV(I) 5206 FORMAT('I,TAG(I),DTAG(I),YBARIV(I)=',I8,3G15.7) CALL DPWRST('XXX','BUG') 5205 CONTINUE ENDIF C DSUM1=0.D0 DO6100I=1,N DSUM1=DSUM1 + (YBARIV(I)-YBAR)**2 6100 CONTINUE SSQ=SNGL(DSUM1) NUMDF=NUMDIS-1 ANUMMS=SSQ/REAL(NUMDF) C DSUM1=0.D0 DO6200I=1,N DSUM1=DSUM1 + (Y(I)-YBARIV(I))**2 6200 CONTINUE SSQ=SNGL(DSUM1) IDENDF=N-NUMDIS DENMS=SSQ/REAL(IDENDF) C IF(IBUGA3.EQ.'ON')THEN WRITE(ICOUT,6201)ANUMMS,DENMS 6201 FORMAT('ANUMMS,DENMS=',2G15.7) CALL DPWRST('XXX','BUG') ENDIF C STATVA=ANUMMS/DENMS CALL FCDF(STATVA,NUMDF,IDENDF,STATCD) C KM1=NUMDIS-1 NMK=N-NUMDIS C CUT0=0.0 CALL FPPF(.50,KM1,NMK,CUT50) CALL FPPF(.75,KM1,NMK,CUT75) CALL FPPF(.90,KM1,NMK,CUT90) CALL FPPF(.95,KM1,NMK,CUT95) CALL FPPF(.99,KM1,NMK,CUT99) CALL FPPF(.999,KM1,NMK,CUT999) C ICONC1='REJECT' ICONC2='REJECT' ICONC3='REJECT' C IF(0.000.LE.STATCD.AND.STATCD.LE.0.950)ICONC2='ACCEPT' C C ****************************** C ** STEP 42-- ** C ** WRITE OUT EVERYTHING ** C ** FOR F LOCATION'S TEST ** C ****************************** C ISTEPN='42' IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IPRINT.EQ.'OFF')GOTO7290 WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7211) 7211 FORMAT(' F-TEST FOR SHIFT IN LOCATION') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7212) 7212 FORMAT(' (ASSUMPTION: NORMALITY)') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,7222) 7222 FORMAT('1. STATISTICS') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7224)N 7224 FORMAT(6X,'NUMBER OF OBSERVATIONS = ',I8) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7226)NUMDIS 7226 FORMAT(6X,'NUMBER OF GROUPS = ',I8) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7228)STATVA 7228 FORMAT(6X,'F LOCATION TEST STATISTIC = ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7240) WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') 7240 FORMAT('2. PERCENT POINTS OF THE REFERENCE DISTRIBUTION') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7241) 7241 FORMAT(' FOR F LOCATION TEST STATISTIC') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,7345)CUT0 7345 FORMAT(6X,'0 % POINT = ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7346)CUT50 7346 FORMAT(6X,'50 % POINT = ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7347)CUT75 7347 FORMAT(6X,'75 % POINT = ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7348)CUT90 7348 FORMAT(6X,'90 % POINT = ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7349)CUT95 7349 FORMAT(6X,'95 % POINT = ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7350)CUT99 7350 FORMAT(6X,'99 % POINT = ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7351)CUT999 7351 FORMAT(6X,'99.9 % POINT = ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7247)100.*STATCD,STATVA 7247 FORMAT(6X,G15.7,' % Point: ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,7261) 7261 FORMAT('3. CONCLUSION (AT THE 5% LEVEL):') CALL DPWRST('XXX','WRIT') IF(STATVA.LE.CUT95)THEN WRITE(ICOUT,7262) 7262 FORMAT(6X,'THERE IS NO SHIFT IN LOCATION.') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7263) 7263 FORMAT(6X,'THUS: HOMOGENOUS WITH RESPECT TO LOCATION.') CALL DPWRST('XXX','WRIT') ELSE WRITE(ICOUT,7272) 7272 FORMAT(6X,'THERE IS A SHIFT IN LOCATION.') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7273) 7273 FORMAT(6X,'THUS: NOT HOMOGENOUS WITH RESPECT TO LOCATION.') CALL DPWRST('XXX','WRIT') ENDIF WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') 7290 CONTINUE GOTO9000 C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGA3.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFLT2--') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,9012)N,IBUGA3,IERROR 9012 FORMAT('N,IBUGA3,IERROR = ',I8,2X,A4,2X,A4) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,9015)N 9015 FORMAT('N = ',I8) CALL DPWRST('XXX','WRIT') DO9016I=1,N WRITE(ICOUT,9017)I,Y(I) 9017 FORMAT('I,Y(I) = ',I8,E15.7) CALL DPWRST('XXX','WRIT') 9016 CONTINUE WRITE(ICOUT,9025)N 9025 FORMAT('N = ',I8) CALL DPWRST('XXX','WRIT') DO9026I=1,N WRITE(ICOUT,9027)I,TAG(I) 9027 FORMAT('I,TAG(I) = ',I8,E15.7) CALL DPWRST('XXX','WRIT') 9026 CONTINUE 9090 CONTINUE C RETURN END SUBROUTINE DPFONT(IHARG,NUMARG, 1IDEFFO, 1ITEXFO, 1IBUGD2,ISUBRO,IFOUND,IERROR) C C PURPOSE--DEFINE THE FONT TYPE FOR C TITLE, LABEL, AND LEGEND SCRIPT C ON A PLOT. C THE FONT FOR THE SCRIPT WILL BE PLACED C IN THE CHARACTER VARIABLE ITEXFO. C INPUT ARGUMENTS--IHARG (A CHARACTER VECTOR) C --NUMARG C --IDEFFO C --IBUGD2 C OUTPUT ARGUMENTS--ITEXFO C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--SEPTEMBER 1980. C UPDATED --APRIL 1981. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IDEFFO CHARACTER*4 ITEXFO CHARACTER*4 IBUGD2 CHARACTER*4 ISUBRO CHARACTER*4 IFOUND CHARACTER*4 IERROR C C--------------------------------------------------------------------- C DIMENSION IHARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C IF(IBUGD2.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFONT--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)IDEFFO 53 FORMAT('IDEFFO = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)NUMARG 54 FORMAT('NUMARG = ',I8) CALL DPWRST('XXX','BUG ') DO55I=1,NUMARG WRITE(ICOUT,56)I,IHARG(I) 56 FORMAT('I,IHARG(I) = ',I8,2X,A4) CALL DPWRST('XXX','BUG ') 55 CONTINUE 90 CONTINUE C C *************************** C ** TREAT THE FONT CASE ** C *************************** C 1110 CONTINUE IF(NUMARG.LE.0)GOTO1120 IF(IHARG(NUMARG).EQ.'ON')GOTO1120 IF(IHARG(NUMARG).EQ.'OFF')GOTO1120 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1120 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1120 IF(IHARG(NUMARG).EQ.'?')GOTO8100 GOTO1140 C 1120 CONTINUE ITEXFO=IDEFFO GOTO1180 C 1140 CONTINUE IF(NUMARG.EQ.1.AND.IHARG(1).EQ.'SIMP')GOTO1141 IF(NUMARG.EQ.1.AND.IHARG(1).EQ.'DUPL')GOTO1142 IF(NUMARG.EQ.1.AND.IHARG(1).EQ.'TRIP')GOTO1143 IF(NUMARG.EQ.1.AND.IHARG(1).EQ.'COMP')GOTO1144 IF(NUMARG.GE.2.AND.IHARG(1).EQ.'TRIP'.AND. 1IHARG(2).EQ.'ITAL')GOTO1145 IF(NUMARG.EQ.1.AND.IHARG(1).EQ.'TRII')GOTO1145 IF(NUMARG.GE.2.AND.IHARG(1).EQ.'COMP'.AND. 1IHARG(2).EQ.'ITAL')GOTO1146 IF(NUMARG.EQ.1.AND.IHARG(1).EQ.'COMI')GOTO1146 IF(NUMARG.GE.2.AND.IHARG(1).EQ.'SIMP'.AND. 1IHARG(2).EQ.'SCRI')GOTO1147 IF(NUMARG.EQ.1.AND.IHARG(1).EQ.'SIMS')GOTO1147 IF(NUMARG.GE.2.AND.IHARG(1).EQ.'COMP'.AND. 1IHARG(2).EQ.'SCRI')GOTO1148 IF(NUMARG.EQ.1.AND.IHARG(1).EQ.'COMS')GOTO1148 C IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEKT')GOTO1151 IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEK')GOTO1151 C IF(NUMARG.GE.2.AND.IHARG(1).EQ.'HEWL'.AND. 1IHARG(2).EQ.'PACK')GOTO1152 IF(NUMARG.GE.1.AND.IHARG(1).EQ.'HP')GOTO1152 C 1130 CONTINUE IERROR='YES' WRITE(ICOUT,1131) 1131 FORMAT('***** ERROR IN DPFONT--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1132) 1132 FORMAT(' ILLEGAL ENTRY FOR FONT ', 1'COMMAND.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1133) 1133 FORMAT(' TEST EXAMPLE TO DEMONSTRATE THE ', 1'PROPER FORM--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1134) 1134 FORMAT(' SUPPOSE THE THE ANALYST WISHES ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1135) 1135 FORMAT(' TO SET THE FONT TO TRIPLEX ITALIC ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1136) 1136 FORMAT(' FOR PLOT TITLES, LABELS, ETC.,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1137) 1137 FORMAT(' THEN 2 ALLOWABLE FORMS ARE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1138) 1138 FORMAT(' FONT TRIPLEX ITALIC ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1139) 1139 FORMAT(' FONT TRII ') CALL DPWRST('XXX','BUG ') GOTO9000 C 1141 CONTINUE ITEXFO='SIMP' GOTO1180 C 1142 CONTINUE ITEXFO='DUPL' GOTO1180 C 1143 CONTINUE ITEXFO='TRIP' GOTO1180 C 1144 CONTINUE ITEXFO='COMP' GOTO1180 C 1145 CONTINUE ITEXFO='TRII' GOTO1180 C 1146 CONTINUE ITEXFO='COMI' GOTO1180 C 1147 CONTINUE ITEXFO='SIMS' GOTO1180 C 1148 CONTINUE ITEXFO='COMS' GOTO1180 C 1151 CONTINUE ITEXFO='TEKT' GOTO1180 C 1152 CONTINUE ITEXFO='HEWL' GOTO1180 C 1180 CONTINUE IFOUND='YES' C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181) 1181 FORMAT('THE FONT (FOR PLOT SCRIPT AND TEXT)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1182)ITEXFO 1182 FORMAT('HAS JUST BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO9000 C C ******************************************** C ** STEP 81-- ** C ** TREAT THE ? CASE-- ** C ** DUMP OUT CURRENT AND DEFAULT VALUES. ** C ******************************************** C 8100 CONTINUE IFOUND='YES' WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,8111)ITEXFO 8111 FORMAT('THE CURRENT FONT IS ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,8112)IDEFFO 8112 FORMAT('THE DEFAULT FONT IS ',A4) CALL DPWRST('XXX','BUG ') GOTO9000 C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGD2.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFONT--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IBUGD2,ISUBRO,IFOUND,IERROR 9012 FORMAT('IBUGD2,ISUBRO,IFOUND,IERROR = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)IDEFFO,ITEXFO 9013 FORMAT('IDEFFO,ITEXFO = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') 9090 CONTINUE C RETURN END SUBROUTINE DPFOR(NIOLD,NINEW,IROW1,IROWN, 1NLOCAL,ILOCS,NS,IBUGQ,IERROR) C C PURPOSE--DEFINE AN INTEGER 0-1 VECTOR ISUB C WHICH WILL BE USED IN OTHER SUBROUTINES C FOR EXTRACTING SUBSETS. C ALLOWABLE FORMS--FOR XX < XX C FOR XX <= XX C FOR XX = XX C FOR XX = XX XX XX C FOR XX = XX TO XX C FOR XX >= XX C FOR XX > XX C INPUT ARGUMENTS--NIOLD = THE ORIGINAL NUMBER OF C ELEMENTS (ROWS) FOR THE LEFT-SIDE VARIABLE. C (IT MAY BE ZERO). C OUTPUT ARGUMENTS--NINEW = THE NEW NUMBER OF ELEMENTS (ROWS) C FOR THE LEFT-SIDE VARIABLE. C NINEW EQUALS MAX(NIOLD,IROWN) C --IROW1 = THE FIRST ROW TO BE CHANGED. C --IROWN = THE LAST ROW TO BE CHANGED. C NOTE THAT IF THE WORD 'FOR' IS NOT IN THE ARGUMENT LIST, C THEN THE OUTPUT PARAMETER WILL BE SET TO NUMARG+1. C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--JANUARY 1978. C UPDATED --JANUARY 1978. C UPDATED --FEBRUARY 1978. C UPDATED --JULY 1978. C UPDATED --OCTOBER 1978. C UPDATED --NOVEMBER 1978. C UPDATED --NOVEMBER 1980. C UPDATED --JANUARY 1981. C UPDATED --JULY 1981. C UPDATED --SEPTEMBER 1981. C UPDATED --OCTOBER 1981. C UPDATED --DECEMBER 1981. C UPDATED --MARCH 1982. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IBUGQ CHARACTER*4 IERROR C CHARACTER*4 MESSAG CHARACTER*4 IHWUSE CHARACTER*4 IH CHARACTER*4 IH2 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C C--------------------------------------------------------------------- C C-----COMMON---------------------------------------------------------- C INCLUDE 'DPCOPA.INC' INCLUDE 'DPCOHK.INC' INCLUDE 'DPCODA.INC' C C-----COMMON VARIABLES (GENERAL)-------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C ISUBN1='DPFO' ISUBN2='R ' C IERROR='NO' C MAXCP1=MAXCOL+1 MAXCP2=MAXCOL+2 MAXCP3=MAXCOL+3 MAXCP4=MAXCOL+4 MAXCP5=MAXCOL+5 MAXCP6=MAXCOL+6 C ILOCF=0 NUMIT=0 I2=0 C C ************************** C ** TREAT THE FOR CASE ** C ************************** C IF(IBUGQ.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFOR--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)NIOLD,NINEW,IROW1,IROWN 52 FORMAT('NIOLD,NINEW,IROW1,IROWN = ',4I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)NLOCAL,ILOCS,NS 53 FORMAT('NLOCAL,ILOCS,NS = ',3I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)IBUGQ,IERROR 54 FORMAT('IBUGQ,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,55)NUMARG,NUMNAM,MAXNAM,N,MAXN 55 FORMAT('NUMARG,NUMNAM,MAXNAM,N,MAXN = ',4I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,56)IWIDTH,NLOCAL,ILOCF 56 FORMAT('IWIDTH,NLOCAL,ILOCF = ',3I8) CALL DPWRST('XXX','BUG ') 90 CONTINUE C C **************************************************************** C ** STEP 1-- C ** INITIALIZE THE SUBSET SIZE (NS) TO MAXN. C ** CHECK FOR THE PROPER NUMBER OF INPUT ARGUMENTS. C ** ALSO CHECK THAT THE RELEVANT NUMBER OF OBSERVATIONS (NLOCAL) C ** IS POSITIVE. C **************************************************************** C ISTEPN='1' IF(IBUGQ.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C NLOCAL=MAXN NS=MAXN ILOCF=NUMARG+1 MINNA=0 MAXNA=100 CALL CHECKA(NUMARG,MINNA,MAXNA,IANS,IWIDTH,ISUBN1,ISUBN2, 1IERROR) IF(IERROR.EQ.'YES')GOTO9000 C IF(NLOCAL.GE.1)GOTO190 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,111) 111 FORMAT('***** ERROR IN DPFOR--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,112) 112 FORMAT(' THE INPUT NUMBER OF OBSERVATIONS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,113) 113 FORMAT(' (FROM WHICH A SUBSET WAS TO HAVE BEEN ', 1'EXTRACTED)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,114) 114 FORMAT(' IS 0') CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 190 CONTINUE C C ************************************************* C ** STEP 2-- ** C ** INITIALIZE ALL ELEMENTS IN ISUB(.) TO 1 . ** C ************************************************* C ISTEPN='2' IF(IBUGQ.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C DO200I=1,NLOCAL ISUB(I)=1 200 CONTINUE C C ************************************************ C ** STEP 3.1-- ** C ** CHECK TO SEE IF HAVE THE 'FOR' CASE. ** C ** LOCATE THE POSITION IN THE ARGUMENT LIST ** C ** OF THE LAST OCCURRANCE OF THE WORD 'FOR'. ** C ************************************************ C ISTEPN='3.1' IF(IBUGQ.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ILOCF=-1 IF(NUMARG.LE.0)GOTO9000 DO300J=1,NUMARG JP1=J+1 IF(IHARG(J).EQ.'FOR '.AND.IHARG2(J).EQ.' '.AND. 1IHARG(JP1).EQ.'I '.AND.IHARG2(JP1).EQ.' '.AND. 1JP1.LE.NUMARG)GOTO350 GOTO300 350 CONTINUE ILOCF=J 300 CONTINUE IF(ILOCF.EQ.-1)GOTO360 GOTO390 360 CONTINUE ILOCF=NUMARG+1 GOTO9000 390 CONTINUE C C ************************************************* C ** STEP 3.2-- ** C ** IF EXISTENT, ** C ** PACK < = INTO <= ** C ** PACK = < INTO =< ** C ** PACK > = INTO >= ** C ** PACK = > INTO => ** C ** THIS IS BECAUSE = SIGNS ARE AUTOMATICALLY ** C ** GIVEN A SPACE IN DPTYPE AND TREATED AS ** C ** AS A SEPARATE WORD. ** C ** NOTE THAT NUMARG WILL BE CHANGED. ** C ************************************************* C ISTEPN='3.2' IF(IBUGQ.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C CALL ADJUS2(IHARG,IHARG2,IARG,ARG,IARGT,NUMARG) C C *********************************************** C ** STEP 4-- ** C ** CHECK THAT FOR IS SUCCEEDED BY AT LEAST ** C ** 3 OTHER ARGUMENTS. ** C *********************************************** C ISTEPN='4' IF(IBUGQ.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ILOCF3=ILOCF+3 IF(ILOCF3.GT.NUMARG)GOTO400 GOTO480 400 CONTINUE WRITE(ICOUT,401) 401 FORMAT('***** ERROR IN DPFOR--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,402) 402 FORMAT(' THE WORD FOR SHOULD HAVE BEEN FOLLOWED') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,403) 403 FORMAT(' BY EXACTLY 3 OR BY EXACTLY 5 WORDS --') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,404) 404 FORMAT(' 1) A DUMMY VARIABLE NAME;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,405) 405 FORMAT(' 2) AN EQUAL SIGN;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,406) 406 FORMAT(' 3) ONE LIMIT (LOWER OR UPPER) ', 1'FOR THE DUMMY VARIABLE;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,409) 409 FORMAT(' 4) THE INCREMENT FOR THE DUMMY VARIABLE;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,410) 410 FORMAT(' 5) THE OTHER LIMIT (UPPER OR LOWER) ', 1'FOR THE DUMMY VARIABLE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,421) 421 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,422)(IANS(I),I=1,IWIDTH) 422 FORMAT(' ',100A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 480 CONTINUE C C ************************************* C ** STEP 5-- ** C ** FORM THE 3 INTERNAL VALUES-- ** C ** START, AINC, AND STOP. ** C ************************************* C ISTEPN='5' IF(IBUGQ.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ILOCF2=ILOCF+2 ILOCF3=ILOCF+3 ILOCF4=ILOCF+4 ILOCF5=ILOCF+5 C ILOCA=ILOCF3 IF(IARGT(ILOCA).EQ.'NUMB')GOTO511 IF(IARGT(ILOCA).EQ.'WORD')GOTO512 GOTO570 511 CONTINUE START=ARG(ILOCA) IF(IHARG(ILOCF2).EQ.'= ')GOTO519 AINC=0.0 STOP=ARG(ILOCA) IF(IHARG(ILOCF2).EQ.'< ')START=1.0 IF(IHARG(ILOCF2).EQ.'< ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'< ')STOP=ARG(ILOCA)-1.0 IF(IHARG(ILOCF2).EQ.'< ')GOTO539 IF(IHARG(ILOCF2).EQ.'<= ')START=1.0 IF(IHARG(ILOCF2).EQ.'<= ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'<= ')STOP=ARG(ILOCA) IF(IHARG(ILOCF2).EQ.'<= ')GOTO539 IF(IHARG(ILOCF2).EQ.'=< ')START=1.0 IF(IHARG(ILOCF2).EQ.'=< ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'=< ')STOP=ARG(ILOCA) IF(IHARG(ILOCF2).EQ.'=< ')GOTO539 IF(IHARG(ILOCF2).EQ.'>= ')START=ARG(ILOCA) IF(IHARG(ILOCF2).EQ.'>= ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'>= ')STOP=NIOLD IF(IHARG(ILOCF2).EQ.'>= ')GOTO539 IF(IHARG(ILOCF2).EQ.'=> ')START=ARG(ILOCA) IF(IHARG(ILOCF2).EQ.'=> ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'=> ')STOP=NIOLD IF(IHARG(ILOCF2).EQ.'=> ')GOTO539 IF(IHARG(ILOCF2).EQ.'> ')START=ARG(ILOCA)+1.0 IF(IHARG(ILOCF2).EQ.'> ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'> ')STOP=NIOLD IF(IHARG(ILOCF2).EQ.'> ')GOTO539 GOTO519 512 CONTINUE IH=IHARG(ILOCA) IH2=IHARG2(ILOCA) MESSAG='YES' IHWUSE='P' CALL CHECKN(IH,IH2,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOC,IERROR) IF(IERROR.EQ.'YES')GOTO9000 START=VALUE(ILOC) IF(IHARG(ILOCF2).EQ.'= ')GOTO519 AINC=0.0 STOP=VALUE(ILOC) IF(IHARG(ILOCF2).EQ.'< ')START=1.0 IF(IHARG(ILOCF2).EQ.'< ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'< ')STOP=VALUE(ILOC)-1.0 IF(IHARG(ILOCF2).EQ.'< ')GOTO539 IF(IHARG(ILOCF2).EQ.'<= ')START=1.0 IF(IHARG(ILOCF2).EQ.'<= ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'<= ')STOP=VALUE(ILOC) IF(IHARG(ILOCF2).EQ.'<= ')GOTO539 IF(IHARG(ILOCF2).EQ.'=< ')START=1.0 IF(IHARG(ILOCF2).EQ.'=< ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'=< ')STOP=VALUE(ILOC) IF(IHARG(ILOCF2).EQ.'=< ')GOTO539 IF(IHARG(ILOCF2).EQ.'>= ')START=VALUE(ILOC) IF(IHARG(ILOCF2).EQ.'>= ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'>= ')STOP=NIOLD IF(IHARG(ILOCF2).EQ.'>= ')GOTO539 IF(IHARG(ILOCF2).EQ.'=> ')START=VALUE(ILOC) IF(IHARG(ILOCF2).EQ.'=> ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'=> ')STOP=NIOLD IF(IHARG(ILOCF2).EQ.'=> ')GOTO539 IF(IHARG(ILOCF2).EQ.'> ')START=VALUE(ILOC)+1.0 IF(IHARG(ILOCF2).EQ.'> ')AINC=1.0 IF(IHARG(ILOCF2).EQ.'> ')STOP=NIOLD IF(IHARG(ILOCF2).EQ.'> ')GOTO539 519 CONTINUE C ILOCA=ILOCF4 IF(ILOCA.GT.NUMARG)GOTO521 IF(ILOCA.EQ.NUMARG.AND.IHARG(ILOCA).EQ.'AND'.AND. 1IHARG2(ILOCA).EQ.' ')GOTO521 IF(IARGT(ILOCA).EQ.'NUMB')GOTO522 IF(IARGT(ILOCA).EQ.'WORD'.AND.IHARG(ILOCA).EQ.'TO ')GOTO523 IF(IARGT(ILOCA).EQ.'WORD'.AND.IHARG(ILOCA).NE.'TO ')GOTO524 GOTO570 521 CONTINUE AINC=0.0 GOTO529 522 CONTINUE AINC=ARG(ILOCA) GOTO529 523 CONTINUE AINC=1.0 GOTO529 524 CONTINUE IH=IHARG(ILOCA) IH2=IHARG2(ILOCA) MESSAG='YES' IHWUSE='P' CALL CHECKN(IH,IH2,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOC,IERROR) IF(IERROR.EQ.'YES')GOTO9000 AINC=VALUE(ILOC) GOTO529 529 CONTINUE C ILOCA=ILOCF5 IF(ILOCA.GT.NUMARG)GOTO531 IF(ILOCA.EQ.NUMARG.AND.IHARG(ILOCA).EQ.'AND'.AND. 1IHARG2(ILOCA).EQ.' ')GOTO531 IF(IARGT(ILOCA).EQ.'NUMB')GOTO532 IF(IARGT(ILOCA).EQ.'WORD')GOTO533 GOTO570 531 CONTINUE STOP=START GOTO539 532 CONTINUE STOP=ARG(ILOCA) GOTO539 533 CONTINUE IH=IHARG(ILOCA) IH2=IHARG2(ILOCA) MESSAG='YES' IHWUSE='P' CALL CHECKN(IH,IH2,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOC,IERROR) IF(IERROR.EQ.'YES')GOTO9000 STOP=VALUE(ILOC) GOTO539 539 CONTINUE GOTO580 C 570 CONTINUE WRITE(ICOUT,571) 571 FORMAT('***** INTERNAL ERROR IN DPFOR--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,572) 572 FORMAT(' AN ARGUMENT TYPE WHICH SHOULD BE ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,573) 573 FORMAT(' EITHER A NUMBER OR A WORD, IS NEITHER.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,574)IHARG(ILOCA),IHARG2(ILOCA) 574 FORMAT(' ARGUMENT = ',2A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,575)ILOCA 575 FORMAT(' LOCATION IN ARGUMENT LIST = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,576)IARGT(ILOCA) 576 FORMAT(' ARGUMENT TYPE = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,577) 577 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,578)(IANS(I),I=1,IWIDTH) 578 FORMAT(' ',100A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 580 CONTINUE IF(START.EQ.STOP)AINC=0.0 IF(START.LT.STOP.AND.AINC.LT.0.0)AINC=-AINC IF(START.GT.STOP.AND.AINC.GT.0.0)AINC=-AINC C C ***************************************************** C ** STEP 6-- ** C ** FORM THE ISUB(.) VECTOR; ** C ** DETERMINE ALSO-- ** C ** THE FIRST ROW CHANGED (IROW1), ** C ** THE ROW INCREMENT (IROWIN), ** C ** THE LAST ROW CHANGED (IROWN), ** C ** THE NUMBER OF ROWS CHANGED (NS), ** C ** AND THE OUTPUT NUMBER OF ROWS (NINEW). ** C ** (THAT IS, THE SUBSET SAMPLE SIZE). ** C ***************************************************** C ISTEPN='6' IF(IBUGQ.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C DO600I=1,MAXN ISUB(I)=0 600 CONTINUE C IF(AINC.EQ.0.0)NUMIT=1 IF(AINC.NE.0.0)NUMIT=(STOP-START)/AINC IF(NUMIT.LT.0)NUMIT=-NUMIT NUMIT=NUMIT+1 C L2=0 DO620I=1,NUMIT I2=I I2M1=I2-1 AI=I RESULT=START+(AI-1.0)*AINC IF(I.EQ.1)GOTO622 IF(AINC.EQ.0.0)GOTO670 IF(START.EQ.STOP)GOTO670 IF(START.LT.STOP.AND.RESULT.GT.STOP)GOTO670 IF(START.GT.STOP.AND.RESULT.LT.STOP)GOTO670 622 CONTINUE L2=L2+1 C IF(L2.LE.MAXN)GOTO639 WRITE(ICOUT,632) 632 FORMAT('***** ERROR IN DPFOR--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,633) 633 FORMAT(' THE NUMBER OF GENERATED POINTS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,634)MAXN 634 FORMAT(' HAS JUST EXCEEDED ',I8,' *****') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,635) 635 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,636)(IANS(K),K=1,IWIDTH) 636 FORMAT(' ',100A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 639 CONTINUE C XTEMP=RESULT ITEMP=XTEMP+0.5 IF(ITEMP.LE.MAXN)GOTO649 WRITE(ICOUT,642) 642 FORMAT('***** ERROR IN DPFOR--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,643) 643 FORMAT(' A REFERENCED ROW NUMBER') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,644)MAXN 644 FORMAT(' HAS JUST EXCEEDED ',I8,' *****') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,645) 645 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,646)(IANS(K),K=1,IWIDTH) 646 FORMAT(' ',100A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 649 CONTINUE C IF(ITEMP.GE.1)GOTO659 WRITE(ICOUT,652) 652 FORMAT('***** ERROR IN DPFOR--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,653) 653 FORMAT(' A REFERENCED ROW NUMBER') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,654) 654 FORMAT(' IS SMALLER THAN 1 .') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,655) 655 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,656)(IANS(K),K=1,IWIDTH) 656 FORMAT(' ',100A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 659 CONTINUE C ISUB(ITEMP)=1.0 IF(I.EQ.1)IROW1=ITEMP IROWN=ITEMP 620 CONTINUE C NS=I2 GOTO690 670 CONTINUE NS=I2M1 690 CONTINUE NINEW=NIOLD IF(IROWN.GT.NIOLD)NINEW=IROWN IROWIN=AINC+0.5 C C ************************************************* C ** STEP 7-- ** C ** WRITE OUT A MESSAGE INDICATING ** C ** THE FIRST ROW CHANGED (IROW1), ** C ** THE ROW INCREMENT (IROWIN), ** C ** THE LAST ROW CHANGED (IROWN), ** C ** THE INPUT NUMBER OF ROWS (NIOLD), ** C ** THE NUMBER OF ROWS CHANGED (NS), ** C ** AND THE OUTPUT NUMBER OF ROWS (NINEW). ** C ** (THAT IS, THE SUBSET SAMPLE SIZE). ** C ** ALSO, CHECK THAT NS IS POSITIVE. ** C ************************************************* C ISTEPN='7' IF(IBUGQ.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IFEEDB.EQ.'OFF')GOTO709 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,701) 701 FORMAT('***** NOTE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,702)IROW1 702 FORMAT(' ROW START = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,703)IROWIN 703 FORMAT(' ROW INCREMENT = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,704)IROWN 704 FORMAT(' ROW STOP = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,705)NIOLD 705 FORMAT(' INPUT NUMBER OF ROWS = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,706)NS 706 FORMAT(' NUMBER OF ROWS AFFECTED = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,707)NINEW 707 FORMAT(' OUTPUT NUMBER OF ROWS = ',I8) CALL DPWRST('XXX','BUG ') 709 CONTINUE C CCCCC IF(NS.GE.1)GOTO790 CCCCC WRITE(ICOUT,999) CCCCC CALL DPWRST('XXX','BUG ') CCCCC WRITE(ICOUT,711) CC711 FORMAT('***** ERROR IN DPFOR--') CCCCC CALL DPWRST('XXX','BUG ') CCCCC WRITE(ICOUT,712) CC712 FORMAT(' THE SUBSET IS EMPTY--IT HAS NO ELEMENTS IN IT.') CCCCC CALL DPWRST('XXX','BUG ') CCCCC IERROR='YES' CCCCC GOTO9000 C 790 CONTINUE C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGQ.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFOR--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)NIOLD,NINEW,IROW1,IROWN 9012 FORMAT('NIOLD,NINEW,IROW1,IROWN = ',4I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)NLOCAL,ILOCS,NS 9013 FORMAT('NLOCAL,ILOCS,NS = ',3I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)IBUGQ,IERROR 9014 FORMAT('IBUGQ,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9015)NUMARG,NUMNAM,MAXNAM,N,MAXN 9015 FORMAT('NUMARG,NUMNAM,MAXNAM,N,MAXN = ',5I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9016)IWIDTH,NLOCAL,ILOCF 9016 FORMAT('IWIDTH,NLOCAL,ILOCF = ',3I8) CALL DPWRST('XXX','BUG ') DO9020I=1,NIOLD WRITE(ICOUT,9021)I,ISUB(I) 9021 FORMAT('I,ISUB(I) = ',2I8) CALL DPWRST('XXX','BUG ') 9020 CONTINUE 9090 CONTINUE C RETURN END SUBROUTINE DPFRAC(NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2,ICONT, 1IANGLU,ISEED, CCCCC JULY 1993. ADD FOLLOWING LINE. 1IFRAIT,IFRATY, 1IBUGG2,IBUGG3,IBUGQ,ISUBRO,IFOUND,IERROR) C C PURPOSE--GENERATE A FRACTAL PLOT C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--89/1 C ORIGINAL VERSION--DECEMBER 1988. C UPDATED --JUNE 1990. TEMPORARY ARRAYS TO GARBAGE COMMON C UPDATED --APRIL 1992. MAXCP7 AND MAXCP... MISTAKES C UPDATED --JULY 1993. ADD FRACTAL ITERATIONS AND C FRACTAL TYPE C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICASPL CHARACTER*4 IAND1 CHARACTER*4 IAND2 CHARACTER*4 ICONT CHARACTER*4 IANGLU CHARACTER*4 IBUGG2 CHARACTER*4 IBUGG3 CHARACTER*4 IBUGQ CHARACTER*4 ISUBRO CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IHWUSE CHARACTER*4 MESSAG CHARACTER*4 ICASEQ CHARACTER*4 IH1 CHARACTER*4 IH2 CCCCC CHARACTER*4 IERRO2 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN CCCCC JULY 1993. ADD FOLLOWING LINE. CHARACTER*4 IFRATY C C--------------------------------------------------------------------- C INCLUDE 'DPCOPA.INC' C DIMENSION Z1(MAXOBV) DIMENSION Z2(MAXOBV) DIMENSION Z3(MAXOBV) DIMENSION Z4(MAXOBV) DIMENSION Z5(MAXOBV) DIMENSION Z6(MAXOBV) DIMENSION Z7(MAXOBV) C DIMENSION W(MAXOBV) DIMENSION U(MAXPOP) CCCCC FOLLOWING LINES ADDED JUNE, 1990 INCLUDE 'DPCOZZ.INC' EQUIVALENCE (GARBAG(IGARB1),Z1(1)) EQUIVALENCE (GARBAG(IGARB2),Z2(1)) EQUIVALENCE (GARBAG(IGARB3),Z3(1)) EQUIVALENCE (GARBAG(IGARB4),Z4(1)) EQUIVALENCE (GARBAG(IGARB5),Z5(1)) EQUIVALENCE (GARBAG(IGARB6),Z6(1)) EQUIVALENCE (GARBAG(IGARB7),Z7(1)) EQUIVALENCE (GARBAG(IGARB7),W(1)) CCCCC END CHANGE C C-----COMMON---------------------------------------------------------- C INCLUDE 'DPCOHK.INC' INCLUDE 'DPCODA.INC' C C-----COMMON VARIABLES (GENERAL)-------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IERROR='NO' C ISUBN1='DPFR' ISUBN2='AC ' C MAXCP1=MAXCOL+1 MAXCP2=MAXCOL+2 MAXCP3=MAXCOL+3 MAXCP4=MAXCOL+4 MAXCP5=MAXCOL+5 MAXCP6=MAXCOL+6 C C ************************************* C ** TREAT THE FRACTAL PLOT CASE ** C ************************************* C IF(IBUGG2.EQ.'OFF'.AND.ISUBRO.NE.'FRAC')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFRAC--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)IBUGG2,IBUGG3,IBUGQ,ISUBRO 52 FORMAT('IBUGG2,IBUGG3,IBUGQ,ISUBRO = ',A4,2X,A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)ICASPL,IAND1,IAND2,ICONT 53 FORMAT('ICASPL,IAND1,IAND2,ICONT = ',A4,2X,A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)IANGLU,ISEED,MAXPOP 54 FORMAT('IANGLU,ISEED,MAXPOP = ',A4,2I8) CALL DPWRST('XXX','BUG ') 90 CONTINUE C C *************************** C ** STEP 11-- ** C ** EXTRACT THE COMMAND ** C *************************** C ISTEPN='11' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FRAC') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ICASPL='FRAC' C IF(NUMARG.GE.1.AND.IHARG(1).EQ.'PLOT')GOTO1110 GOTO1180 C 1110 CONTINUE ILASTC=1 CALL ADJUST(ILASTC,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG) GOTO1180 C 1180 CONTINUE IFOUND='YES' GOTO1190 C 1190 CONTINUE C C *********************************************************** C ** STEP 12-- ** C ** CHECK FOR THE PROPER NUMBER OF INPUT ARGUMENTS. ** C *********************************************************** C ISTEPN='12' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FRAC') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C MINNA=1 MAXNA=100 CALL CHECKA(NUMARG,MINNA,MAXNA,IANS,IWIDTH,ISUBN1,ISUBN2,IERROR) IF(IERROR.EQ.'YES')GOTO9000 C C ***************************************** C ** STEP 13-- ** C ** CHECK TO SEE THE TYPE SUBCASE ** C ** (BASED ON THE QUALIFIER)-- ** C ** 1) UNQUALIFIED (THAT IS, FULL); ** C ** 2) SUBSET/EXCEPT; OR ** C ** 3) FOR. ** C ***************************************** C ISTEPN='13' IF(IBUGG2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ICASEQ='FULL' ILOCQ=NUMARG+1 IF(NUMARG.LT.1)GOTO1380 DO1300J=1,NUMARG J1=J IF(IHARG(J).EQ.'SUBS'.AND.IHARG2(J).EQ.'ET ')GOTO1310 IF(IHARG(J).EQ.'EXCE'.AND.IHARG2(J).EQ.'PT ')GOTO1310 IF(IHARG(J).EQ.'FOR '.AND.IHARG2(J).EQ.' ')GOTO1320 1300 CONTINUE GOTO1390 1310 CONTINUE ICASEQ='SUBS' ILOCQ=J1 GOTO1390 1320 CONTINUE ICASEQ='FOR' ILOCQ=J1 GOTO1390 C 1380 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1381) 1381 FORMAT('***** INTERNAL ERROR IN DPFRAC') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1382) 1382 FORMAT(' AT BRANCH POINT 1381--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1383) 1383 FORMAT(' NUMARG LESS THAN 1 EVEN THOUGH') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1384) 1384 FORMAT(' NUMARG HAD PREVIOUSLY PASSED THIS TEST') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1385)NUMARG 1385 FORMAT(' ONCE ALREADY. VALUE OF NUMARG = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1386) 1386 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,1387)(IANS(I),I=1,IWIDTH) 1387 FORMAT(' ',80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 1390 CONTINUE IF(IBUGG2.EQ.'OFF')GOTO1395 WRITE(ICOUT,1391)NUMARG,ILOCQ,ICASEQ 1391 FORMAT('NUMARG,ILOCQ,ICASEQ = ',I8,I8,2X,A4) CALL DPWRST('XXX','BUG ') 1395 CONTINUE C C ************************************************** C ** STEP 14-- ** C ** DETERMINE THE NUMBER OF VARIABLES ** C ** TO BE INCLUDED AS PLOT COMPONENTS ** C ************************************************** C ISTEPN='14' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FRAC') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C NUMV2=ILOCQ-1 IF(NUMV2.GE.6.AND.NUMV2.LE.7)GOTO1490 C WRITE(ICOUT,1411) 1411 FORMAT('***** ERROR IN DPFRAC--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1412) 1412 FORMAT(' ILLEGAL SYNTAX--THE NUMBER OF VARIABLES ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1413) 1413 FORMAT(' TO BE INCLUDED AS ARGUMENTS ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1414) 1414 FORMAT(' IN A FRACTAL PLOT COMMAND') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1415) 1415 FORMAT(' MUST BE AT LEAST 6 AND AT MOST 7;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1416)NUMV2 1416 FORMAT(' SUCH WAS NOT THE CASE HERE. NUMV2 = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1417) 1417 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,1418)(IANS(I),I=1,IWIDTH) 1418 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 1490 CONTINUE C C *************************************** C ** STEP 15-- ** C ** CHECK THE VALIDITY OF EACH ** C ** OF THE VARIABLES. ** C *************************************** C ISTEPN='15' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FRAC') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C DO1500I=1,NUMV2 IH1=IHARG(I) IH2=IHARG2(I) IHWUSE='V' MESSAG='YES' CALL CHECKN(IH1,IH2,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) IF(IERROR.EQ.'YES')GOTO9000 IF(I.EQ.1)ICOL1=IVALUE(ILOCV) IF(I.EQ.2)ICOL2=IVALUE(ILOCV) IF(I.EQ.3)ICOL3=IVALUE(ILOCV) IF(I.EQ.4)ICOL4=IVALUE(ILOCV) IF(I.EQ.5)ICOL5=IVALUE(ILOCV) IF(I.EQ.6)ICOL6=IVALUE(ILOCV) IF(I.EQ.7)ICOL7=IVALUE(ILOCV) IF(I.EQ.1)N1=IN(ILOCV) IF(I.EQ.2)N2=IN(ILOCV) IF(I.EQ.3)N3=IN(ILOCV) IF(I.EQ.4)N4=IN(ILOCV) IF(I.EQ.5)N5=IN(ILOCV) IF(I.EQ.6)N6=IN(ILOCV) IF(I.EQ.7)N7=IN(ILOCV) 1500 CONTINUE C C ************************************************** C ** STEP 16-- ** C ** CHECK THAT ALL ARGUMENTS ** C ** HAVE THE SAME NUMBER OF OBSERVATIONS. ** C ************************************************** C ISTEPN='16' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FRAC') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(N2.NE.N1)GOTO1610 IF(NUMV2.LE.2)GOTO1690 IF(N3.NE.N1)GOTO1610 IF(NUMV2.LE.3)GOTO1690 IF(N4.NE.N1)GOTO1610 IF(NUMV2.LE.4)GOTO1690 IF(N5.NE.N1)GOTO1610 IF(NUMV2.LE.5)GOTO1690 IF(N6.NE.N1)GOTO1610 IF(NUMV2.LE.6)GOTO1690 IF(N7.NE.N1)GOTO1610 GOTO1690 C 1610 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1611) 1611 FORMAT('***** ERROR IN DPFRAC--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1612) 1612 FORMAT(' FOR A FRACTAL PLOT,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1613) 1613 FORMAT(' ALL VARIABLES MUST HAVE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1614) 1614 FORMAT(' THE SAME NUMBER OF ELEMENTS;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1615) 1615 FORMAT(' SUCH WAS NOT THE CASE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1621)N1 1621 FORMAT('THE FIRST VARIABLE HAD ',I8,' ELEMENTS;') CALL DPWRST('XXX','BUG ') IF(NUMV2.LE.1)GOTO1690 WRITE(ICOUT,1622)N2 1622 FORMAT('THE SECOND VARIABLE HAD ',I8,' ELEMENTS;') CALL DPWRST('XXX','BUG ') IF(NUMV2.LE.2)GOTO1690 WRITE(ICOUT,1623)N3 1623 FORMAT('THE THIRD VARIABLE HAD ',I8,' ELEMENTS;') CALL DPWRST('XXX','BUG ') IF(NUMV2.LE.3)GOTO1690 WRITE(ICOUT,1624)N4 1624 FORMAT('THE FOURTH VARIABLE HAD ',I8,' ELEMENTS;') CALL DPWRST('XXX','BUG ') IF(NUMV2.LE.4)GOTO1690 WRITE(ICOUT,1625)N5 1625 FORMAT('THE FIFTH VARIABLE HAD ',I8,' ELEMENTS;') CALL DPWRST('XXX','BUG ') IF(NUMV2.LE.5)GOTO1690 WRITE(ICOUT,1626)N6 1626 FORMAT('THE SIXTH VARIABLE HAD ',I8,' ELEMENTS;') CALL DPWRST('XXX','BUG ') IF(NUMV2.LE.6)GOTO1690 WRITE(ICOUT,1627)N7 1627 FORMAT('THE SEVENTH VARIABLE HAD ',I8,' ELEMENTS;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1628) 1628 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,1629)(IANS(I),I=1,IWIDTH) 1629 FORMAT(' ',80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 1690 CONTINUE C C ************************************************* C ** STEP 21-- ** C ** BRANCH TO THE APPROPRIATE SUBCASE; ** C ** (BASED ON THE QUALIFIER) ** C ** THEN FOR EACH OF THE RESPONSE VARIABLES ** C ** EXTRACT THE DATA SUBSET ** C ** (USUALLY ONLY 1 OBSERVATION) ** C ** AND ALSO EXTRACT THE ** C ** MIN AND MAX FOR THE FULL VARIABLE ** C ************************************************* C ISTEPN='21' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FRAC') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(ICASEQ.EQ.'FULL')GOTO2110 IF(ICASEQ.EQ.'SUBS')GOTO2120 IF(ICASEQ.EQ.'FOR')GOTO2130 C 2110 CONTINUE DO2115I=1,N1 ISUB(I)=1 2115 CONTINUE NQ=N1 GOTO2150 C 2120 CONTINUE NIOLD=N1 CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERROR) NQ=NIOLD GOTO2150 C 2130 CONTINUE NIOLD=N1 CALL DPFOR(NIOLD,NFOR,IROW1,IROWN, 1NLOCAL,ILOCS,NS,IBUGQ,IERROR) NQ=NFOR GOTO2150 C 2150 CONTINUE J=0 IMAX=N1 IF(NQ.LT.N1)IMAX=NQ DO2160I=1,IMAX IF(ISUB(I).EQ.0)GOTO2160 J=J+1 C IJ=MAXN*(ICOL1-1)+I IF(ICOL1.LE.MAXCOL)Z1(J)=V(IJ) IF(ICOL1.EQ.MAXCP1)Z1(J)=PRED(I) IF(ICOL1.EQ.MAXCP2)Z1(J)=RES(I) IF(ICOL1.EQ.MAXCP3)Z1(J)=YPLOT(I) IF(ICOL1.EQ.MAXCP4)Z1(J)=XPLOT(I) IF(ICOL1.EQ.MAXCP5)Z1(J)=X2PLOT(I) IF(ICOL1.EQ.MAXCP6)Z1(J)=TAGPLO(I) C IF(NUMV2.LE.1)GOTO2160 IJ=MAXN*(ICOL2-1)+I IF(ICOL2.LE.MAXCOL)Z2(J)=V(IJ) IF(ICOL2.EQ.MAXCP1)Z2(J)=PRED(I) IF(ICOL2.EQ.MAXCP2)Z2(J)=RES(I) IF(ICOL2.EQ.MAXCP3)Z2(J)=YPLOT(I) IF(ICOL2.EQ.MAXCP4)Z2(J)=XPLOT(I) IF(ICOL2.EQ.MAXCP5)Z2(J)=X2PLOT(I) IF(ICOL2.EQ.MAXCP6)Z2(J)=TAGPLO(I) C IF(NUMV2.LE.2)GOTO2160 IJ=MAXN*(ICOL3-1)+I IF(ICOL3.LE.MAXCOL)Z3(J)=V(IJ) IF(ICOL3.EQ.MAXCP1)Z3(J)=PRED(I) CCCCC THE FOLLOWING LINE WAS FIXED APRIL 1992 CCCCC IF(ICOL3.EQ.MAXCP3)Z3(J)=RES(I) IF(ICOL3.EQ.MAXCP2)Z3(J)=RES(I) IF(ICOL3.EQ.MAXCP3)Z3(J)=YPLOT(I) IF(ICOL3.EQ.MAXCP4)Z3(J)=XPLOT(I) IF(ICOL3.EQ.MAXCP5)Z3(J)=X2PLOT(I) IF(ICOL3.EQ.MAXCP6)Z3(J)=TAGPLO(I) C IF(NUMV2.LE.3)GOTO2160 IJ=MAXN*(ICOL4-1)+I IF(ICOL4.LE.MAXCOL)Z4(J)=V(IJ) IF(ICOL4.EQ.MAXCP1)Z4(J)=PRED(I) CCCCC THE FOLLOWING LINE WAS FIXED APRIL 1992 CCCCC IF(ICOL4.EQ.MAXCP4)Z4(J)=RES(I) IF(ICOL4.EQ.MAXCP2)Z4(J)=RES(I) IF(ICOL4.EQ.MAXCP3)Z4(J)=YPLOT(I) IF(ICOL4.EQ.MAXCP4)Z4(J)=XPLOT(I) IF(ICOL4.EQ.MAXCP5)Z4(J)=X2PLOT(I) IF(ICOL4.EQ.MAXCP6)Z4(J)=TAGPLO(I) C IF(NUMV2.LE.4)GOTO2160 IJ=MAXN*(ICOL5-1)+I IF(ICOL5.LE.MAXCOL)Z5(J)=V(IJ) IF(ICOL5.EQ.MAXCP1)Z5(J)=PRED(I) CCCCC THE FOLLOWING LINE WAS FIXED APRIL 1992 CCCCC IF(ICOL5.EQ.MAXCP5)Z5(J)=RES(I) IF(ICOL5.EQ.MAXCP2)Z5(J)=RES(I) IF(ICOL5.EQ.MAXCP3)Z5(J)=YPLOT(I) IF(ICOL5.EQ.MAXCP4)Z5(J)=XPLOT(I) IF(ICOL5.EQ.MAXCP5)Z5(J)=X2PLOT(I) IF(ICOL5.EQ.MAXCP6)Z5(J)=TAGPLO(I) C IF(NUMV2.LE.5)GOTO2160 IJ=MAXN*(ICOL6-1)+I IF(ICOL6.LE.MAXCOL)Z6(J)=V(IJ) IF(ICOL6.EQ.MAXCP1)Z6(J)=PRED(I) CCCCC THE FOLLOWING LINE WAS FIXED APRIL 1992 CCCCC IF(ICOL6.EQ.MAXCP6)Z6(J)=RES(I) IF(ICOL6.EQ.MAXCP2)Z6(J)=RES(I) IF(ICOL6.EQ.MAXCP3)Z6(J)=YPLOT(I) IF(ICOL6.EQ.MAXCP4)Z6(J)=XPLOT(I) IF(ICOL6.EQ.MAXCP5)Z6(J)=X2PLOT(I) IF(ICOL6.EQ.MAXCP6)Z6(J)=TAGPLO(I) C IF(NUMV2.LE.6)GOTO2160 IJ=MAXN*(ICOL7-1)+I IF(ICOL7.LE.MAXCOL)Z7(J)=V(IJ) IF(ICOL7.EQ.MAXCP1)Z7(J)=PRED(I) CCCCC THE FOLLOWING LINE WAS FIXED APRIL 1992 CCCCC IF(ICOL7.EQ.MAXCP7)Z7(J)=RES(I) IF(ICOL7.EQ.MAXCP2)Z7(J)=RES(I) IF(ICOL7.EQ.MAXCP3)Z7(J)=YPLOT(I) IF(ICOL7.EQ.MAXCP4)Z7(J)=XPLOT(I) IF(ICOL7.EQ.MAXCP5)Z7(J)=X2PLOT(I) CCCCC THE FOLLOWING LINE WAS FIXED APRIL 1992 CCCCC IF(ICOL7.EQ.MAXCP7)Z6(J)=TAGPLO(I) IF(ICOL7.EQ.MAXCP6)Z7(J)=TAGPLO(I) C 2160 CONTINUE NLOCAL=J C C ************************************************************* C ** STEP 31-- ** C ** FORM THE VERTICAL AND HORIZONTAL AXIS ** C ** VALUES Y(.) AND X(.) FOR THE PLOT. ** C ** DEFINE THE NUMBER OF PLOT POINTS (NPLOTP). ** C ** DEFINE THE NUMBER OF PLOT VARIABLES (NPLOTV). ** C ************************************************************* C ISTEPN='8' IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'FRAC') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(NUMV2.LE.6)GOTO3110 GOTO3119 3110 CONTINUE DO3111I=1,NLOCAL Z7(I)=1.0 3111 CONTINUE 3119 CONTINUE C CALL DPFRA2(Z1,Z2,Z3,Z4,Z5,Z6,Z7,NLOCAL,NUMV2,ICASPL,ICONT, 1IANGLU,ISEED,W,U,MAXPOP, CCCCC JULY 1993. ADD FOLLOWING LINE (FRACTAL ITERATIONS, FRACTAL TYPE) 1IFRAIT,IFRATY, 1Y,X,D,NPLOTP,NPLOTV,IBUGG3,ISUBRO,IERROR) C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGG2.EQ.'OFF'.AND.ISUBRO.NE.'FRAC')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFRAC--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IBUGG2,IBUGG3,IBUGQ,ISUBRO 9012 FORMAT('IBUGG2,IBUGG3,IBUGQ,ISUBRO = ',A4,2X,A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)IFOUND,IERROR 9013 FORMAT('IFOUND,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)ICASPL,IAND1,IAND2,ICONT 9014 FORMAT('ICASPL,IAND1,IAND2,ICONT = ',A4,2X,A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9015)IANGLU,ISEED,MAXPOP 9015 FORMAT('IANGLU,ISEED,MAXPOP = ',A4,2I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9016)NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2 9016 FORMAT('NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2 = ', 1I8,I8,I8,2X,A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9041)NLOCAL,NUMV2 9041 FORMAT('NLOCAL,NUMV2 = ',2I8) CALL DPWRST('XXX','BUG ') IF(NLOCAL.LE.0)GOTO9044 DO9042I=1,NLOCAL WRITE(ICOUT,9043)I,Z1(I),Z2(I),Z3(I),Z4(I),Z5(I),Z6(I) 9043 FORMAT('I,Z1(I),Z2(I),Z3(I),Z4(I),Z5(I),Z6(I) = ',I8,6E10.3) CALL DPWRST('XXX','BUG ') 9042 CONTINUE 9044 CONTINUE WRITE(ICOUT,9051)NPLOTP 9051 FORMAT('NPLOTP = ',I8) CALL DPWRST('XXX','BUG ') IF(NPLOTP.LE.0)GOTO9054 DO9052I=1,NPLOTP WRITE(ICOUT,9053)I,Y(I),X(I),D(I) 9053 FORMAT('I,Y(I),X(I),D(I) = ',I8,3F12.5) CALL DPWRST('XXX','BUG ') 9052 CONTINUE 9054 CONTINUE 9090 CONTINUE C RETURN END SUBROUTINE DPFRA2(Z1,Z2,Z3,Z4,Z5,Z6,Z7,N,NUMV2,ICASPL,ICONT, 1IANGLU,ISEED,W,U,MAXPOP, CCCCC JULY 1993. ADD FOLLOWING LINE 1IFRAIT,IFRATY, 1Y2,X2,D2,N2,NPLOTV,IBUGG3,ISUBRO,IERROR) C C PURPOSE--GENERATE A PAIR OF COORDINATE VECTORS C THAT WILL DEFINE AN FRACTAL PLOT C NOTE--Z1 = INITIAL ROTATION C Z2 = X-SCALING C Z3 = Y-SCALING C Z4 = FINAL ROTATION C Z5 = X-TRANSLATION C Z6 = Y-TRANSLATION C Z7 = PROBABILITY WEIGHTING FOR EACH REGION C REFERENCE--WILLIAM DOUGLAS WITHERS, NAVAL ACADEMY C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--88/12 C ORIGINAL VERSION--DECEMBER 1988. C UPDATED --JULY 1993. FRACTAL ITERATIONS, FRACTAL C TYPE. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICASPL CHARACTER*4 ICONT CHARACTER*4 IANGLU CHARACTER*4 IBUGG3 CHARACTER*4 ISUBRO CHARACTER*4 IERROR CCCCC JULY 1993. ADD FOLLOWING LINE. CHARACTER*4 IFRATY C C--------------------------------------------------------------------- C DIMENSION Z1(*) DIMENSION Z2(*) DIMENSION Z3(*) DIMENSION Z4(*) DIMENSION Z5(*) DIMENSION Z6(*) DIMENSION Z7(*) C DIMENSION W(*) DIMENSION U(*) C DIMENSION Y2(*) DIMENSION X2(*) DIMENSION D2(*) C DIMENSION A11(100) DIMENSION A12(100) DIMENSION A21(100) DIMENSION A22(100) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IF(IBUGG3.EQ.'OFF'.AND.ISUBRO.NE.'FRA2')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFRA2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)IBUGG3,ISUBRO,IERROR 52 FORMAT('IBUGG3,ISUBRO,IERROR = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)ICASPL,ICONT,IANGLU,ISEED,MAXPOP 53 FORMAT('ICASPL,ICONT,IANGLU,ISEED,MAXPOP = ', 1A4,2X,A4,2X,A4,2I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)NUMV2 54 FORMAT('NUMV2 = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,61)N 61 FORMAT('N = ',I8) CALL DPWRST('XXX','BUG ') DO62I=1,N WRITE(ICOUT,63)I,Z1(I),Z2(I),Z3(I),Z4(I),Z5(I),Z6(I),Z7(I) 63 FORMAT('I,Z1(I),Z2(I),Z3(I),Z4(I),Z5(I),Z6(I),Z7(I) = ', 1I8,7E9.2) CALL DPWRST('XXX','BUG ') 62 CONTINUE 90 CONTINUE C CONST=1.0 IF(IANGLU.EQ.'DEGR')CONST=2*3.14159/360.0 CCCCC JULY 1993. BRANCH ACCORDING TO CASE. C C WHITHER'S FORMAT C IF(IFRATY.EQ.'WHIT')THEN DO1100I=1,N C ALPHA=Z1(I) SCALEX=Z2(I) SCALEY=Z3(I) BETA=Z4(I) C SINALP=SIN(CONST*ALPHA) COSALP=COS(CONST*ALPHA) SINBET=SIN(CONST*BETA) COSBET=COS(CONST*BETA) A11(I)=COSALP*COSBET*SCALEX-SINALP*SINBET*SCALEY A12(I)=(-SINALP*COSBET*SCALEX-COSALP*SINBET*SCALEY) A21(I)=COSALP*SINBET*SCALEX+SINALP*COSBET*SCALEY A22(I)=(-SINALP*SINBET*SCALEX+COSALP*COSBET*SCALEY) C 1100 CONTINUE C C BARNSLEY ROTATION ANGLE FORMAT C ELSEIF(IFRATY.EQ.'ANGL')THEN DO1110I=1,N C ALPHA=Z1(I) SCALEX=Z2(I) SCALEY=Z3(I) BETA=Z4(I) C A11(I)=SCALEX*COS(ALPHA) A12(I)=-SCALEY*SIN(BETA) A21(I)=SCALEX*SIN(ALPHA) A22(I)=SCALEY*COS(BETA) C 1110 CONTINUE C C BARNSLEY STANDARD FORMAT C ELSE DO1120I=1,N A11(I)=Z1(I) A12(I)=Z2(I) A21(I)=Z3(I) A22(I)=Z4(I) 1120 CONTINUE ENDIF C SUM=0.0 DO1210I=1,N SUM=SUM+Z7(I) 1210 CONTINUE C DO1220I=1,N W(I)=Z7(I)/SUM 1220 CONTINUE C CUM=0.0 DO1230I=1,N CUM=CUM+W(I) W(I)=CUM 1230 CONTINUE C CCCCC JULY 1993. ADD FOLLOWING LINES CCCCC NU=MAXPOP NU=IFRAIT IF(NU.GT.MAXPOP)NU=IFRAIT CCCCC END CHANGE CALL UNIRAN(NU,ISEED,U) C XNEW=0.0 YNEW=0.0 K=0 JCUT=20 DO1310J=1,NU C UJ=U(J) DO1320I=1,N INDEX=I IF(UJ.LE.W(I))GOTO1329 1320 CONTINUE 1329 CONTINUE C XOLD=XNEW YOLD=YNEW XTEMP=A11(INDEX)*XOLD+A12(INDEX)*YOLD YTEMP=A21(INDEX)*XOLD+A22(INDEX)*YOLD XNEW=XTEMP+Z5(INDEX) YNEW=YTEMP+Z6(INDEX) IF(J.LE.JCUT)GOTO1310 IF(J.GT.JCUT)K=K+1 X2(K)=XNEW Y2(K)=YNEW D2(K)=1.0 1310 CONTINUE C N2=K NPLOTV=2 GOTO9000 C C ****************** C ** STEP 90-- ** C ** EXIT ** C ****************** C 9000 CONTINUE IF(IBUGG3.EQ.'OFF'.AND.ISUBRO.NE.'FRA2')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFRA2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IBUGG3,ISUBRO,IERROR 9012 FORMAT('IBUGG3,ISUBRO,IERROR = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)ICASPL,ICONT,IANGLU,ISEED,MAXPOP 9013 FORMAT('ICASPL,ICONT,IANGLU,ISEED,MAXPOP = ', 1A4,2X,A4,2X,A4,2I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9021)N 9021 FORMAT('N = ',I8) CALL DPWRST('XXX','BUG ') DO9022I=1,N WRITE(ICOUT,9023)A11(I),A12(I),A21(I),A22(I) 9023 FORMAT('A11(I),A12(I),A21(I),A22(I) = ',4E15.7) CALL DPWRST('XXX','BUG ') 9022 CONTINUE DO9024I=1,N WRITE(ICOUT,9025)I,W(I) 9025 FORMAT('I,W(I) = ',I8,E15.7) CALL DPWRST('XXX','BUG ') 9024 CONTINUE WRITE(ICOUT,9051)NUMV2 9051 FORMAT('NUMV2 = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9052)N2,NPLOTV 9052 FORMAT('N2,NPLOTV = ',2I8) CALL DPWRST('XXX','BUG ') DO9053I=1,N2 CCCCC WRITE(ICOUT,9054)I,U(I),X2(I),Y2(I) 9054 FORMAT('I,U(I),X2(I),Y2(I) = ',I8,3E15.7) CCCCC CALL DPWRST('XXX','BUG ') 9053 CONTINUE 9090 CONTINUE C RETURN END SUBROUTINE DPFRAM(ICOM,IHARG,NUMARG, 1IX1FSW,IX2FSW,IY1FSW,IY2FSW, CCCCC THE FOLLOWING LINE WAS ADDED SEPTEMBER 1993 1FRASTY, 1IFOUND,IERROR) C C PURPOSE--DEFINE THE FRAME SWITCHES (ON/OFF) C FOR ANY OF THE 4 FRAME LINES. C SUCH FRAME SWITCHES DEFINE WHETHER OR NOT C EACH OF THE 4 FRAME LINES EXISTS. C THE CONTENTS OF A FRAME SWITCH ARE C ON OR OFF. C THE FRAME SWITCHES FOR THE 4 FRAME LINES C ARE CONTAINED IN THE 4 VARIABLES C IX1FSW,IX2FSW,IY1FSW,IY2FSW. C INPUT ARGUMENTS--ICOM C --IHARG (A HOLLERITH VECTOR) C --NUMARG C OUTPUT ARGUMENTS--IX1FSW (A HOLLERITH VECTOR) C --IX2FSW (A HOLLERITH VECTOR) C --IY1FSW (A HOLLERITH VECTOR) C --IY2FSW (A HOLLERITH VECTOR) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--OCTOBER 1980. C UPDATED --MAY 1982. C UPDATED --SEPTEMBER 1993. 3-D C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICOM CHARACTER*4 IHARG C CHARACTER*4 IX1FSW CHARACTER*4 IX2FSW CHARACTER*4 IY1FSW CHARACTER*4 IY2FSW C CCCCC THE FOLLOWING LINE WAS ADDED SEPTEMBER 1993 CHARACTER*4 FRASTY C CHARACTER*4 IFOUND CHARACTER*4 IERROR C C--------------------------------------------------------------------- C DIMENSION IHARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C IF(NUMARG.GE.1.AND.IHARG(1).EQ.'CORN')GOTO1900 IF(NUMARG.GE.1.AND.IHARG(1).EQ.'COOR')GOTO1900 IF(NUMARG.GE.1.AND.IHARG(1).EQ.'COLO')GOTO1900 C CCCCC THE FOLLOWING SECTION WAS ADDED SEPTEMBER 1993 CCCCC TO ALLOW FOR 3-D FRAME STYLE SETTINGS SEPTEMBER 1993 C ***************************************************** C ** TREAT THE CASE WHEN ** C ** THE 3D FRAME STYLE IS TO BE CHANGED ** C ***************************************************** C IF(ICOM.EQ.'3DFR')GOTO1000 GOTO1099 C 1000 CONTINUE IF(NUMARG.LE.0)GOTO1010 IF(IHARG(NUMARG).EQ.'ON')GOTO1010 IF(IHARG(NUMARG).EQ.'OFF')GOTO1020 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1010 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1010 IF(IHARG(NUMARG).EQ.'?')GOTO1030 GOTO1020 C 1010 CONTINUE IFOUND='YES' FRASTY='3PRO' IF(IFEEDB.EQ.'ON')THEN WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1011) 1011 FORMAT('THE 3D FRAME SWITCH') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1012) 1012 FORMAT('HAS JUST BEEN SET TO 3PRONG') CALL DPWRST('XXX','BUG ') GOTO1900 ENDIF C 1020 CONTINUE IFOUND='YES' C IF(IHARG(1).EQ.'OFF'.OR.IHARG(1).EQ.'NONE')THEN FRASTY='OFF' IF(IFEEDB.EQ.'ON')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1011) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1021) 1021 FORMAT('HAS JUST BEEN SET TO OFF') CALL DPWRST('XXX','BUG ') ENDIF GOTO1900 ENDIF C IF(IHARG(1).EQ.'3PRO')THEN FRASTY='3PRO' IF(IFEEDB.EQ.'ON')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1011) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1022) 1022 FORMAT('HAS JUST BEEN SET TO 3PRONG') CALL DPWRST('XXX','BUG ') ENDIF GOTO1900 ENDIF C IF(IHARG(1).EQ.'3PLA')THEN FRASTY='3PLA' IF(IFEEDB.EQ.'ON')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1011) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1023) 1023 FORMAT('HAS JUST BEEN SET TO 3PLANE') CALL DPWRST('XXX','BUG ') ENDIF GOTO1900 ENDIF C IF(IHARG(1).EQ.'CUBE'.OR.IHARG(1).EQ.'BOX')THEN FRASTY='BOX' IF(IFEEDB.EQ.'ON')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1011) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1024) 1024 FORMAT('HAS JUST BEEN SET TO BOX') CALL DPWRST('XXX','BUG ') ENDIF GOTO1900 ENDIF C IF(IHARG(1).EQ.'ZIGZ')THEN FRASTY='ZIGZ' IF(IFEEDB.EQ.'ON')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1011) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1025) 1025 FORMAT('HAS JUST BEEN SET TO ZIGZAG') CALL DPWRST('XXX','BUG ') ENDIF GOTO1900 ENDIF C 1030 CONTINUE IFOUND='YES' WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1031) 1031 FORMAT('THE 3D FRAME SWITCH') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1032)FRASTY 1032 FORMAT('HAS THE CURRENT SETTING = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1033) 1033 FORMAT('ALLOWABLE SETTINGS--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1034) 1034 FORMAT(' 3PRONG') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1035) 1035 FORMAT(' 3PLANE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1036) 1036 FORMAT(' BOX') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1037) 1037 FORMAT(' ZIGZAG') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1038) 1038 FORMAT(' OFF') CALL DPWRST('XXX','BUG ') GOTO1900 C 1099 CONTINUE C C ***************************************************** C ** TREAT THE CASE WHEN ** C ** BOTH HORIZONTAL FRAME LINES ARE TO BE CHANGED ** C ***************************************************** C IF(ICOM.EQ.'XFRA')GOTO1100 GOTO1199 C 1100 CONTINUE IF(NUMARG.LE.0)GOTO1110 IF(IHARG(NUMARG).EQ.'ON')GOTO1110 IF(IHARG(NUMARG).EQ.'OFF')GOTO1120 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1110 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1110 IERROR='YES' GOTO1900 C 1110 CONTINUE IFOUND='YES' IX1FSW='ON' IX2FSW='ON' C IF(IFEEDB.EQ.'OFF')GOTO1119 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1115) 1115 FORMAT('THE XFRAME SWITCH (FOR BOTH HORIZONTAL FRAME LINES) ', 1'HAS JUST BEEN TURNED ON') CALL DPWRST('XXX','BUG ') 1119 CONTINUE GOTO1900 C 1120 CONTINUE IFOUND='YES' IX1FSW='OFF' IX2FSW='OFF' C IF(IFEEDB.EQ.'OFF')GOTO1129 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1125) 1125 FORMAT('THE XFRAME SWITCH (FOR BOTH HORIZONTAL FRAME LINES) ', 1'HAS JUST BEEN TURNED OFF') CALL DPWRST('XXX','BUG ') 1129 CONTINUE GOTO1900 C 1199 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE BOTTOM HORIZONTAL FRAME LINE IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'X1FR')GOTO1200 GOTO1299 C 1200 CONTINUE IF(NUMARG.LE.0)GOTO1210 IF(IHARG(NUMARG).EQ.'ON')GOTO1210 IF(IHARG(NUMARG).EQ.'OFF')GOTO1220 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1210 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1210 IERROR='YES' GOTO1900 C 1210 CONTINUE IFOUND='YES' IX1FSW='ON' C IF(IFEEDB.EQ.'OFF')GOTO1219 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1215) 1215 FORMAT('THE X1FRAME SWITCH (FOR THE BOTTOM HORIZONTAL ', 1'FRAME LINE ONLY) HAS JUST BEEN TURNED ON') CALL DPWRST('XXX','BUG ') 1219 CONTINUE GOTO1900 C 1220 CONTINUE IFOUND='YES' IX1FSW='OFF' C IF(IFEEDB.EQ.'OFF')GOTO1229 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1225) 1225 FORMAT('THE X1FRAME SWITCH (FOR THE BOTTOM HORIZONTAL ', 1'FRAME LINE ONLY) HAS JUST BEEN TURNED OFF') CALL DPWRST('XXX','BUG ') 1229 CONTINUE GOTO1900 C 1299 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE TOP HORIZONTAL FRAME LINE IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'X2FR')GOTO1300 GOTO1399 C 1300 CONTINUE IF(NUMARG.LE.0)GOTO1310 IF(IHARG(NUMARG).EQ.'ON')GOTO1310 IF(IHARG(NUMARG).EQ.'OFF')GOTO1320 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1310 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1310 IERROR='YES' GOTO1900 C 1310 CONTINUE IFOUND='YES' IX2FSW='ON' C IF(IFEEDB.EQ.'OFF')GOTO1319 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1315) 1315 FORMAT('THE X2FRAME SWITCH (FOR THE TOP HORIZONTAL ', 1'FRAME LINE ONLY) HAS JUST BEEN TURNED ON') CALL DPWRST('XXX','BUG ') 1319 CONTINUE GOTO1900 C 1320 CONTINUE IFOUND='YES' IX2FSW='OFF' C IF(IFEEDB.EQ.'OFF')GOTO1329 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1325) 1325 FORMAT('THE X2FRAME SWITCH (FOR THE TOP HORIZONTAL ', 1'FRAME LINE ONLY) HAS JUST BEEN TURNED OFF') CALL DPWRST('XXX','BUG ') 1329 CONTINUE GOTO1900 C 1399 CONTINUE C C *************************************************** C ** TREAT THE CASE WHEN ** C ** BOTH VERTICAL FRAME LINES ARE TO BE CHANGED ** C *************************************************** C IF(ICOM.EQ.'YFRA')GOTO1400 GOTO1499 C 1400 CONTINUE IF(NUMARG.LE.0)GOTO1410 IF(IHARG(NUMARG).EQ.'ON')GOTO1410 IF(IHARG(NUMARG).EQ.'OFF')GOTO1420 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1410 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1410 IERROR='YES' GOTO1900 C 1410 CONTINUE IFOUND='YES' IY1FSW='ON' IY2FSW='ON' C IF(IFEEDB.EQ.'OFF')GOTO1419 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1415) 1415 FORMAT('THE YFRAME SWITCH (FOR BOTH VERTICAL FRAME LINES) ', 1'HAS JUST BEEN TURNED ON') CALL DPWRST('XXX','BUG ') 1419 CONTINUE GOTO1900 C 1420 CONTINUE IFOUND='YES' IY1FSW='OFF' IY2FSW='OFF' C IF(IFEEDB.EQ.'OFF')GOTO1429 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1425) 1425 FORMAT('THE YFRAME SWITCH (FOR BOTH VERTICAL FRAME LINES) ', 1'HAS JUST BEEN TURNED OFF') CALL DPWRST('XXX','BUG ') 1429 CONTINUE GOTO1900 C 1499 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE LEFT VERTICAL FRAME LINE IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'Y1FR')GOTO1500 GOTO1599 C 1500 CONTINUE IF(NUMARG.LE.0)GOTO1510 IF(IHARG(NUMARG).EQ.'ON')GOTO1510 IF(IHARG(NUMARG).EQ.'OFF')GOTO1520 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1510 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1510 IERROR='YES' GOTO1900 C 1510 CONTINUE IFOUND='YES' IY1FSW='ON' C IF(IFEEDB.EQ.'OFF')GOTO1519 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1515) 1515 FORMAT('THE Y1FRAME SWITCH (FOR THE LEFT VERTICAL ', 1'FRAME LINE ONLY) HAS JUST BEEN TURNED ON') CALL DPWRST('XXX','BUG ') 1519 CONTINUE GOTO1900 C 1520 CONTINUE IFOUND='YES' IY1FSW='OFF' C IF(IFEEDB.EQ.'OFF')GOTO1529 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1525) 1525 FORMAT('THE Y1FRAME SWITCH (FOR THE LEFT VERTICAL ', 1'FRAME LINE ONLY) HAS JUST BEEN TURNED OFF') CALL DPWRST('XXX','BUG ') 1529 CONTINUE GOTO1900 C 1599 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE RIGHT VERTCIAL FRAME LINE IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'Y2FR')GOTO1600 GOTO1699 C 1600 CONTINUE IF(NUMARG.LE.0)GOTO1610 IF(IHARG(NUMARG).EQ.'ON')GOTO1610 IF(IHARG(NUMARG).EQ.'OFF')GOTO1620 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1610 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1610 IERROR='YES' GOTO1900 C 1610 CONTINUE IFOUND='YES' IY2FSW='ON' C IF(IFEEDB.EQ.'OFF')GOTO1619 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1615) 1615 FORMAT('THE Y2FRAME SWITCH (FOR THE RIGHT VERTICAL ', 1'FRAME LINE ONLY) HAS JUST BEEN TURNED ON') CALL DPWRST('XXX','BUG ') 1619 CONTINUE GOTO1900 C 1620 CONTINUE IFOUND='YES' IY2FSW='OFF' C IF(IFEEDB.EQ.'OFF')GOTO1629 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1625) 1625 FORMAT('THE Y2FRAME SWITCH (FOR THE RIGHT VERTICAL ', 1'FRAME LINE ONLY) HAS JUST BEEN TURNED OFF') CALL DPWRST('XXX','BUG ') 1629 CONTINUE GOTO1900 C 1699 CONTINUE C C ************************************************** C ** TREAT THE CASE WHEN ** C ** THE ENTIRE 4-SIDED FRAME IS TO BE CHANGED ** C ************************************************** C IF(ICOM.EQ.'XYFR')GOTO1700 IF(ICOM.EQ.'YXFR')GOTO1700 IF(ICOM.EQ.'FRAM')GOTO1700 GOTO1799 C 1700 CONTINUE IF(NUMARG.LE.0)GOTO1710 IF(IHARG(NUMARG).EQ.'ON')GOTO1710 IF(IHARG(NUMARG).EQ.'OFF')GOTO1720 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1710 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1710 IERROR='YES' GOTO1900 C 1710 CONTINUE IFOUND='YES' IX1FSW='ON' IX2FSW='ON' IY1FSW='ON' IY2FSW='ON' C IF(IFEEDB.EQ.'OFF')GOTO1719 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1715) 1715 FORMAT('THE FRAME SWITCH (FOR THE ENTIRE 4-SIDED FRAME) ', 1'HAS JUST BEEN TURNED ON') CALL DPWRST('XXX','BUG ') 1719 CONTINUE GOTO1900 C 1720 CONTINUE IFOUND='YES' IX1FSW='OFF' IX2FSW='OFF' IY1FSW='OFF' IY2FSW='OFF' C IF(IFEEDB.EQ.'OFF')GOTO1729 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1725) 1725 FORMAT('THE FRAME SWITCH (FOR THE ENTIRE 4-SIDED FRAME) ', 1'HAS JUST BEEN TURNED OFF') CALL DPWRST('XXX','BUG ') 1729 CONTINUE GOTO1900 C 1799 CONTINUE C 1900 CONTINUE RETURN END SUBROUTINE DPFRCC(IHARG,IHARG2,IARGT,ARG,NUMARG, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,IANS,IWIDTH, 1PXMIN,PXMAX,PYMIN,PYMAX,IBUGP2,IFOUND,IERROR) C C PURPOSE--DEFINE THE FRAME CORNER COORDINATES C (LOWER LEFT AND UPPER RIGHT) C WHICH IN TURN WILL DEFINE THE SIZE AND SHAPE C OF THE PLOT FRAME. C THE 2 PAIRS OF COORDINATES ARE CONTAINED IN THE C 4 VARIABLES PXMIN,PYMIN AND PXMAX,PYMAX C INPUT ARGUMENTS--IHARG (A HOLLERITH VECTOR) C --IARGT (A HOLLERITH VECTOR) C --ARG (A FLOATING POINT VECTOR) C --NUMARG C OUTPUT ARGUMENTS--PXMIN = X COOR. FOR LOWER LEFT CORNER C --PXMAX = X COOR. FOR UPPER RIGHT CORNER C --PYMIN = Y COOR. FOR LOWER LEFT CORNER C --PYMAX = Y COOR. FOR UPPER RIGHT CORNER C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--NOVEMBER 1978. C UPDATED --SEPTEMBER 1980. C UPDATED --MARCH 1981. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IHARG2 CHARACTER*4 IARGT CHARACTER*4 IHNAME CHARACTER*4 IHNAM2 CHARACTER*4 IUSE CHARACTER*4 IANS CHARACTER*4 IBUGP2 CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IHWUSE CHARACTER*4 MESSAG CHARACTER*4 IHWORD CHARACTER*4 IHWOR2 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 C C--------------------------------------------------------------------- C DIMENSION IHARG(*) DIMENSION IHARG2(*) DIMENSION IARGT(*) DIMENSION ARG(*) C DIMENSION IHNAME(*) DIMENSION IHNAM2(*) DIMENSION IUSE(*) DIMENSION IN(*) DIMENSION IVALUE(*) DIMENSION VALUE(*) DIMENSION IANS(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C ISUBN1='DPFR' ISUBN2='CC ' C IFOUND='NO' IERROR='NO' C IF(IBUGP2.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFRCC--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)IFOUND,IERROR 52 FORMAT('IFOUND,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)PXMIN,PXMAX,PYMIN,PYMAX 53 FORMAT('PXMIN,PXMAX,PYMIN,PYMAX = ',4E15.7) CALL DPWRST('XXX','BUG ') 90 CONTINUE C C ************************************************** C ** TREAT THE FRAME COORDINATES CASE ** C ************************************************** C IF(NUMARG.LE.1)GOTO1150 GOTO1110 C 1110 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1150 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150 IF(NUMARG.GE.2)GOTO1175 GOTO1120 C 1120 CONTINUE IERROR='YES' WRITE(ICOUT,1121) 1121 FORMAT('***** ERROR IN DPFRCC--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1122) 1122 FORMAT(' ILLEGAL FORM FOR FRAME CORNER COORDINATES ', 1'COMMAND.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1124) 1124 FORMAT(' TEST EXAMPLE TO DEMONSTRATE THE ', 1'PROPER FORM--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1125) 1125 FORMAT(' SUPPOSE IT IS DESIRED TO POSITION ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1126) 1126 FORMAT(' THE LOWER LEFT CORNER OF THE FRAME') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1127) 1127 FORMAT(' 10% ACROSS THE PAGE AND 20% UP THE PAGE, AND') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1128) 1128 FORMAT(' THE UPPER RIGHT CORNER OF THE FRAME') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1129) 1129 FORMAT(' 90% ACROSS THE PAGE AND 80% UP THE PAGE,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1130) 1130 FORMAT(' THEN THE ALLOWABLE FORM IS--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1131) 1131 FORMAT(' FRAME CORNER COORDINATES 10 20 90 80') CALL DPWRST('XXX','BUG ') GOTO9000 C 1150 CONTINUE PXMIN=15. PYMIN=20. PXMAX=85. PYMAX=90. GOTO1180 C 1175 CONTINUE DO1176J=2,NUMARG IF(IARGT(J).EQ.'NUMB')GOTO1177 GOTO1178 1177 CONTINUE IF(J.EQ.2)PXMIN=ARG(J) IF(J.EQ.3)PYMIN=ARG(J) IF(J.EQ.4)PXMAX=ARG(J) IF(J.EQ.5)PYMAX=ARG(J) GOTO1176 1178 CONTINUE IHWORD=IHARG(J) IHWOR2=IHARG2(J) IHWUSE='P' MESSAG='YES' CALL CHECKN(IHWORD,IHWOR2,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOC,IERROR) IF(IERROR.EQ.'YES')GOTO9000 IF(J.EQ.2)PXMIN=VALUE(ILOC) IF(J.EQ.3)PYMIN=VALUE(ILOC) IF(J.EQ.4)PXMAX=VALUE(ILOC) IF(J.EQ.5)PYMAX=VALUE(ILOC) 1176 CONTINUE GOTO1180 C 1180 CONTINUE IFOUND='YES' C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1185) 1185 FORMAT('THE FRAME CORNER COORDINATES HAVE JUST BEEN SET ', 1'AS FOLLOWS--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1186)PXMIN,PYMIN 1186 FORMAT(' (X,Y) FOR LOWER LEFT CORNER OF FRAME = ',2E15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1187)PXMAX,PYMAX 1187 FORMAT(' (X,Y) FOR UPPER RIGHT CORNER OF FRAME = ',2E15.7) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO9000 C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGP2.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFRCC--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IFOUND,IERROR 9012 FORMAT('IFOUND,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)PXMIN,PXMAX,PYMIN,PYMAX 9013 FORMAT('PXMIN,PXMAX,PYMIN,PYMAX = ',4E15.7) CALL DPWRST('XXX','BUG ') 9090 CONTINUE C RETURN END SUBROUTINE DPFRCL(ICOM,IHARG,NUMARG, 1IDEFCO, 1IX1FCO,IX2FCO,IY1FCO,IY2FCO, 1IFOUND,IERROR) C C PURPOSE--DEFINE THE FRAME COLOR SWITCHES C FOR ANY OF THE 4 FRAME LINES. C SUCH FRAME COLOR SWITCHES DEFINE THE COLOR C FOR EACH OF THE 4 FRAME LINES. C THE CONTENTS OF A FRAME COLOR SWITCH ARE C A COLOR. C THE FRAME COLOR SWITCHES FOR THE 4 FRAME LINES C ARE CONTAINED IN THE 4 VARIABLES C IX1FCO,IX2FCO,IY1FCO,IY2FCO. C INPUT ARGUMENTS--ICOM C --IHARG (A HOLLERITH VECTOR) C --NUMARG C --IDEFCO C OUTPUT ARGUMENTS--IX1FCO (A HOLLERITH VECTOR) C --IX2FCO (A HOLLERITH VECTOR) C --IY1FCO (A HOLLERITH VECTOR) C --IY2FCO (A HOLLERITH VECTOR) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--OCTOBER 1980. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICOM CHARACTER*4 IHARG CHARACTER*4 IDEFCO C CHARACTER*4 IX1FCO CHARACTER*4 IX2FCO CHARACTER*4 IY1FCO CHARACTER*4 IY2FCO C CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IHOLD C C--------------------------------------------------------------------- C DIMENSION IHARG(*) C C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C IF(NUMARG.LE.0)GOTO1900 IF(NUMARG.GE.1.AND.IHARG(1).EQ.'COLO')GOTO1090 IF(NUMARG.GE.2.AND.IHARG(1).EQ.'MARK'.AND. 1IHARG(2).EQ.'COLO')GOTO1090 GOTO1900 1090 CONTINUE C C ***************************************************** C ** TREAT THE CASE WHEN ** C ** BOTH HORIZONTAL FRAMES ARE TO BE CHANGED ** C ***************************************************** C IF(ICOM.EQ.'XFRA')GOTO1100 GOTO1199 C 1100 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1150 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150 IF(IHARG(NUMARG).EQ.'COLO')GOTO1150 GOTO1160 C 1150 CONTINUE IHOLD=IDEFCO GOTO1180 C 1160 CONTINUE IHOLD=IHARG(NUMARG) GOTO1180 C 1180 CONTINUE IFOUND='YES' IX1FCO=IHOLD IX2FCO=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181) 1181 FORMAT('THE FRAME COLOR (FOR BOTH HORIZONTAL ', 1'FRAME LINES)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1182)IHOLD 1182 FORMAT('HAS JUST BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO1900 C 1199 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE BOTTOM HORIZONTAL FRAME IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'X1FR')GOTO1200 GOTO1299 C 1200 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1250 IF(IHARG(NUMARG).EQ.'OFF')GOTO1250 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1250 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1250 IF(IHARG(NUMARG).EQ.'COLO')GOTO1250 GOTO1260 C 1250 CONTINUE IHOLD=IDEFCO GOTO1280 C 1260 CONTINUE IHOLD=IHARG(NUMARG) GOTO1280 C 1280 CONTINUE IFOUND='YES' IX1FCO=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1289 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1281) 1281 FORMAT('THE FRAME COLOR (FOR THE BOTTOM HORIZONTAL ', 1'FRAME LINE)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1282)IHOLD 1282 FORMAT('HAS JUST BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1289 CONTINUE GOTO1900 C 1299 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE TOP HORIZONTAL FRAME IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'X2FR')GOTO1300 GOTO1399 C 1300 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1350 IF(IHARG(NUMARG).EQ.'OFF')GOTO1350 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1350 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1350 IF(IHARG(NUMARG).EQ.'COLO')GOTO1350 GOTO1360 C 1350 CONTINUE IHOLD=IDEFCO GOTO1380 C 1360 CONTINUE IHOLD=IHARG(NUMARG) GOTO1380 C 1380 CONTINUE IFOUND='YES' IX2FCO=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1389 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1381) 1381 FORMAT('THE FRAME COLOR (FOR THE TOP HORIZONTAL ', 1'FRAME LINE)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1382)IHOLD 1382 FORMAT('HAS JUST BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1389 CONTINUE GOTO1900 C 1399 CONTINUE C C ***************************************************** C ** TREAT THE CASE WHEN ** C ** BOTH VERTICAL FRAMES ARE TO BE CHANGED ** C ***************************************************** C IF(ICOM.EQ.'YFRA')GOTO1400 GOTO1499 C 1400 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1450 IF(IHARG(NUMARG).EQ.'OFF')GOTO1450 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1450 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1450 IF(IHARG(NUMARG).EQ.'COLO')GOTO1450 GOTO1460 C 1450 CONTINUE IHOLD=IDEFCO GOTO1480 C 1460 CONTINUE IHOLD=IHARG(NUMARG) GOTO1480 C 1480 CONTINUE IFOUND='YES' IY1FCO=IHOLD IY2FCO=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1489 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1481) 1481 FORMAT('THE FRAME COLOR (FOR BOTH VERTICAL ', 1'FRAME LINES)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1482)IHOLD 1482 FORMAT('HAS JUST BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1489 CONTINUE GOTO1900 C 1499 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE LEFT VERTICAL FRAME IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'Y1FR')GOTO1500 GOTO1599 C 1500 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1550 IF(IHARG(NUMARG).EQ.'OFF')GOTO1550 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1550 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1550 IF(IHARG(NUMARG).EQ.'COLO')GOTO1550 GOTO1560 C 1550 CONTINUE IHOLD=IDEFCO GOTO1580 C 1560 CONTINUE IHOLD=IHARG(NUMARG) GOTO1580 C 1580 CONTINUE IFOUND='YES' IY1FCO=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1589 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1581) 1581 FORMAT('THE FRAME COLOR (FOR THE LEFT VERTICAL ', 1'FRAME LINE)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1582)IHOLD 1582 FORMAT('HAS JUST BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1589 CONTINUE GOTO1900 C 1599 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE RIGHT VERTICAL FRAME IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'Y2FR')GOTO1600 GOTO1699 C 1600 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1650 IF(IHARG(NUMARG).EQ.'OFF')GOTO1650 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1650 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1650 IF(IHARG(NUMARG).EQ.'COLO')GOTO1650 GOTO1660 C 1650 CONTINUE IHOLD=IDEFCO GOTO1680 C 1660 CONTINUE IHOLD=IHARG(NUMARG) GOTO1680 C 1680 CONTINUE IFOUND='YES' IY2FCO=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1689 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1681) 1681 FORMAT('THE FRAME COLOR (FOR THE RIGHT VERTICAL ', 1'FRAME LINE)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1682)IHOLD 1682 FORMAT('HAS JUST BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1689 CONTINUE GOTO1900 C 1699 CONTINUE C C ***************************************************** C ** TREAT THE CASE WHEN ** C ** ALL 4 FRAME FRAME LINES ARE TO BE CHANGED ** C ***************************************************** C IF(ICOM.EQ.'FRAM')GOTO1700 IF(ICOM.EQ.'XYFR')GOTO1700 IF(ICOM.EQ.'YXFR')GOTO1700 GOTO1799 C 1700 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1750 IF(IHARG(NUMARG).EQ.'OFF')GOTO1750 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1750 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1750 IF(IHARG(NUMARG).EQ.'COLO')GOTO1750 GOTO1760 C 1750 CONTINUE IHOLD=IDEFCO GOTO1780 C 1760 CONTINUE IHOLD=IHARG(NUMARG) GOTO1780 C 1780 CONTINUE IFOUND='YES' IX1FCO=IHOLD IX2FCO=IHOLD IY1FCO=IHOLD IY2FCO=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1789 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1781) 1781 FORMAT('THE FRAME COLOR (FOR ALL 4 ', 1'FRAME LINES)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1782)IHOLD 1782 FORMAT('HAS JUST BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1789 CONTINUE GOTO1900 C 1799 CONTINUE C 1900 CONTINUE RETURN END SUBROUTINE DPFRE2(Y,X,N,ICASPL,IRELAT,IDATSW,CLWID,XSTART,XSTOP, 1Y2,X2,D2,N2,NPLOTV,IBUGG3,IERROR) C C PURPOSE--GENERATE A PAIR OF COORDINATE VECTORS C THAT WILL DEFINE C 1) A FREQUENCY PLOT, C 2) A RELATIVE FREQUENCY PLOT C (THAT IS, WITH AREA = 1). C 3) A CUMULATIVE FREQUENCY PLOT C 4) A RELATIVE CUMULATIVE FREQUENCY PLOT C (THAT IS, WITH MAX ORDINATE = 1). C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--APRIL 1978. C UPDATED --MAY 1978. C UPDATED --JUNE 1978. C UPDATED --OCTOBER 1978. C UPDATED --MARCH 1979. C UPDATED --APRIL 1979. C UPDATED --JANUARY 1981. C UPDATED --AUGUST 1981. C UPDATED --OCTOBER 1981. C UPDATED --DECEMBER 1981. C UPDATED --APRIL 1982. C UPDATED --MAY 1982. C UPDATED --DECEMBER 1999. CHECK FOR POINTS OUTSIDE INTERVAL C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICASPL CHARACTER*4 IRELAT CHARACTER*4 IDATSW CHARACTER*4 IBUGG3 CHARACTER*4 IERROR C CHARACTER*4 IWRIT2 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 C C--------------------------------------------------------------------- C DIMENSION Y(*) DIMENSION X(*) DIMENSION Y2(*) DIMENSION X2(*) DIMENSION D2(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C ISUBN1='DPFR' ISUBN2='E2 ' C IERROR='NO' C AN3=0.0 DENOM=0.0 CUMFJ=0.0 C C ******************************************** C ** STEP 1-- ** C ** CHECK THE INPUT ARGUMENTS FOR ERRORS ** C ******************************************** C IF(N.GE.1)GOTO39 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,31) 31 FORMAT('***** ERROR IN DPFRE2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,32) 32 FORMAT(' THE NUMBER OF OBSERVATIONS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,33) 33 FORMAT(' MUST BE AT LEAST 1;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,34)N 34 FORMAT(' THE ENTERED NUMBER OF OBSERVATIONS HERE = ',I6) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 39 CONTINUE C IF(N.GE.2)GOTO49 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,46) 46 FORMAT('***** ERROR IN DPFRE2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,47) 47 FORMAT(' THE NUMBER OF OBSERVATIONS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,48) 48 FORMAT(' WAS EXACTLY EQUAL TO 1.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 49 CONTINUE C HOLD=X(1) DO60I=1,N IF(X(I).NE.HOLD)GOTO69 60 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,61) 61 FORMAT('***** ERROR IN DPFRE2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,62) 62 FORMAT(' ALL INPUT HORIZONTAL AXIS ELEMENTS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,63)HOLD 63 FORMAT(' ARE IDENTICALLY EQUAL TO ',E15.7) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 69 CONTINUE C IF(IBUGG3.EQ.'OFF')GOTO80 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,70) 70 FORMAT('***** AT THE BEGINNING OF DPFRE2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,71)IDATSW 71 FORMAT('IDATSW = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,72)N,CLWID,XSTART,XSTOP 72 FORMAT('N,CLWID,XSTART,XSTOP = ',I6,3E15.7) CALL DPWRST('XXX','BUG ') DO73I=1,N WRITE(ICOUT,74)I,Y(I),X(I) 74 FORMAT('I, Y(I), X(I) = ',I8,2E15.7) CALL DPWRST('XXX','BUG ') 73 CONTINUE 80 CONTINUE C C ********************************************** C ** STEP 2-- ** C ** IF NECESSARY, ** C ** DETERMINE CLASS WIDTH, ** C ** START VALUE, STOP VALUE, ** C ** AND NUMBER OF CLASSES. ** C ********************************************** C IF(IDATSW.EQ.'RAW')GOTO110 IF(IDATSW.EQ.'FREQ')GOTO150 C 110 CONTINUE IF(CLWID.NE.CPUMIN.AND.XSTART.NE.CPUMIN.AND. 1XSTOP.NE.CPUMAX)GOTO119 IWRIT2='OFF' CALL MEAN(X,N,IWRIT2,XMEAN,IBUGG3,IERROR) CALL SD(X,N,IWRIT2,XSD,IBUGG3,IERROR) IF(CLWID.EQ.CPUMIN)CLWID=0.3*XSD IF(XSTART.EQ.CPUMIN)XSTART=XMEAN-6.0*XSD IF(XSTOP.EQ.CPUMAX)XSTOP=XMEAN+6.0*XSD 119 CONTINUE GOTO180 C 150 CONTINUE CALL SORT(X,N,D2) NM1=N-1 CLWID=D2(2)-D2(1) DO160I=1,NM1 IP1=I+1 DELI=D2(IP1)-D2(I) IF(DELI.LT.CLWID)CLWID=DELI 160 CONTINUE XSTART=D2(1)-(CLWID/2.0) XSTOP=D2(N)+(CLWID/2.0) GOTO180 C 180 CONTINUE TOTWID=XSTOP-XSTART ANUMCL=TOTWID/CLWID NUMCLA=ANUMCL+1.0 C J=NUMCLA-1 AJ=J CLMAXJ=XSTART+AJ*CLWID ABSDEL=ABS(CLMAXJ-XSTOP) IF(ABSDEL.LE.0.0001)NUMCLA=NUMCLA-1 C C ******************************************************* C ** STEP 3-- ** C ** DETERMINE THE FREQUENCY (COUNTS) FOR EACH CLASS ** C ******************************************************* C DO300J=1,NUMCLA D2(J)=0.0 300 CONTINUE C IF(IDATSW.EQ.'RAW')GOTO410 IF(IDATSW.EQ.'FREQ')GOTO510 C 410 CONTINUE IABOVE=0 IBELOW=0 DO420I=1,N DO430J=1,NUMCLA J2=J AJ=J IF(X(I).LT.XSTART)THEN IBELOW=IBELOW+1 GOTO420 ENDIF IF(X(I).GT.XSTOP)THEN IABOVE=IABOVE+1 GOTO420 ENDIF CLMINJ=XSTART+(AJ-1.0)*CLWID CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP IF(CLMINJ.LE.X(I).AND.X(I).LT.CLMAXJ)GOTO440 430 CONTINUE GOTO420 440 CONTINUE D2(J2)=D2(J2)+1.0 420 CONTINUE C C FOR THIS RAW DATA CASE, C TREAT THE SPECIAL CASE OF EQUALITY C WITH THE UPPER LIMIT OF THE LAST (RIGHT-MOST) CLASS C J=NUMCLA DO450I=1,N AJ=J CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP IF(X(I).EQ.CLMAXJ)D2(J)=D2(J)+1.0 450 CONTINUE GOTO590 C 510 CONTINUE IABOVE=0 IBELOW=0 DO520I=1,N DO530J=1,NUMCLA J2=J AJ=J IF(X(I).LT.XSTART)THEN IBELOW=IBELOW+1 GOTO520 ENDIF IF(X(I).GT.XSTOP)THEN IABOVE=IABOVE+1 GOTO520 ENDIF CLMINJ=XSTART+(AJ-1.0)*CLWID CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP IF(CLMINJ.LE.X(I).AND.X(I).LT.CLMAXJ)GOTO540 530 CONTINUE GOTO520 540 CONTINUE D2(J2)=D2(J2)+Y(I) 520 CONTINUE C C FOR THIS FREQUENCY DATA CASE, C TREAT THE SPECIAL CASE OF EQUALITY C WITH THE UPPER LIMIT OF THE LAST (RIGHT-MOST) CLASS C (ALTHOUGH THIS SHOULD NOT HAPPEN WITH THE IDATSW = 'FREQ' CASE.) C J=NUMCLA DO550I=1,N AJ=J CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP IF(X(I).EQ.CLMAXJ)D2(J)=D2(J)+Y(I) 550 CONTINUE GOTO590 C 590 CONTINUE IF(IBELOW.GE.1)THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1591)IBELOW,XSTART 1591 FORMAT('***** WARNING: ',I8,' DATA POINTS ARE BELOW THE ', 1 'MINIMUM CLASS VALUE OF ',G15.7) CALL DPWRST('XXX','BUG ') ENDIF IF(IABOVE.GE.1)THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1691)IABOVE,XSTOP 1691 FORMAT('***** WARNING: ',I8,' DATA POINTS ARE ABOVE THE ', 1 'MAXIMUM CLASS VALUE OF ',G15.7) CALL DPWRST('XXX','BUG ') ENDIF IF(IBUGG3.EQ.'OFF')GOTO595 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,591) 591 FORMAT('***** IN THE MIDDLE OF DPFRE2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,592)CLWID,XSTART,XSTOP,TOTWID,ANUMCL,NUMCLA 592 FORMAT('CLWID,XSTART,XSTOP,TOTWID,ANUMCL,NUMCLA= ',5E11.4,I8) CALL DPWRST('XXX','BUG ') DO593J=1,NUMCLA AJ=J CLMINJ=XSTART+(AJ-1.0)*CLWID CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP FJ=D2(J) WRITE(ICOUT,594)J,CLMINJ,CLMAXJ,FJ 594 FORMAT('J,CLMINJ,CLMAXJ,FJ = ',I8,3E15.7) CALL DPWRST('XXX','BUG ') 593 CONTINUE 595 CONTINUE C C ********************************** C ** STEP 4-- ** C ** DETERMINE PLOT COORDINATES ** C ********************************** C IF(ICASPL.EQ.'FREQ')GOTO1100 IF(ICASPL.EQ.'CUMF')GOTO1200 C WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1011) 1011 FORMAT('***** INTERNAL ERROR IN DPFRE2 ', 1'AT BRANCH POINT 1011--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1012) 1012 FORMAT(' ICASPL SHOULD BE EITHER') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1013) 1013 FORMAT(' FREQ OR CUMF, BUT IS NEITHER.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1014)ICASPL 1014 FORMAT(' ICASPL = ',A4) CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 1100 CONTINUE SUM=0.0 DO1110J=1,NUMCLA FJ=D2(J) SUM=SUM+FJ 1110 CONTINUE AN3=SUM C DENOM=1.0 IF(IRELAT.EQ.'ON')DENOM=AN3 C K=0 C K=K+1 J=1 AJ=J CLMINJ=XSTART+(AJ-1.0)*CLWID CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP X2(K)=CLMINJ-((CLMAXJ-CLMINJ)/2.0) Y2(K)=0.0 C DO1120J=1,NUMCLA K=K+1 AJ=J CLMINJ=XSTART+(AJ-1.0)*CLWID CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP FJ=D2(J) X2(K)=(CLMINJ+CLMAXJ)/2.0 Y2(K)=FJ/DENOM 1120 CONTINUE C K=K+1 J=NUMCLA AJ=J CLMINJ=XSTART+(AJ-1.0)*CLWID CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP X2(K)=CLMAXJ+((CLMAXJ-CLMINJ)/2.0) Y2(K)=0.0 C N2=K NPLOTV=2 C K=0 C K=K+1 D2(K)=1.0 C DO1130J=1,NUMCLA K=K+1 D2(K)=1.0 1130 CONTINUE C K=K+1 D2(K)=1.0 C GOTO9000 C 1200 CONTINUE SUM=0.0 DO1210J=1,NUMCLA FJ=D2(J) SUM=SUM+FJ 1210 CONTINUE AN3=SUM C DENOM=1.0 IF(IRELAT.EQ.'ON')DENOM=AN3 C K=0 SUM=0.0 C K=K+1 J=1 AJ=J CLMINJ=XSTART+(AJ-1.0)*CLWID CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP X2(K)=CLMINJ-((CLMAXJ-CLMINJ)/2.0) Y2(K)=0.0 C DO1220J=1,NUMCLA K=K+1 AJ=J CLMINJ=XSTART+(AJ-1.0)*CLWID CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP FJ=D2(J) SUM=SUM+FJ CUMFJ=SUM X2(K)=(CLMINJ+CLMAXJ)/2.0 Y2(K)=CUMFJ/DENOM 1220 CONTINUE C K=K+1 J=NUMCLA AJ=J CLMINJ=XSTART+(AJ-1.0)*CLWID CLMAXJ=XSTART+AJ*CLWID IF(CLMAXJ.GT.XSTOP)CLMAXJ=XSTOP X2(K)=CLMAXJ+((CLMAXJ-CLMINJ)/2.0) Y2(K)=CUMFJ/DENOM C N2=K NPLOTV=2 C K=0 C K=K+1 D2(K)=1.0 C DO1230J=1,NUMCLA K=K+1 D2(K)=1.0 1230 CONTINUE C K=K+1 D2(K)=1.0 C GOTO9000 C C ****************** C ** STEP 90-- ** C ** EXIT ** C ****************** C 9000 CONTINUE IF(IBUGG3.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFRE2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)ICASPL,IRELAT,IERROR,N2 9012 FORMAT('ICASPL,IRELAT,IERROR,N2 = ',A4,2X,A4,2X,A4,2X,I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)IDATSW,AN3,DENOM 9013 FORMAT('IDATSW,AN3,DENOM = ',A4,2X,E15.8,E15.8) CALL DPWRST('XXX','BUG ') DO9015I=1,N2 WRITE(ICOUT,9016)I,Y2(I),X2(I),D2(I) 9016 FORMAT('I,Y2(I),X2(I),D2(I) = ',I8,2E15.7,F9.2) CALL DPWRST('XXX','BUG ') 9015 CONTINUE 9090 CONTINUE C RETURN END SUBROUTINE DPFREQ(NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2, 1CLLIMI,CLWIDT,IBUGG2,IBUGG3,IBUGQ,IFOUND,IERROR) C C PURPOSE--GENERATE ONE OF THE FOLLOWING 4 PLOTS-- C 1) FREQUENCY PLOT; C 2) RELATIVE FREQUENCY PLOT; C 3) CUMULATIVE FREQUENCY PLOT; C 4) RELATIVE CUMULATIVE FREQUENCY PLOT; C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--APRIL 1978. C UPDATED --JUNE 1978. C UPDATED --JULY 1978. C UPDATED --OCTOBER 1978. C UPDATED --APRIL 1979. C UPDATED --JANUARY 1981. C UPDATED --OCTOBER 1981. C UPDATED --MAY 1982. C UPDATED --JUNE 1990. TEMPORARY ARRAYS TO GARBAGE COMMON C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICASPL CHARACTER*4 IAND1 CHARACTER*4 IAND2 CHARACTER*4 IBUGG2 CHARACTER*4 IBUGG3 CHARACTER*4 IBUGQ CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IRELAT CHARACTER*4 IHWUSE CHARACTER*4 MESSAG CHARACTER*4 ICASEQ CHARACTER*4 IDATSW CHARACTER*4 IHLEFT CHARACTER*4 IHLEF2 CHARACTER*4 IHRIGH CHARACTER*4 IHRIG2 CHARACTER*4 IERRO4 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C C--------------------------------------------------------------------- C INCLUDE 'DPCOPA.INC' C DIMENSION CLLIMI(*) DIMENSION CLWIDT(*) C DIMENSION Y1(MAXOBV) DIMENSION X1(MAXOBV) CCCCC FOLLOWING LINES ADDED JUNE, 1990 INCLUDE 'DPCOZZ.INC' EQUIVALENCE (GARBAG(IGARB1),X1(1)) EQUIVALENCE (GARBAG(IGARB2),Y1(1)) CCCCC END CHANGE C C-----COMMON---------------------------------------------------------- C INCLUDE 'DPCOHK.INC' INCLUDE 'DPCODA.INC' C C-----COMMON VARIABLES (GENERAL)-------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C ISUBN1='DPFR' ISUBN2='EQ ' C MAXCP1=MAXCOL+1 MAXCP2=MAXCOL+2 MAXCP3=MAXCOL+3 MAXCP4=MAXCOL+4 MAXCP5=MAXCOL+5 MAXCP6=MAXCOL+6 C MAXV2=2 MINN2=2 C ICOLR=0 C C ********************************************** C ** TREAT THE FREQUENCY PLOT AND ** C ** RELATED STATISTICAL DISTRIBUTION PLOTS ** C ********************************************** C IF(IBUGG2.EQ.'OFF')GOTO90 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFREQ--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)ICASPL,IAND1,IAND2 52 FORMAT('ICASPL,IAND1,IAND2 = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)IBUGG2,IBUGG3,IBUGQ 53 FORMAT('IBUGG2,IBUGG3,IBUGQ = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') 90 CONTINUE C C *************************** C ** STEP 1-- ** C ** EXTRACT THE COMMAND ** C *************************** C ISTEPN='1' IF(IBUGG2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(NUMARG.GE.1.AND. 1ICOM.EQ.'FREQ'.AND.IHARG(1).EQ.'PLOT')GOTO110 IF(NUMARG.GE.2.AND. 1ICOM.EQ.'RELA'.AND.IHARG(1).EQ.'FREQ'.AND.IHARG(2).EQ.'PLOT') 1GOTO120 IF(NUMARG.GE.2.AND. 1ICOM.EQ.'CUMU'.AND.IHARG(1).EQ.'FREQ'.AND.IHARG(2).EQ.'PLOT') 1GOTO130 IF(NUMARG.GE.3.AND. 1ICOM.EQ.'RELA'.AND.IHARG(1).EQ.'CUMU'.AND.IHARG(2).EQ.'FREQ'.AND. 1IHARG(3).EQ.'PLOT')GOTO140 IF(NUMARG.GE.3.AND. 1ICOM.EQ.'CUMU'.AND.IHARG(1).EQ.'RELA'.AND.IHARG(2).EQ.'FREQ'.AND. 1IHARG(3).EQ.'PLOT')GOTO140 C IFOUND='NO' GOTO9000 C 110 CONTINUE ICASPL='FREQ' IRELAT='OFF' ILASTC=1 CALL ADJUST(ILASTC,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG) GOTO180 C 120 CONTINUE ICASPL='FREQ' IRELAT='ON' ILASTC=2 CALL ADJUST(ILASTC,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG) GOTO180 C 130 CONTINUE ICASPL='CUMF' IRELAT='OFF' ILASTC=2 CALL ADJUST(ILASTC,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG) GOTO180 C 140 CONTINUE ICASPL='CUMF' IRELAT='ON' ILASTC=3 CALL ADJUST(ILASTC,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG) GOTO180 C 180 CONTINUE IFOUND='YES' GOTO190 C 190 CONTINUE C C ******************************************************* C ** STEP 2-- ** C ** CHECK FOR THE PROPER NUMBER OF INPUT ARGUMENTS. ** C ******************************************************* C ISTEPN='1' IF(IBUGG2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C MINNA=1 MAXNA=100 CALL CHECKA(NUMARG,MINNA,MAXNA,IANS,IWIDTH,ISUBN1,ISUBN2,IERROR) IF(IERROR.EQ.'YES')GOTO9000 C C ******************************************** C ** STEP 2-- ** C ** CHECK THE VALIDITY OF ARGUMENT 1 ** C ** (THIS WILL BE THE RESPONSE VARIABLE) ** C ******************************************** C ISTEPN='2' IF(IBUGG2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IHLEFT=IHARG(1) IHLEF2=IHARG2(1) IHWUSE='V' MESSAG='YES' CALL CHECKN(IHLEFT,IHLEF2,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) IF(IERROR.EQ.'YES')GOTO9000 ICOLL=IVALUE(ILOCV) NLEFT=IN(ILOCV) IF(IBUGG2.EQ.'ON')WRITE(ICOUT,211)IHLEFT,IHLEF2,ICOLL,NLEFT 211 FORMAT('IHLEFT,IHLEF2,ICOLL,NLEFT = ',A4,2X,A4,I8,I8) IF(IBUGG2.EQ.'ON')CALL DPWRST('XXX','BUG ') C C *************************************************************** C ** STEP 3-- ** C ** CHECK THAT THE INPUT NUMBER OF OBSERVATIONS (NLEFT) ** C ** FOR THE RESPONSE VARIABLE IS POSITIVE. ** C *************************************************************** C ISTEPN='3' IF(IBUGG2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(NLEFT.GE.MINN2)GOTO390 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,311) 311 FORMAT('***** ERROR IN DPFREQ--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,312) 312 FORMAT(' THE INPUT NUMBER OF OBSERVATIONS') CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'OFF')WRITE(ICOUT,321) 321 FORMAT(' (FOR WHICH A FREQUENCY PLOT ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'OFF')CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'ON')WRITE(ICOUT,322) 322 FORMAT(' (FOR WHICH A RELATIVE FREQUENCY PLOT ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'ON')CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'OFF')WRITE(ICOUT,323) 323 FORMAT(' (FOR WHICH A CUMULATIVE FREQUENCY PLOT ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'OFF')CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'ON')WRITE(ICOUT,324) 324 FORMAT(' (FOR WHICH A RELATIVE CUMULATIVE FREQUENCY ', 1'PLOT ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'ON')CALL DPWRST('XXX','BUG ') WRITE(ICOUT,314) 314 FORMAT(' WAS TO HAVE BEEN FORMED)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,315)MINN2 315 FORMAT(' MUST BE ',I8,' OR LARGER;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,316) 316 FORMAT(' SUCH WAS NOT THE CASE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,317) 317 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,318)(IANS(I),I=1,IWIDTH) 318 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 390 CONTINUE C C ***************************************** C ** STEP 4-- ** C ** CHECK TO SEE THE TYPE SUBCASE ** C ** (BASED ON THE QUALIFIER)-- ** C ** 1) UNQUALIFIED (THAT IS, FULL); ** C ** 2) SUBSET/EXCEPT; OR ** C ** 3) FOR. ** C ***************************************** C ISTEPN='4' IF(IBUGG2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ICASEQ='FULL' ILOCQ=NUMARG+1 IF(NUMARG.LT.1)GOTO480 DO400J=1,NUMARG J1=J IF(IHARG(J).EQ.'SUBS'.AND.IHARG2(J).EQ.'ET ') GOTO410 IF(IHARG(J).EQ.'EXCE'.AND.IHARG2(J).EQ.'PT ') GOTO410 IF(IHARG(J).EQ.'FOR '.AND.IHARG2(J).EQ.' ') GOTO420 400 CONTINUE GOTO490 410 CONTINUE ICASEQ='SUBS' ILOCQ=J1 GOTO490 420 CONTINUE ICASEQ='FOR' ILOCQ=J1 GOTO490 C 480 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,481) 481 FORMAT('***** INTERNAL ERROR IN DPFREQ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,482) 482 FORMAT(' AT BRANCH POINT 481--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,483) 483 FORMAT(' NUMARG LESS THAN 1 EVEN THOUGH') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,484) 484 FORMAT(' NUMARG HAD PREVIOUSLY PASSED THIS TEST') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,485)NUMARG 485 FORMAT(' ONCE ALREADY. VALUE OF NUMARG = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,486) 486 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,487)(IANS(I),I=1,IWIDTH) 487 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 490 CONTINUE IF(IBUGG2.EQ.'OFF')GOTO495 WRITE(ICOUT,491)NUMARG,ILOCQ,ICASEQ 491 FORMAT('NUMARG,ILOCQ,ICASEQ = ',I8,I8,2X,A4) CALL DPWRST('XXX','BUG ') 495 CONTINUE C C ****************************************************** C ** STEP 5-- ** C ** IF A SECOND ARGUMENT EXISTS, THEN THIS ** C ** INDICATES THAT THE VALUES IN THE ** C ** FIRST VARIABLE ARE NOT DATA POINTS ** C ** BUT ALREADY-COMPUTED FREQUENCIES, ** C ** AND THE VALUES IN THE SECOND VARIABLE ** C ** ARE THE CORRESPONDING X VALUES FOR EACH ** C ** FREQUENCY. IF WE HAVE THE 2-VARIABLE CASE, ** C ** CHECK THE VALIDITY OF THE SECOND (X) VARIABLE. ** C ****************************************************** C ISTEPN='5' IF(IBUGG2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C NUMV2=ILOCQ-1 IDATSW='RAW' IF(NUMV2.EQ.1)IDATSW='RAW' IF(NUMV2.EQ.1)GOTO590 IF(NUMV2.EQ.2)IDATSW='FREQ' IF(NUMV2.EQ.2)GOTO509 GOTO550 C 509 CONTINUE IHRIGH=IHARG(2) IHRIG2=IHARG2(2) IHWUSE='V' MESSAG='YES' CALL CHECKN(IHRIGH,IHRIG2,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) IF(IERROR.EQ.'YES')GOTO9000 ICOLR=IVALUE(ILOCV) NRIGHT=IN(ILOCV) IF(IBUGG2.EQ.'ON')WRITE(ICOUT,511)IHRIGH,IHRIG2,ICOLR,NRIGHT 511 FORMAT('IHRIGH,IHRIG2,ICOLR,NRIGHT = ',A4,2X,A4,I8,I8) IF(IBUGG2.EQ.'ON')CALL DPWRST('XXX','BUG ') 510 CONTINUE C IF(NRIGHT.NE.NLEFT)GOTO570 GOTO590 C 550 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,551) 551 FORMAT('***** ERROR IN DPFREQ--') CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'OFF')WRITE(ICOUT,552) 552 FORMAT(' FOR A FREQUENCY PLOT, ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'OFF')CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'ON')WRITE(ICOUT,553) 553 FORMAT(' FOR A RELATIVE FREQUENCY PLOT, ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'ON')CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'OFF')WRITE(ICOUT,554) 554 FORMAT(' FOR A CUMULATIVE FREQUENCY PLOT, ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'OFF')CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'ON')WRITE(ICOUT,555) 555 FORMAT(' FOR A RELATIVE CUMULATIVE FREQUENCY PLOT, ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'ON')CALL DPWRST('XXX','BUG ') WRITE(ICOUT,558) 558 FORMAT(' THE NUMBER OF VARIABLES ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,559) 559 FORMAT(' MUST BE EITHER 1 OR 2 ;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,560) 560 FORMAT(' SUCH WAS NOT THE CASE HERE;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,561) 561 FORMAT(' THE SPECIFIED NUMBER') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,562)NUMV2 562 FORMAT(' OF VARIABLES WAS ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,563) 563 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,564)(IANS(I),I=1,IWIDTH) 564 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 570 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,571) 571 FORMAT('***** ERROR IN DPFREQ--') CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'OFF')WRITE(ICOUT,572) 572 FORMAT(' FOR A FREQUENCY PLOT, ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'OFF')CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'ON')WRITE(ICOUT,573) 573 FORMAT(' FOR A RELATIVE FREQUENCY PLOT, ') IF(ICASPL.EQ.'FREQ'.AND.IRELAT.EQ.'ON')CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'OFF')WRITE(ICOUT,574) 574 FORMAT(' FOR A CUMULATIVE FREQUENCY PLOT, ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'OFF')CALL DPWRST('XXX','BUG ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'ON')WRITE(ICOUT,575) 575 FORMAT(' FOR A RELATIVE CUMULATIVE FREQUENCY PLOT, ') IF(ICASPL.EQ.'CUMF'.AND.IRELAT.EQ.'ON')CALL DPWRST('XXX','BUG ') WRITE(ICOUT,578) 578 FORMAT(' WHEN HAVE 2 VARIABLES SPECIFIED, ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,579) 579 FORMAT(' THE NUMBER OF ELEMENTS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,580) 580 FORMAT(' IN THE 2 VARIABLES ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,581) 581 FORMAT(' MUST BE THE SAME; ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,582) 582 FORMAT(' SUCH WAS NOT THE CASE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,583) 583 FORMAT(' THE FIRST VARIABLE (FREQUENCIES)--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,584)IHLEFT,IHLEF2,NLEFT 584 FORMAT(' ',A4,A4,' HAS ',I8,' ELEMENTS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,585) 585 FORMAT(' THE SECOND VARIABLE (HORIZ. AXIS VALUES)--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,586)IHRIGH,IHRIG2,NRIGHT 586 FORMAT(' ',A4,A4,' HAS ',I8,' ELEMENTS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,587) 587 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,588)(IANS(I),I=1,IWIDTH) 588 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 590 CONTINUE C C ***************************************** C ** STEP 6-- ** C ** BRANCH TO THE APPROPRIATE SUBCASE; ** C ** (BASED ON THE QUALIFIER) ** C ** THEN FORM THE RESPONSE VARIABLE ** C ** AND THE FACTORS ** C ** AND CARRY OUT THE PLOTS. ** C ***************************************** C ISTEPN='6' IF(IBUGG2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(ICASEQ.EQ.'FULL')GOTO610 IF(ICASEQ.EQ.'SUBS')GOTO620 IF(ICASEQ.EQ.'FOR')GOTO630 C 610 CONTINUE DO615I=1,NLEFT ISUB(I)=1 615 CONTINUE NQ=NLEFT GOTO650 C 620 CONTINUE NIOLD=NLEFT CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERRO4) NQ=NIOLD GOTO650 C 630 CONTINUE NIOLD=NLEFT CALL DPFOR(NIOLD,NFOR,IROW1,IROWN, 1NLOCAL,ILOCS,NS,IBUGQ,IERROR) NQ=NFOR GOTO650 C 650 CONTINUE J=0 IMAX=NLEFT IF(NQ.LT.NLEFT)IMAX=NQ DO660I=1,IMAX IF(ISUB(I).EQ.0)GOTO660 J=J+1 C IF(NUMV2.LE.1)GOTO651 GOTO652 C 651 CONTINUE IJ=MAXN*(ICOLL-1)+I IF(ICOLL.LE.MAXCOL)X1(J)=V(IJ) IF(ICOLL.EQ.MAXCP1)X1(J)=PRED(I) IF(ICOLL.EQ.MAXCP2)X1(J)=RES(I) IF(ICOLL.EQ.MAXCP3)X1(J)=YPLOT(I) IF(ICOLL.EQ.MAXCP4)X1(J)=XPLOT(I) IF(ICOLL.EQ.MAXCP5)X1(J)=X2PLOT(I) IF(ICOLL.EQ.MAXCP6)X1(J)=TAGPLO(I) GOTO660 C 652 CONTINUE IJ=MAXN*(ICOLR-1)+I IF(ICOLR.LE.MAXCOL)X1(J)=V(IJ) IF(ICOLR.EQ.MAXCP1)X1(J)=PRED(I) IF(ICOLR.EQ.MAXCP2)X1(J)=RES(I) IF(ICOLR.EQ.MAXCP3)X1(J)=YPLOT(I) IF(ICOLR.EQ.MAXCP4)X1(J)=XPLOT(I) IF(ICOLR.EQ.MAXCP5)X1(J)=X2PLOT(I) IF(ICOLR.EQ.MAXCP6)X1(J)=TAGPLO(I) IJ=MAXN*(ICOLL-1)+I IF(ICOLL.LE.MAXCOL)Y1(J)=V(IJ) IF(ICOLL.EQ.MAXCP1)Y1(J)=PRED(I) IF(ICOLL.EQ.MAXCP2)Y1(J)=RES(I) IF(ICOLL.EQ.MAXCP3)Y1(J)=YPLOT(I) IF(ICOLL.EQ.MAXCP4)Y1(J)=XPLOT(I) IF(ICOLL.EQ.MAXCP5)Y1(J)=X2PLOT(I) IF(ICOLL.EQ.MAXCP6)Y1(J)=TAGPLO(I) GOTO660 C 660 CONTINUE NLOCAL=J C C **************************************************************** C ** STEP 7-- C ** DETERMINE IF THE ANALYST C ** HAS SPECIFIED 1) THE CLASS WIDTH, C ** 2) THE MIN POINT OF THE FIRST CELL, C ** 3) THE MAX POINT OF THE LAST CELL, C ** FOR THE DISTRIBUTIONAL ANALYSIS. C ** IF NON-DEFAULT, USE THE SPECIFIED VALUES. C ** IF DEFAULT, USE THE DEFAULT VALUES-- C ** 1) CLASS WIDTH = .3 OF A SAMPLE STANDARD DEVIATION; C ** 2) START = SAMPLE MEAN - 6*(SAMPLE STANDARD DEVIATION); C ** 3) STOP = SAMPLE MEAN + 6*(SAMPLE STANDARD DEVIATION); C ** NOTE THAT THE DEFAULT SETTINGS ARE IN FACT C **************************************************************** C ISTEPN='7' IF(IBUGG2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C CLWID=CLWIDT(1) XSTART=CLLIMI(1) XSTOP=CLLIMI(2) C C ***************************************************** C ** STEP 8-- ** C ** FORM THE VERTICAL AND HORIZONTAL AXIS ** C ** VALUES Y(.) AND X(.) FOR THE PLOT. ** C ** RESET THE VECTOR D(.) TO ALL ONES. ** C ** DEFINE THE NUMBER OF PLOT POINTS (NPLOTP). ** C ** DEFINE THE NUMBER OF PLOT VARIABLES (NPLOTV). ** C ***************************************************** C CALL DPFRE2(Y1,X1,NLOCAL,ICASPL,IRELAT,IDATSW,CLWID,XSTART,XSTOP, 1Y,X,D,NPLOTP,NPLOTV,IBUGG3,IERROR) C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGG2.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFREQ--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IFOUND,IERROR 9012 FORMAT('IFOUND,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2 9013 FORMAT('NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2 = ', 1I8,I8,I8,2X,A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)IRELAT,CLWID,XSTART,XSTOP 9014 FORMAT('IRELAT,CLWID,XSTART,XSTOP = ',A4,2X,3E15.7) CALL DPWRST('XXX','BUG ') IF(NPLOTP.LE.0)GOTO9090 DO9015I=1,NPLOTP WRITE(ICOUT,9016)I,Y(I),X(I),D(I) 9016 FORMAT('I,Y(I),X(I),D(I) = ',I8,3F12.5) CALL DPWRST('XXX','BUG ') 9015 CONTINUE 9090 CONTINUE C RETURN END SUBROUTINE DPFRIE(YTEMP,XTEMP,MAXNXT, 1ICAPSW, 1IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR) C C PURPOSE--CARRY OUT FRIEDMAN TEST C NON-PARAMETRIC TWO-WAY ANOVA C EXAMPLE--FRIEDMAN TEST Y X1 X2 C REFERENCE--XX C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--2003/10 C ORIGINAL VERSION--OCTOBER 2003. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICAPSW CHARACTER*4 IBUGA2 CHARACTER*4 IBUGA3 CHARACTER*4 IBUGQ CHARACTER*4 ISUBRO CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IHWUSE CHARACTER*4 MESSAG CHARACTER*4 ICASEQ C CHARACTER*4 IH11 CHARACTER*4 IH12 CHARACTER*4 IH21 CHARACTER*4 IH22 CHARACTER*4 IH31 CHARACTER*4 IH32 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C CHARACTER*4 IUSE1 CHARACTER*4 IUSE2 CHARACTER*4 IUSE3 C CHARACTER*4 IH CHARACTER*4 IH2 CHARACTER*4 IHOST1 CHARACTER*4 ISUBN0 C C--------------------------------------------------------------------- C DIMENSION YTEMP(*) DIMENSION XTEMP(*) C C-----COMMON---------------------------------------------------------- C INCLUDE 'DPCOPA.INC' C DIMENSION XTEMP2(MAXOBV) DIMENSION DBLOCK(MAXOBV) DIMENSION DTREAT(MAXOBV) DIMENSION YRANK(MAXOBV) DIMENSION RJ(MAXOBV) C INCLUDE 'DPCOZZ.INC' EQUIVALENCE(GARBAG(IGARB1),XTEMP2(1)) EQUIVALENCE(GARBAG(IGARB2),DBLOCK(1)) EQUIVALENCE(GARBAG(IGARB3),DTREAT(1)) EQUIVALENCE(GARBAG(IGARB4),YRANK(1)) EQUIVALENCE(GARBAG(IGARB5),RJ(1)) C INCLUDE 'DPCOHK.INC' INCLUDE 'DPCOSU.INC' INCLUDE 'DPCODA.INC' C C-----COMMON VARIABLES (GENERAL)-------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C ISUBN1='DPFR' ISUBN2='IE ' C MAXCP1=MAXCOL+1 MAXCP2=MAXCOL+2 MAXCP3=MAXCOL+3 MAXCP4=MAXCOL+4 MAXCP5=MAXCOL+5 MAXCP6=MAXCOL+6 C IFOUND='NO' IERROR='NO' C N1=(-999) N2=(-999) C NS1=(-999) NS2=(-999) C IUSE1='-999' IUSE2='-999' C ILOCV=(-999) C VALUE1=(-999.0) VALUE2=(-999.0) C ICOL1=(-999) ICOL2=(-999) C MINN2=4 C IFOUND='YES' C NLEFT=0 C ICASEQ='UNKN' C C ****************************************** C ** TREAT THE FRIEDMAN TEST CASE ** C ****************************************** C IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRIE')THEN WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFRIE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)IBUGA2,IBUGA3,IBUGQ 52 FORMAT('IBUGA2,IBUGA3,IBUBQ = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)ICAPSW,ICAPTY 53 FORMAT('ICAPSW,ICAPTY = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,55)MAXNXT 55 FORMAT('MAXNXT = ',I8) CALL DPWRST('XXX','BUG ') ENDIF C C ******************************************************* C ** STEP 2-- ** C ** CHECK FOR THE PROPER NUMBER OF INPUT ARGUMENTS. ** C ******************************************************* C ISTEPN='2' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C MINNA=3 MAXNA=100 CALL CHECKA(NUMARG,MINNA,MAXNA,IANS,IWIDTH,ISUBN1,ISUBN2, 1IERROR) IF(IERROR.EQ.'YES')GOTO9000 C C **************************************** C ** STEP 11-- ** C ** CHECK THE VALIDITY OF ARGUMENT 1 ** C ** (THIS SHULD BE A VARIABLE.) ** C **************************************** C ISTEPN='11' IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRIE') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IH11=IHARG(1) IH12=IHARG2(1) IHWUSE='V' MESSAG='YES' CALL CHECKN(IH11,IH12,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) C IF(IERROR.EQ.'YES')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1141) 1141 FORMAT('***** ERROR IN FRIEDMAN TEST--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1142) 1142 FORMAT(' FOR THE FRIEDMAN TEST, THE FIRST ARGUMENT (THE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1145) 1145 FORMAT(' RESPONSE VARIABLE) MUST BE A VARIABLE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1146) 1146 FORMAT(' (AS OPPOSED TO A PARAMETER OR FUNCTION).') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1147) 1147 FORMAT(' ARGUMENT 1 WAS NOT A VARIABLE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1148) 1148 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)THEN WRITE(ICOUT,1150)(IANS(I),I=1,MIN(IWIDTH,80)) 1150 FORMAT(80A1) CALL DPWRST('XXX','BUG ') ENDIF IERROR='YES' GOTO9000 ENDIF C IUSE1=IUSE(ILOCV) ICOL1=IVALUE(ILOCV) N1=IN(ILOCV) 1190 CONTINUE C C ******************************************************* C ** STEP 12-- ** C ** IF ARGUMENT 1 IS A VARIABLE, ** C ** CHECK THAT THE INPUT NUMBER OF OBSERVATIONS (N1) ** C ** FOR ARGUMENT 1 IS 4 OR MORE. ** C ******************************************************* C ISTEPN='12' IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRIE') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IUSE1.EQ.'V' .AND. N1.LE.MINN2)THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1211) 1211 FORMAT('***** ERROR IN FRIEDMAN TEST--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1212) 1212 FORMAT(' THE INPUT NUMBER OF OBSERVATIONS FOR WHICH THE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1214) 1214 FORMAT(' FRIEDMAN TEST WAS TO HAVE BEEN CARRIED OUT MUST') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1216)MINN2 1216 FORMAT(' BE ',I8,' OR LARGER; SUCH WAS NOT THE CASE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1218)IH11,IH12,N1 1218 FORMAT(' VARIABLE ',A4,A4,' HAS ',I8,' OBSERVATIONS.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1219) 1219 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)THEN WRITE(ICOUT,1220)(IANS(I),I=1,MIN(IWIDTH,80)) 1220 FORMAT(80A1) CALL DPWRST('XXX','BUG ') ENDIF IERROR='YES' GOTO9000 ENDIF C C **************************************** C ** STEP 21-- ** C ** CHECK THE VALIDITY OF ARGUMENT 2 ** C ** (THIS SHOULD ALSO BE A VARIABLE) ** C **************************************** C ISTEPN='21' IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRIE') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IH21=IHARG(2) IH22=IHARG2(2) IHWUSE='V' MESSAG='YES' CALL CHECKN(IH21,IH22,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) C IF(IERROR.EQ.'YES')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2141) 2141 FORMAT('***** ERROR IN THE FRIEDMAN TEST--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2142) 2142 FORMAT(' FOR THE FRIEDMAN TEST, THE SECOND ARGUMENT (THE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2145) 2145 FORMAT(' FIRST FACTOR (= BLOCK) VARIABLE) MUST BE A') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2146) 2146 FORMAT(' VARIABLE (AS OPPOSED TO A PARAMETER OR') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2147) 2147 FORMAT(' FUNCTION). ARGUMENT 2 WAS NOT A VARIABLE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2148) 2148 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)THEN WRITE(ICOUT,2150)(IANS(I),I=1,MIN(IWIDTH,80)) 2150 FORMAT(80A1) CALL DPWRST('XXX','BUG ') ENDIF IERROR='YES' GOTO9000 ENDIF C IUSE2=IUSE(ILOCV) ICOL2=IVALUE(ILOCV) N2=IN(ILOCV) C C ******************************************************* C ** STEP 21B-- ** C ** IF ARGUMENT 2 IS A VARIABLE, ** C ** CHECK THAT THE INPUT NUMBER OF OBSERVATIONS (N2) ** C ** FOR ARGUMENT 2 IS THE SAME AS ARGUMENT 1. ** C ******************************************************* C ISTEPN='21B' IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRIE') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IUSE2.EQ.'V' .AND. N1.NE.N2)THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2161) 2161 FORMAT('***** ERROR IN THE FRIEDMAN TEST--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2162) 2162 FORMAT(' THE INPUT NUMBER OF OBSERVATIONS FOR VARIABLE 2') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2163) 2163 FORMAT(' OF THE FRIEDMAN TEST MUST BE THE SAME AS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2165) 2165 FORMAT(' VARIABLE 1. SUCH WAS NOT THE CASE HERE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2166)N1,N2 2166 FORMAT(' N1 = ',I8,' N2 = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2169) 2169 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)THEN WRITE(ICOUT,2170)(IANS(I),I=1,MIN(IWIDTH,80)) 2170 FORMAT(80A1) CALL DPWRST('XXX','BUG ') ENDIF IERROR='YES' GOTO9000 ENDIF C C **************************************** C ** STEP 22-- ** C ** CHECK THE VALIDITY OF ARGUMENT 3 ** C ** (THIS SHOULD ALSO BE A VARIABLE) ** C **************************************** C ISTEPN='22' IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRIE') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IH31=IHARG(3) IH32=IHARG2(3) IHWUSE='V' MESSAG='YES' CALL CHECKN(IH31,IH32,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) C IF(IERROR.EQ.'YES')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2241) 2241 FORMAT('***** ERROR IN THE FRIEDMAN TEST--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2242) 2242 FORMAT(' FOR THE FRIEDMAN TEST, THE THIRD ARGUMENT (THE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2245) 2245 FORMAT(' SECOND FACTOR (= TREATMENT) VARIABLE) MUST BE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2246) 2246 FORMAT(' A VARIABLE (AS OPPOSED TO A PARAMETER OR') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2247) 2247 FORMAT(' FUNCTION). ARGUMENT 3 WAS NOT A VARIABLE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2248) 2248 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)THEN WRITE(ICOUT,2250)(IANS(I),I=1,MIN(IWIDTH,80)) 2250 FORMAT(80A1) CALL DPWRST('XXX','BUG ') ENDIF IERROR='YES' GOTO9000 ENDIF C IUSE3=IUSE(ILOCV) ICOL3=IVALUE(ILOCV) N3=IN(ILOCV) C C ******************************************************* C ** STEP 21B-- ** C ** IF ARGUMENT 3 IS A VARIABLE, ** C ** CHECK THAT THE INPUT NUMBER OF OBSERVATIONS (N3) ** C ** FOR ARGUMENT 3 IS THE SAME AS ARGUMENT 1. ** C ******************************************************* C ISTEPN='22B' IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRIE') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IUSE3.EQ.'V' .AND. N1.NE.N3)THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2261) 2261 FORMAT('***** ERROR IN THE FRIEDMAN TEST--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2262) 2262 FORMAT(' THE INPUT NUMBER OF OBSERVATIONS FOR VARIABLE 3') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2263) 2263 FORMAT(' OF THE FRIEDMAN TEST MUST BE THE SAME AS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2265) 2265 FORMAT(' VARIABLE 1. SUCH WAS NOT THE CASE HERE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2266)N1,N3 2266 FORMAT(' N1 = ',I8,' N3 = ',I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2269) 2269 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)THEN WRITE(ICOUT,2270)(IANS(I),I=1,MIN(IWIDTH,80)) 2270 FORMAT(80A1) CALL DPWRST('XXX','BUG ') ENDIF IERROR='YES' GOTO9000 ENDIF C C ***************************************** C ** STEP 40-- ** C ** CHECK TO SEE THE TYPE CASE-- ** C ** 1) UNQUALIFIED (THAT IS, FULL); ** C ** 2) SUBSET/EXCEPT; OR ** C ** 3) FOR. ** C ***************************************** C ISTEPN='40' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ICASEQ='FULL' ILOCQ=NUMARG+1 IF(NUMARG.LT.1)GOTO4090 DO4000J=1,NUMARG J1=J IF(IHARG(J).EQ.'SUBS'.AND.IHARG2(J).EQ.'ET ') GOTO4010 IF(IHARG(J).EQ.'EXCE'.AND.IHARG2(J).EQ.'PT ') GOTO4010 IF(IHARG(J).EQ.'FOR '.AND.IHARG2(J).EQ.' ') GOTO4020 4000 CONTINUE GOTO4090 4010 CONTINUE ICASEQ='SUBS' ILOCQ=J1 GOTO4090 4020 CONTINUE ICASEQ='FOR' ILOCQ=J1 GOTO4090 4090 CONTINUE IF(IBUGA2.EQ.'OFF')GOTO4095 WRITE(ICOUT,4091)NUMARG,ILOCQ 4091 FORMAT('NUMARG,ILOCQ = ',2I8) CALL DPWRST('XXX','BUG ') 4095 CONTINUE C C *********************************************** C ** STEP 41-- ** C ** TEMPORARILY FORM THE VARIABLE Y(.) ** C ** WHICH WILL HOLD THE DATA FROM SAMPLE 1. ** C ** FORM THIS VARIABLE BY ** C ** BRANCHING TO THE APPROPRIATE SUBCASE ** C ** (FULL, SUBSET, OR FOR). ** C *********************************************** C ISTEPN='41' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(ICASEQ.EQ.'FULL')GOTO4110 IF(ICASEQ.EQ.'SUBS')GOTO4120 IF(ICASEQ.EQ.'FOR')GOTO4130 C 4110 CONTINUE DO4115I=1,N1 ISUB(I)=1 4115 CONTINUE NQ=N1 GOTO4150 C 4120 CONTINUE NIOLD=N1 CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERROR) NQ=NIOLD GOTO4150 C 4130 CONTINUE NIOLD=N1 CALL DPFOR(NIOLD,NFOR,IROW1,IROWN, 1NLOCAL,ILOCS,NS,IBUGQ,IERROR) NQ=NFOR GOTO4150 C 4150 CONTINUE IF(NQ.LE.MINN2)THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4151) 4151 FORMAT('***** ERROR IN THE FRIEDMAN TEST--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4152) 4152 FORMAT(' AFTER THE APPROPRIATE SUBSET HAS BEEN EXTRACTED,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4153)IH11,IH12 4153 FORMAT(' THE NUMBER OF OBSERVATIONS REMAINING FROM ', 1 'VARIABLE ',A4,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4154) 4154 FORMAT(' (FOR WHICH THE FRIEDMAN TEST IS TO BE CARRIED') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4156)MINN2 4156 FORMAT(' OUT) MUST BE ',I8,' OR LARGER;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4157)NQ 4157 FORMAT(' SUCH WAS NOT THE CASE HERE. (N = ',I8,')') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4158) 4158 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)THEN WRITE(ICOUT,4159)(IANS(I),I=1,MIN(IWIDTH,80)) 4159 FORMAT(' ',80A1) CALL DPWRST('XXX','BUG ') ENDIF IERROR='YES' GOTO9000 ENDIF C J=0 IMAX=N1 IF(NQ.LT.N1)IMAX=NQ DO4170I=1,IMAX IF(ISUB(I).EQ.0)GOTO4170 J=J+1 C IJ=MAXN*(ICOL1-1)+I IF(ICOL1.LE.MAXCOL)Y(J)=V(IJ) IF(ICOL1.EQ.MAXCP1)Y(J)=PRED(I) IF(ICOL1.EQ.MAXCP2)Y(J)=RES(I) IF(ICOL1.EQ.MAXCP3)Y(J)=YPLOT(I) IF(ICOL1.EQ.MAXCP4)Y(J)=XPLOT(I) IF(ICOL1.EQ.MAXCP5)Y(J)=X2PLOT(I) IF(ICOL1.EQ.MAXCP6)Y(J)=TAGPLO(I) C IJ=MAXN*(ICOL2-1)+I IF(ICOL2.LE.MAXCOL)X(J)=V(IJ) IF(ICOL2.EQ.MAXCP1)X(J)=PRED(I) IF(ICOL2.EQ.MAXCP2)X(J)=RES(I) IF(ICOL2.EQ.MAXCP3)X(J)=YPLOT(I) IF(ICOL2.EQ.MAXCP4)X(J)=XPLOT(I) IF(ICOL2.EQ.MAXCP5)X(J)=X2PLOT(I) IF(ICOL2.EQ.MAXCP6)X(J)=TAGPLO(I) C IJ=MAXN*(ICOL3-1)+I IF(ICOL2.LE.MAXCOL)XTEMP2(J)=V(IJ) IF(ICOL2.EQ.MAXCP1)XTEMP2(J)=PRED(I) IF(ICOL2.EQ.MAXCP2)XTEMP2(J)=RES(I) IF(ICOL2.EQ.MAXCP3)XTEMP2(J)=YPLOT(I) IF(ICOL2.EQ.MAXCP4)XTEMP2(J)=XPLOT(I) IF(ICOL2.EQ.MAXCP5)XTEMP2(J)=X2PLOT(I) IF(ICOL2.EQ.MAXCP6)XTEMP2(J)=TAGPLO(I) C 4170 CONTINUE NS1=J C C ********************************** C ** STEP 52-- ** C ** CARRY OUT THE FRIEDMAN TEST ** C ********************************** C ISTEPN='52' IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRIE') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'FRIE')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,5211) 5211 FORMAT('***** FROM DPFRIE, AS WE ARE ABOUT TO CALL DPFRI2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,5212)N1,N2,N3,NS1,MAXN 5212 FORMAT('N1,N2,N3,NS1,MAXN = ',5I8) CALL DPWRST('XXX','BUG ') DO5215I=1,NS1 WRITE(ICOUT,5216)I,Y(I),X(I),XTEMP2(I) 5216 FORMAT('I,Y(I),X(I),XTEMP2(I) = ',I8,3E15.7) CALL DPWRST('XXX','BUG ') 5215 CONTINUE WRITE(ICOUT,5231)IBUGA3 5231 FORMAT('IBUGA3 = ',A4) CALL DPWRST('XXX','BUG ') ENDIF C CALL DPFRI2(Y,X,XTEMP2,NS1, 1YTEMP,XTEMP,YRANK,RJ,DBLOCK,DTREAT,MAXNXT, 1STATVA,STATCD,CUT0,CUT50,CUT75,CUT90,CUT95,CUT99,CUT999, 1ICAPSW,ICAPTY, 1IBUGA3,ISUBRO,IERROR) C C *************************************** C ** STEP 61-- ** C ** UPDATE INTERNAL DATAPLOT TABLES ** C *************************************** C ISTEPN='61' IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRIE') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ISUBN0='DPFR' C IH='STAT' IH2='VAL ' VALUE0=STATVA CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='STAT' IH2='CDF ' VALUE0=STATCD CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF0 ' VALUE0=CUT0 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF50' VALUE0=CUT50 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF75' VALUE0=CUT75 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF90' VALUE0=CUT90 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF95' VALUE0=CUT95 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='FF99' VALUE0=CUT99 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTO' IH2='F999' VALUE0=CUT99 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'FRI2')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFRIE--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IBUGA2,IBUGA3,IBUGQ 9012 FORMAT('IBUGA2,IBUGA3,IBUGQ = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)N1,N2,N3,NS1 9014 FORMAT('N1,N2,N3,NS1 = ',4I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9015)ICASEQ 9015 FORMAT('ICASEQ = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9016)IFOUND,IERROR 9016 FORMAT('IFOUND,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') ENDIF C RETURN END SUBROUTINE DPFRIT(IHARG,IARGT,ARG,NUMARG,IDEFFI, 1IFRAIT,IFOUND,IERROR) C C PURPOSE--DEFINE THE FRACTAL ITERATIONS C THIS DEFINES THE MAXIMUM NUMBER OF POINTS TO C PLOT FOR FRACTAL PLOTS. C INPUT ARGUMENTS--IHARG (A HOLLERITH VECTOR) C --IARGT (A HOLLERITH VECTOR) C --ARG (A FLOATING POINT VECTOR) C --NUMARG (AN INTEGER VARIABLE) C --IDEFFI (A FLOATING POINT VARIABLE) C OUTPUT ARGUMENTS--IFRAIT (AN INTEGER VARIABLE) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY-ALAN HECKERT C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2899 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--93/7 C ORIGINAL VERSION--JULY 1993. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IARGT CHARACTER*4 IFOUND CHARACTER*4 IERROR C C--------------------------------------------------------------------- C DIMENSION IHARG(*) DIMENSION IARGT(*) DIMENSION ARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C IF(NUMARG.EQ.0)GOTO1199 IF(NUMARG.GE.1.AND.IHARG(1).EQ.'ITER')GOTO1110 GOTO1199 C 1110 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1150 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150 IF(IARGT(NUMARG).EQ.'NUMB')GOTO1160 GOTO1120 C 1120 CONTINUE IERROR='YES' WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1121) 1121 FORMAT('***** ERROR IN DPFRIT--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1122) 1122 FORMAT(' ILLEGAL FORM FOR FRACTAL ITERATIONS ', 1'COMMAND.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1124) 1124 FORMAT(' TEST EXAMPLE TO DEMONSTRATE THE ', 1'PROPER FORM--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1131) 1131 FORMAT(' FRACTAL ITERATIONS 20000') CALL DPWRST('XXX','BUG ') GOTO1199 C 1150 CONTINUE IHOLD=IDEFFI GOTO1180 C 1160 CONTINUE IHOLD=ARG(NUMARG)+0.5 IF(IHOLD.LE.0)IHOLD=IDEFFI GOTO1180 C 1180 CONTINUE IFOUND='YES' IFRAIT=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181)IFRAIT 1181 FORMAT('THE FRACTAL ITERATIONS HAS JUST BEEN SET TO ', 1I8) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO1199 C 1199 CONTINUE RETURN END SUBROUTINE DPFRI2(Y,BLOCK,TREAT,N, 1YTEMP,XTEMP,YRANK,RJ,DBLOCK,DTREAT,MAXNXT, 1STATVA,STATCD,CUT0,CUT50,CUT75,CUT90,CUT95,CUT99,CUT999, 1ICAPSW,ICAPTY, 1IBUGA3,ISUBRO,IERROR) C C PURPOSE--THIS ROUTINE CARRIES OUT FRIEDMAN'S TEST C NON-PARAMETRIC TWO-WAY ANOVA C EXAMPLE--FRIEDMAN TEST Y BLOCK TREAT C REFERENCE--"PRACTICAL NON-PARAMETRIC STATSTICS", CONOVER, C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--2003/10 C ORIGINAL VERSION--OCTOBER 2003. C UPDATED --JANUARY 2006. FIX BUG IN RANKING C (UNCORRECTED VERSION WORKS C IF DATA ARE RANKS WITHIN C THE BLOCK). C UPDATED --JANUARY 2006. SOME INFO THAT WAS SUPPOSSED C TO GO TO DPST2F.DAT WAS C GOING TO DPST1F.DAT C UPDATED --OCTOBER 2006. CALL LIST TO TPPF C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICAPSW CHARACTER*4 ICAPTY CHARACTER*1 IBASLC CHARACTER*4 IBUGA3 CHARACTER*4 ISUBRO CHARACTER*4 IERROR C CHARACTER*4 IWRITE C CHARACTER*6 ICONC1 CHARACTER*6 ICONC2 CHARACTER*6 ICONC3 C CHARACTER*4 ISUBN0 CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C CHARACTER*3 IATEMP C DOUBLE PRECISION DSUM1 C C--------------------------------------------------------------------- C DIMENSION Y(*) DIMENSION BLOCK(*) DIMENSION TREAT(*) DIMENSION YRANK(*) DIMENSION RJ(*) DIMENSION DBLOCK(*) DIMENSION DTREAT(*) DIMENSION YTEMP(*) DIMENSION XTEMP(*) C INCLUDE 'DPCOF2.INC' C CHARACTER*80 IFILE1 CHARACTER*12 ISTAT1 CHARACTER*12 IFORM1 CHARACTER*12 IACCE1 CHARACTER*12 IPROT1 CHARACTER*12 ICURS1 CHARACTER*4 IERRF1 CHARACTER*4 IENDF1 CHARACTER*4 IREWI1 C CHARACTER*80 IFILE2 CHARACTER*12 ISTAT2 CHARACTER*12 IFORM2 CHARACTER*12 IACCE2 CHARACTER*12 IPROT2 CHARACTER*12 ICURS2 CHARACTER*4 IERRF2 CHARACTER*4 IENDF2 CHARACTER*4 IREWI2 C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C ISUBN1='DPFR' ISUBN2='I2 ' C IERROR='NO' C IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'FRI2')THEN WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,51) 51 FORMAT('**** AT THE BEGINNING OF DPFRI2--') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,52)IBUGA3 52 FORMAT('IBUGA3 = ',A4) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,55)N 55 FORMAT('N = ',I8) CALL DPWRST('XXX','WRIT') DO56I=1,N WRITE(ICOUT,57)I,Y(I),BLOCK(I),TREAT(I) 57 FORMAT('I,Y(I),BLOCK(I),TREAT(I) = ',I8,3E15.7) CALL DPWRST('XXX','WRIT') 56 CONTINUE ENDIF C C ******************************************** C ** STEP 11-- ** C ** CHECK THE INPUT ARGUMENTS FOR ERRORS ** C ******************************************** C ISTEPN='11' IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'FRI2') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C HOLD=Y(1) DO1135I=2,N IF(Y(I).NE.HOLD)GOTO1139 1135 CONTINUE 1130 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1131)HOLD 1131 FORMAT('***** NOTE FROM FRIEDMAN TEST--RESPONSE VARIABLE ', 1 'HAS ALL ELEMENTS = ',E15.7) CALL DPWRST('XXX','WRIT') GOTO9000 1139 CONTINUE C HOLD=BLOCK(1) DO1235I=2,N IF(BLOCK(I).NE.HOLD)GOTO1239 1235 CONTINUE 1230 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1231)HOLD 1231 FORMAT('***** NOTE FROM FRIEDMAN TEST--FIRST FACTOR VARIABLE ', 1 'HAS ALL ELEMENTS = ',E15.7) CALL DPWRST('XXX','WRIT') GOTO9000 1239 CONTINUE C HOLD=TREAT(1) DO1335I=2,N IF(TREAT(I).NE.HOLD)GOTO1339 1335 CONTINUE 1330 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1331)HOLD 1331 FORMAT('***** NOTE FROM FRIEDMAN TEST--SECOND FACTOR VARIABLE ', 1 'HAS ALL ELEMENTS = ',E15.7) CALL DPWRST('XXX','WRIT') GOTO9000 1339 CONTINUE C C ****************************** C ** STEP 41-- ** C ** CARRY OUT CALCULATIONS ** C ** FOR FRIEDMAN TEST ** C ****************************** C ISTEPN='41' IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IWRITE='OFF' C C STEP 1: COMPUTE NUMBER OF DISTINCT BLOCKS AND TREATMENTS C CALL DISTIN(BLOCK,N,IWRITE,DBLOCK,NBLOCK,IBUGA3,IERROR) IF(IERROR.EQ.'YES')GOTO9000 CALL DISTIN(TREAT,N,IWRITE,DTREAT,NTREAT,IBUGA3,IERROR) IF(IERROR.EQ.'YES')GOTO9000 C C STEP 2: COMPUTE TREATMENT RANKS WITHIN EACH BLOCK C DO4010I=1,N YRANK(I)=-1.0 4010 CONTINUE C DO4110I=1,NBLOCK HOLD=DBLOCK(I) ICOUNT=0 DO4120J=1,N IF(BLOCK(J).EQ.HOLD)THEN ICOUNT=ICOUNT+1 YTEMP(ICOUNT)=Y(J) ENDIF 4120 CONTINUE CALL RANK(YTEMP,ICOUNT,IWRITE,XTEMP,IBUGA3,IERROR) IF(IERROR.EQ.'YES')GOTO9000 ICOUNT=0 DO4130J=1,N IF(BLOCK(J).EQ.HOLD)THEN ICOUNT=ICOUNT+1 CCCCC 2006/1: EXTRACT RANKING CORRECTLY! CCCCC YTEMP(ICOUNT)=Y(J) CCCCC YRANK(J)=YTEMP(ICOUNT) YRANK(J)=XTEMP(ICOUNT) ENDIF 4130 CONTINUE 4110 CONTINUE IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'FRI2')THEN DO4140I=1,N WRITE(ICOUT,4142)I,Y(I),YRANK(I) 4142 FORMAT('I,Y(I),YRANK(I) = ',I8,E15.7,F12.2) CALL DPWRST('XXX','BUG ') 4140 CONTINUE ENDIF C C STEP 3: NOW COMPUTE RANK SUMS FOR EACH TREATMENT C DO4210I=1,NTREAT HOLD=DTREAT(I) DSUM1=0.0D0 DO4220J=1,N IF(TREAT(J).EQ.HOLD)THEN DSUM1=DSUM1 + DBLE(YRANK(J)) ENDIF 4220 CONTINUE RJ(I)=REAL(DSUM1) 4210 CONTINUE IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'FRI2')THEN DO4240I=1,NTREAT WRITE(ICOUT,4242)I,RJ(I) 4242 FORMAT('I,RJ(I) = ',I8,E15.7) CALL DPWRST('XXX','BUG ') 4240 CONTINUE ENDIF C C STEP 4: NOW COMPUTE VARIOUS QUANTITIES BASED ON RJ C ANB=REAL(NBLOCK) AK=REAL(NTREAT) C1=ANB*AK*(AK+1.0)**2/4.0 DSUM1=0.0D0 DO4310I=1,N DSUM1=DSUM1 + DBLE(YRANK(I))**2 4310 CONTINUE A1=REAL(DSUM1) DSUM1=0.0D0 DO4320I=1,NTREAT DSUM1=DSUM1 + RJ(I)**2 4320 CONTINUE T1=(AK-1.0)*(REAL(DSUM1)-ANB*C1)/(A1-C1) T2=(ANB-1.0)*T1/(ANB*(AK-1.0) - T1) C STATVA=T2 NUMDF1=NTREAT-1 NUMDF2=(NBLOCK-1)*(NTREAT-1) CALL FCDF(STATVA,NUMDF1,NUMDF2,STATCD) C CUT0=0.0 CALL FPPF(.50,NUMDF1,NUMDF2,CUT50) CALL FPPF(.75,NUMDF1,NUMDF2,CUT75) CALL FPPF(.90,NUMDF1,NUMDF2,CUT90) CALL FPPF(.95,NUMDF1,NUMDF2,CUT95) CALL FPPF(.99,NUMDF1,NUMDF2,CUT99) CALL FPPF(.999,NUMDF1,NUMDF2,CUT999) C IDF=(NBLOCK-1)*(NTREAT-1) CALL TPPF(0.95,REAL(IDF),T95) CALL TPPF(0.975,REAL(IDF),T975) CALL TPPF(0.995,REAL(IDF),T995) TERM1=(A1-C1)*2.0*ANB/((ANB-1.0)*(AK-1.0)) TERM2=1.0 - T1/(ANB*(AK-1.0)) CONTRA=SQRT(TERM1*TERM2) CONTR1=T95*CONTRA CONTR2=T975*CONTRA CONTR3=T995*CONTRA C ICONC1='ACCEPT' ICONC2='ACCEPT' ICONC3='ACCEPT' C IF(STATVA.GT.CUT95)ICONC2='REJECT' C C ***************************** C ** STEP 42- ** C ** WRITE OUT THE TABLE ** C ***************************** C ISTEPN='42' IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'FRI2') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IOUNI1=IST1NU IFILE1=IST1NA ISTAT1=IST1ST IFORM1=IST1FO IACCE1=IST1AC IPROT1=IST1PR ICURS1=IST1CS ISUBN0='FRI2' IERRF1='NO' C IREWI1='ON' CALL DPOPFI(IOUNI1,IFILE1,ISTAT1,IFORM1,IACCE1,IPROT1,ICURS1, 1IREWI1,ISUBN0,IERRF1,IBUGA3,ISUBRO,IERROR) IF(IERRF1.EQ.'YES')GOTO9000 C IOUNI2=IST2NU IFILE2=IST2NA ISTAT2=IST2ST IFORM2=IST2FO IACCE2=IST2AC IPROT2=IST2PR ICURS2=IST2CS ISUBN0='FRI2' IERRF2='NO' C IREWI2='ON' CALL DPOPFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,ICURS2, 1IREWI2,ISUBN0,IERRF2,IBUGA3,ISUBRO,IERROR) IF(IERRF2.EQ.'YES')GOTO9000 C WRITE(IOUNI1,2005) 2005 FORMAT(4X,'RESPONSE',13X,'RANK',11X,'BLOCK',8X,'TREATMENT') DO2010I=1,N WRITE(IOUNI1,2011)Y(I),YRANK(I),BLOCK(I),TREAT(I) 2011 FORMAT(1X,E15.7,F15.2,F15.2,F15.2) 2010 CONTINUE C WRITE(IOUNI2,2021)CONTRA 2021 FORMAT(1X,'Contrast term: ',E15.7) WRITE(IOUNI2,2022)CONTR1 2022 FORMAT(1X,'Contrast term*t(0.95): ',E15.7) WRITE(IOUNI2,2023)CONTR2 2023 FORMAT(1X,'Contrast term*t(0.975): ',E15.7) WRITE(IOUNI2,2024)CONTR3 2024 FORMAT(1X,'Contrast term*t(0.995): ',E15.7) WRITE(IOUNI2,2025) 2025 FORMAT(10X,'I',10X,'J',8X,'R(I)-R(J)') C DO2030I=1,NTREAT DO2039J=1,NTREAT IF(I.LT.J)THEN ADIFF=RJ(I)-RJ(J) IATEMP=' ' IF(ABS(ADIFF).GE.CONTR1)IATEMP(1:1)='*' IF(ABS(ADIFF).GE.CONTR2)IATEMP(2:2)='*' IF(ABS(ADIFF).GE.CONTR3)IATEMP(3:3)='*' WRITE(IOUNI2,2037)I,J,ADIFF,IATEMP 2037 FORMAT(3X,I8,3X,I8,5X,E15.7,A3) ENDIF 2039 CONTINUE 2030 CONTINUE C IENDF1='OFF' IREWI1='ON' CALL DPCLFI(IOUNI1,IFILE1,ISTAT1,IFORM1,IACCE1,IPROT1,ICURS1, 1IENDF1,IREWI1,ISUBN0,IERRF1,IBUGA3,ISUBRO,IERROR) IF(IERRF1.EQ.'YES')GOTO9000 C IENDF2='OFF' IREWI2='ON' CALL DPCLFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,ICURS2, 1IENDF2,IREWI2,ISUBN0,IERRF2,IBUGA3,ISUBRO,IERROR) IF(IERRF2.EQ.'YES')GOTO9000 C C ****************************** C ** STEP 43-- ** C ** WRITE OUT EVERYTHING ** C ** FOR FRIEDMAN TEST ** C ****************************** C ISTEPN='43' IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'FRI2') 1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IPRINT.EQ.'ON')THEN IF(ICAPSW.EQ.'ON'.AND.ICAPTY.EQ.'HTML')THEN C C STEP 1: WRITE HEADER C WRITE(ICOUT,5001) 5001 FORMAT('') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5002) 5002 FORMAT('
') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5003) 5003 FORMAT('FRIEDMAN TEST FOR IDENTICAL TREATMENT ', 1 'EFFECTS') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5004) 5004 FORMAT('


') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C C STEP 2: START LIST C WRITE(ICOUT,5005) 5005 FORMAT('
    ') CALL DPWRST('XXX','WRIT') C C STEP 2A: LIST ITEM 1 C WRITE(ICOUT,5006) 5006 FORMAT('
  1. Statistics:') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5007) 5007 FORMAT('

    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5011) 5011 FORMAT(' ') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) 5021 FORMAT(' ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) 5023 FORMAT(' ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) 5026 FORMAT(' ') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5041) 5041 FORMAT(' Number of Blocks:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5029)NBLOCK CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5042) 5042 FORMAT(' Number of Treatments:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5029)NTREAT CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) 5043 FORMAT(' Friedman Test Statstic (Original):') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)T1 5051 FORMAT(' ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5044) 5044 FORMAT(' A1 (Sum of Squares of Ranks):') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)A1 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5045) 5045 FORMAT(' C1 (Correction Factor):') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)C1 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5046) 5046 FORMAT(' Friedman Test Statistic (Conover):') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)STATVA CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5091) 5091 FORMAT('
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5025) 5025 FORMAT(' Number of Observations:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) 5027 FORMAT(' ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5029)N 5029 FORMAT(' ',I8) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) 5028 FORMAT('
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5007) CALL DPWRST('XXX','WRIT') C C STEP 2B: LIST ITEM 2 C WRITE(ICOUT,5066) 5066 FORMAT('

  2. Percent Points of the F Reference ', 1 'Distribution
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5067) 5067 FORMAT(' for Friedman Test Statistic:') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5007) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5011) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5071) 5071 FORMAT(' 0 Percent Point:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)CUT0 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5072) 5072 FORMAT(' 50 Percent Point:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)CUT50 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5073) 5073 FORMAT(' 75 Percent Point:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)CUT75 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5074) 5074 FORMAT(' 90 Percent Point:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)CUT90 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5075) 5075 FORMAT(' 95 Percent Point:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)CUT95 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5076) 5076 FORMAT(' 99 Percent Point:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)CUT99 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5077) 5077 FORMAT(' 99.9 Percent Point:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)CUT999 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5021) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5023) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5078)100.0*STATCD 5078 FORMAT('
    ',G15.7,' Percent Point:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5026) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5052)STATVA 5052 FORMAT('
    ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5027) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5028) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5091) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5007) CALL DPWRST('XXX','WRIT') C C STEP 2C: LIST ITEM 3 C WRITE(ICOUT,5081) 5081 FORMAT('
  3. Conclusion (at the 5% level):') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5007) CALL DPWRST('XXX','WRIT') IF(STATVA.LE.CUT95)THEN WRITE(ICOUT,5087)NTREAT 5087 FORMAT(' The ',I8,' treatments have identical ', 1 'effects.') ELSE WRITE(ICOUT,5088)NTREAT 5088 FORMAT(' The ',I8,' treatments do not have ', 1 'identical effects.') ENDIF CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5093) 5093 FORMAT('
') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5095) 5095 FORMAT('
')
        CALL DPWRST('XXX','WRIT')
C
      ELSEIF(ICAPSW.EQ.'ON'.AND.ICAPTY.EQ.'LATE')THEN
 8001   FORMAT('{',A1,'bf FRIEDMAN TEST FOR IDENTICAL TREATMENT ',
     1         'EFFECTS}')
 8002   FORMAT(A1,'begin{table}')
 8003   FORMAT(A1,'end{table}')
 8004   FORMAT(A1,'begin{center}')
 8005   FORMAT(A1,'end{center}')
 8006   FORMAT(A1,'end{verbatim}')
 8007   FORMAT(5X,'$ ',A1,1X,A1,' $ ',A1,A1)
 8011   FORMAT(A1,'begin{enumerate}')
 8012   FORMAT(A1,'end{enumerate}')
C
        CALL DPCONA(92,IBASLC)
C
        WRITE(ICOUT,8006)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8004)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8002)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8001)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8007)IBASLC,IBASLC,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8007)IBASLC,IBASLC,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8011)IBASLC
        CALL DPWRST('XXX','WRIT')
C
 8020   FORMAT(11X,A1,'newline')
 8021   FORMAT(5X,A1,'item Statistics:')
 8022   FORMAT(5X,A1,'item Percent Points of the F Reference ',
     1         'Distribution:')
 8023   FORMAT(5X,A1,'item Conclusion (at the 5',A1,'% level):')
 8030   FORMAT(11X,A1,'begin{tabular} {lr}')
 8031   FORMAT(11X,'Number of Observations: & ',I8,2X,A1,A1)
 8032   FORMAT(11X,'Number of Blocks: & ',I8,2X,A1,A1)
 8033   FORMAT(11X,'Number of Treatments: & ',I8,2X,A1,A1)
 8034   FORMAT(11X,'Friedman Test Statistic (Original): & ',G15.7,
     1         2X,A1,A1)
 8035   FORMAT(11X,'A1 (Sum of Squares of Ranks): & ',G15.7,2X,A1,A1)
 8036   FORMAT(11X,'C1 (Correction Factor): & ',G15.7,2X,A1,A1)
 8037   FORMAT(11X,'Friedman Test Statistic (Conover): & ',
     1         G15.7,2X,A1,A1)
 8040   FORMAT(11X,A1,'end{tabular}')
 8041   FORMAT(11X,G15.7,' Percent Point: & ',G15.7,2X,A1,A1)
 8042   FORMAT(11X,'The ',I8,' treatments have identical effects.',
     1         2X,A1,A1)
 8043   FORMAT(11X,'The ',I8,' treatments do not have identical ',
     1         'effects.',2X,A1,A1)
 8044   FORMAT(11X,'0      Percent Point: & ',G15.7,2X,A1,A1)
 8045   FORMAT(11X,'50     Percent Point: & ',G15.7,2X,A1,A1)
 8046   FORMAT(11X,'90     Percent Point: & ',G15.7,2X,A1,A1)
 8047   FORMAT(11X,'95     Percent Point: & ',G15.7,2X,A1,A1)
 8048   FORMAT(11X,'99     Percent Point: & ',G15.7,2X,A1,A1)
 8049   FORMAT(11X,'99.9   Percent Point: & ',G15.7,2X,A1,A1)
C
        WRITE(ICOUT,8021)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8020)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8030)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8031)N,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8032)NBLOCK,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8033)NTREAT,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8034)T1,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8035)A1,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8036)C1,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8037)STATVA,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8040)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,8022)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8020)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8030)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8044)CUT0,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8045)CUT50,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8046)CUT90,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8047)CUT95,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8048)CUT99,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8049)CUT999,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8041)100.*STATCD,STATVA,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8040)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,8023)IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8020)IBASLC
        CALL DPWRST('XXX','WRIT')
        IF(STATVA.LE.CUT95)THEN
          WRITE(ICOUT,8042)NTREAT,IBASLC,IBASLC
          CALL DPWRST('XXX','WRIT')
        ELSE
          WRITE(ICOUT,8043)NTREAT,IBASLC,IBASLC
          CALL DPWRST('XXX','WRIT')
        ENDIF
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
 8051   FORMAT(A1,'end{enumerate}')
 8052   FORMAT(A1,'begin{verbatim}')
        WRITE(ICOUT,8051)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8003)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8005)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8052)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
      ELSEIF(ICAPSW.EQ.'ON'.AND.ICAPTY.EQ.'RTF')THEN
C
      ELSE
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7211)
 7211   FORMAT('              FRIEDMAN TEST FOR TWO-WAY ANOVA')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,7220)
 7220   FORMAT('1. STATISTICS')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7221)N
 7221   FORMAT(6X,'NUMBER OF OBSERVATIONS              = ',I8)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7222)NBLOCK
 7222   FORMAT(6X,'NUMBER OF BLOCKS                    = ',I8)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7223)NTREAT
 7223   FORMAT(6X,'NUMBER OF TREATMENTS                = ',I8)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7224)T1
 7224   FORMAT(6X,'FRIEDMAN TEST STATISTIC (ORIGINAL)  = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7225)A1
 7225   FORMAT(6X,'A1 (SUM OF SQUARES OF RANKS)        = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7226)C1
 7226   FORMAT(6X,'C1 (CORRECTION FACTOR)              = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7228)STATVA
 7228   FORMAT(6X,'FRIEDMAN TEST STATISTIC (CONOVER)   = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7240)
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7240)
 7240   FORMAT('2. PERCENT POINTS OF THE F REFERENCE DISTRIBUTION')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7241)
 7241   FORMAT('   FOR FRIEDMAN TEST STATISTIC')
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,7265)CUT0
 7265   FORMAT(6X,'0          % POINT    = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7266)CUT50
 7266   FORMAT(6X,'50         % POINT    = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7267)CUT75
 7267   FORMAT(6X,'75         % POINT    = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7268)CUT90
 7268   FORMAT(6X,'90         % POINT    = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7269)CUT95
 7269   FORMAT(6X,'95         % POINT    = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7270)CUT99
 7270   FORMAT(6X,'99         % POINT    = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7271)CUT999
 7271   FORMAT(6X,'99.9       % POINT    = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,7280)100.*STATCD,STATVA
 7280   FORMAT(6X,G15.7,'   % Point:  ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,7291)
 7291   FORMAT('3. CONCLUSION (AT THE 5% LEVEL):')
        CALL DPWRST('XXX','WRIT')
        IF(STATVA.LE.CUT95)THEN
          WRITE(ICOUT,7293)NTREAT
 7293     FORMAT(6X,'THE ',I8,' TREATMENTS HAVE IDENTICAL EFFECTS')
          CALL DPWRST('XXX','WRIT')
        ELSE
          WRITE(ICOUT,7295)NTREAT
 7295     FORMAT(6X,'THE ',I8,' TREATMENTS DO NOT HAVE IDENTICAL ',
     1           'EFFECTS')
          CALL DPWRST('XXX','WRIT')
        ENDIF
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        IF(IFEEDB.EQ.'ON')THEN
          WRITE(ICOUT,9212)
 9212     FORMAT(6X,'RESPONSE, RANKED RESPONSE, BLOCK AND TREATMENT ',
     1           ' WRITTEN TO FILE DPST1F.DAT')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9214)
 9214     FORMAT(6X,'TREATMENT RANKS AND COMPARISONS WRITTEN TO FILE ',
     1           ' DPST2F.DAT')
          CALL DPWRST('XXX','BUG ')
        ENDIF
C
      ENDIF
      ENDIF
C
C
C               *****************
C               **  STEP 90--  **
C               **  EXIT       **
C               *****************
C
 9000 CONTINUE
      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'FRI2')THEN
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,9011)
 9011   FORMAT('***** AT THE END       OF DPFRI2--')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,9012)N,IBUGA3,IERROR
 9012   FORMAT('N,IBUGA3,IERROR = ',I8,2X,A4,2X,A4)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,9015)N
 9015   FORMAT('N = ',I8)
        CALL DPWRST('XXX','WRIT')
      ENDIF
C
      RETURN
      END
      SUBROUTINE DPFRPA(ICOM,IHARG,IHARG2,NUMARG,
CCCCC AUGUST 1995.  ADD IHARG2 FOR DASH2, ETC
CCCCC SUBROUTINE DPFRPA(ICOM,IHARG,NUMARG,
     1IDEFPA,
     1IX1FPA,IX2FPA,IY1FPA,IY2FPA,
     1IFOUND,IERROR)
C
C     PURPOSE--DEFINE THE FRAME PATTERN SWITCHES
C              FOR ANY OF THE 4 FRAME LINES.
C              SUCH FRAME PATTERN SWITCHES DEFINE THE PATTERN
C              FOR EACH OF THE 4 FRAME LINES.
C              THE CONTENTS OF A FRAME PATTERN SWITCH ARE
C              A PATTERN.
C              THE FRAME PATTERN SWITCHES FOR THE 4 FRAME LINES
C              ARE CONTAINED IN THE 4 VARIABLES
C              IX1FPA,IX2FPA,IY1FPA,IY2FPA.
C     INPUT  ARGUMENTS--ICOM
C                     --IHARG  (A  HOLLERITH VECTOR)
C                     --NUMARG
C                     --IDEFPA
C     OUTPUT ARGUMENTS--IX1FPA (A HOLLERITH VECTOR)
C                     --IX2FPA (A HOLLERITH VECTOR)
C                     --IY1FPA (A HOLLERITH VECTOR)
C                     --IY2FPA (A HOLLERITH VECTOR)
C                     --IFOUND ('YES' OR 'NO' )
C                     --IERROR ('YES' OR 'NO' )
C     WRITTEN BY--ALAN HECKERT
C                 COMPUTER SERVICES DIVISION
C                 CENTER FOR APPLIED MATHEMATICS
C                 NATIONAL BUREAU OF STANDARDS
C                 WASHINGTON, D. C. 20234
C                 PHONE--301-975-2899
C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
C           OF THE NATIONAL BUREAU OF STANDARDS.
C           THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED,
C           MODIFIED, OR OTHERWISE USED IN A CONTEXT
C           OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM.
C     LANGUAGE--ANSI FORTRAN (1977)
C     VERSION NUMBER--82/7
C     ORIGINAL VERSION--OCTOBER   1980.
C     UPDATED         --MAY       1982.
C     UPDATED         --AUGUST    1995.  DASH2 BUG
C
C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
C
      CHARACTER*4 ICOM
      CHARACTER*4 IHARG
CCCCC AUGUST 1995.  ADD FOLLOWING LINE
      CHARACTER*4 IHARG2
      CHARACTER*4 IDEFPA
C
      CHARACTER*4 IX1FPA
      CHARACTER*4 IX2FPA
      CHARACTER*4 IY1FPA
      CHARACTER*4 IY2FPA
C
      CHARACTER*4 IFOUND
      CHARACTER*4 IERROR
C
      CHARACTER*4 IHOLD
C
C---------------------------------------------------------------------
C
      DIMENSION IHARG(*)
CCCCC AUGUST 1995.  ADD FOLLOWING LINE
      DIMENSION IHARG2(*)
C
C
C---------------------------------------------------------------------
C
      CHARACTER*4 IFEEDB
      CHARACTER*4 IPRINT
      CHARACTER*240 ICOUT
C
      COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW
      COMMON /PRINT/IFEEDB,IPRINT
      COMMON /TEXTOU/ICOUT,NCOUT,ILOUT
C
C-----START POINT-----------------------------------------------------
C
      IFOUND='NO'
      IERROR='NO'
C
      IF(NUMARG.LE.0)GOTO1900
      IF(NUMARG.GE.1.AND.IHARG(1).EQ.'PATT')GOTO1090
      IF(NUMARG.GE.2.AND.IHARG(1).EQ.'MARK'.AND.
     1IHARG(2).EQ.'PATT')GOTO1090
      GOTO1900
 1090 CONTINUE
C
C               *****************************************************
C               **  TREAT THE CASE WHEN                            **
C               **  BOTH HORIZONTAL FRAMES    ARE TO BE CHANGED    **
C               *****************************************************
C
      IF(ICOM.EQ.'XFRA')GOTO1100
      GOTO1199
C
 1100 CONTINUE
      IF(IHARG(NUMARG).EQ.'ON')GOTO1150
      IF(IHARG(NUMARG).EQ.'OFF')GOTO1150
      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150
      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150
      IF(IHARG(NUMARG).EQ.'PATT')GOTO1150
      GOTO1160
C
 1150 CONTINUE
      IHOLD=IDEFPA
      GOTO1180
C
 1160 CONTINUE
      IHOLD=IHARG(NUMARG)
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'2')IHOLD='DA2'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'3')IHOLD='DA3'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'4')IHOLD='DA4'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'5')IHOLD='DA5'
      GOTO1180
C
 1180 CONTINUE
      IFOUND='YES'
      IX1FPA=IHOLD
      IX2FPA=IHOLD
C
      IF(IFEEDB.EQ.'OFF')GOTO1189
      WRITE(ICOUT,999)
  999 FORMAT(1X)
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1181)
 1181 FORMAT('THE FRAME PATTERN (FOR BOTH HORIZONTAL ',
     1'FRAME LINES)')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1182)IHOLD
 1182 FORMAT('HAS JUST BEEN SET TO ',A4)
      CALL DPWRST('XXX','BUG ')
 1189 CONTINUE
      GOTO1900
C
 1199 CONTINUE
C
C               **************************************************************
C               **  TREAT THE CASE WHEN                                     **
C               **  ONLY THE BOTTOM HORIZONTAL FRAME IS      TO BE CHANGED  **
C               **************************************************************
C
      IF(ICOM.EQ.'X1FR')GOTO1200
      GOTO1299
C
 1200 CONTINUE
      IF(IHARG(NUMARG).EQ.'ON')GOTO1250
      IF(IHARG(NUMARG).EQ.'OFF')GOTO1250
      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1250
      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1250
      IF(IHARG(NUMARG).EQ.'PATT')GOTO1250
      GOTO1260
C
 1250 CONTINUE
      IHOLD=IDEFPA
      GOTO1280
C
 1260 CONTINUE
      IHOLD=IHARG(NUMARG)
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'2')IHOLD='DA2'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'3')IHOLD='DA3'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'4')IHOLD='DA4'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'5')IHOLD='DA5'
      GOTO1280
C
 1280 CONTINUE
      IFOUND='YES'
      IX1FPA=IHOLD
C
      IF(IFEEDB.EQ.'OFF')GOTO1289
      WRITE(ICOUT,999)
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1281)
 1281 FORMAT('THE FRAME PATTERN (FOR THE BOTTOM HORIZONTAL ',
     1'FRAME LINE)')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1282)IHOLD
 1282 FORMAT('HAS JUST BEEN SET TO ',A4)
      CALL DPWRST('XXX','BUG ')
 1289 CONTINUE
      GOTO1900
C
 1299 CONTINUE
C
C               **************************************************************
C               **  TREAT THE CASE WHEN                                     **
C               **  ONLY THE TOP    HORIZONTAL FRAME IS      TO BE CHANGED  **
C               **************************************************************
C
      IF(ICOM.EQ.'X2FR')GOTO1300
      GOTO1399
C
 1300 CONTINUE
      IF(IHARG(NUMARG).EQ.'ON')GOTO1350
      IF(IHARG(NUMARG).EQ.'OFF')GOTO1350
      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1350
      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1350
      IF(IHARG(NUMARG).EQ.'PATT')GOTO1350
      GOTO1360
C
 1350 CONTINUE
      IHOLD=IDEFPA
      GOTO1380
C
 1360 CONTINUE
      IHOLD=IHARG(NUMARG)
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'2')IHOLD='DA2'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'3')IHOLD='DA3'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'4')IHOLD='DA4'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'5')IHOLD='DA5'
      GOTO1380
C
 1380 CONTINUE
      IFOUND='YES'
      IX2FPA=IHOLD
C
      IF(IFEEDB.EQ.'OFF')GOTO1389
      WRITE(ICOUT,999)
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1381)
 1381 FORMAT('THE FRAME PATTERN (FOR THE TOP HORIZONTAL ',
     1'FRAME LINE)')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1382)IHOLD
 1382 FORMAT('HAS JUST BEEN SET TO ',A4)
      CALL DPWRST('XXX','BUG ')
 1389 CONTINUE
      GOTO1900
C
 1399 CONTINUE
C
C               *****************************************************
C               **  TREAT THE CASE WHEN                            **
C               **  BOTH VERTICAL   FRAMES    ARE TO BE CHANGED    **
C               *****************************************************
C
      IF(ICOM.EQ.'YFRA')GOTO1400
      GOTO1499
C
 1400 CONTINUE
      IF(IHARG(NUMARG).EQ.'ON')GOTO1450
      IF(IHARG(NUMARG).EQ.'OFF')GOTO1450
      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1450
      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1450
      IF(IHARG(NUMARG).EQ.'PATT')GOTO1450
      GOTO1460
C
 1450 CONTINUE
      IHOLD=IDEFPA
      GOTO1480
C
 1460 CONTINUE
      IHOLD=IHARG(NUMARG)
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'2')IHOLD='DA2'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'3')IHOLD='DA3'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'4')IHOLD='DA4'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'5')IHOLD='DA5'
      GOTO1480
C
 1480 CONTINUE
      IFOUND='YES'
      IY1FPA=IHOLD
      IY2FPA=IHOLD
C
      IF(IFEEDB.EQ.'OFF')GOTO1489
      WRITE(ICOUT,999)
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1481)
 1481 FORMAT('THE FRAME PATTERN (FOR BOTH VERTICAL ',
     1'FRAME LINES)')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1482)IHOLD
 1482 FORMAT('HAS JUST BEEN SET TO ',A4)
      CALL DPWRST('XXX','BUG ')
 1489 CONTINUE
      GOTO1900
C
 1499 CONTINUE
C
C               **************************************************************
C               **  TREAT THE CASE WHEN                                     **
C               **  ONLY THE LEFT   VERTICAL   FRAME IS      TO BE CHANGED  **
C               **************************************************************
C
      IF(ICOM.EQ.'Y1FR')GOTO1500
      GOTO1599
C
 1500 CONTINUE
      IF(IHARG(NUMARG).EQ.'ON')GOTO1550
      IF(IHARG(NUMARG).EQ.'OFF')GOTO1550
      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1550
      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1550
      IF(IHARG(NUMARG).EQ.'PATT')GOTO1550
      GOTO1560
C
 1550 CONTINUE
      IHOLD=IDEFPA
      GOTO1580
C
 1560 CONTINUE
      IHOLD=IHARG(NUMARG)
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'2')IHOLD='DA2'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'3')IHOLD='DA3'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'4')IHOLD='DA4'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'5')IHOLD='DA5'
      GOTO1580
C
 1580 CONTINUE
      IFOUND='YES'
      IY1FPA=IHOLD
C
      IF(IFEEDB.EQ.'OFF')GOTO1589
      WRITE(ICOUT,999)
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1581)
 1581 FORMAT('THE FRAME PATTERN (FOR THE LEFT VERTICAL ',
     1'FRAME LINE)')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1582)IHOLD
 1582 FORMAT('HAS JUST BEEN SET TO ',A4)
      CALL DPWRST('XXX','BUG ')
 1589 CONTINUE
      GOTO1900
C
 1599 CONTINUE
C
C               **************************************************************
C               **  TREAT THE CASE WHEN                                     **
C               **  ONLY THE RIGHT  VERTICAL   FRAME IS      TO BE CHANGED  **
C               **************************************************************
C
      IF(ICOM.EQ.'Y2FR')GOTO1600
      GOTO1699
C
 1600 CONTINUE
      IF(IHARG(NUMARG).EQ.'ON')GOTO1650
      IF(IHARG(NUMARG).EQ.'OFF')GOTO1650
      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1650
      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1650
      IF(IHARG(NUMARG).EQ.'PATT')GOTO1650
      GOTO1660
C
 1650 CONTINUE
      IHOLD=IDEFPA
      GOTO1680
C
 1660 CONTINUE
      IHOLD=IHARG(NUMARG)
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'2')IHOLD='DA2'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'3')IHOLD='DA3'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'4')IHOLD='DA4'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'5')IHOLD='DA5'
      GOTO1680
C
 1680 CONTINUE
      IFOUND='YES'
      IY2FPA=IHOLD
C
      IF(IFEEDB.EQ.'OFF')GOTO1689
      WRITE(ICOUT,999)
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1681)
 1681 FORMAT('THE FRAME PATTERN (FOR THE RIGHT VERTICAL ',
     1'FRAME LINE)')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1682)IHOLD
 1682 FORMAT('HAS JUST BEEN SET TO ',A4)
      CALL DPWRST('XXX','BUG ')
 1689 CONTINUE
      GOTO1900
C
 1699 CONTINUE
C
C               *****************************************************
C               **  TREAT THE CASE WHEN                            **
C               **  ALL 4 FRAME FRAME LINES ARE TO BE CHANGED      **
C               *****************************************************
C
      IF(ICOM.EQ.'FRAM')GOTO1700
      IF(ICOM.EQ.'XYFR')GOTO1700
      IF(ICOM.EQ.'YXFR')GOTO1700
      GOTO1799
C
 1700 CONTINUE
      IF(IHARG(NUMARG).EQ.'ON')GOTO1750
      IF(IHARG(NUMARG).EQ.'OFF')GOTO1750
      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1750
      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1750
      IF(IHARG(NUMARG).EQ.'PATT')GOTO1750
      GOTO1760
C
 1750 CONTINUE
      IHOLD=IDEFPA
      GOTO1780
C
 1760 CONTINUE
      IHOLD=IHARG(NUMARG)
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'2')IHOLD='DA2'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'3')IHOLD='DA3'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'4')IHOLD='DA4'
      IF(IHOLD.EQ.'DASH'.AND.IHARG2(NUMARG).EQ.'5')IHOLD='DA5'
      GOTO1780
C
 1780 CONTINUE
      IFOUND='YES'
      IX1FPA=IHOLD
      IX2FPA=IHOLD
      IY1FPA=IHOLD
      IY2FPA=IHOLD
C
      IF(IFEEDB.EQ.'OFF')GOTO1789
      WRITE(ICOUT,999)
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1781)
 1781 FORMAT('THE FRAME PATTERN (FOR ALL 4 ',
     1'FRAME LINES)')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1782)IHOLD
 1782 FORMAT('HAS JUST BEEN SET TO ',A4)
      CALL DPWRST('XXX','BUG ')
 1789 CONTINUE
      GOTO1900
C
 1799 CONTINUE
C
 1900 CONTINUE
      RETURN
      END
      SUBROUTINE DPFRTE(XTEMP1,MAXNXT,
     1ICASAN,ICAPSW,
     1IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
C
C     PURPOSE--PERFORM EITHER A FREQUENCY OR FREQUENCY WITHIN A BLOCK
C              TEST FOR RANDOMNESS
C     EXAMPLE--FREQUENCY TEST Y
C              FREQUENCY WITHIN A BLOCK TEST Y
C     REFERENCE--A STATISTICAL TEST SUITE FOR RANDOM AND PSUEDORANDOM
C                NUMBER GENERATORS FOR CRYPTOGRAPHIC APPLICATIONS,
C                ANDREW RUHKIN, JUAN SOTO, JAMES NECHVATAL, MILES SMID,
C                ELAINE BARKER, STEFAN LEIGH, MARK LEVENSON,
C                MARK VANGEL, DAVID BANKS, ALAN HECKERT, JAMES DRAY,
C                SAN VO.  NIST SPECIAL PUBLICATION 800-22,
C                OCTOBER 2000, PP. 14-16.
C     WRITTEN BY--JAMES J. FILLIBEN
C                 STATISTICAL ENGINEERING DIVISION
C                 INFORMATION TECHNOLOGY LABORATORY
C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
C                 GAITHERSBURG, MD 20899-8980
C                 PHONE--301-975-2855
C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
C           OF THE NATIONAL BUREAU OF STANDARDS.
C           THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED,
C           MODIFIED, OR OTHERWISE USED IN A CONTEXT
C           OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM.
C     LANGUAGE--ANSI FORTRAN (1977)
C     VERSION NUMBER--2003/11
C     ORIGINAL VERSION--NOVEMBER  2003.
C
C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
C
      CHARACTER*4 ICASAN
      CHARACTER*4 ICAPSW
C
      CHARACTER*4 IBUGA2
      CHARACTER*4 IBUGA3
      CHARACTER*4 IBUGQ
      CHARACTER*4 ISUBRO
      CHARACTER*4 IFOUND
      CHARACTER*4 IERROR
C
      CHARACTER*4 MESSAG
      CHARACTER*4 ICASEQ
C
      CHARACTER*4 IHWUSE
      CHARACTER*4 IH11
      CHARACTER*4 IH12
C
      CHARACTER*4 ISUBN1
      CHARACTER*4 ISUBN2
      CHARACTER*4 ISTEPN
C
      CHARACTER*4 IUSE1
      CHARACTER*4 IUSE2
C
      CHARACTER*4 IH
      CHARACTER*4 IH2
      CHARACTER*4 IHOST1
      CHARACTER*4 ISUBN0
C
C---------------------------------------------------------------------
C
      DIMENSION XTEMP1(*)
C
C-----COMMON----------------------------------------------------------
C
      INCLUDE 'DPCOPA.INC'
C
      DIMENSION YTEMP1(MAXOBV)
      DIMENSION YTEMP2(MAXOBV)
      DIMENSION YTEMP3(MAXOBV)
      INCLUDE 'DPCOZZ.INC'
      EQUIVALENCE (GARBAG(IGARB1),YTEMP1(1))
      EQUIVALENCE (GARBAG(IGARB2),YTEMP2(1))
      EQUIVALENCE (GARBAG(IGARB3),YTEMP3(1))
C
      INCLUDE 'DPCOHK.INC'
      INCLUDE 'DPCOSU.INC'
      INCLUDE 'DPCODA.INC'
C
C-----COMMON VARIABLES (GENERAL)--------------------------------------
C
      CHARACTER*4 IFEEDB
      CHARACTER*4 IPRINT
      CHARACTER*240 ICOUT
C
      COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW
      COMMON /PRINT/IFEEDB,IPRINT
      COMMON /TEXTOU/ICOUT,NCOUT,ILOUT
C
C-----START POINT-----------------------------------------------------
C
      ISUBN1='DPFR'
      ISUBN2='TE  '
C
      MAXCP1=MAXCOL+1
      MAXCP2=MAXCOL+2
      MAXCP3=MAXCOL+3
      MAXCP4=MAXCOL+4
      MAXCP5=MAXCOL+5
      MAXCP6=MAXCOL+6
C
      IFOUND='NO'
      IERROR='NO'
C
      N1=(-999)
      N2=(-999)
C
      NS1=(-999)
      NS2=(-999)
C
      IUSE1='-999'
      IUSE2='-999'
C
      ILOCV=(-999)
C
      VALUE1=(-999.0)
      VALUE2=(-999.0)
C
      ICOL1=(-999)
      ICOL2=(-999)
C
      MINN2=2
C
      IFOUND='YES'
C
      NLEFT=0
C
      ICASEQ='UNKN'
C
C               ********************************************
C               **  TREAT THE FREQUENCY        TEST CASE  **
C               ********************************************
C
      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRTE')THEN
        WRITE(ICOUT,999)
  999   FORMAT(1X)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,51)
   51   FORMAT('***** AT THE BEGINNING OF DPFRTE--')
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,52)IBUGA2,IBUGA3
   52   FORMAT('IBUGA2,IBUGA3 = ',A4,2X,A4)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,53)IBUGQ
   53   FORMAT('IBUGQ = ',A4)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,55)MAXNXT
   55   FORMAT('MAXNXT = ',I8)
        CALL DPWRST('XXX','BUG ')
      ENDIF
C
C               *******************************************************
C               **  STEP 2--                                         **
C               **  CHECK FOR THE PROPER NUMBER OF INPUT ARGUMENTS.  **
C               *******************************************************
C
      ISTEPN='2'
      IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      MINNA=1
      MAXNA=100
      CALL CHECKA(NUMARG,MINNA,MAXNA,IANS,IWIDTH,ISUBN1,ISUBN2,
     1IERROR)
      IF(IERROR.EQ.'YES')GOTO9000
C
C               ****************************************
C               **  STEP 11--                         **
C               **  CHECK THE VALIDITY OF ARGUMENT 1  **
C               **  (THIS SHULD BE A VARIABLE.)       **
C               ****************************************
C
      ISTEPN='11'
      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'FRTE')
     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      IH11=IHARG(1)
      IH12=IHARG2(1)
      IHWUSE='V'
      MESSAG='YES'
      CALL CHECKN(IH11,IH12,IHWUSE,
     1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
     1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
C
      IF(IERROR.EQ.'YES')THEN
         WRITE(ICOUT,999)
         CALL DPWRST('XXX','BUG ')
         WRITE(ICOUT,1141)
 1141    FORMAT('***** ERROR IN DPFRTE--')
         CALL DPWRST('XXX','BUG ')
         WRITE(ICOUT,1142)
 1142    FORMAT('      FOR THE FREQUENCY TEST,')
         CALL DPWRST('XXX','BUG ')
         WRITE(ICOUT,1145)
 1145    FORMAT('      THE ARGUMENT MUST BE A VARIABLE')
         CALL DPWRST('XXX','BUG ')
         WRITE(ICOUT,1146)
 1146    FORMAT('      (AS OPPOSED TO A PARAMETER OR FUNCTION).')
         CALL DPWRST('XXX','BUG ')
         WRITE(ICOUT,1147)
 1147    FORMAT('      ARGUMENT 1 WAS NOT A VARIABLE HERE.')
         CALL DPWRST('XXX','BUG ')
         WRITE(ICOUT,1148)
 1148    FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
         CALL DPWRST('XXX','BUG ')
         IF(IWIDTH.GE.1)WRITE(ICOUT,1150)(IANS(I),I=1,MIN(IWIDTH,80))
 1150    FORMAT(80A1)
         IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
         IERROR='YES'
         GOTO9000
      ENDIF
C
      IUSE1=IUSE(ILOCV)
      ICOL1=IVALUE(ILOCV)
      N1=IN(ILOCV)
 1190 CONTINUE
C
C               *******************************************************
C               **  STEP 12--                                        **
C               **  IF ARGUMENT 1 IS A VARIABLE,                     **
C               **  CHECK THAT THE INPUT NUMBER OF OBSERVATIONS (N1) **
C               **  FOR ARGUMENT 1 IS 2 OR MORE.                     **
C               *******************************************************
C
      ISTEPN='12'
      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'FRTE')
     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      IF(IUSE1.NE.'V')GOTO1290
      IF(N1.GE.MINN2)GOTO1290
      WRITE(ICOUT,999)
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1211)
 1211 FORMAT('***** ERROR IN DPFRTE--')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1212)
 1212 FORMAT('      THE INPUT NUMBER OF OBSERVATIONS')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1213)
 1213 FORMAT('      (FOR WHICH THE FREQUENCY TEST ')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1214)
 1214 FORMAT('      WAS TO HAVE BEEN CARRIED OUT)')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1215)MINN2
 1215 FORMAT('      MUST BE ',I8,' OR LARGER;')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1216)
 1216 FORMAT('      SUCH WAS NOT THE CASE HERE')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1217)IH11,IH12
 1217 FORMAT('      FOR VARIABLE ',A4,A4,' WHICH HAD')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1218)N1
 1218 FORMAT('      NUMBER OF OBSERVATIONS = ',I8,';')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,1219)
 1219 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
      CALL DPWRST('XXX','BUG ')
      IF(IWIDTH.GE.1)THEN
        WRITE(ICOUT,1220)(IANS(I),I=1,MIN(80,IWIDTH))
 1220   FORMAT(80A1)
        CALL DPWRST('XXX','BUG ')
      ENDIF
      IERROR='YES'
      GOTO9000
 1290 CONTINUE
C
C               *****************************************
C               **  STEP 40--                          **
C               **  CHECK TO SEE THE TYPE CASE--       **
C               **    1) UNQUALIFIED (THAT IS, FULL);  **
C               **    2) SUBSET/EXCEPT; OR             **
C               **    3) FOR.                          **
C               *****************************************
C
      ISTEPN='40'
      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'FRTE')
     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      ICASEQ='FULL'
      ILOCQ=NUMARG+1
      IF(NUMARG.LT.1)GOTO4090
      DO4000J=1,NUMARG
      J1=J
      IF(IHARG(J).EQ.'SUBS'.AND.IHARG2(J).EQ.'ET  ') GOTO4010
      IF(IHARG(J).EQ.'EXCE'.AND.IHARG2(J).EQ.'PT  ') GOTO4010
      IF(IHARG(J).EQ.'FOR '.AND.IHARG2(J).EQ.'    ') GOTO4020
 4000 CONTINUE
      GOTO4090
 4010 CONTINUE
      ICASEQ='SUBS'
      ILOCQ=J1
      GOTO4090
 4020 CONTINUE
      ICASEQ='FOR'
      ILOCQ=J1
      GOTO4090
 4090 CONTINUE
      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'FRTE')THEN
        WRITE(ICOUT,4091)NUMARG,ILOCQ
 4091   FORMAT('NUMARG,ILOCQ = ',2I8)
        CALL DPWRST('XXX','BUG ')
      ENDIF
C
C               ***********************************************
C               **  STEP 41--                                **
C               **  TEMPORARILY FORM THE VARIABLE Y(.)       **
C               **  WHICH WILL HOLD THE DATA  FROM SAMPLE 1. **
C               **  FORM THIS VARIABLE BY                    **
C               **  BRANCHING TO THE APPROPRIATE SUBCASE     **
C               **  (FULL, SUBSET, OR FOR).                  **
C               ***********************************************
C
      IF(IUSE1.NE.'V')GOTO4190
C
      ISTEPN='41'
      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'FRTE')
     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      IF(ICASEQ.EQ.'FULL')GOTO4110
      IF(ICASEQ.EQ.'SUBS')GOTO4120
      IF(ICASEQ.EQ.'FOR')GOTO4130
C
 4110 CONTINUE
      DO4115I=1,N1
      ISUB(I)=1
 4115 CONTINUE
      NQ=N1
      GOTO4150
C
 4120 CONTINUE
      NIOLD=N1
      CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERROR)
      NQ=NIOLD
      GOTO4150
C
 4130 CONTINUE
      NIOLD=N1
      CALL DPFOR(NIOLD,NFOR,IROW1,IROWN,
     1NLOCAL,ILOCS,NS,IBUGQ,IERROR)
      NQ=NFOR
      GOTO4150
C
 4150 CONTINUE
      IF(NQ.GE.MINN2)GOTO4160
      WRITE(ICOUT,999)
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,4151)
 4151 FORMAT('***** ERROR IN DPFRTE--')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,4152)
 4152 FORMAT('      AFTER THE APPROPRIATE SUBSET HAS BEEN ',
     1'EXTRACTED,')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,4153)IH11,IH12
 4153 FORMAT('      THE NUMBER OF OBSERVATIONS REMAINING',
     1'FROM VARIABLE ',A4,A4)
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,4154)
 4154 FORMAT('      (FOR WHICH THE FREQUENCY TEST ')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,4155)
 4155 FORMAT('      IS TO BE CARRIED OUT)')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,4156)MINN2
 4156 FORMAT('      MUST BE ',I8,' OR LARGER;')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,4157)NQ
 4157 FORMAT('      SUCH WAS NOT THE CASE HERE.  (N = ',I8,')')
      CALL DPWRST('XXX','BUG ')
      WRITE(ICOUT,4158)
 4158 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
      CALL DPWRST('XXX','BUG ')
      IF(IWIDTH.GE.1)THEN
        WRITE(ICOUT,4159)(IANS(I),I=1,MIN(80,IWIDTH))
 4159   FORMAT('      ',80A1)
        CALL DPWRST('XXX','BUG ')
      ENDIF
      IERROR='YES'
      GOTO9000
C
 4160 CONTINUE
      J=0
      IMAX=N1
      IF(NQ.LT.N1)IMAX=NQ
      DO4170I=1,IMAX
      IF(ISUB(I).EQ.0)GOTO4170
      J=J+1
C
      IJ=MAXN*(ICOL1-1)+I
      IF(ICOL1.LE.MAXCOL)Y(J)=V(IJ)
      IF(ICOL1.EQ.MAXCP1)Y(J)=PRED(I)
      IF(ICOL1.EQ.MAXCP2)Y(J)=RES(I)
      IF(ICOL1.EQ.MAXCP3)Y(J)=YPLOT(I)
      IF(ICOL1.EQ.MAXCP4)Y(J)=XPLOT(I)
      IF(ICOL1.EQ.MAXCP5)Y(J)=X2PLOT(I)
      IF(ICOL1.EQ.MAXCP6)Y(J)=TAGPLO(I)
C
 4170 CONTINUE
      NS1=J
C
 4190 CONTINUE
C
C               ***********************************
C               **  STEP 52--                    **
C               **  DO THE FREQUENCY TEST        **
C               ***********************************
C
      ISTEPN='52'
      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'FRTE')
     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'FRTE')THEN
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,5211)
 5211   FORMAT('***** FROM DPFRTE, AS WE ARE ABOUT TO CALL DPFRT2--')
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,5212)N1,N2,NS1,NS2,MAXN
 5212   FORMAT('N1,N2,NS1,NS2,MAXN = ',5I8)
        CALL DPWRST('XXX','BUG ')
        DO5215I=1,NS1
          WRITE(ICOUT,5216)I,Y(I)
 5216     FORMAT('I,Y(I) = ',I8,2E15.7)
          CALL DPWRST('XXX','BUG ')
 5215   CONTINUE
        WRITE(ICOUT,5231)IBUGA3
 5231   FORMAT('IBUGA3 = ',A4)
        CALL DPWRST('XXX','BUG ')
      ENDIF
C
 5790 CONTINUE
C
      IF(ICASAN.EQ.'FBTE')THEN
        IH11='M   '
        IH12='    '
        IHWUSE='P'
        MESSAG='NO'
        CALL CHECKN(IH11,IH12,IHWUSE,
     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCP,IERROR)
        IF(IERROR.EQ.'NO')THEN
          AM=VALUE(ILOCP)
          M=INT(AM+0.5)
        ELSE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5811)
 5811     FORMAT('***** ERROR: FOR FREQUENCY WITHIN A BLOCK TEST, THE')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5812)
 5812     FORMAT('      DESIRED BLOCK SIZE WAS NOT SET.  TO SET THE')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5813)
 5813     FORMAT('      BLOCK SIZE, ENTER THE COMMAND')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5814)
 5814     FORMAT('      LET M = value')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO9000
        ENDIF
        IF(M.LT.20)THEN
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5821)
 5821     FORMAT('***** WARNING: FOR THE FREQUENCY WITHIN A BLOCK ',
     1           'TEST, THE ')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5822)
 5822     FORMAT('      RECOMMENDATION FOR THE MINIMUM BLOCK SIZE')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5823)M
 5823     FORMAT('      IS 20.  THE SPECIFIED BLOCK SIZE IS ',I8)
          CALL DPWRST('XXX','BUG ')
        ENDIF
      ENDIF
C
      CALL DPFRT2(Y,NS1,
     1XTEMP1,MAXNXT,
     1ICAPSW,ICAPTY,ICASAN,M,
     1STATVA,STATCD,CUT0,CUT50,CUT75,CUT90,CUT95,CUT99,
     1YTEMP1,YTEMP2,YTEMP3,
     1ISUBRO,IBUGA3,IERROR)
C
C               ***************************************
C               **  STEP 61--                        **
C               **  UPDATE INTERNAL DATAPLOT TABLES  **
C               ***************************************
C
      ISTEPN='61'
      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'FRTE')
     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      ISUBN0='DPFR'
C
      IH='STAT'
      IH2='VAL '
      VALUE0=STATVA
      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
     1IANS,IWIDTH,IBUGA2,IERROR)
C
      IH='STAT'
      IH2='CDF '
      VALUE0=STATCD
      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
     1IANS,IWIDTH,IBUGA2,IERROR)
C
      IH='CUTO'
      IH2='FF50'
      VALUE0=CUT50
      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
     1IANS,IWIDTH,IBUGA2,IERROR)
C
      IH='CUTO'
      IH2='FF75'
      VALUE0=CUT75
      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
     1IANS,IWIDTH,IBUGA2,IERROR)
C
      IH='CUTO'
      IH2='FF90'
      VALUE0=CUT90
      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
     1IANS,IWIDTH,IBUGA2,IERROR)
C
      IH='CUTO'
      IH2='FF95'
      VALUE0=CUT95
      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
     1IANS,IWIDTH,IBUGA2,IERROR)
C
      IH='CUTO'
      IH2='FF99'
      VALUE0=CUT99
      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
     1IANS,IWIDTH,IBUGA2,IERROR)
 
C               *****************
C               **  STEP 90--  **
C               **  EXIT       **
C               *****************
C
 9000 CONTINUE
      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'FRTE')THEN
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,9011)
 9011   FORMAT('***** AT THE END       OF DPFRTE--')
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,9012)IBUGA2,IBUGA3
 9012   FORMAT('IBUGA2,IBUGA3 = ',A4,2X,A4)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,9013)IBUGQ
 9013   FORMAT('IBUGQ = ',A4)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,9014)NLEFT,NS
 9014   FORMAT('NLEFT,NS = ',2I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,9015)ICASEQ
 9015   FORMAT('ICASEQ = ',A4)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,9016)IFOUND,IERROR
 9016   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
        CALL DPWRST('XXX','BUG ')
      ENDIF
C
      RETURN
      END
      SUBROUTINE DPFRT2(Y,N,
     1XTEMP,MAXNXT,
     1ICAPSW,ICAPTY,ICASAN,M,
     1STATVA,STATCD,CUT0,CUT50,CUT75,CUT90,CUT95,CUT99,
     1YTEMP1,YTEMP2,YTEMP3,
     1ISUBRO,IBUGA3,IERROR)
C
C     PURPOSE--THIS ROUTINE CARRIES OUT EITHER THE FREQUENCY TEST
C              FOR RANDOMNESS OR THE FREQUENCY WITHIN A BLOCK TEST
C              FOR RANDOMNESS.
C     EXAMPLE--FREQUENCY TEST Y
C              FREQUENCY WITHIN A BLOCK TEST Y
C     REFERENCE--A STATISTICAL TEST SUITE FOR RANDOM AND PSUEDORANDOM
C                NUMBER GENERATORS FOR CRYPTOGRAPHIC APPLICATIONS,
C                ANDREW RUHKIN, JUAN SOTO, JAMES NECHVATAL, MILES SMID,
C                ELAINE BARKER, STEFAN LEIGH, MARK LEVENSON,
C                MARK VANGEL, DAVID BANKS, ALAN HECKERT, JAMES DRAY,
C                SAN VO.  NIST SPECIAL PUBLICATION 800-22,
C                OCTOBER 2000, PP. 14-18.
C     WRITTEN BY--JAMES J. FILLIBEN
C                 STATISTICAL ENGINEERING DIVISION
C                 INFORMATION TECHNOLOGY LABORATORY
C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
C                 GAITHERSBURG, MD 20899-8980
C                 PHONE--301-975-2855
C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
C           OF THE NATIONAL BUREAU OF STANDARDS.
C           THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED,
C           MODIFIED, OR OTHERWISE USED IN A CONTEXT
C           OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM.
C     LANGUAGE--ANSI FORTRAN (1977)
C     VERSION NUMBER--2003/11
C     ORIGINAL VERSION--NOVEMBER  2003.
C
C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
C
      CHARACTER*4 ICAPSW
      CHARACTER*4 ICAPTY
      CHARACTER*4 ICASAN
C
      CHARACTER*4 ISUBRO
      CHARACTER*4 IBUGA3
      CHARACTER*4 IERROR
C
      CHARACTER*4 IWRITE
C
      CHARACTER*1 IBASLC
C
      CHARACTER*6 ICONC1
      CHARACTER*6 ICONC2
      CHARACTER*6 ICONC3
      CHARACTER*6 ICONC4
C
      CHARACTER*4 ISUBN1
      CHARACTER*4 ISUBN2
      CHARACTER*4 ISTEPN
C
C---------------------------------------------------------------------
C
      DIMENSION Y(*)
      DIMENSION XTEMP(*)
      DIMENSION YTEMP1(*)
      DIMENSION YTEMP2(*)
      DIMENSION YTEMP3(*)
C
      DOUBLE PRECISION DRESLT
      DOUBLE PRECISION DGAMIP
C
C---------------------------------------------------------------------
C
      CHARACTER*4 IFEEDB
      CHARACTER*4 IPRINT
      CHARACTER*240 ICOUT
C
      COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW
      COMMON /PRINT/IFEEDB,IPRINT
      COMMON /TEXTOU/ICOUT,NCOUT,ILOUT
C
C-----START POINT-----------------------------------------------------
C
      ISUBN1='DPFR'
      ISUBN2='T2  '
C
      IERROR='NO'
C
      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'FRT2')THEN
        WRITE(ICOUT,999)
  999   FORMAT(1X)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,51)
   51   FORMAT('**** AT THE BEGINNING OF DPFRT2--')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,52)IBUGA3
   52   FORMAT('IBUGA3 = ',A4)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,55)N
   55   FORMAT('N = ',I8)
        CALL DPWRST('XXX','WRIT')
        DO56I=1,N
          WRITE(ICOUT,57)I,Y(I)
   57     FORMAT('I,Y(I) = ',I8,E15.7)
          CALL DPWRST('XXX','WRIT')
   56   CONTINUE
      ENDIF
C
C               ********************************************
C               **  STEP 11--                             **
C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
C               ********************************************
C
      ISTEPN='11'
      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'FRT2')
     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      IF(N.LE.5)THEN
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,1111)
 1111   FORMAT('***** ERROR IN FREQUENCY RANDOMNESS TEST.')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,1113)
 1113   FORMAT('      AT LEAST SIX OBSERVATIONS REQUIRED.')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,1115)N
 1115   FORMAT('SAMPLE SIZE = ',I8)
        CALL DPWRST('XXX','WRIT')
        IERROR='YES'
        GOTO9000
      ENDIF
C
      HOLD=Y(1)
      DO1135I=2,N
      IF(Y(I).NE.HOLD)GOTO1139
 1135 CONTINUE
 1130 CONTINUE
      WRITE(ICOUT,999)
      CALL DPWRST('XXX','WRIT')
      WRITE(ICOUT,1131)HOLD
 1131 FORMAT('***** NOTE FROM FREQUENCY RANDOMNESS TEST--VARIABLE ',
     1'HAS ALL ELEMENTS = ',E15.7)
      CALL DPWRST('XXX','WRIT')
      IERROR='YES'
      GOTO9000
 1139 CONTINUE
C
C               *******************************
C               **  STEP 2--                 **
C               **  COMPUTE THE NUMBER OF    **
C               **  DISTINCT VALUES.         **
C               *******************************
C
      ISTEPN='2'
      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'FRT2')
     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      IWRITE='NO'
      CALL DISTIN(Y,N,IWRITE,YTEMP1,NDIST,IBUGA3,IERROR)
C
      IF(IERROR.EQ.'YES')GOTO9000
      IF(NDIST.GT.2)THEN
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,2001)
 2001   FORMAT('***** ERROR IN FREQUENCY RANDOMNESS TEST.')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,2003)
 2003   FORMAT('      FOR FREQUENCY TEST, AT MOST TWO DISTINCT ',
     1         'VALUES ARE ALLOWED.')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,2005)NDIST
 2005   FORMAT('      NUMBER OF DISTINCT VALUES = ',I8)
        CALL DPWRST('XXX','WRIT')
        IERROR='YES'
        GOTO9000
      ENDIF
C
      IF(ICASAN.EQ.'FRTE')GOTO2000
      IF(ICASAN.EQ.'FBTE')GOTO3000
C
 2000 CONTINUE
      IF(NDIST.EQ.1)THEN
        DO2010I=1,N
          YTEMP2(I)=1.0
 2010   CONTINUE
      ELSE
        ALOW=MIN(YTEMP1(1),YTEMP1(2))
        AHIGH=MAX(YTEMP1(1),YTEMP1(2))
        SN=0.0
        DO2020I=1,N
          IF(Y(I).EQ.ALOW)THEN
            SN=SN - 1.0
          ELSE
            SN=SN + 1.0
          ENDIF
 2020   CONTINUE
      ENDIF
C
C               ******************************
C               **  STEP 42--               **
C               **  CARRY OUT CALCULATIONS  **
C               **  FOR FREQUENCY     TEST  **
C               ******************************
C
 4400 CONTINUE
C
      ISTEPN='42'
      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      IWRITE='OFF'
C
      STATVA=ABS(SN)/SQRT(REAL(N))
C
      ARG1=STATVA
      CALL NORCDF(ARG1,RESULT)
      TERM=2.0*RESULT-1.0
      STATCD=1.0-TERM
CCCCC CDF2=100.0*STATCD
C
      CUT0=0.
C
      ALPHA=.5
      P2=1.0-ALPHA/2.0
      CALL NORPPF(P2,CUT50)
C
      ALPHA=.25
      P2=1.0-ALPHA/2.0
      CALL NORPPF(P2,CUT75)
C
      ALPHA=.10
      P2=1.0-ALPHA/2.0
      CALL NORPPF(P2,CUT90)
C
      ALPHA=.05
      P2=1.0-ALPHA/2.0
      CALL NORPPF(P2,CUT95)
C
      ALPHA=.025
      P2=1.0-ALPHA/2.0
      CALL NORPPF(P2,CUT975)
C
      ALPHA=.01
      P2=1.0-ALPHA/2.0
      CALL NORPPF(P2,CUT99)
C
      ICONC1='REJECT'
      ICONC2='REJECT'
      ICONC3='REJECT'
      ICONC4='REJECT'
C
C               *********************************
C               **   STEP 52--                 **
C               **   WRITE OUT EVERYTHING      **
C               **   FOR FREQUENCY TEST        **
C               *********************************
C
      ISTEPN='52'
      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      IF(IPRINT.EQ.'ON')THEN
      IF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'HTML')THEN
        WRITE(ICOUT,5101)
 5101   FORMAT('
') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5108) 5108 FORMAT('
') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5102) 5102 FORMAT('FREQUENCY TEST FOR RANDONNESS') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5109) 5109 FORMAT('
') CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5104) C5104 FORMAT('

') CCCCC WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5105) 5105 FORMAT('
    ') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5206) 5206 FORMAT('
  1. Hypotheis:
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5208) 5208 FORMAT(' H0: The data are random
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5210) 5210 FORMAT(' Ha: The data are not random
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5107) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5106) 5106 FORMAT('
  2. Statistics:') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5107) 5107 FORMAT('
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5111) 5111 FORMAT(' ') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5121) 5121 FORMAT(' ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) 5123 FORMAT(' ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) 5126 FORMAT(' ') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5142) 5142 FORMAT(' Sum of +1 and -1 Values:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5154)SN CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5146) 5146 FORMAT(' Frequency Test Statstic Value:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5126) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5154)STATVA 5154 FORMAT(' ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5191) 5191 FORMAT('
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5125) 5125 FORMAT(' Number of Observations:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) 5127 FORMAT(' ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5129)N 5129 FORMAT(' ',I8) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5128) 5128 FORMAT('
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5107) CALL DPWRST('XXX','WRIT') C CCCCC WRITE(ICOUT,5164) C5164 FORMAT('
  3. Percent Points of Reference Half-Normal ', CCCCC1 ' Distribution (Critical Values):
    ') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5165) C5165 FORMAT(' (Reject Hypothesis of Randomness if test ', CCCCC1 ' statistic value') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5166) C5166 FORMAT(' is greater than percent point value.') CCCCC CALL DPWRST('XXX','WRIT') C CCCCC WRITE(ICOUT,5107) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5111) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5121) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5123) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5167) C5167 FORMAT(' 90% Point:') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5127) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5126) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5151)CUT90 C5151 FORMAT(' ',G15.7) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5127) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5128) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5121) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5123) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5168) C5168 FORMAT(' 95% Point:') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5127) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5126) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5151)CUT95 CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5127) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5128) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5121) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5123) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5169) C5169 FORMAT(' 97.5% Point:') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5127) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5126) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5151)CUT975 CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5127) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5128) CCCCC CALL DPWRST('XXX','WRIT') C CCCCC WRITE(ICOUT,5121) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5123) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5170) C5170 FORMAT(' 99% Point:') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5127) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5126) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5151)CUT99 CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5127) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5128) CCCCC CALL DPWRST('XXX','WRIT') C CCCCC WRITE(ICOUT,5121) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5123) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5172) C5172 FORMAT(' P-Value:') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5127) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5126) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5151)STATCD CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5127) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5128) CCCCC CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5173)STATCD 5173 FORMAT('
  4. P-Value = ',G15.7,'
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5174) 5174 FORMAT(' (Reject hypothesis of randomness if P-Value ', 1 'is less than alpha)') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5107) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5107) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5176) 5176 FORMAT('
  5. Conclusion (at the 5% Level):') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5107) CALL DPWRST('XXX','WRIT') IF(STATVA.LT.CUT95)THEN WRITE(ICOUT,5180) CALL DPWRST('XXX','WRIT') 5180 FORMAT(' The data are random.') ELSE WRITE(ICOUT,5190) CALL DPWRST('XXX','WRIT') 5190 FORMAT(' The data are not random.') ENDIF WRITE(ICOUT,5997) 5997 FORMAT('
') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5999) 5999 FORMAT('
')
        CALL DPWRST('XXX','WRIT')
C
      ELSEIF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'LATE')THEN
 8001   FORMAT('{',A1,'bf FREQUENCY TEST FOR RANDOMNESS}',2X,A1,A1)
 8002   FORMAT(A1,'begin{table}')
 8003   FORMAT(A1,'end{table}')
 8007   FORMAT(A1,'begin{center}')
 8008   FORMAT(A1,'end{center}')
 8012   FORMAT(A1,'end{verbatim}')
 8017   FORMAT(A1,'begin{enumerate}')
 8018   FORMAT(A1,'end{enumerate}')
 8019   FORMAT(5X,'$ ',A1,1X,A1,' $ ',A1,A1)
C
        CALL DPCONA(92,IBASLC)
C
        WRITE(ICOUT,8012)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8007)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8002)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8001)IBASLC,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8019)IBASLC,IBASLC,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8019)IBASLC,IBASLC,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8017)IBASLC
        CALL DPWRST('XXX','WRIT')
C
 8020   FORMAT(5X,A1,'item Hypothesis:')
 8021   FORMAT(5X,A1,'item Statistics:')
 8022   FORMAT(5X,A1,'item Critical Values:')
 8023   FORMAT(5X,A1,'item Conclusion (at the 5',A1,'% level):')
 8030   FORMAT(11X,A1,'begin{tabular} {lr}')
 8031   FORMAT(11X,'Number of Observations: & ',I8,2X,A1,A1)
 8032   FORMAT(11X,'Sum of +1 and -1 Values: & ',G15.7,2X,A1,A1)
 8034   FORMAT(11X,'Frequency Test Statistic Value: & ',
     1         G15.7,2X,A1,A1)
 8040   FORMAT(11X,A1,'end{tabular}')
 8151   FORMAT(11X,'$H_0$: The data are random ')
 8152   FORMAT(11X,'$H_a$: The data are not random')
C
        WRITE(ICOUT,8020)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8050)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8151)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8050)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8152)
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,8021)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8050)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8030)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8031)N,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8032)SN,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8034)STATVA,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8040)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,8022)IBASLC
        CALL DPWRST('XXX','WRIT')
C
C8041   FORMAT(11X,'90',A1,'% Point: & ',G15.7,2X,A1,A1)
C8042   FORMAT(11X,'95',A1,'% Point: & ',G15.7,2X,A1,A1)
C8043   FORMAT(11X,'97.5',A1,'% Point: & ',G15.7,2X,A1,A1)
C8044   FORMAT(11X,'99',A1,'% Point: & ',G15.7,2X,A1,A1)
 8046   FORMAT(11X,'P-Value of Statistic: & ',G15.7,2X,A1,A1)
 8047   FORMAT(11X,'(Reject hypothesis of randomness if p-value ',
     1         'is less than $',A1,'alpha$) & ',2X,A1,A1)
        WRITE(ICOUT,8050)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8030)IBASLC
        CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,8041)IBASLC,CUT90,IBASLC,IBASLC
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,8042)IBASLC,CUT95,IBASLC,IBASLC
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,8043)IBASLC,CUT975,IBASLC,IBASLC
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,8044)IBASLC,CUT99,IBASLC,IBASLC
CCCCC   CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8046)STATCD,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8047)IBASLC,IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8040)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,8023)IBASLC,IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8050)IBASLC
        CALL DPWRST('XXX','WRIT')
C
 8050   FORMAT(11X,A1,'newline')
 8091   FORMAT(A1,'end{enumerate}')
 8092   FORMAT(A1,'begin{verbatim}')
        IF(STATVA.LT.CUT95)THEN
          WRITE(ICOUT,8051)
          CALL DPWRST('XXX','WRIT')
 8051     FORMAT('        The data are random.')
        ELSE
          WRITE(ICOUT,8061)
          CALL DPWRST('XXX','WRIT')
 8061     FORMAT('        The data are not random.')
        ENDIF
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8091)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8003)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8008)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,8092)IBASLC
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
      ELSEIF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'RTF')THEN
C  JUST A PLACEHOLDER FOR NOW.
C
      ELSE
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,5211)
 5211   FORMAT('              FREQUENCY TEST FOR RANDOMNESS')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,5231)
 5231   FORMAT('1. HYPOTHESIS:')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,5232)
 5232   FORMAT(3X,'H0: THE DATA ARE RANDOM')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,5233)
 5233   FORMAT(3X,'HA: THE DATA ARE NOT RANDOM')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,5241)
 5241   FORMAT('2. STATISTICS:')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,5242)N
 5242   FORMAT(3X,'NUMBER OF OBSERVATIONS      = ',I8)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,5343)SN
 5343   FORMAT(3X,'SUM OF +1 AND -1 VALUES     = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,5349)STATVA
 5349   FORMAT(3X,'FREQUENCY TEST STATISTIC    = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
CCCCC   WRITE(ICOUT,5438)
C5438   FORMAT('2. PERCENT POINTS OF THE REFERENCE HALF-NORMAL ',
CCCCC1         'DISTRIBUTION')
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,5439)
C5439   FORMAT('   (REJECT HYPOTHESIS OF RANDOMNESS IF TEST STATISTIC ',
CCCCC1         'VALUE')
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,5440)
C5440   FORMAT('   IS GREATER THAN PERCENT POINT VALUE)')
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,5441)
C5441   FORMAT(3X,'FOR FREQUENCY TEST STATISTIC')
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,5445)CUT0
C5445   FORMAT(6X,'0          % POINT    = ',G15.7)
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,5446)CUT50
C5446   FORMAT(6X,'50         % POINT    = ',G15.7)
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,5447)CUT75
C5447   FORMAT(6X,'75         % POINT    = ',G15.7)
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,5448)CUT90
C5448   FORMAT(6X,'90         % POINT    = ',G15.7)
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,5449)CUT95
C5449   FORMAT(6X,'95         % POINT    = ',G15.7)
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,5450)CUT975
C5450   FORMAT(6X,'97.5       % POINT    = ',G15.7)
CCCCC   CALL DPWRST('XXX','WRIT')
CCCCC   WRITE(ICOUT,5451)CUT99
C5451   FORMAT(6X,'99         % POINT    = ',G15.7)
CCCCC   CALL DPWRST('XXX','WRIT')
C
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,5453)STATCD
 5453   FORMAT('3. P-VALUE OF STATISTIC  = ',G15.7)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,5454)
 5454   FORMAT('   (REJECT HYPOTHESIS OF RANDOMNESS IF P-VALUE IS ',
     1         'LESS THAN ALPHA)')
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
        WRITE(ICOUT,5561)
 5561   FORMAT('4. CONCLUSION (AT THE 5% LEVEL):')
        CALL DPWRST('XXX','WRIT')
        IF(STATVA.LT.CUT95)THEN
          WRITE(ICOUT,5563)
 5563     FORMAT(3X,'THE DATA ARE RANDOM.')
          CALL DPWRST('XXX','WRIT')
        ELSE
          WRITE(ICOUT,5565)
 5565     FORMAT(3X,'THE DATA ARE NOT RANDOM.')
          CALL DPWRST('XXX','WRIT')
        ENDIF
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','WRIT')
C
      ENDIF
      ENDIF
      GOTO9000
C
 3000 CONTINUE
C
      NBLOCK=N/M
      AMNSZ=0.01*REAL(N)
C
      IF(NBLOCK.GE.100)THEN
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3011)
 3011   FORMAT('***** WARNING: THE NUMBER OF BLOCKS IS GREATER')
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3012)
 3012   FORMAT('      THAN THE RECOMMENDED MAXIMUM OF 100.')
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3013)N
 3013   FORMAT('      SAMPLE SIZE       = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3014)M
 3014   FORMAT('      BLOCK SIZE        = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3015)NBLOCK
 3015   FORMAT('      NUMBER OF BLOCKS  = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','BUG ')
      ENDIF
C
      IF(M.LE.INT(AMNSZ))THEN
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3021)
 3021   FORMAT('***** WARNING: THE BLOCK SIZE IS LESS THAN THE')
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3022)INT(AMNSZ)
 3022   FORMAT('      RECOMMENDED MINIMUM OF ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3023)N
 3023   FORMAT('      SAMPLE SIZE                     = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3024)M
 3024   FORMAT('      BLOCK SIZE                      = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3025)NBLOCK
 3025   FORMAT('      NUMBER OF BLOCKS                = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3026)INT(AMNSZ)
 3026   FORMAT('      RECOMMENDED MINIMUM BLOCK SIZE  = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','BUG ')
      ENDIF
C
      IF(M.GT.N)THEN
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3031)
 3031   FORMAT('***** ERROR: THE BLOCK SIZE IS GREATER THAN THE ',
     1         'SAMPLE SIZE.')
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3033)N
 3033   FORMAT('      SAMPLE SIZE                     = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3034)M
 3034   FORMAT('      BLOCK SIZE                      = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3035)NBLOCK
 3035   FORMAT('      NUMBER OF BLOCKS                = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3036)INT(AMNSZ)
 3036   FORMAT('      RECOMMENDED MINIMUM BLOCK SIZE  = ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','BUG ')
        IERROR='YES'
        GOTO9000
      ENDIF
C
      IF(NDIST.NE.2)THEN
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3041)NDIST
 3041   FORMAT('***** ERROR: THE RESPONSE VARIBLE CONTAINS ',I8)
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,3043)
 3043   FORMAT('      DISTINCT VALUES.')
        CALL DPWRST('XXX','BUG ')
        WRITE(ICOUT,999)
        CALL DPWRST('XXX','BUG ')
        IERROR='YES'
        GOTO9000
      ENDIF
C
      ALOW=MIN(YTEMP1(1),YTEMP1(2))
      AHIGH=MAX(YTEMP1(1),YTEMP1(2))
      AM=REAL(M)
C
      SUM=0.0
      DO3110K=1,NBLOCK
        ISTRT=(K-1)*M+1
        ISTOP=K*M
        AONES=0
        DO3120I=ISTRT,ISTOP
          IF(Y(I).EQ.AHIGH)AONES=AONES+1.0
 3120   CONTINUE
        API=AONES/AM
        SUM=SUM + (API-0.5)**2
 3110 CONTINUE
C
      STATVA=4.0*AM*SUM
      DRESLT=1.0D0 - DGAMIP(DBLE(NBLOCK)/2.0D0,DBLE(STATVA)/2.0D0)
      STATCD=SNGL(DRESLT)
C
      ICONC1='REJECT'
      ICONC2='REJECT'
      ICONC3='REJECT'
      ICONC4='REJECT'
C
C               *********************************
C               **   STEP 62--                 **
C               **   WRITE OUT EVERYTHING      **
C               **   FOR FREQUENCY TEST        **
C               *********************************
C
      ISTEPN='62'
      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
C
      IF(IPRINT.EQ.'ON')THEN
      IF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'HTML')THEN
        WRITE(ICOUT,5601)
 5601   FORMAT('
') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5608) 5608 FORMAT('
') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5602) 5602 FORMAT('FREQUENCY WITHIN A BLOCK TEST FOR RANDONNESS') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5609) 5609 FORMAT('
') CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5604) C5604 FORMAT('

') CCCCC WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5605) 5605 FORMAT('
    ') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5706) 5706 FORMAT('
  1. Hypotheis:
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5708) 5708 FORMAT(' H0: The data are random
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5710) 5710 FORMAT(' Ha: The data are not random
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5607) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5606) 5606 FORMAT('
  2. Statistics:') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5607) 5607 FORMAT('
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5611) 5611 FORMAT(' ') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5621) 5621 FORMAT(' ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5623) 5623 FORMAT(' ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5626) 5626 FORMAT(' ') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5621) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5623) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5642) 5642 FORMAT(' Block Size:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5627) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5626) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5629)M CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5627) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5628) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5621) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5623) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5643) 5643 FORMAT(' Number of Observations Within a Block:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5627) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5626) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5629)NBLOCK CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5627) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5628) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5621) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5623) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5646) 5646 FORMAT(' Frequency Test Statstic Value:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5627) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5626) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5654)STATVA 5654 FORMAT(' ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5627) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5628) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5991) 5991 FORMAT('
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5625) 5625 FORMAT(' Number of Observations:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5627) 5627 FORMAT(' ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5629)N 5629 FORMAT(' ',I8) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5627) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5628) 5628 FORMAT('
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5607) CALL DPWRST('XXX','WRIT') C CCCCC WRITE(ICOUT,5664) C5664 FORMAT('
  3. Percent Points of Reference Half-Normal ', CCCCC1 ' Distribution (Critical Values):
    ') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5665) C5665 FORMAT(' (Reject Hypothesis of Randomness if test ', CCCCC1 ' statistic value') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5666) C5666 FORMAT(' is greater than percent point value.') CCCCC CALL DPWRST('XXX','WRIT') C CCCCC WRITE(ICOUT,5607) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5611) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5621) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5623) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5667) C5667 FORMAT(' 90% Point:') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5627) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5626) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5651)CUT90 C5651 FORMAT(' ',G15.7) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5627) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5628) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5621) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5623) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5668) C5668 FORMAT(' 95% Point:') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5627) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5626) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5651)CUT95 CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5627) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5628) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5621) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5623) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5669) C5669 FORMAT(' 97.5% Point:') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5627) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5626) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5651)CUT975 CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5627) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5628) CCCCC CALL DPWRST('XXX','WRIT') C CCCCC WRITE(ICOUT,5621) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5623) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5670) C5670 FORMAT(' 99% Point:') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5627) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5626) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5651)CUT99 CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5627) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5628) CCCCC CALL DPWRST('XXX','WRIT') C CCCCC WRITE(ICOUT,5621) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5623) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5672) C5672 FORMAT(' P-Value:') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5627) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5626) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5651)STATCD CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5627) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5628) CCCCC CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5673)STATCD 5673 FORMAT('
  4. P-Value = ',G15.7,'
    ') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5674) 5674 FORMAT(' (Reject hypothesis of randomness if P-Value ', 1 'is less than alpha)') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5607) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5607) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5676) 5676 FORMAT('
  5. Conclusion (at the 5% Level):') CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5607) CALL DPWRST('XXX','WRIT') IF(STATCD.GE.0.05)THEN WRITE(ICOUT,5680) CALL DPWRST('XXX','WRIT') 5680 FORMAT(' The data are random.') ELSE WRITE(ICOUT,5690) CALL DPWRST('XXX','WRIT') 5690 FORMAT(' The data are not random.') ENDIF WRITE(ICOUT,5997) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5999) CALL DPWRST('XXX','WRIT') C ELSEIF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'LATE')THEN 8501 FORMAT('{',A1,'bf FREQUENCY WITHIN A BLOCK TEST FOR ', 1 'RANDOMNESS}',2X,A1,A1) 8502 FORMAT(A1,'begin{table}') 8503 FORMAT(A1,'end{table}') 8507 FORMAT(A1,'begin{center}') 8508 FORMAT(A1,'end{center}') 8512 FORMAT(A1,'end{verbatim}') 8517 FORMAT(A1,'begin{enumerate}') 8518 FORMAT(A1,'end{enumerate}') 8519 FORMAT(5X,'$ ',A1,1X,A1,' $ ',A1,A1) C CALL DPCONA(92,IBASLC) C WRITE(ICOUT,8512)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8507)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8502)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8501)IBASLC,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8519)IBASLC,IBASLC,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8519)IBASLC,IBASLC,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8517)IBASLC CALL DPWRST('XXX','WRIT') C 8520 FORMAT(5X,A1,'item Hypothesis:') 8521 FORMAT(5X,A1,'item Statistics:') 8522 FORMAT(5X,A1,'item Critical Values:') 8523 FORMAT(5X,A1,'item Conclusion (at the 5',A1,'% level):') 8530 FORMAT(11X,A1,'begin{tabular} {lr}') 8531 FORMAT(11X,'Number of Observations: & ',I8,2X,A1,A1) 8532 FORMAT(11X,'Block Size: & ',I8,2X,A1,A1) 8533 FORMAT(11X,'Number of Observations Within a Block: & ', 1 I8,2X,A1,A1) 8534 FORMAT(11X,'Frequency Within a Block Test Statistic Value:', 1 ' & ',G15.7,2X,A1,A1) 8540 FORMAT(11X,A1,'end{tabular}') 8651 FORMAT(11X,'$H_0$: The data are random ') 8652 FORMAT(11X,'$H_a$: The data are not random') C WRITE(ICOUT,8520)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8550)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8651) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8550)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8652) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,8521)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8550)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8530)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8531)N,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8532)M,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8533)NBLOCK,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8534)STATVA,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8540)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,8522)IBASLC CALL DPWRST('XXX','WRIT') C C8541 FORMAT(11X,'90',A1,'% Point: & ',G15.7,2X,A1,A1) C8542 FORMAT(11X,'95',A1,'% Point: & ',G15.7,2X,A1,A1) C8543 FORMAT(11X,'97.5',A1,'% Point: & ',G15.7,2X,A1,A1) C8544 FORMAT(11X,'99',A1,'% Point: & ',G15.7,2X,A1,A1) 8546 FORMAT(11X,'P-Value of Statistic: & ',G15.7,2X,A1,A1) 8547 FORMAT(11X,'(Reject hypothesis of randomness if p-value ', 1 'is less than $',A1,'alpha$) & ',2X,A1,A1) WRITE(ICOUT,8550)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8530)IBASLC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,8541)IBASLC,CUT90,IBASLC,IBASLC CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,8542)IBASLC,CUT95,IBASLC,IBASLC CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,8543)IBASLC,CUT975,IBASLC,IBASLC CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,8544)IBASLC,CUT99,IBASLC,IBASLC CCCCC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8546)STATCD,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8547)IBASLC,IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8540)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,8523)IBASLC,IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8550)IBASLC CALL DPWRST('XXX','WRIT') C 8550 FORMAT(11X,A1,'newline') 8591 FORMAT(A1,'end{enumerate}') 8592 FORMAT(A1,'begin{verbatim}') IF(STATCD.GE.0.05)THEN WRITE(ICOUT,8551) CALL DPWRST('XXX','WRIT') 8551 FORMAT(' The data are random.') ELSE WRITE(ICOUT,8561) CALL DPWRST('XXX','WRIT') 8561 FORMAT(' The data are not random.') ENDIF WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8591)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8503)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8508)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,8592)IBASLC CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C ELSEIF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'RTF')THEN C JUST A PLACEHOLDER FOR NOW. C ELSE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7211) 7211 FORMAT(' FREQUENCY WITHIN A BLOCK TEST FOR ', 1 'RANDOMNESS') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,7231) 7231 FORMAT('1. HYPOTHESIS:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7232) 7232 FORMAT(3X,'H0: THE DATA ARE RANDOM') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7233) 7233 FORMAT(3X,'HA: THE DATA ARE NOT RANDOM') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,7241) 7241 FORMAT('2. STATISTICS:') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7242)N 7242 FORMAT(3X,'NUMBER OF OBSERVATIONS = ',I8) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7243)M 7243 FORMAT(3X,'BLOCK SIZE = ',I8) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7244)NBLOCK 7244 FORMAT(3X,'NUMBER OF OBSERVATIONS WITHIN A BLOCK = ',I8) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7349)STATVA 7349 FORMAT(3X,'FREQUENCY WITHIN A BLOCK TEST STATISTIC = ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C CCCCC WRITE(ICOUT,5438) C5438 FORMAT('2. PERCENT POINTS OF THE REFERENCE HALF-NORMAL ', CCCCC1 'DISTRIBUTION') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5439) C5439 FORMAT(' (REJECT HYPOTHESIS OF RANDOMNESS IF TEST STATISTIC ', CCCCC1 'VALUE') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5440) C5440 FORMAT(' IS GREATER THAN PERCENT POINT VALUE)') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5441) C5441 FORMAT(3X,'FOR FREQUENCY TEST STATISTIC') CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5445)CUT0 C5445 FORMAT(6X,'0 % POINT = ',G15.7) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5446)CUT50 C5446 FORMAT(6X,'50 % POINT = ',G15.7) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5447)CUT75 C5447 FORMAT(6X,'75 % POINT = ',G15.7) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5448)CUT90 C5448 FORMAT(6X,'90 % POINT = ',G15.7) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5449)CUT95 C5449 FORMAT(6X,'95 % POINT = ',G15.7) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5450)CUT975 C5450 FORMAT(6X,'97.5 % POINT = ',G15.7) CCCCC CALL DPWRST('XXX','WRIT') CCCCC WRITE(ICOUT,5451)CUT99 C5451 FORMAT(6X,'99 % POINT = ',G15.7) CCCCC CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7453)STATCD 7453 FORMAT('3. P-VALUE OF STATISTIC = ',G15.7) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7454) 7454 FORMAT(' (REJECT HYPOTHESIS OF RANDOMNESS IF P-VALUE IS ', 1 'LESS THAN ALPHA)') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,7561) 7561 FORMAT('4. CONCLUSION (AT THE 5% LEVEL):') CALL DPWRST('XXX','WRIT') IF(STATCD.GE.0.05)THEN WRITE(ICOUT,7563) 7563 FORMAT(3X,'THE DATA ARE RANDOM.') CALL DPWRST('XXX','WRIT') ELSE WRITE(ICOUT,7565) 7565 FORMAT(3X,'THE DATA ARE NOT RANDOM.') CALL DPWRST('XXX','WRIT') ENDIF WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C ENDIF ENDIF GOTO9000 C GOTO9000 C C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'FRT2')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFRT2--') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,9012)N,IBUGA3,IERROR 9012 FORMAT('N,IBUGA3,IERROR = ',I8,2X,A4,2X,A4) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,9015)N 9015 FORMAT('N = ',I8) CALL DPWRST('XXX','WRIT') DO9016I=1,N WRITE(ICOUT,9017)I,Y(I),XTEMP(I) 9017 FORMAT('I,Y(I),XTEMP(I) = ',I8,2E15.7) CALL DPWRST('XXX','WRIT') 9016 CONTINUE ENDIF C RETURN END SUBROUTINE DPFRTH(ICOM,IHARG,ARG,NUMARG, 1PDEFTH, 1PFRATH, 1IFOUND,IERROR) C C PURPOSE--DEFINE THE FRAME THICKNESS C CURRENTLY ALL 4 FRAME LINES MUST C BE SET TO THE SAME THICKNESS. C THE FRAME THICKNESS SWITCHES FOR THE FRAME C IS CONTAINED IN THE VARIABLE C PFRATH C INPUT ARGUMENTS--ICOM C --IHARG (A HOLLERITH VECTOR) C --NUMARG C --PDEFCO C OUTPUT ARGUMENTS--PFRATH (A REAL VARIABLE) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--ALAN HECKERT C COMPUTER SERVICES DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2899 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--OCTOBER 1980. C UPDATED --MAY 1982. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 ICOM CHARACTER*4 IHARG C CHARACTER*4 IFOUND CHARACTER*4 IERROR C REAL PHOLD C C--------------------------------------------------------------------- C DIMENSION IHARG(*) DIMENSION ARG(*) C C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IFOUND='NO' IERROR='NO' C IF(NUMARG.LE.0)GOTO1900 IF(NUMARG.GE.1.AND.IHARG(1).EQ.'THIC')GOTO1090 IF(NUMARG.GE.2.AND.IHARG(1).EQ.'MARK'.AND. 1IHARG(2).EQ.'THIC')GOTO1090 GOTO1900 1090 CONTINUE C C ***************************************************** C ** TREAT THE CASE WHEN ** C ** BOTH HORIZONTAL FRAMES ARE TO BE CHANGED ** C ***************************************************** C IF(ICOM.EQ.'XFRA')GOTO1100 GOTO1199 C 1100 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1150 IF(IHARG(NUMARG).EQ.'OFF')GOTO1150 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150 IF(IHARG(NUMARG).EQ.'THIC')GOTO1150 GOTO1160 C 1150 CONTINUE PHOLD=PDEFTH GOTO1180 C 1160 CONTINUE PHOLD=ARG(NUMARG) GOTO1180 C 1180 CONTINUE IFOUND='YES' PFRATH=PHOLD C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181) 1181 FORMAT('THE FRAME THICKNESS (FOR ALL FRAME LINES ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1182)PHOLD 1182 FORMAT('HAS JUST BEEN SET TO ',E15.7) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO1900 C 1199 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE BOTTOM HORIZONTAL FRAME IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'X1FR')GOTO1200 GOTO1299 C 1200 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1250 IF(IHARG(NUMARG).EQ.'OFF')GOTO1250 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1250 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1250 IF(IHARG(NUMARG).EQ.'THIC')GOTO1250 GOTO1260 C 1250 CONTINUE PHOLD=PDEFTH GOTO1280 C 1260 CONTINUE PHOLD=ARG(NUMARG) GOTO1280 C 1280 CONTINUE IFOUND='YES' PFRATH=PHOLD C IF(IFEEDB.EQ.'OFF')GOTO1289 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1281) 1281 FORMAT('THE FRAME THICKNESS (FOR ALL FRAME LINES) ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1282)PHOLD 1282 FORMAT('HAS JUST BEEN SET TO ',E15.7) CALL DPWRST('XXX','BUG ') 1289 CONTINUE GOTO1900 C 1299 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE TOP HORIZONTAL FRAME IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'X2FR')GOTO1300 GOTO1399 C 1300 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1350 IF(IHARG(NUMARG).EQ.'OFF')GOTO1350 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1350 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1350 IF(IHARG(NUMARG).EQ.'THIC')GOTO1350 GOTO1360 C 1350 CONTINUE PHOLD=PDEFTH GOTO1380 C 1360 CONTINUE PHOLD=ARG(NUMARG) GOTO1380 C 1380 CONTINUE IFOUND='YES' PFRATH=PHOLD C IF(IFEEDB.EQ.'OFF')GOTO1389 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1381) 1381 FORMAT('THE FRAME THICKNESS (FOR ALL FRAME LINES) ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1382)PHOLD 1382 FORMAT('HAS JUST BEEN SET TO ',E15.7) CALL DPWRST('XXX','BUG ') 1389 CONTINUE GOTO1900 C 1399 CONTINUE C C ***************************************************** C ** TREAT THE CASE WHEN ** C ** BOTH VERTICAL FRAMES ARE TO BE CHANGED ** C ***************************************************** C IF(ICOM.EQ.'YFRA')GOTO1400 GOTO1499 C 1400 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1450 IF(IHARG(NUMARG).EQ.'OFF')GOTO1450 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1450 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1450 IF(IHARG(NUMARG).EQ.'THIC')GOTO1450 GOTO1460 C 1450 CONTINUE PHOLD=PDEFTH GOTO1480 C 1460 CONTINUE PHOLD=ARG(NUMARG) GOTO1480 C 1480 CONTINUE IFOUND='YES' PFRATH=PHOLD C IF(IFEEDB.EQ.'OFF')GOTO1489 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1481) 1481 FORMAT('THE FRAME THICKNESS (FOR ALL FRAME LINES)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1482)PHOLD 1482 FORMAT('HAS JUST BEEN SET TO ',E15.7) CALL DPWRST('XXX','BUG ') 1489 CONTINUE GOTO1900 C 1499 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE LEFT VERTICAL FRAME IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'Y1FR')GOTO1500 GOTO1599 C 1500 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1550 IF(IHARG(NUMARG).EQ.'OFF')GOTO1550 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1550 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1550 IF(IHARG(NUMARG).EQ.'THIC')GOTO1550 GOTO1560 C 1550 CONTINUE PHOLD=PDEFTH GOTO1580 C 1560 CONTINUE PHOLD=ARG(NUMARG) GOTO1580 C 1580 CONTINUE IFOUND='YES' PFRATH=PHOLD C IF(IFEEDB.EQ.'OFF')GOTO1589 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1581) 1581 FORMAT('THE FRAME THICKNESS (FOR ALL FRAME LINES)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1582)PHOLD 1582 FORMAT('HAS JUST BEEN SET TO ',E15.7) CALL DPWRST('XXX','BUG ') 1589 CONTINUE GOTO1900 C 1599 CONTINUE C C ************************************************************** C ** TREAT THE CASE WHEN ** C ** ONLY THE RIGHT VERTICAL FRAME IS TO BE CHANGED ** C ************************************************************** C IF(ICOM.EQ.'Y2FR')GOTO1600 GOTO1699 C 1600 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1650 IF(IHARG(NUMARG).EQ.'OFF')GOTO1650 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1650 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1650 IF(IHARG(NUMARG).EQ.'THIC')GOTO1650 GOTO1660 C 1650 CONTINUE PHOLD=PDEFTH GOTO1680 C 1660 CONTINUE PHOLD=ARG(NUMARG) GOTO1680 C 1680 CONTINUE IFOUND='YES' PFRATH=PHOLD C IF(IFEEDB.EQ.'OFF')GOTO1689 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1681) 1681 FORMAT('THE FRAME THICKNESS (FOR ALL FRAME LINES)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1682)PHOLD 1682 FORMAT('HAS JUST BEEN SET TO ',E15.7) CALL DPWRST('XXX','BUG ') 1689 CONTINUE GOTO1900 C 1699 CONTINUE C C ***************************************************** C ** TREAT THE CASE WHEN ** C ** ALL 4 FRAME FRAME LINES ARE TO BE CHANGED ** C ***************************************************** C IF(ICOM.EQ.'FRAM')GOTO1700 IF(ICOM.EQ.'XYFR')GOTO1700 IF(ICOM.EQ.'YXFR')GOTO1700 GOTO1799 C 1700 CONTINUE IF(IHARG(NUMARG).EQ.'ON')GOTO1750 IF(IHARG(NUMARG).EQ.'OFF')GOTO1750 IF(IHARG(NUMARG).EQ.'AUTO')GOTO1750 IF(IHARG(NUMARG).EQ.'DEFA')GOTO1750 IF(IHARG(NUMARG).EQ.'THIC')GOTO1750 GOTO1760 C 1750 CONTINUE PHOLD=PDEFTH GOTO1780 C 1760 CONTINUE PHOLD=ARG(NUMARG) GOTO1780 C 1780 CONTINUE IFOUND='YES' PFRATH=PHOLD C IF(IFEEDB.EQ.'OFF')GOTO1789 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1781) 1781 FORMAT('THE FRAME THICKNESS (FOR ALL 4 ', 1'FRAME LINES)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1782)PHOLD 1782 FORMAT('HAS JUST BEEN SET TO ',E15.7) CALL DPWRST('XXX','BUG ') 1789 CONTINUE GOTO1900 C 1799 CONTINUE C 1900 CONTINUE RETURN END SUBROUTINE DPFRTY(IHARG,NUMARG, 1IDEFFT, 1IFRATY, 1IBUGS2,IFOUND,IERROR) C C PURPOSE--DEFINE THE FRACTAL TYPE C CAN BE (DEFAULT IS BARNSLEY) C THIS SWITCH CONTROLS HOW THE ARGUMENTS TO THE C FRACTAL PLOT COMMAND ARE INTERPERTED. C C INPUT ARGUMENTS--IHARG (A CHARACTER VECTOR) C --NUMARG (AN INTEGER VARIABLE) C --IDEFFT (A CHARACTER VARIABLE) C --IBUGS2 (A CHARACTER VARIABLE) C OUTPUT ARGUMENTS--IFRATY (A CHARACTER VARIABLE) C --IFOUND ('YES' OR 'NO' ) C --IERROR ('YES' OR 'NO' ) C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--93/7 C ORIGINAL VERSION--JULY 1993. C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IHARG CHARACTER*4 IDEFFT CHARACTER*4 IFRATY CHARACTER*4 IBUGS2 CHARACTER*4 IFOUND CHARACTER*4 IERROR C CHARACTER*4 IHOLD C C--------------------------------------------------------------------- C DIMENSION IHARG(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C IF(IBUGS2.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFRTY--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)IDEFFT 53 FORMAT('IDEFFT = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,54)NUMARG 54 FORMAT('NUMARG = ',I8) CALL DPWRST('XXX','BUG ') DO55I=1,NUMARG WRITE(ICOUT,56)I,IHARG(I) 56 FORMAT('I,IHARG(I) = ',I8,2X,A4) CALL DPWRST('XXX','BUG ') 55 CONTINUE 90 CONTINUE C IFOUND='NO' IERROR='NO' C IF(NUMARG.LE.1)GOTO1150 IF(NUMARG.GT.2)GOTO9000 C 1120 CONTINUE IF(IHARG(2).EQ.'AUTO')GOTO1150 IF(IHARG(2).EQ.'DEFA')GOTO1150 GOTO1160 C 1150 CONTINUE IHOLD=IDEFFT GOTO1180 C 1160 CONTINUE IHOLD=IHARG(2) IF(IHOLD.EQ.'BARN')GOTO1180 IF(IHOLD.EQ.'WHIT')GOTO1180 IF(IHOLD.EQ.'ROTA')IHOLD='ANGL' IF(IHOLD.EQ.'ANGL')GOTO1180 GOTO1170 C 1170 CONTINUE IERROR='YES' IFOUND='YES' WRITE(ICOUT,1171)IHOLD 1171 FORMAT('THE FRACTAL TYPE SWITCH ',A4,' IS NOT RECOGNIZED') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1172) 1172 FORMAT('IT SHOLUD BE: BARNSLEY, WHITHERS, OR ANGLE') CALL DPWRST('XXX','BUG ') GOTO9000 C 1180 CONTINUE IFOUND='YES' IFRATY=IHOLD C IF(IFEEDB.EQ.'OFF')GOTO1189 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1181)IFRATY 1181 FORMAT('THE FRACTAL TYPE SWITCH HAS JUST BEEN SET TO ',A4) CALL DPWRST('XXX','BUG ') 1189 CONTINUE GOTO9000 C 9000 CONTINUE IF(IBUGS2.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFRTY') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IBUGS2,IFOUND,IERROR 9012 FORMAT('IBUGS2,IFOUND,IERROR = ',A4,2X,A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)IDEFFT,IFRATY 9013 FORMAT('IDEFFT,IFRATY = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') 9090 CONTINUE C RETURN END SUBROUTINE DPFTES(XTEMP1,XTEMP2,MAXNXT, 1ICAPSW, 1IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR) C C PURPOSE--CARRY OUT AN F TEST C (1-SAMPLE OR 2-SAMPLE) CCCCC THE FOLLOWING 3 LINES WERE ADDED FEBRUARY 1994 C EXAMPLE--F TEST Y MU C F TEST MU Y C F TEST Y1 Y2 C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--82/7 C ORIGINAL VERSION--JULY 1984. C UPDATED --FEBRUARY 1994. ADD COMMENTS ABOVE C UPDATED --DECEMBER 1994. COPY F TEST PARAMETERS C UPDATED --JANUARY 2004. SUPPORT FOR HTML, LATEX C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IBUGA2 CHARACTER*4 IBUGA3 CHARACTER*4 IBUGQ CHARACTER*4 IFOUND CHARACTER*4 IERROR CHARACTER*4 ICAPSW C CHARACTER*4 IHWUSE CHARACTER*4 MESSAG CHARACTER*4 ICASEQ C CHARACTER*4 IH11 CHARACTER*4 IH12 CHARACTER*4 IH21 CHARACTER*4 IH22 C CCCCC MAY 1995. ADD FOLLOWING DECLARATIONS CHARACTER*4 IH CHARACTER*4 IH2 CHARACTER*4 IHOST1 CHARACTER*4 ISUBN0 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C CHARACTER*4 IUSE1 CHARACTER*4 IUSE2 C C--------------------------------------------------------------------- C DIMENSION XTEMP1(*) DIMENSION XTEMP2(*) C C-----COMMON---------------------------------------------------------- C INCLUDE 'DPCOPA.INC' INCLUDE 'DPCOHK.INC' INCLUDE 'DPCOSU.INC' INCLUDE 'DPCODA.INC' C C-----COMMON VARIABLES (GENERAL)-------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C CCCCC ISUBN1='DPTT' ISUBN1='DPFT' ISUBN2='ES ' C MAXCP1=MAXCOL+1 MAXCP2=MAXCOL+2 MAXCP3=MAXCOL+3 MAXCP4=MAXCOL+4 MAXCP5=MAXCOL+5 MAXCP6=MAXCOL+6 C IFOUND='NO' IERROR='NO' C N1=(-999) N2=(-999) C NS1=(-999) NS2=(-999) C IUSE1='-999' IUSE2='-999' C ILOCV=(-999) C VALUE1=(-999.0) VALUE2=(-999.0) C ICOL1=(-999) ICOL2=(-999) C MINN2=2 C IFOUND='YES' C NLEFT=0 C ICASEQ='UNKN' C C ******************************** C ** TREAT THE F TEST CASE ** C ******************************** C IF(IBUGA2.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,51) 51 FORMAT('***** AT THE BEGINNING OF DPFTES--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,52)IBUGA2,IBUGA3 52 FORMAT('IBUGA2,IBUGA3 = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,53)IBUGQ 53 FORMAT('IBUGQ = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,55)MAXNXT 55 FORMAT('MAXNXT = ',I8) CALL DPWRST('XXX','BUG ') 90 CONTINUE C C ******************************************************* C ** STEP 2-- ** C ** CHECK FOR THE PROPER NUMBER OF INPUT ARGUMENTS. ** C ******************************************************* C ISTEPN='2' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C MINNA=2 MAXNA=100 CALL CHECKA(NUMARG,MINNA,MAXNA,IANS,IWIDTH,ISUBN1,ISUBN2, 1IERROR) IF(IERROR.EQ.'YES')GOTO9000 C C **************************************** C ** STEP 11-- ** C ** CHECK THE VALIDITY OF ARGUMENT 1 ** C ** (THIS SHULD BE A VARIABLE.) ** C **************************************** C ISTEPN='11' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IH11=IHARG(1) IH12=IHARG2(1) IHWUSE='V' MESSAG='YES' CALL CHECKN(IH11,IH12,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) C IF(IERROR.EQ.'YES')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1141) 1141 FORMAT('***** ERROR IN DPFTES--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1142) 1142 FORMAT(' FOR AN F TEST,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1145) 1145 FORMAT(' BOTH ARGUMENTS MUST BE A VARIABLE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1146) 1146 FORMAT(' (AS OPPOSED TO A PARAMETER OR FUNCTION).') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1147) 1147 FORMAT(' ARGUMENT 1 WAS NOT A VARIABLE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1148) 1148 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,1150)(IANS(I),I=1,IWIDTH) 1150 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 ENDIF C IUSE1=IUSE(ILOCV) ICOL1=IVALUE(ILOCV) N1=IN(ILOCV) 1190 CONTINUE C C ******************************************************** C ** STEP 12-- ** C ** IF ARGUMENT 1 IS A VARIABLE, ** C ** CHECK THAT THE INPUT NUMBER OF OBSERVATIONS (N1) ** C ** FOR ARGUMENT 1 IS 2 OR MORE. ** C ******************************************************** C ISTEPN='12' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IUSE1.NE.'V')GOTO1290 IF(N1.GE.MINN2)GOTO1290 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1211) 1211 FORMAT('***** ERROR IN DPFTES--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1212) 1212 FORMAT(' THE INPUT NUMBER OF OBSERVATIONS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1213) 1213 FORMAT(' (FOR WHICH AN F TEST ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1214) 1214 FORMAT(' WAS TO HAVE BEEN CARRIED OUT)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1215)MINN2 1215 FORMAT(' MUST BE ',I8,' OR LARGER;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1216) 1216 FORMAT(' SUCH WAS NOT THE CASE HERE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1217)IH11,IH12 1217 FORMAT(' FOR VARIABLE ',A4,A4,' WHICH HAD') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1218)N1 1218 FORMAT(' NUMBER OF OBSERVATIONS = ',I8,';') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,1219) 1219 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,1220)(IANS(I),I=1,IWIDTH) 1220 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 1290 CONTINUE C C **************************************** C ** STEP 21-- ** C ** CHECK THE VALIDITY OF ARGUMENT 2 ** C ** (THIS COULD BE A VARIABLE, ** C ** A PARAMETER, OR A NUMBER). ** C **************************************** C ISTEPN='21' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IH21=IHARG(2) IH22=IHARG2(2) IHWUSE='V' MESSAG='YES' CALL CHECKN(IH21,IH22,IHWUSE, 1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM, 1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR) C IF(IERROR.EQ.'YES')THEN WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2141) 2141 FORMAT('***** ERROR IN DPFTES--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2142) 2142 FORMAT(' FOR AN F TEST,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2145) 2145 FORMAT(' BOTH ARGUMENTS MUST BE A VARIABLE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2146) 2146 FORMAT(' (AS OPPOSED TO A PARAMETER OR FUNCTION).') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2147) 2147 FORMAT(' ARGUMENT 2 WAS NOT A VARIABLE HERE.') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2148) 2148 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,2150)(IANS(I),I=1,IWIDTH) 2150 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 ENDIF C IUSE2=IUSE(ILOCV) ICOL2=IVALUE(ILOCV) N2=IN(ILOCV) 2190 CONTINUE C C ******************************************************** C ** STEP 22-- ** C ** IF ARGUMENT 2 IS A VARIABLE, ** C ** CHECK THAT THE INPUT NUMBER OF OBSERVATIONS (N2) ** C ** FOR ARGUMENT 2 IS 2 OR MORE. ** C ******************************************************** C ISTEPN='22' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IUSE2.NE.'V')GOTO2290 IF(N2.GE.MINN2)GOTO2290 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2211) 2211 FORMAT('***** ERROR IN DPFTES--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2212) 2212 FORMAT(' THE INPUT NUMBER OF OBSERVATIONS') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2213) 2213 FORMAT(' (FOR WHICH AN F TEST ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2214) 2214 FORMAT(' WAS TO HAVE BEEN CARRIED OUT)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2215)MINN2 2215 FORMAT(' MUST BE ',I8,' OR LARGER;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2216) 2216 FORMAT(' SUCH WAS NOT THE CASE HERE') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2217)IH21,IH22 2217 FORMAT(' FOR VARIABLE ',A4,A4,' WHICH HAD') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2218)N2 2218 FORMAT(' NUMBER OF OBSERVATIONS = ',I8,';') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,2219) 2219 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,2220)(IANS(I),I=1,IWIDTH) 2220 FORMAT(80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 2290 CONTINUE C C ***************************************** C ** STEP 40-- ** C ** CHECK TO SEE THE TYPE CASE-- ** C ** 1) UNQUALIFIED (THAT IS, FULL); ** C ** 2) SUBSET/EXCEPT; OR ** C ** 3) FOR. ** C ***************************************** C ISTEPN='40' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C ICASEQ='FULL' ILOCQ=NUMARG+1 IF(NUMARG.LT.1)GOTO4090 DO4000J=1,NUMARG J1=J IF(IHARG(J).EQ.'SUBS'.AND.IHARG2(J).EQ.'ET ') GOTO4010 IF(IHARG(J).EQ.'EXCE'.AND.IHARG2(J).EQ.'PT ') GOTO4010 IF(IHARG(J).EQ.'FOR '.AND.IHARG2(J).EQ.' ') GOTO4020 4000 CONTINUE GOTO4090 4010 CONTINUE ICASEQ='SUBS' ILOCQ=J1 GOTO4090 4020 CONTINUE ICASEQ='FOR' ILOCQ=J1 GOTO4090 4090 CONTINUE IF(IBUGA2.EQ.'OFF')GOTO4095 WRITE(ICOUT,4091)NUMARG,ILOCQ 4091 FORMAT('NUMARG,ILOCQ = ',2I8) CALL DPWRST('XXX','BUG ') 4095 CONTINUE C C *********************************************** C ** STEP 41-- ** C ** TEMPORARILY FORM THE VARIABLE Y(.) ** C ** WHICH WILL HOLD THE DATA FROM SAMPLE 1. ** C ** FORM THIS VARIABLE BY ** C ** BRANCHING TO THE APPROPRIATE SUBCASE ** C ** (FULL, SUBSET, OR FOR). ** C *********************************************** C IF(IUSE1.NE.'V')GOTO4190 C ISTEPN='41' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(ICASEQ.EQ.'FULL')GOTO4110 IF(ICASEQ.EQ.'SUBS')GOTO4120 IF(ICASEQ.EQ.'FOR')GOTO4130 C 4110 CONTINUE DO4115I=1,N1 ISUB(I)=1 4115 CONTINUE NQ=N1 GOTO4150 C 4120 CONTINUE NIOLD=N1 CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERROR) NQ=NIOLD GOTO4150 C 4130 CONTINUE NIOLD=N1 CALL DPFOR(NIOLD,NFOR,IROW1,IROWN, 1NLOCAL,ILOCS,NS,IBUGQ,IERROR) NQ=NFOR GOTO4150 C 4150 CONTINUE IF(NQ.GE.MINN2)GOTO4160 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4151) 4151 FORMAT('***** ERROR IN DPFTES--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4152) 4152 FORMAT(' AFTER THE APPROPRIATE SUBSET HAS BEEN ', 1'EXTRACTED,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4153)IH11,IH12 4153 FORMAT(' THE NUMBER OF OBSERVATIONS REMAINING', 1'FROM VARIABLE ',A4,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4154) 4154 FORMAT(' (FOR WHICH AN F TEST ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4155) 4155 FORMAT(' IS TO BE CARRIED OUT)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4156)MINN2 4156 FORMAT(' MUST BE ',I8,' OR LARGER;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4157)NQ 4157 FORMAT(' SUCH WAS NOT THE CASE HERE. (N = ',I8,')') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4158) 4158 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,4159)(IANS(I),I=1,IWIDTH) 4159 FORMAT(' ',80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 4160 CONTINUE J=0 IMAX=N1 IF(NQ.LT.N1)IMAX=NQ DO4170I=1,IMAX IF(ISUB(I).EQ.0)GOTO4170 J=J+1 C IJ=MAXN*(ICOL1-1)+I IF(ICOL1.LE.MAXCOL)Y(J)=V(IJ) IF(ICOL1.EQ.MAXCP1)Y(J)=PRED(I) IF(ICOL1.EQ.MAXCP2)Y(J)=RES(I) IF(ICOL1.EQ.MAXCP3)Y(J)=YPLOT(I) IF(ICOL1.EQ.MAXCP4)Y(J)=XPLOT(I) IF(ICOL1.EQ.MAXCP5)Y(J)=X2PLOT(I) IF(ICOL1.EQ.MAXCP6)Y(J)=TAGPLO(I) C 4170 CONTINUE NS1=J C 4190 CONTINUE C C *********************************************** C ** STEP 42-- ** C ** TEMPORARILY FORM THE VARIABLE X(.) ** C ** WHICH WILL HOLD THE DATAN FROM SAMPLE 2. ** C ** FORM THIS VARIABLE BY ** C ** BRANCHING TO THE APPROPRIATE SUBCASE ** C ** (FULL, SUBSET, OR FOR). ** C *********************************************** C IF(IUSE2.NE.'V')GOTO4290 C ISTEPN='42' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(ICASEQ.EQ.'FULL')GOTO4210 IF(ICASEQ.EQ.'SUBS')GOTO4220 IF(ICASEQ.EQ.'FOR')GOTO4230 C 4210 CONTINUE DO4215I=1,N2 ISUB(I)=1 4215 CONTINUE NQ=N2 GOTO4250 C 4220 CONTINUE NIOLD=N2 CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERROR) NQ=NIOLD GOTO4250 C 4230 CONTINUE NIOLD=N2 CALL DPFOR(NIOLD,NFOR,IROW1,IROWN, 1NLOCAL,ILOCS,NS,IBUGQ,IERROR) NQ=NFOR GOTO4250 C 4250 CONTINUE IF(NQ.GE.MINN2)GOTO4260 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4251) 4251 FORMAT('***** ERROR IN DPFTES--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4252) 4252 FORMAT(' AFTER THE APPROPRIATE SUBSET HAS BEEN ', 1'EXTRACTED,') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4253)IH21,IH22 4253 FORMAT(' THE NUMBER OF OBSERVATIONS REMAINING', 1'FROM VARIABLE ',A4,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4254) 4254 FORMAT(' (FOR WHICH AN F TEST ') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4255) 4255 FORMAT(' IS TO BE CARRIED OUT)') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4256)MINN2 4256 FORMAT(' MUST BE ',I8,' OR LARGER;') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4257)NQ 4257 FORMAT(' SUCH WAS NOT THE CASE HERE. (N = ',I8,')') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,4258) 4258 FORMAT(' THE ENTERED COMMAND LINE WAS AS FOLLOWS--') CALL DPWRST('XXX','BUG ') IF(IWIDTH.GE.1)WRITE(ICOUT,4259)(IANS(I),I=1,IWIDTH) 4259 FORMAT(' ',80A1) IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ') IERROR='YES' GOTO9000 C 4260 CONTINUE J=0 IMAX=N2 IF(NQ.LT.N2)IMAX=NQ DO4270I=1,IMAX IF(ISUB(I).EQ.0)GOTO4270 J=J+1 C IJ=MAXN*(ICOL2-1)+I IF(ICOL2.LE.MAXCOL)X(J)=V(IJ) IF(ICOL2.EQ.MAXCP1)X(J)=PRED(I) IF(ICOL2.EQ.MAXCP2)X(J)=RES(I) IF(ICOL2.EQ.MAXCP3)X(J)=YPLOT(I) IF(ICOL2.EQ.MAXCP4)X(J)=XPLOT(I) IF(ICOL2.EQ.MAXCP5)X(J)=X2PLOT(I) IF(ICOL2.EQ.MAXCP6)X(J)=TAGPLO(I) C 4270 CONTINUE NS2=J C 4290 CONTINUE C C ********************************* C ** STEP 52-- ** C ** CARY OUT THE F TEST ** C ********************************* C ISTEPN='52' IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IBUGA2.EQ.'OFF')GOTO5290 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,5211) 5211 FORMAT('***** FROM DPFTES, AS WE ARE ABOUT TO CALL DPTTE2--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,5212)N1,N2,NS1,NS2,MAXN 5212 FORMAT('N1,N2,NS1,NS2,MAXN = ',5I8) CALL DPWRST('XXX','BUG ') DO5215I=1,NS1 WRITE(ICOUT,5216)I,Y(I) 5216 FORMAT('I,Y(I) = ',I8,2E15.7) CALL DPWRST('XXX','BUG ') 5215 CONTINUE DO5217I=1,NS1 WRITE(ICOUT,5218)I,Y(I) 5218 FORMAT('I,Y(I) = ',I8,2E15.7) CALL DPWRST('XXX','BUG ') 5217 CONTINUE CCCCC IBUGA3='ABCD' WRITE(ICOUT,5231)IBUGA3 5231 FORMAT('IBUGA3 = ',A4) CALL DPWRST('XXX','BUG ') 5290 CONTINUE C CCCCC THE FOLLOWING CALL WAS CHANGED DECEMBER 1994 CALL DPFTE2(Y,NS1,X,NS2, CCCCC1XTEMP1,XTEMP2,MAXNXT,IBUGA3,IERROR) 1XTEMP1,XTEMP2,MAXNXT, 1ICAPSW,ICAPTY, 1STATVA,STANU1,STANU2,POOLSD,STATCD, 1CUTL95,CUTU95,CUTL99,CUTU99, 1IBUGA3,IERROR) C CCCCC THE FOLLOWING SECTION WAS ADDED DECEMBER 1994 C *************************************** C ** STEP 61-- ** C ** UPDATE INTERNAL DATAPLOT TABLES ** C *************************************** C ISTEPN='61' CCCCC MAY 1995. CCCCC IF(IBUGG2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) IF(IBUGA2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C CCCCC MAY 1995. RENAME CCCCC ISUBN0='DPTT' ISUBN0='DPFT' C IH='STAT' IH2='VAL ' VALUE0=STATVA CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='STAT' IH2='NU1 ' VALUE0=STANU1 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='STAT' IH2='NU2 ' VALUE0=STANU2 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='POOL' IH2='SD ' VALUE0=POOLSD CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='STAT' IH2='CDF ' VALUE0=STATCD CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTL' IH2='OW95' VALUE0=CUTL95 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTU' IH2='PP95' VALUE0=CUTU95 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTL' IH2='OW99' VALUE0=CUTL99 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C IH='CUTU' IH2='PP99' VALUE0=CUTU99 CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0, 1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM, 1IANS,IWIDTH,IBUGA3,IERROR) C ***************** C ** STEP 90-- ** C ** EXIT ** C ***************** C 9000 CONTINUE IF(IBUGA2.EQ.'OFF')GOTO9090 WRITE(ICOUT,999) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9011) 9011 FORMAT('***** AT THE END OF DPFTES--') CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9012)IBUGA2,IBUGA3 9012 FORMAT('IBUGA2,IBUGA3 = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9013)IBUGQ 9013 FORMAT('IBUGQ = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9014)NLEFT,NS 9014 FORMAT('NLEFT,NS = ',2I8) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9015)ICASEQ 9015 FORMAT('ICASEQ = ',A4) CALL DPWRST('XXX','BUG ') WRITE(ICOUT,9016)IFOUND,IERROR 9016 FORMAT('IFOUND,IERROR = ',A4,2X,A4) CALL DPWRST('XXX','BUG ') 9090 CONTINUE C RETURN END SUBROUTINE DPFTE2(Y1,N1,Y2,N2, CCCCC THE FOLLOWING LINE WAS CHANGED DECEMBER 1994 CCCCC1XTEMP1,XTEMP2,MAXNXT,IBUGA3,IERROR) 1XTEMP1,XTEMP2,MAXNXT, 1ICAPSW,ICAPTY, 1STATVA,STANU1,STANU2,POOLSD,STATCD, 1CUTL95,CUTU95,CUTL99,CUTU99, 1IBUGA3,IERROR) C C PURPOSE--THIS ROUTINE CARRIES OUT AN F TEST C (NECESSARILY 2-SAMPLE) CCCCC THE FOLLOWING 3 LINES WERE ADDED FEBRUARY 1994 C EXAMPLE--F TEST Y1 Y2 C SAMPLE 1 IS IN INPUT VECTOR Y1 C (WITH N1 OBSERVATIONS). C SAMPLE 2 IS IN INPUT VECTOR Y2 C (WITH N2 OBSERVATIONS). C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING DIVISION C CENTER FOR APPLIED MATHEMATICS C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE--301-975-2855 C NOTE--DATAPLOT IS A REGISTERED TRADEMARK C OF THE NATIONAL BUREAU OF STANDARDS. C THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED, C MODIFIED, OR OTHERWISE USED IN A CONTEXT C OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM. C LANGUAGE--ANSI FORTRAN (1977) C VERSION NUMBER--94/2 C ORIGINAL VERSION--FEBRUARY 1994. C UPDATED --DECEMBER 1994. COPY F TEST PARAMETERS C UPDATED --JANUARY 2004. SUPPORT FOR HTML, LATEX C C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES------------------- C CHARACTER*4 IBUGA3 CHARACTER*4 IERROR CHARACTER*4 ICAPSW CHARACTER*4 ICAPTY C CHARACTER*4 IWRITE CHARACTER*4 IBASLC C CCCCC THE FOLLOWING 3 LINES WERE ADDED FEBRUARY 1994 CHARACTER*6 ICONC1 CHARACTER*6 ICONC2 CHARACTER*6 ICONC3 C CHARACTER*4 ISUBN1 CHARACTER*4 ISUBN2 CHARACTER*4 ISTEPN C C--------------------------------------------------------------------- C DIMENSION Y1(*) DIMENSION Y2(*) DIMENSION XTEMP1(*) DIMENSION XTEMP2(*) C C--------------------------------------------------------------------- C CHARACTER*4 IFEEDB CHARACTER*4 IPRINT CHARACTER*240 ICOUT C COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW COMMON /PRINT/IFEEDB,IPRINT COMMON /TEXTOU/ICOUT,NCOUT,ILOUT C C-----START POINT----------------------------------------------------- C ISUBN1='DPCO' ISUBN2='F2 ' C IERROR='NO' C N=(-99) C IF(IBUGA3.EQ.'OFF')GOTO90 WRITE(ICOUT,999) 999 FORMAT(1X) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,51) 51 FORMAT('**** AT THE BEGINNING OF DPFTE2--') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,52)IBUGA3 52 FORMAT('IBUGA3 = ',A4) CALL DPWRST('XXX','WRIT') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,55)N1 55 FORMAT('N1 = ',I8) CALL DPWRST('XXX','WRIT') DO56I=1,N1 WRITE(ICOUT,57)I,Y1(I) 57 FORMAT('I,Y1(I) = ',I8,E15.7) CALL DPWRST('XXX','WRIT') 56 CONTINUE WRITE(ICOUT,65)N2 65 FORMAT('N2 = ',I8) CALL DPWRST('XXX','WRIT') DO66I=1,N2 WRITE(ICOUT,67)I,Y2(I) 67 FORMAT('I,Y2(I) = ',I8,E15.7) CALL DPWRST('XXX','WRIT') 66 CONTINUE 90 CONTINUE C C ******************************************** C ** STEP 11-- ** C ** CHECK THE INPUT ARGUMENTS FOR ERRORS ** C ******************************************** C ISTEPN='11' IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(N1.GE.1)GOTO1119 WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1111) 1111 FORMAT('***** ERROR IN DPFTE2--THE NUMBER OF OBSERVATIONS ', 1'FOR VARIABLE 1 IS NON-POSITIVE') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1112)N1 1112 FORMAT('SAMPLE SIZE = ',I8) CALL DPWRST('XXX','WRIT') IERROR='YES' GOTO9000 1119 CONTINUE C IF(N1.EQ.1)GOTO1120 GOTO1129 1120 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1121) 1121 FORMAT('***** NOTE FROM DPFTE2--VARIABLE 1 ', 1'HAS ONLY 1 ELEMENT') CALL DPWRST('XXX','WRIT') GOTO9000 1129 CONTINUE C HOLD=Y1(1) DO1135I=2,N1 IF(Y1(I).NE.HOLD)GOTO1139 1135 CONTINUE 1130 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1131)HOLD 1131 FORMAT('***** NOTE FROM DPFTE2--VARIABLE 1 ', 1'HAS ALL ELEMENTS = ',E15.7) CALL DPWRST('XXX','WRIT') GOTO9000 1139 CONTINUE C IF(N2.GE.1)GOTO1219 WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1211) 1211 FORMAT('***** ERROR IN DPFTE2--THE NUMBER OF OBSERVATIONS ', 1'FOR VARIABLE 2 IS NON-POSITIVE') CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1212)N2 1212 FORMAT('SAMPLE SIZE = ',I8) CALL DPWRST('XXX','WRIT') IERROR='YES' GOTO9000 1219 CONTINUE C IF(N2.EQ.1)GOTO1220 GOTO1229 1220 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1221) 1221 FORMAT('***** NOTE FROM DPFTE2--VARIABLE 2 ', 1'HAS ONLY 1 ELEMENT') CALL DPWRST('XXX','WRIT') GOTO9000 1229 CONTINUE C HOLD=Y2(1) DO1235I=2,N2 IF(Y2(I).NE.HOLD)GOTO1239 1235 CONTINUE 1230 CONTINUE WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,1231)HOLD 1231 FORMAT('***** NOTE FROM DPFTE2--VARIABLE 2 ', 1'HAS ALL ELEMENTS = ',E15.7) CALL DPWRST('XXX','WRIT') GOTO9000 1239 CONTINUE C 1290 CONTINUE C C ****************************** C ** STEP 41-- ** C ** CARRY OUT CALCULATIONS ** C ** FOR AN F TEST ** C ****************************** C 4100 CONTINUE C ISTEPN='41' IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IWRITE='OFF' C CALL MEAN(Y1,N1,IWRITE,Y1MEAN,IBUGA3,IERROR) CALL SD(Y1,N1,IWRITE,Y1SD,IBUGA3,IERROR) Y1VAR=Y1SD**2 C CALL MEAN(Y2,N2,IWRITE,Y2MEAN,IBUGA3,IERROR) CALL SD(Y2,N2,IWRITE,Y2SD,IBUGA3,IERROR) Y2VAR=Y2SD**2 C AN1=N1 AN2=N2 C CCCCC THE FOLLOWING LINE WAS FIXED DECEMBER 1994 CCCCC IF(S1.GE.S2)THEN IF(Y1SD.GE.Y2SD)THEN SDNUM=Y1SD SDDEN=Y2SD IDFNUM=N1-1 IDFDEN=N2-1 ELSE SDNUM=Y2SD SDDEN=Y1SD IDFNUM=N2-1 IDFDEN=N1-1 ENDIF RATIO=(SDNUM/SDDEN)**2 CALL FCDF(RATIO,IDFNUM,IDFDEN,CDF) DFNUM=IDFNUM DFDEN=IDFDEN C ICONC1='REJECT' ICONC2='REJECT' ICONC3='REJECT' C CCCCC IF(0.000.LE.CDF.AND.CDF.LE.0.950)ICONC1='ACCEPT' CCCCC IF(0.025.LE.CDF.AND.CDF.LE.0.975)ICONC2='ACCEPT' CCCCC IF(0.050.LE.CDF.AND.CDF.LE.1.000)ICONC3='ACCEPT' IF(0.000.LE.CDF.AND.CDF.LE.0.950)ICONC2='ACCEPT' C CCCCC THE FOLLOWING SECTION WAS ADDED DECEMBER 1994 POOLSS=DFNUM*SDNUM*SDNUM+DFDEN*SDDEN*SDDEN POOLDF=DFNUM+DFDEN POOLVA=0.0 IF(POOLDF.GT.0.0)POOLVA=POOLSS/POOLDF POOLSD=0.0 IF(POOLVA.GT.0.0)POOLSD=SQRT(POOLVA) C CCCCC THE FOLLOWING SECTION WAS ADDED DECEMBER 1994 STATVA=RATIO STATCD=CDF STANU1=IDFNUM STANU2=IDFDEN CUTL95=0.0 CALL FPPF(.95,IDFNUM,IDFDEN,CUTU95) CUTL99=0.0 CALL FPPF(.99,IDFNUM,IDFDEN,CUTU99) C C ****************************** C ** STEP 42-- ** C ** WRITE OUT EVERYTHING ** C ** FOR AN F TEST ** C ****************************** C ISTEPN='42' IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2) C IF(IPRINT.EQ.'ON')THEN IF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'HTML')THEN C C STEP 1: END ASIS MODE AND WRITE A HEADER C 5001 FORMAT('') WRITE(ICOUT,5001) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) CALL DPWRST('XXX','WRIT') C C STEP 2: START TABLE AND DEFINE A CAPTION C 5011 FORMAT('
      ') 5013 FORMAT('') 5015 FORMAT(' ') WRITE(ICOUT,5011) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5013) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5015) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5017) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5019) CALL DPWRST('XXX','WRIT') C C STEP 4: DEFINE DATA ROW C 5041 FORMAT(' ') 5043 FORMAT(' ') 5048 FORMAT(' ') 5060 FORMAT(' =') 5057 FORMAT('  ') 5058 FORMAT(' <>') 5061 FORMAT(' H0: ', 1 'sigma1 = sigma2') 5062 FORMAT(' Ha: ', 1 'sigma1 <> sigma2') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5061) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5062) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5071 FORMAT(' Sample 1:') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5071) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5072 FORMAT(' Number of Observations') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5072) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5052)N1 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5073 FORMAT(' Mean') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5073) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)Y1MEAN CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5074 FORMAT(' Standard Deviation') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5074) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)Y1SD CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5076 FORMAT(' Sample 2:') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5076) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5072) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5052)N2 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5073) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)Y2MEAN CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5074) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)Y2SD CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5081 FORMAT(' Test:') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5081) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5057) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5082 FORMAT(' Standard Deviation (Numerator)') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5082) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)SDNUM CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5083 FORMAT(' Standard Deviation (Denominator)') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5083) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)SDDEN CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5084 FORMAT(' F-Test Statistic Value') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5084) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)RATIO CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5085 FORMAT(' Degrees of Freedom (Numerator)') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5085) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5052)INT(DFNUM+0.5) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5086 FORMAT(' Degrees of Freedom (Denomerator)') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5086) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5052)INT(DFDEN+0.5) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C 5087 FORMAT(' F-Test CDF Value') WRITE(ICOUT,5041) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5043) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5087) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5048) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5060) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5051)CDF CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5047) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5049) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5059) CALL DPWRST('XXX','WRIT') C C C STEP 4: END THE TABLE AND RESET ASIS MODE C 5091 FORMAT('
      ') 5017 FORMAT(' TWO SAMPLE F-TEST FOR EQUAL STANDARD ', 1 'DEVIATION') 5019 FORMAT('
      ') 5047 FORMAT(' ') 5049 FORMAT(' ') 5051 FORMAT(' ',G15.7) 5052 FORMAT(' ',I8) 5055 FORMAT(' ',A8) 5059 FORMAT('
      ') 5093 FORMAT('
    ') 5094 FORMAT('

    ') WRITE(ICOUT,5091) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5093) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5094) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,999) C C STEP 2: START TABLE AND DEFINE A CAPTION C 5111 FORMAT('

      ') 5113 FORMAT('') WRITE(ICOUT,5111) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5113) CALL DPWRST('XXX','WRIT') C C STEP 3: DEFINE HEADER ROW C 5121 FORMAT(' ') 5123 FORMAT(' ') 5139 FORMAT(' ') 5161 FORMAT(' ') 5243 FORMAT(' ') 5259 FORMAT(' ') 5261 FORMAT(' sigma1 = sigma2') 5262 FORMAT(' (0.000,0.950)') 5263 FORMAT(' ',A6) WRITE(ICOUT,5241) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5243) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5261) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5247) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5243) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5262) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5247) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5243) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5263)ICONC2 CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5247) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5259) CALL DPWRST('XXX','WRIT') C C STEP 4: END THE TABLE AND RESET ASIS MODE C 5191 FORMAT('
      ') 5127 FORMAT('
      ') 5162 FORMAT('
      ') 5171 FORMAT(' Null
      Hypothesis') 5172 FORMAT(' Null Hypothesis
      Acceptance Interval') 5173 FORMAT(' Null Hypothesis
      Conclusion') WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5171) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5172) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5123) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5173) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5127) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5139) CALL DPWRST('XXX','WRIT') C C FOLLOWING ADDS A RULE LINE BETWEEN HEADER AND DATA LINES C WRITE(ICOUT,5121) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5161) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5162) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5247) CALL DPWRST('XXX','WRIT') WRITE(ICOUT,5139) CALL DPWRST('XXX','WRIT') C C STEP 4: DEFINE DATA ROW C 5241 FORMAT('
      ') 5247 FORMAT('
      ') 5193 FORMAT('
    ') 5194 FORMAT('
    ')
            WRITE(ICOUT,5191)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,5193)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,5194)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
    C
    CCCCC WRITE OUTPUT IN LATEX FORMAT
          ELSEIF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'LATE')THEN
    C
    C  STEP 1: END ASIS FORMAT, START TABLE ENVIRONMENT, WRITE A HEADER, AND
    C          WRITE A TABLE CAPTION
    C
     8001 FORMAT(A1,'end{verbatim}')
     8003 FORMAT(A1,'begin{table}')
     8007 FORMAT(5X,'$ ',A1,1X,A1,' $ ',A1,A1,' ')
     8009 FORMAT(A1,'begin{center}')
     8011 FORMAT(5X,'{',A1,'bf TWO SAMPLE F-TEST FOR EQUAL STANDARD ',
         1       'DEVIATIONS}')
     8013 FORMAT(A1,'end{center}')
     8015 FORMAT(5X,'} ',A1,A1)
    C
            CALL DPCONA(92,IBASLC)
    C
            WRITE(ICOUT,8001)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8003)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8009)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8011)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8007)IBASLC,IBASLC,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8007)IBASLC,IBASLC,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8013)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
    C
    C STEP 2: START TABULAR ENVIRONMENT, WRITE SUBSESQUENT ROWS, END
    C         TABULAR ENVIRONMENT
    C
     8020 FORMAT(5X,A1,'begin{tabular} {lcr}')
     8021 FORMAT(5X,'$H_0$: $',A1,'sigma_1$  = $',A1,'sigma_2$  & & ',
         1       2X,A1,A1)
     8022 FORMAT(5X,'$H_a$: $',A1,'sigma_1$  = $',A1,'sigma_2$ & & ',
         1       2X,A1,A1)
     8023 FORMAT(5X,' &   & ',2X,A1,A1)
     8024 FORMAT(5X,'{',A1,'bf Sample 1:} &   & ',2X,A1,A1)
     8025 FORMAT(5X,'Number of Observations & = & ',I8,2X,A1,A1)
     8026 FORMAT(5X,'Mean & = & ',G15.7,2X,A1,A1)
     8027 FORMAT(5X,'Standard Deviation & = & ',
         1       G15.7,2X,A1,A1)
     8028 FORMAT(5X,'{',A1,'bf Test:} &   & ',2X,A1,A1)
     8029 FORMAT(5X,'Standard Deviation (Numerator) & = & ',
         1       G15.7,2X,A1,A1)
     8030 FORMAT(5X,'Standard Deviation (Denomerator) & = & ',
         1       G15.7,2X,A1,A1)
     8031 FORMAT(5X,'F-Test Statistic & = & ',G15.7,2X,A1,A1)
     8032 FORMAT(5X,'Degrees of Freedom (Numerator) & = & ',I8,2X,A1,A1)
     8033 FORMAT(5X,'Degrees of Freedom (Denomerator) & = & ',I8,2X,A1,A1)
     8034 FORMAT(5X,'F-Test Statistic CDF Value & = & ',G15.7,2X,A1,A1)
     8040 FORMAT(5X,A1,'hline')
     8049 FORMAT(A1,'end{tabular}')
            WRITE(ICOUT,8009)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8020)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8021)IBASLC,IBASLC,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8022)IBASLC,IBASLC,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
    C
            WRITE(ICOUT,8023)IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8024)IBASLC,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8025)N1,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8026)Y1MEAN,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8027)Y1SD,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8023)IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
    C
            WRITE(ICOUT,8023)IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8024)IBASLC,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8025)N2,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8026)Y2MEAN,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8027)Y2SD,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8023)IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
    C
            WRITE(ICOUT,8028)IBASLC,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8029)SDNUM,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8030)SDDEN,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8031)RATIO,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8032)INT(DFNUM + 0.5),IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8033)INT(DFDEN + 0.5),IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8034)CDF,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8049)IBASLC
            CALL DPWRST('XXX','WRIT')
    C
    C STEP 3: END TABLE ENVIRONMENT, RESET ASIS MODE
    C
     8091 FORMAT(A1,'end{center}')
            WRITE(ICOUT,8091)IBASLC
            CALL DPWRST('XXX','WRIT')
    C
    C  STEP 1: START TABLE ENVIRONMENT, WRITE A HEADER, AND
    C          WRITE A TABLE CAPTION
    C
     8109 FORMAT(A1,'begin{center}')
     8113 FORMAT(A1,'end{center}')
     8115 FORMAT(5X,'} ',A1,A1)
    C
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
    C
    C STEP 2: START TABULAR ENVIRONMENT, WRITE SUBSESQUENT ROWS, END
    C         TABULAR ENVIRONMENT
    C
     8120 FORMAT(5X,A1,'begin{tabular} {ccc}')
     8121 FORMAT(5X,'{',A1,'bf Null} & {',A1,
         1       'bf Null Hypothesis} & {',A1,'bf Null Hypothesis}',
         1       2X,A1,A1)
     8122 FORMAT(5X,'{',A1,'bf Hypothesis} & {',A1,
         1       'bf Acceptance Interval} & {',A1,
         1       'bf Conclusion}',2X,A1,A1)
     8124 FORMAT(5X,'$',A1,'sigma_1 =  ',A1,'sigma_2 $ ',
         1       ' & (0.000,0.950) & ',A6,2X,A1,A1)
     8140 FORMAT(5X,A1,'hline')
     8149 FORMAT(A1,'end{tabular}')
            WRITE(ICOUT,8109)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8120)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8121)IBASLC,IBASLC,IBASLC,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8122)IBASLC,IBASLC,IBASLC,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8140)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8124)IBASLC,IBASLC,ICONC2,IBASLC,IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8149)IBASLC
            CALL DPWRST('XXX','WRIT')
    C
    C STEP 3: END TABLE ENVIRONMENT, RESET ASIS MODE
    C
     8191   FORMAT(A1,'end{center}')
     8193   FORMAT(A1,'end{table}')
     8199   FORMAT(A1,'begin{verbatim}')
            WRITE(ICOUT,8191)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8193)IBASLC
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,8199)IBASLC
            CALL DPWRST('XXX','WRIT')
    CCCCC WRITE IN RTF (RICH TEXT FORMAT)
          ELSEIF(ICAPSW.EQ.'ON' .AND. ICAPTY.EQ.'RTF')THEN
          ELSE
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4211)
     4211   FORMAT('    TWO SAMPLE F-TEST FOR EQUAL STANDARD DEVIATIONS')
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4213)
     4213   FORMAT('NULL HYPOTHESIS:            SIGMA1 = SIGMA2')
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4215)
     4215   FORMAT('ALTERNATIVE HYPOTHESIS:     SIGMA1 NOT EQUAL SIGMA2')
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
    C
            WRITE(ICOUT,4220)
     4220   FORMAT('SAMPLE 1:')
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4221)N1
     4221   FORMAT(3X,'NUMBER OF OBSERVATIONS             = ',I8)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4222)Y1MEAN
     4222   FORMAT(3X,'MEAN                               = ',G15.7)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4223)Y1SD
     4223   FORMAT(3X,'STANDARD DEVIATION                 = ',G15.7)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
    C
            WRITE(ICOUT,4230)
     4230   FORMAT('SAMPLE 2:')
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4231)N2
     4231   FORMAT(3X,'NUMBER OF OBSERVATIONS             = ',I8)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4232)Y2MEAN
     4232   FORMAT(3X,'MEAN                               = ',G15.7)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4233)Y2SD
     4233   FORMAT(3X,'STANDARD DEVIATION                 = ',G15.7)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
    C
            WRITE(ICOUT,4241)
     4241   FORMAT('TEST:')
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4242)SDNUM
     4242   FORMAT(3X,'STANDARD DEVIATION (NUMERATOR)     = ',G15.7)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4243)SDDEN
     4243   FORMAT(3X,'STANDARD DEVIATION (DENOMINATOR)   = ',G15.7)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4244)RATIO
     4244   FORMAT(3X,'F-TEST STATISTIC VALUE             = ',G15.7)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4245)DFNUM
     4245   FORMAT(3X,'DEGREES OF FREEDOM (NUMERATOR)     = ',G15.7)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4246)DFDEN
     4246   FORMAT(3X,'DEGREES OF FREEDOM (DENOMINATOR)   = ',G15.7)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4247)CDF
     4247   FORMAT(3X,'F-TEST STATISTIC CDF VALUE         = ',F11.6)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
    C
            WRITE(ICOUT,4260)
     4260   FORMAT('  NULL          NULL HYPOTHESIS        NULL ',
         1         'HYPOTHESIS')
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4261)
     4261   FORMAT('  HYPOTHESIS    ACCEPTANCE INTERVAL    CONCLUSION')
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,4262)ICONC2
     4262   FORMAT('SIGMA1 = SIGMA2    (0.000,0.950)         ',A6)
            CALL DPWRST('XXX','WRIT')
            WRITE(ICOUT,999)
            CALL DPWRST('XXX','WRIT')
          ENDIF
          ENDIF
          GOTO9000
    C
    C               *****************
    C               **  STEP 90--  **
    C               **  EXIT       **
    C               *****************
    C
     9000 CONTINUE
          IF(IBUGA3.EQ.'OFF')GOTO9090
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','WRIT')
          WRITE(ICOUT,9011)
     9011 FORMAT('***** AT THE END       OF DPFTE2--')
          CALL DPWRST('XXX','WRIT')
          WRITE(ICOUT,9012)N,IBUGA3,IERROR
     9012 FORMAT('N,IBUGA3,IERROR = ',I8,2X,A4,2X,A4)
          CALL DPWRST('XXX','WRIT')
          WRITE(ICOUT,9015)N1
     9015 FORMAT('N1 = ',I8)
          CALL DPWRST('XXX','WRIT')
          DO9016I=1,N1
          WRITE(ICOUT,9017)I,Y1(I)
     9017 FORMAT('I,Y1(I) = ',I8,E15.7)
          CALL DPWRST('XXX','WRIT')
     9016 CONTINUE
          WRITE(ICOUT,9025)N2
     9025 FORMAT('N2 = ',I8)
          CALL DPWRST('XXX','WRIT')
          DO9026I=1,N2
          WRITE(ICOUT,9027)I,Y2(I)
     9027 FORMAT('I,Y2(I) = ',I8,E15.7)
          CALL DPWRST('XXX','WRIT')
     9026 CONTINUE
     9090 CONTINUE
    C
          RETURN
          END
          SUBROUTINE DPFUEV(ITYPEH,IW21HO,IW22HO,W2HOLD,NWHOLD,
         1IA,PARAM,IPARN,IPARN2,
         1IFOUNZ,IBEGIN,IEND,ITYPE,IHOL,IHOL2,INT1,FLOAT1,IERRO1,
         1NUMCL,NUMPL,NUMAOL,ITYW1L,ICAT1L,INLI1L,ITYW2L,
         1NUMCR,NUMPR,NUMAOR,ITYW1R,ICAT1R,INLI1R,ITYW2R,
         1IANGLU,IBUGA3,IBUGCO,IBUGEV,IBUGQ,IFOUND,IERROR)
    C
    C     PURPOSE--TREAT THE TYPE 6 LET CASE--
    C              COMPUTING A GENERAL FUNCTION
    C              (FOR A PARAMETER, A FULL VARIABLE,
    C              OR PART OF A VARIABLE).
    C     OUTPUT--A PARAMETER OR A VARIABLE.
    C     EXAMPLE--IN THE FOLLOWING EXAMPLES,
    C              A REPRESENTS A PREVIOUSLY-DEFINED PARAMETER
    C              B REPRESENTS A PREVIOUSLY-DEFINED PARAMETER
    C              X REPRESENTS A PREVIOUSLY-DEFINED VARIABLE (VECTOR)
    C              Y REPRESENTS A PREVIOUSLY-DEFINED VARIABLE (VECTOR)
    C              U REPRESENTS AN UNYET-DEFINED TERM
    C              I REPRESENTS A DUMMY VARIABLE
    C                     --LET A    = I                         (ILLEGAL)
    C                     --LET A    = X(2)                      (A PARAMETER)
    C                     --LET A    = 3*SIN(4)                  (A PARAMETER)
    C                     --LET A    = B*SIN(B)                  (A PARAMETER)
    C                     --LET A    = X*SIN(X)                  (ILLEGAL)
    C
    C                     --LET Y    = I                         (ILLEGAL)
    C                     --LET Y    = X(2)                      (ILLEGAL)
    C                     --LET Y    = 3*SIN(4)                  (ILLEGAL)
    C                     --LET Y    = B*SIN(B)                  (ILLEGAL)
    C                     --LET Y    = X*SIN(X)                  (A FULL VARIABLE)
    C
    C                     --LET Y(I) = I                         (A FULL VARIABLE)
    C                     --LET Y(I) = X(2)                      (A FULL VARIABLE)
    C                     --LET Y(I) = 3*SIN(4)                  (A FULL VARIABLE)
    C                     --LET Y(I) = B*SIN(B)                  (A FULL VARIABLE)
    C                     --LET Y(I) = X*SIN(X)                  (A FULL VARIABLE)
    C
    C                     --LET Y(2) = I                         (ILLEGAL)
    C                     --LET Y(2) = X(2)                      (AN EL. OF A VAR.)
    C                     --LET Y(2) = 3*SIN(4)                  (AN EL. OF A VAR.)
    C                     --LET Y(2) = B*SIN(B)                  (AN EL. OF A VAR.)
    C                     --LET Y(2) = X*SIN(X)                  (ILLEGAL)
    C
    C                     --LET U    = I                         (ILLEGAL)
    C                     --LET U    = X(2)                      (A PARAMETER)
    C                     --LET U    = 3*SIN(4)                  (A PARAMETER)
    C                     --LET U    = B*SIN(B)                  (A PARAMETER)
    C                     --LET U    = X*SIN(X)                  (A FULL VARIABLE)
    C
    C                     --LET U(I) = I                         (ILLEGAL)
    C                     --LET U(I) = X(2)                      (ILLEGAL)
    C                     --LET U(I) = 3*SIN(4)                  (ILLEGAL)
    C                     --LET U(I) = B*SIN(B)                  (ILLEGAL)
    C                     --LET U(I) = X*SIN(X)                  (A FULL VARIABLE)
    C
    C                     --LET U(2) = I                         (ILLEGAL)
    C                     --LET U(2) = X(2)                      (AN EL. OF A VAR.)
    C                     --LET U(2) = 3*SIN(4)                  (AN EL. OF A VAR.)
    C                     --LET U(2) = B*SIN(B)                  (AN EL. OF A VAR.)
    C                     --LET U(2) = X*SIN(X)                  (ILLEGAL)
    C                ********************************
    C
    C                     --LET A    = I         SUBSET 2 3 5    (ILLEGAL)
    C                     --LET A    = X(2)      SUBSET 2 3 5    (ILLEGAL)
    C                     --LET A    = 3*SIN(4)  SUBSET 2 3 5    (ILLEGAL)
    C                     --LET A    = B*SIN(B)  SUBSET 2 3 5    (ILLEGAL)
    C                     --LET A    = X*SIN(X)  SUBSET 2 3 5    (ILLEGAL)
    C
    C                     --LET Y    = I         SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET Y    = X(2)      SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET Y    = 3*SIN(4)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET Y    = B*SIN(B)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET Y    = X*SIN(X)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C
    C                     --LET Y(I) = I         SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET Y(I) = X(2)      SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET Y(I) = 3*SIN(4)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET Y(I) = B*SIN(B)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET Y(I) = X*SIN(X)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C
    C                     --LET Y(2) = I         SUBSET 2 3 5    (ILLEGAL)
    C                     --LET Y(2) = X(2)      SUBSET 2 3 5    (ILLEGAL)
    C                     --LET Y(2) = 3*SIN(4)  SUBSET 2 3 5    (ILLEGAL)
    C                     --LET Y(2) = B*SIN(B)  SUBSET 2 3 5    (ILLEGAL)
    C                     --LET Y(2) = X*SIN(X)  SUBSET 2 3 5    (ILLEGAL)
    C
    C                     --LET U    = I         SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET U    = X(2)      SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET U    = 3*SIN(4)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET U    = B*SIN(B)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET U    = X*SIN(X)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C
    C                     --LET U(I) = I         SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET U(I) = X(2)      SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET U(I) = 3*SIN(4)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET U(I) = B*SIN(B)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C                     --LET U(I) = X*SIN(X)  SUBSET 2 3 5    (A PARTIAL VAR.)
    C
    C                     --LET U(2) = I         SUBSET 2 3 5    (ILLEGAL)
    C                     --LET U(2) = X(2)      SUBSET 2 3 5    (ILLEGAL)
    C                     --LET U(2) = 3*SIN(4)  SUBSET 2 3 5    (ILLEGAL)
    C                     --LET U(2) = B*SIN(B)  SUBSET 2 3 5    (ILLEGAL)
    C                     --LET U(2) = X*SIN(X)  SUBSET 2 3 5    (ILLEGAL)
    C
    C                ********************************
    C
    C                     --LET A    = I         FOR I = 1 2 10  (ILLEGAL)
    C                     --LET A    = X(2)      FOR I = 1 2 10  (ILLEGAL)
    C                     --LET A    = 3*SIN(4)  FOR I = 1 2 10  (ILLEGAL)
    C                     --LET A    = B*SIN(B)  FOR I = 1 2 10  (ILLEGAL)
    C                     --LET A    = X*SIN(X)  FOR I = 1 2 10  (ILLEGAL)
    C
    C                     --LET Y    = I         FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET Y    = X(2)      FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET Y    = 3*SIN(4)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET Y    = B*SIN(B)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET Y    = X*SIN(X)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C
    C                     --LET Y(I) = I         FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET Y(I) = X(2)      FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET Y(I) = 3*SIN(4)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET Y(I) = B*SIN(B)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET Y(I) = X*SIN(X)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C
    C                     --LET Y(2) = I         FOR I = 1 2 10  (ILLEGAL)
    C                     --LET Y(2) = X(2)      FOR I = 1 2 10  (ILLEGAL)
    C                     --LET Y(2) = 3*SIN(4)  FOR I = 1 2 10  (ILLEGAL)
    C                     --LET Y(2) = B*SIN(B)  FOR I = 1 2 10  (ILLEGAL)
    C                     --LET Y(2) = X*SIN(X)  FOR I = 1 2 10  (ILLEGAL)
    C
    C                     --LET U    = I         FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET U    = X(2)      FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET U    = 3*SIN(4)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET U    = B*SIN(B)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET U    = X*SIN(X)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C
    C                     --LET U(I) = I         FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET U(I) = X(2)      FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET U(I) = 3*SIN(4)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET U(I) = B*SIN(B)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C                     --LET U(I) = X*SIN(X)  FOR I = 1 2 10  (A PARTIAL VAR.)
    C
    C                     --LET U(2) = I         FOR I = 1 2 10  (ILLEGAL)
    C                     --LET U(2) = X(2)      FOR I = 1 2 10  (ILLEGAL)
    C                     --LET U(2) = 3*SIN(4)  FOR I = 1 2 10  (ILLEGAL)
    C                     --LET U(2) = B*SIN(B)  FOR I = 1 2 10  (ILLEGAL)
    C                     --LET U(2) = X*SIN(X)  FOR I = 1 2 10  (ILLEGAL)
    C
    C     WRITTEN BY--JAMES J. FILLIBEN
    C                 STATISTICAL ENGINEERING DIVISION
    C                 CENTER FOR APPLIED MATHEMATICS
    C                 NATIONAL BUREAU OF STANDARDS
    C                 WASHINGTON, D. C. 20234
    C                 PHONE--301-975-2855
    C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
    C           OF THE NATIONAL BUREAU OF STANDARDS.
    C           THIS SUBROUTINE MAY NOT BE COPIED, EXTRACTED,
    C           MODIFIED, OR OTHERWISE USED IN A CONTEXT
    C           OUTSIDE OF THE DATAPLOT LANGUAGE/SYSTEM.
    C     LANGUAGE--ANSI FORTRAN (1977)
    C     VERSION NUMBER--82/7
    C     ORIGINAL VERSION (IN DPLET)--DECEMBER 1977.
    C     ORIGINAL VERSION AS A SEPARATE SUBROUTINE--MARCH 1978.
    C     UPDATED         --MAY       1982.
    C     UPDATED         --JULY      1978.
    C     UPDATED         --NOVEMBER  1978.
    C     UPDATED         --FEBRUARY  1979.
    C     UPDATED         --MARCH     1979.
    C     UPDATED         --JUNE      1981.
    C     UPDATED         --SEPTEMBER 1981.
    C     UPDATED         --OCTOBER   1981.
    C     UPDATED         --NOVEMBER  1981.
    C     UPDATED         --JANUARY   1982.
    C     UPDATED         --APRIL     1982.
    C     UPDATED         --MARCH     1986.
    C     UPDATED         --JANUARY   1988.  CUTOFF VALUE FOR CDC COMPUTERS
    C     UPDATED         --MARCH     1988.  FIX LET PRED=... SUBSET/FOR/ALL
    C     UPDATED         --DECEMBER  1988.  FIX LET Y(K) = X(K) INSIDE LOOP
    C     UPDATED         --FEBRUARY  1989.  CUTOFF VALUE FOR CDC 205 COMPUTER
    C     UPDATED         --MARCH     2003.  FOR PARAMETERS, CHECK FOR
    C                                        IVALUE > LARGEST MACHINE
    C                                        INTEGER
    C     UPDATED         --FEBRUARY  2005.  IF FUNCTION DEFINED WITH
    C                                        "LET STRING", CASE PRESERVED.
    C                                        WHEN FUNCTION EXTRACTED IN
    C                                        THIS CONTEXT, NEED TO
    C                                        CONVERT LOWER CASE TO UPPER
    C                                        CASE
    C
    C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
    C
          CHARACTER*4 ITYPEH
          CHARACTER*4 IW21HO
          CHARACTER*4 IW22HO
          CHARACTER*4 IA
          CHARACTER*4 IPARN
          CHARACTER*4 IPARN2
          CHARACTER*4 IFOUNZ
          CHARACTER*4 ITYPE
          CHARACTER*4 IHOL
          CHARACTER*4 IHOL2
          CHARACTER*4 IERRO1
          CHARACTER*4 ITYW1L
          CHARACTER*4 ICAT1L
          CHARACTER*4 INLI1L
          CHARACTER*4 ITYW2L
          CHARACTER*4 ITYW1R
          CHARACTER*4 ICAT1R
          CHARACTER*4 INLI1R
          CHARACTER*4 ITYW2R
          CHARACTER*4 IANGLU
          CHARACTER*4 IBUGA3
          CHARACTER*4 IBUGCO
          CHARACTER*4 IBUGEV
          CHARACTER*4 IBUGQ
          CHARACTER*4 IFOUND
          CHARACTER*4 IERROR
    C
          CHARACTER*4 IWD1
          CHARACTER*4 IWD2
          CHARACTER*4 IWD12
          CHARACTER*4 IWD22
          CHARACTER*4 IVOLDR
          CHARACTER*4 IVOLR2
          CHARACTER*4 IHWUSE
          CHARACTER*4 MESSAG
          CHARACTER*4 NEWNAM
          CHARACTER*4 NEWCOL
          CHARACTER*4 IVNEWR
          CHARACTER*4 IVNER2
          CHARACTER*4 ICASEL
          CHARACTER*4 ICASER
          CHARACTER*4 ICASEQ
          CHARACTER*4 ICASIF
          CHARACTER*4 IPJ
          CHARACTER*4 IPJ2
          CHARACTER*4 IHSET
          CHARACTER*4 IHSET2
          CHARACTER*4 ILEFT
          CHARACTER*4 ILEFT2
          CHARACTER*4 IRIGHT
          CHARACTER*4 IRIGH2
          CHARACTER*4 IARG4F
          CHARACTER*4 IARG4T
    C
          CHARACTER*4 ISUBN1
          CHARACTER*4 ISUBN2
          CHARACTER*4 ISTEPN
    C
    C---------------------------------------------------------------------
    C
          DIMENSION IFOUNZ(*)
          DIMENSION IBEGIN(*)
          DIMENSION IEND(*)
          DIMENSION ITYPE(*)
          DIMENSION IHOL(*)
          DIMENSION IHOL2(*)
          DIMENSION INT1(*)
          DIMENSION FLOAT1(*)
          DIMENSION IERRO1(*)
    C
          DIMENSION ITYPEH(*)
          DIMENSION IW21HO(*)
          DIMENSION IW22HO(*)
          DIMENSION W2HOLD(*)
    C
          DIMENSION IA(*)
          DIMENSION PARAM(*)
          DIMENSION IPARN(*)
          DIMENSION IPARN2(*)
    C
    C-----COMMON----------------------------------------------------------
    C
          INCLUDE 'DPCOPA.INC'
          INCLUDE 'DPCOHK.INC'
          INCLUDE 'DPCODA.INC'
          INCLUDE 'DPCOHO.INC'
          INCLUDE 'DPCOMC.INC'
    C
          CHARACTER*4 IFSAVE
          DIMENSION IFSAVE(MAXF1)
    C
    C-----COMMON VARIABLES (GENERAL)--------------------------------------
    C
          CHARACTER*4 IFEEDB
          CHARACTER*4 IPRINT
          CHARACTER*240 ICOUT
    C
          COMMON /MACH/IRD,IPR,CPUMIN,CPUMAX,NUMBPC,NUMCPW,NUMBPW
          COMMON /PRINT/IFEEDB,IPRINT
          COMMON /TEXTOU/ICOUT,NCOUT,ILOUT
    C
    C-----START POINT-----------------------------------------------------
    C
          ISUBN1='DPFU'
          ISUBN2='EV  '
    C
    C  CONVERT FUNCTION TABLE TO UPPER CASE, BUT SAVE ORIGINAL FIRST
    C
          DO10I=1,NUMCHF
            IFSAVE(I)=IFUNC(I)
    CCCCC   CALL DPCOAN(IFSAVE(I)(1:1),IATEMP)
    CCCCC   IF(IATEMP.GE.97 .AND. IATEMP.LE.122)THEN
    CCCCC     IATEMP=IATEMP-32
    CCCCC     CALL DPCONA(IATEMP,IFSAVE(I)(1:1))
    CCCCC   ENDIF
       10 CONTINUE
    C
          MAXCP1=MAXCOL+1
          MAXCP2=MAXCOL+2
          MAXCP3=MAXCOL+3
          MAXCP4=MAXCOL+4
          MAXCP5=MAXCOL+5
          MAXCP6=MAXCOL+6
    C
          IFOUND='NO'
          IERROR='NO'
    C
    C               *******************************************************
    C               **  TREAT THE CASE OF A GENERAL FUNCTION EVALUATION  **
    C               **        1) FOR A PARAMETER,                        **
    C               **        2) FOR A FULL VARIABLE, OR                 **
    C               **        3) FOR PART OF A VARIABLE.                 **
    C               *******************************************************
    C
          IF(IBUGA3.EQ.'OFF')GOTO90
          WRITE(ICOUT,999)
      999 FORMAT(1X)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,51)
       51 FORMAT('***** AT THE BEGINNING OF DPFUEV--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,52)IBUGA3
       52 FORMAT('IBUGA3 = ',A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,53)IBUGCO,IBUGEV
       53 FORMAT('IBUGCO,IBUGEV = ',A4,2X,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,54)IBUGQ
       54 FORMAT('IBUGQ = ',A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,55)IANGLU
       55 FORMAT('IANGLU = ',A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,57)NUMNAM
       57 FORMAT('NUMNAM = ',I8)
          CALL DPWRST('XXX','BUG ')
          DO60I=1,NUMNAM
          WRITE(ICOUT,61)I,IHNAME(I),IHNAM2(I),IUSE(I),IVALUE(I),VALUE(I)
       61 FORMAT('I,IHNAME(I),IHNAM2(I),IUSE(I),IVALUE(I),VALUE(I) = ',
         1I8,2X,A4,2X,A4,2X,A4,I8,E15.7)
          CALL DPWRST('XXX','BUG ')
       60 CONTINUE
       90 CONTINUE
    C
    C               **********************************
    C               **  STEP 1--                    **
    C               **  INITIALIZE SOME VARIABLES.  **
    C               **********************************
    C
          ISTEPN='1'
          IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
    C
          NEWNAM='NO'
          NEWCOL='NO'
    C
          MAXN2=MAXCHF
          MAXN3=MAXCHF
          MAXN4=MAXCHF
    C
          IF(IBUGA3.EQ.'OFF')GOTO99
          WRITE(ICOUT,91)
       91 FORMAT('I,IFOUNZ(I),ITYPE(I),IHOL(I),IHOL2(I),INT1(I),',
         1'FLOAT1(I)--')
          CALL DPWRST('XXX','BUG ')
          DO92I=1,30
          WRITE(ICOUT,93)I,IFOUNZ(I),ITYPE(I),IHOL(I),IHOL2(I),INT1(I),
         1FLOAT1(I)
       93 FORMAT(I3,2X,A4,2X,A4,2X,A4,2X,A4,2X,I8,2X,E15.7)
          CALL DPWRST('XXX','BUG ')
       92 CONTINUE
       99 CONTINUE
    C
    C               ****************************************************************
    C               **  STEP 2--                                                   *
    C               **  EXAMINE THE LEFT-HAND SIDE--                               *
    C               **  IS THE PARAMETER OR VARIABLE NAME TO LEFT OF = SIGN        *
    C               **  ALREADY IN THE NAME LIST?                                  *
    C               **  IS IT A PARAMETER OR A VARIABLE?                           *
    C               **  NOTE THAT     ILEFT     IS THE NAME OF THE VARIABLE        *
    C               **  ON THE LEFT.                                               *
    C               **  NOTE THAT     ILISTL    IS THE LINE IN THE TABLE           *
    C               **  OF THE NAME ON THE LEFT.                                   *
    C               **  NOTE THAT     ICOLL    IS THE DATA COLUMN (1 TO 12)        *
    C               **  FOR THE NAME OF THE LEFT.                                  *
    C               **  WHEN THIS STEP IS FINISHED,                                *
    C               **  ICASEL   WILL HAVE ONE OF THE FOLLOWING 3 VALUES--         *
    C               **           1) PARAM                                          *
    C               **           2) VAR                                            *
    C               **           3) UNKNOWN (YET TO BE DEFINED; DEPENDS ON RIGHT). *
    C               ****************************************************************
    C               ****************************************************************
    C
          ISTEPN='2'
          IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
    C
          ICASEL='UNKN'
          ILEFT=IHOL(2)
          ILEFT2=IHOL2(2)
          DO2000I=1,NUMNAM
          I2=I
          IF(ILEFT.EQ.IHNAME(I).AND.ILEFT2.EQ.IHNAM2(I).AND.
         1IUSE(I).EQ.'P')GOTO2500
          IF(ILEFT.EQ.IHNAME(I).AND.ILEFT2.EQ.IHNAM2(I).AND.
         1IUSE(I).EQ.'V')GOTO2600
     2000 CONTINUE
          ICASEL='UNKN'
          NEWNAM='YES'
          ILISTL=NUMNAM+1
          IF(ILISTL.GT.MAXNAM)GOTO2800
          GOTO2900
    C
     2500 CONTINUE
          ICASEL='PARA'
          ILISTL=I2
          GOTO2900
    C
     2600 CONTINUE
          ICASEL='VAR'
          ILISTL=I2
          ICOLL=IVALUE(ILISTL)
          NILEFT=IN(ILISTL)
          GOTO2900
    C
     2800 CONTINUE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,2801)
     2801 FORMAT('***** ERROR IN DPFUEV AT 2801--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,2802)
     2802 FORMAT('      THE NUMBER OF VARIABLE AND/OR PARAMETER')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,2803)MAXNAM
     2803 FORMAT('      NAMES HAS JUST EXCEEDED THE MAX ALLOWABLE ',
         1I8,'  .')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,2804)
     2804 FORMAT('      SUGGESTED ACTION--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,2805)
     2805 FORMAT('      ENTER      STAT')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,2806)
     2806 FORMAT('      TO FIND OUT THE FULL LIST OF USED NAMES,')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,2807)
     2807 FORMAT('      AND THEN REDEFINE (REUSE) SOME OF THE')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,2808)
     2808 FORMAT('      ALREADY-USED NAMES')
          CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     2900 CONTINUE
    C
    C               **************************************************
    C               **  STEP 3--                                    **
    C               **  EXAMINE THE RIGHT-HAND SIDE--               **
    C               **  1)  FIRST, SCREEN OUT THE DUMMY             **
    C               **      AND THE ELEMENT SPECIFICATION CASES;    **
    C               **  2)  THEN EXTRACT THE FUNCTIONAL EXPRESSION; **
    C               **  3)  DETERMINE THE TYPE OF QUALIFIERS--      **
    C               **      A)  NONE (= FULL = UNQUALIFIED);        **
    C               **      B)  SUBSET/EXCEPT; OR                   **
    C               **      C)  FOR.                                **
    C               **  4)  EXAMINE THE FUNCTION    AL EXPRESSION   **
    C               **      FOR PARAMETERS AND VARIABLES.           **
    C               **  WHEN THIS STEP IS FINISHED,                 **
    C               **  ICASER  WILL BE FULLY DETERMINED AND        **
    C               **  WILL HAVE ONE OF THE FOLLOWING 4 VALUES--   **
    C               **          1) DUMMY;                           **
    C               **          2) ELEMENT;                         **
    C               **          3) PARAM (NO VARIABLES);            **
    C               **          4) VAR (AT LEAST ONE VARIABLE).     **
    C               **  WHEN THIS STEP IS FINISHED,                 **
    C               **  ICASEQ  WILL BE FILLY DETERMINED AND        **
    C               **  WILL HAVE ONE OF THE FOLLOWING 3 VALUES--   **
    C               **          1) FULL;                            **
    C               **          2) SUBSET/EXCEPT OR;                **
    C               **          3) FOR.                             **
    C               **************************************************
    C
          ISTEPN='3'
          IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
    C
          ICASER='UNKN'
          ICASEQ='UNKN'
          IF(NUMCR.EQ.1.AND.NUMPR.EQ.0.AND.NUMAOR.EQ.0.
         1AND.ITYW1R.EQ.'WORD'.AND.INLI1R.EQ.'NO')GOTO3010
          IF(1.LE.NUMCR.AND.NUMCR.LE.4.AND.NUMPR.EQ.2.AND.NUMAOR.EQ.0.
         1AND.ITYW1R.EQ.'WORD'.AND.ICAT1R.EQ.'VARP'.
         1AND.INLI1R.EQ.'YES'.AND.ITYW2R.EQ.'NUMB')GOTO3020
          IF(1.LE.NUMCR.AND.NUMCR.LE.4.AND.NUMPR.EQ.2.AND.NUMAOR.EQ.0.
         1AND.ITYW1R.EQ.'WORD'.AND.ICAT1R.EQ.'VARP'.
         1AND.INLI1R.EQ.'YES'.AND.ITYW2R.EQ.'WORD')GOTO3020
          GOTO3090
    C
     3010 CONTINUE
          ICASER='DUMM'
          IF(IFOUNZ(11).EQ.'NO'.AND.IFOUNZ(21).EQ.'NO')ICASEQ='FULL'
          IF(IFOUNZ(11).EQ.'YES')ICASEQ='SUBS'
          IF(IFOUNZ(21).EQ.'YES')ICASEQ='FOR'
          GOTO3990
    C
     3020 CONTINUE
          ICASER='ELEM'
          IRIGHT=IHOL(7)
          IRIGH2=IHOL2(7)
          DO3030I=1,NUMNAM
          I2=I
          IF(IRIGHT.EQ.IHNAME(I).AND.IRIGH2.EQ.IHNAM2(I).AND.
         1IUSE(I).EQ.'P')GOTO3040
          IF(IRIGHT.EQ.IHNAME(I).AND.IRIGH2.EQ.IHNAM2(I).AND.
         1IUSE(I).EQ.'V')GOTO3050
     3030 CONTINUE
    C
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3031)
     3031 FORMAT('***** ERROR IN DPFUEV--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3032)
     3032 FORMAT('      THE VARIABLE NAME ON THE RIGHT')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3033)
     3033 FORMAT('      OF THE = SIGN')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3034)
     3034 FORMAT('      WAS NOT FOUND IN THE INTERNAL NAME LIST.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3035)
     3035 FORMAT('      THE COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3036)(IANS(I),I=1,IWIDTH)
     3036 FORMAT(80A1)
          CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     3040 CONTINUE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3041)
     3041 FORMAT('***** ERROR IN DPFUEV--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3042)
     3042 FORMAT('      THE VARIABLE NAME ON THE RIGHT')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3043)
     3043 FORMAT('      OF THE = SIGN')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3044)
     3044 FORMAT('      WAS FOUND IN THE INTERNAL NAME LIST,')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3045)
     3045 FORMAT('      BUT AS A PARAMETER,')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3046)
     3046 FORMAT('      AND NOT AS A VARIABLE AS IT SHOULD BE HERE.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3047)
     3047 FORMAT('      THE COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3048)(IANS(I),I=1,IWIDTH)
     3048 FORMAT(80A1)
          CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     3050 CONTINUE
          ILISTR=I2
          ICOLR=IVALUE(ILISTR)
          NIRIGH=IN(ILISTR)
    C
          IARGIR=INT1(9)
          IF(1.LE.IARGIR.AND.IARGIR.LE.MAXN)GOTO3060
          WRITE(ICOUT,3061)
     3061 FORMAT('***** ERROR IN DPFUEV')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3062)
     3062 FORMAT('      THE SPECIFIED ARGUMENT (ROW NUMBER)')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3063)
     3063 FORMAT('      ON THE RIGHT SIDE OF THE = SIGN')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3064)
     3064 FORMAT('      IS SMALLER THAN 1 OR')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3065)
     3065 FORMAT('      LARGER THAN THE MAXIMUM ALLOWABLE NUMBER  ')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3066)MAXN
     3066 FORMAT('      (',I6,')  FOR A GIVEN VARIABLE.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3067)IARGIR
     3067 FORMAT('      THE VALUE (IARGIR) = ',I8)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3068)
     3068 FORMAT('      THE COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3069)(IANS(I),I=1,IWIDTH)
     3069 FORMAT(80A1)
          CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     3060 CONTINUE
          IF(IFOUNZ(11).EQ.'NO'.AND.IFOUNZ(21).EQ.'NO')ICASEQ='FULL'
          IF(IFOUNZ(11).EQ.'YES')ICASEQ='SUBS'
          IF(IFOUNZ(21).EQ.'YES')ICASEQ='FOR'
          GOTO3990
    C
     3090 CONTINUE
          ICASEQ='UNKN'
    C
    C     LOCATE THE EQUAL SIGN.
    C
          DO3100I=1,IWIDTH
          I2=I
          IF(IANS(I).EQ.'=')GOTO3150
     3100 CONTINUE
          GOTO3400
     3150 CONTINUE
          ISTART=I2
    C
          IF(ISTART.GT.IWIDTH)GOTO3400
          DO3200I=ISTART,IWIDTH
          I2=I
          IP1=I+1
          IP2=I+2
          IP3=I+3
          IP4=I+4
          IP5=I+5
          IP6=I+6
          IP7=I+7
          IF(IP7.GT.IWIDTH)GOTO3230
          IF(IANS(I).EQ.' '.AND.IANS(IP1).EQ.'S'.AND.IANS(IP2).EQ.'U'
         1.AND.IANS(IP3).EQ.'B'.AND.IANS(IP4).EQ.'S'.AND.IANS(IP5).EQ.'E'
         1.AND.IANS(IP6).EQ.'T'.AND.IANS(IP7).EQ.' ')GOTO3250
          IF(IANS(I).EQ.' '.AND.IANS(IP1).EQ.'F'.AND.IANS(IP2).EQ.'O'
         1.AND.IANS(IP3).EQ.'R'.AND.IANS(IP4).EQ.' ')GOTO3270
          IF(IANS(I).EQ.' '.AND.IANS(IP1).EQ.'I'.AND.IANS(IP2).EQ.'F'
         1.AND.IANS(IP3).EQ.' ')GOTO3280
     3200 CONTINUE
    C
     3230 CONTINUE
          ICASEQ='FULL'
          ISTOP=IWIDTH
          GOTO3290
    C
     3250 CONTINUE
          ICASEQ='SUBS'
          ISTOP=I2
          GOTO3290
    C
     3270 CONTINUE
          ICASEQ='FOR'
          ISTOP=I2
          GOTO3290
    C
     3280 CONTINUE
          ICASEQ='IF'
          ISTOP=I2
          GOTO3290
    C
     3290 CONTINUE
    C
    C               ***************************************
    C               **  STEP 3.1--                       **
    C               **  EXTRACT THE UNDERLYING FUNCTION  **
    C               **  FROM FUNCTION DEFINITIONS.       **
    C               ***************************************
    C
          ISTEPN='3.1'
          IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
    C
    CCCCC J=0
    CCCCC IMIN=ISTART+1
    CCCCC DO3370I=IMIN,ISTOP
    CCCCC J=J+1
    CCCCC IA(J)=IANS(I)
    C3370 CONTINUE
    CCCCC NUMCHA=J
    C
          IWD1='=   '
          IWD12='    '
          IF(ICASEQ.EQ.'FULL')IWD2='    '
          IF(ICASEQ.EQ.'FULL')IWD22='    '
          IF(ICASEQ.EQ.'SUBS'.AND.IHOL(11).EQ.'SUBS')IWD2='SUBS'
          IF(ICASEQ.EQ.'SUBS'.AND.IHOL(11).EQ.'SUBS')IWD22='ET  '
          IF(ICASEQ.EQ.'SUBS'.AND.IHOL(11).EQ.'EXCE')IWD2='EXCE'
          IF(ICASEQ.EQ.'SUBS'.AND.IHOL(11).EQ.'EXCE')IWD22='PT  '
          IF(ICASEQ.EQ.'FOR ')IWD2='FOR '
          IF(ICASEQ.EQ.'FOR ')IWD22='    '
          IF(ICASEQ.EQ.'IF  ')IWD2='IF  '
          IF(ICASEQ.EQ.'IF  ')IWD22='    '
          CALL DPEXST(IANS,IWIDTH,IWD1,IWD12,IWD2,IWD22,MAXN2,
         1IFUNC2,N2,IBUGA3,IFOUND,IERROR)
          IF(IBUGA3.EQ.'ON')WRITE(ICOUT,3011)
     3011 FORMAT('***** FROM DPFUEV, AFTER  THE CALL TO DPEXST--')
          IF(IBUGA3.EQ.'ON')CALL DPWRST('XXX','BUG ')
          IF(IERROR.EQ.'YES')GOTO19000
          IF(IFOUND.EQ.'YES')GOTO3379
    C
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3371)
     3371 FORMAT('***** ERROR IN DPFUEV--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3372)
     3372 FORMAT('      INVALID COMMAND FORM FOR FUNCTION EVALUATION.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3373)
     3373 FORMAT('      GENERAL FORM--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3374)
     3374 FORMAT('      LET ... = ...  ',
         1'SUBSET ... ... ...')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3375)
     3375 FORMAT('      THE ENTIRE COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,3376)(IANS(I),I=1,IWIDTH)
     3376 FORMAT('      ',100A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
     3379 CONTINUE
    C
          IF(IBUGA3.EQ.'ON')WRITE(ICOUT,3012)
     3012 FORMAT('***** FROM DPFUEV, BEFORE THE CALL TO DPEXFU--')
          IF(IBUGA3.EQ.'ON')CALL DPWRST('XXX','BUG ')
    C
          DO3018I=1,N2
            IA(I)=IFUNC2(I)
            ITEMP=ICHAR(IFUNC2(I)(1:1))
            IF(ITEMP.GE.97 .AND. ITEMP.LE.122)THEN
              ITEMP=ITEMP-32
              IFUNC2(I)(1:1)=CHAR(ITEMP)
            ENDIF
     3018 CONTINUE
    C
          CALL DPEXFU(IFUNC2,N2,IHNAME,IHNAM2,IUSE,IVSTAR,IVSTOP,
         1NUMNAM,IANS,IWIDTH,IFUNC,NUMCHF,MAXCHF,IFUNC3,N3,MAXN3,
         1IBUGA3,IERROR)
          IF(IBUGA3.EQ.'ON')WRITE(ICOUT,3013)
     3013 FORMAT('***** FROM DPFUEV, AFTER  THE CALL TO DPEXFU--')
          IF(IBUGA3.EQ.'ON')CALL DPWRST('XXX','BUG ')
          IF(IERROR.EQ.'YES')GOTO19000
    C
          J=0
          DO3380I=1,N3
            J=J+1
            IA(J)=IFUNC3(I)
            ITEMP=ICHAR(IA(J)(1:1))
            IF(ITEMP.GE.97 .AND. ITEMP.LE.122)THEN
              ITEMP=ITEMP-32
              IA(J)(1:1)=CHAR(ITEMP)
            ENDIF
     3380 CONTINUE
          NUMCHA=J
          GOTO3500
    C
     3400 CONTINUE
          WRITE(ICOUT,3411)
     3411 FORMAT('***** INTERNAL ERROR IN DPFUEV')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3412)
     3412 FORMAT('      AT BRANCH POINT 3400--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3413)
     3413 FORMAT('      ISTART GREATER THAN ISTOP.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3418)
     3418 FORMAT('      THE COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3419)(IANS(I),I=1,IWIDTH)
     3419 FORMAT(80A1)
          CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     3500 CONTINUE
          ICASER='UNKN'
    C
          IPASS=1
          IF(IBUGA3.EQ.'ON')WRITE(ICOUT,3014)
     3014 FORMAT('***** FROM DPFUEV, BEFORE THE CALL TO COMPIM--')
          IF(IBUGA3.EQ.'ON')CALL DPWRST('XXX','BUG ')
          CALL COMPIM(IA,NUMCHA,IPASS,PARAM,IPARN,IPARN2,NUMPAR,
         1IANGLU,ITYPEH,IW21HO,IW22HO,W2HOLD,NWHOLD,AJUNK,
         1IBUGCO,IBUGEV,IERROR)
          IF(IBUGA3.EQ.'ON')WRITE(ICOUT,3015)
     3015 FORMAT('***** FROM DPFUEV, AFTER  THE CALL TO COMPIM--')
          IF(IBUGA3.EQ.'ON')CALL DPWRST('XXX','BUG ')
          IF(IERROR.EQ.'YES')GOTO19000
    C
          NUMP=0
          NUMV=0
          NIOLDR=0
          IVOLDR='JUNK'
          IVOLR2='JUNK'
          IF(NUMPAR.EQ.0)GOTO3900
          DO3600J=1,NUMPAR
          DO3700I=1,NUMNAM
          I2=I
          IF(IPARN(J).EQ.IHNAME(I).AND.IPARN2(J).EQ.IHNAM2(I).AND.
         1IUSE(I).EQ.'P')GOTO3850
          IF(IPARN(J).EQ.IHNAME(I).AND.IPARN2(J).EQ.IHNAM2(I).AND.
         1IUSE(I).EQ.'V')GOTO3870
     3700 CONTINUE
          GOTO3800
    C
     3850 CONTINUE
          NUMP=NUMP+1
          GOTO3600
    C
     3870 CONTINUE
          NUMV=NUMV+1
          NIRIGH=IN(I2)
          NIOLDR=NINEWR
          IVOLDR=IVNEWR
          IVOLR2=IVNER2
          NINEWR=IN(I2)
          IVNEWR=IHNAME(I2)
          IVNER2=IHNAM2(I2)
          IF(NUMV.GE.2.AND.NINEWR.NE.NIOLDR)GOTO3820
          GOTO3600
    C
     3600 CONTINUE
          GOTO3900
    C
     3800 CONTINUE
          WRITE(ICOUT,3801)
     3801 FORMAT('***** ERROR IN DPFUEV--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3802)
     3802 FORMAT('      A VARIABLE OR PARAMETER NAME USED')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3803)
     3803 FORMAT('      IN AN EXPRESSION IS NOT YET DEFINED.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3804)IPARN(J),IPARN2(J)
     3804 FORMAT('      VARIABLE OR PARAMETER NAME = ',A4,A4)
          CALL DPWRST('XXX','BUG ')
          GOTO3809
    CCCCC WRITE(ICOUT,999)
    CCCCC CALL DPWRST('XXX','BUG ')
    CCCCC WRITE(ICOUT,3805)
    C3805 FORMAT('      CURRENT LIST OF DEFINED VARIABLES AND ',
    CCCCC CALL DPWRST('XXX','BUG ')
    CCCCC1'PARAMETERS--')
    CCCCC WRITE(ICOUT,999)
    CCCCC CALL DPWRST('XXX','BUG ')
    CCCCC DO3806I2=1,NUMNAM
    CCCCC WRITE(ICOUT,3807)IHNAME(I2),IHNAM2(I2),IUSE(I2),IVALUE(I2),
    CCCCC CALL DPWRST('XXX','BUG ')
    CCCCC1VALUE(I2),IN(I2)
    C3807 FORMAT(6X,A4,A4,6X,A4,6X,I6,6X,E15.6,I6)
    C3806 CONTINUE
    CCCCC WRITE(ICOUT,999)
    CCCCC CALL DPWRST('XXX','BUG ')
    CCCCC WRITE(ICOUT,3808)(IA(I),I=1,NUMCHA)
    C3808 FORMAT('      FUNCTION EXPRESSION--'100A1)
    CCCCC CALL DPWRST('XXX','BUG ')
     3809 CONTINUE
          IERROR='YES'
          GOTO19000
    C
     3820 CONTINUE
          WRITE(ICOUT,3821)
     3821 FORMAT('***** ERROR IN DPFUEV--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3822)
     3822 FORMAT('      ALL VARIABLES USED')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3823)
     3823 FORMAT('      IN A FUNCTIONAL EXPRESSION')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3824)
     3824 FORMAT('      MUST HAVE THE SAME LENGTH')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3825)
     3825 FORMAT('      (NUMBER OF ELEMENTS);')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3826)
     3826 FORMAT('      SUCH WAS NOT THE CASE HERE FOR--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3827)IVOLDR,IVOLR2,NIOLDR
     3827 FORMAT('      VARIABLE ',A4,A4,' WITH ',I8,' ELEMENTS')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3828)IVNEWR,IVNER2,NINEWR
     3828 FORMAT('      VARIABLE ',A4,A4,' WITH ',I8,' ELEMENTS')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,3829)
     3829 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,3830)(IANS(I),I=1,IWIDTH)
     3830 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     3900 CONTINUE
          ICASER='VAR'
          IF(NUMV.LE.0)ICASER='PARA'
    C
     3990 CONTINUE
    C
    C               *******************************
    C               **  STEP 4--                 **
    C               **  DETERMINE THE SUBCASE    **
    C               **  AND BRANCH ACCORDINGLY.  **
    C               *******************************
    C
          ISTEPN='4'
          IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
    C
          IARG4F=IFOUNZ(4)
          IARG4T=ITYPE(4)
          IARG4I=INT1(4)
          IF(IBUGA3.EQ.'ON')WRITE(ICOUT,4001)ICASEL,ICASER,ICASEQ,
         1IARG4F,IARG4T
     4001 FORMAT('***** IN DPFUEV, AT START OF STEP 4; ',
         1'ICASEL,ICASER,ICASEQ,IARG4F,IARG4T = ',
         1A4,1X,A4,1X,A4,1X,A4,1X,A4)
          IF(IBUGA3.EQ.'ON')CALL DPWRST('XXX','BUG ')
    C
          IF(ICASEQ.EQ.'FULL')GOTO4100
          IF(ICASEQ.EQ.'SUBS')GOTO4200
          IF(ICASEQ.EQ.'FOR')GOTO4300
          IF(ICASEQ.EQ.'IF')GOTO4100
    C
     4100 CONTINUE
          IF(IBUGA3.EQ.'OFF')GOTO4119
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,4111)
     4111 FORMAT('***** IN MIDDLE OF DPFUEV, AT 4100--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,4112)ICASEL,ICASER,IHOL(4),IHOL2(4)
     4112 FORMAT('ICASEL,ICASER,IHOL(4),IHOL2(4) = ',
         1A4,2X,A4,2X,A4,2X,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,4113)IARG4F,IARG4T,IARG4I
     4113 FORMAT('IARG4F,IARG4T,IARG4I = ',A4,2X,A4,I8)
          CALL DPWRST('XXX','BUG ')
     4119 CONTINUE
    C
          IF(ICASEL.EQ.'PARA'.AND.IARG4F.EQ.'NO'.AND.ICASER.EQ.'PARA')
         1GOTO5000
          IF(ICASEL.EQ.'PARA'.AND.IARG4F.EQ.'NO'.AND.ICASER.EQ.'ELEM')
         1GOTO5000
          IF(ICASEL.EQ.'VAR'.AND.IARG4F.EQ.'NO'.AND.ICASER.EQ.'VAR')
         1GOTO7000
    C
          IF(ICASEL.EQ.'VAR'.AND.IARG4F.EQ.'YES'.AND.IHOL(4).EQ.'I   '.AND.
         1IHOL2(4).EQ.'    ')GOTO6000
          IF(ICASEL.EQ.'VAR'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'WORD'.AND.
         1IARG4I.LE.0)GOTO7000
          IF(ICASEL.EQ.'VAR'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'WORD'.AND.
         1IARG4I.GE.1)GOTO6000
          IF(ICASEL.EQ.'VAR'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'NUMB'
         1.AND.ICASER.EQ.'PARA')GOTO6000
          IF(ICASEL.EQ.'VAR'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'NUMB'
         1.AND.ICASER.EQ.'ELEM')GOTO6000
    C
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'NO'.AND.ICASER.EQ.'PARA')
         1GOTO5000
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'NO'.AND.ICASER.EQ.'ELEM')
         1GOTO5000
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'NO'.AND.ICASER.EQ.'VAR')
         1GOTO7000
    C
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'WORD'
         1.AND.IARG4I.LE.0.AND.ICASER.EQ.'VAR')GOTO7000
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'WORD'
         1.AND.IARG4I.GE.1.AND.ICASER.EQ.'VAR')GOTO6000
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'WORD'
         1.AND.IARG4I.GE.1.AND.ICASER.EQ.'PARA')GOTO6000
    CCCCC THE FOLLOWING 2 LINES WERE INSERTED TO SOLVE    (DECEMBER 1988)
    CCCCC THE PROBLEM OF AN ERROR MESSAGE AND NO-ACTION    (DECEMBER 1988)
    CCCCC FROM (E.G.,) LET Y(K) = X(K) INSIDE A LOOP   (DECEMBER 1988)
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'WORD'
         1.AND.IARG4I.GE.1.AND.ICASER.EQ.'ELEM')GOTO6000
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'NUMB'
         1.AND.ICASER.EQ.'PARA')GOTO6000
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'NUMB'
         1.AND.ICASER.EQ.'ELEM')GOTO6000
          GOTO4800
    C
     4200 CONTINUE
          IF(ICASEL.EQ.'VAR'.AND.IARG4F.EQ.'NO')
         1GOTO8000
          IF(ICASEL.EQ.'VAR'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'WORD')
         1GOTO8000
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'NO')
         1GOTO8000
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'WORD')
         1GOTO8000
          GOTO4800
    C
     4300 CONTINUE
          IF(ICASEL.EQ.'VAR'.AND.IARG4F.EQ.'NO')
         1GOTO9000
          IF(ICASEL.EQ.'VAR'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'WORD')
         1GOTO9000
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'NO')
         1GOTO9000
          IF(ICASEL.EQ.'UNKN'.AND.IARG4F.EQ.'YES'.AND.IARG4T.EQ.'WORD')
         1GOTO9000
          GOTO4800
    C
     4800 CONTINUE
          WRITE(ICOUT,4811)
     4811 FORMAT('***** ERROR IN DPFUEV--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,4812)
     4812 FORMAT('      ILLEGAL SYNTAX FOR LET COMMAND')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,4814)
     4814 FORMAT('      POSSIBLE CAUSE--UNDEFINED PARAMETER/VARIABLE')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,4815)
     4815 FORMAT('      ON RIGHT-HAND SIDE OF EQUAL SIGN.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,4816)ICASEL,ICASER,ICASEQ
     4816 FORMAT(6X,'ICASEL, ICASER, ICASEQ = ',A4,2X,A4,2X,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,4818)
     4818 FORMAT('      THE COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,4819)(IANS(I),I=1,IWIDTH)
     4819 FORMAT(80A1)
          CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
    C               *****************************************************
    C               **  STEP 5--                                       **
    C               **  TREAT THE PARAMETER CASE.                      **
    C               **  EXAMPLES--                                     **
    C               **            LET A    = X(2)                      **
    C               **            LET A    = 3*SIN(4)                  **
    C               **            LET A    = B*SIN(B)                  **
    C               **            LET U    = X(2)                      **
    C               **            LET U    = 3*SIN(4)                  **
    C               **            LET U    = B*SIN(B)                  **
    C               **  WHERE A WAS A PREVIOUSLY-DEFINED PARAMETER     **
    C               **  AND WHERE U WAS PREVIOUSLY UNDEFINED.          **
    C               **  CARRY OUT THE LIST UPDATING  AND               **
    C               **  GENERATE THE INFORMATIVE PRINTING.             **
    C               **  THEN EXIT.                                     **
    C               *****************************************************
    C
     5000 CONTINUE
          ISTEPN='5'
          IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
    C
          IF(ICASEQ.EQ.'IF')GOTO5050
          GOTO5090
     5050 CONTINUE
          ICASIF='TRUE'
          IHSET=IHOL(12)
          IHSET2=IHOL2(12)
          IHWUSE='P'
          MESSAG='YES'
          CALL CHECKN(IHSET,IHSET2,IHWUSE,
         1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
         1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOC,IERROR)
          IF(IERROR.EQ.'YES')GOTO19000
    C
          NISET=IN(ILOC)
          CALL DPIF(ILOCS,ICASIF,IBUGQ,IERROR)
     5090 CONTINUE
    C
          IF(ICASER.EQ.'ELEM')GOTO5200
          IF(ICASER.EQ.'PARA')GOTO5300
    C
     5100 CONTINUE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5101)
     5101 FORMAT('***** INTERNAL ERROR IN DPFUEV')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5102)
     5102 FORMAT('      AT BRANCH POINT 5101--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5103)ICASER
     5103 FORMAT('      ICASER = ',A4,' DETECTED')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5104)
     5104 FORMAT('      IN STEP 5 (PARAMETER CALCULATION).')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5106)
     5106 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,5107)(IANS(I),I=1,IWIDTH)
     5107 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     5200 CONTINUE
          IF(ICASEQ.EQ.'IF'.AND.ICASIF.EQ.'FALS')GOTO5119
          IARG9I=INT1(9)
          IJ=MAXN*(ICOLR-1)+IARG9I
          IF(ICOLR.LE.MAXCOL)RIGHT=V(IJ)
          IF(ICOLR.EQ.MAXCP1)RIGHT=PRED(IARG9I)
          IF(ICOLR.EQ.MAXCP2)RIGHT=RES(IARG9I)
          IF(ICOLR.EQ.MAXCP3)RIGHT=YPLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP4)RIGHT=XPLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP5)RIGHT=X2PLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP6)RIGHT=TAGPLO(IARG9I)
          GOTO5500
    C
     5300 CONTINUE
          IF(ICASEQ.EQ.'IF'.AND.ICASIF.EQ.'FALS')GOTO5119
          IF(NUMPAR.LE.0)GOTO5490
          DO5400J=1,NUMPAR
          IPJ=IPARN(J)
          IPJ2=IPARN2(J)
          DO5450I=1,NUMNAM
          I2=I
          IF(IPJ.EQ.IHNAME(I).AND.IPJ2.EQ.IHNAM2(I).AND.
         1IUSE(I).EQ.'P')GOTO5460
     5450 CONTINUE
          GOTO5480
     5460 CONTINUE
          PARAM(J)=VALUE(I2)
     5400 CONTINUE
          GOTO5490
    C
     5480 CONTINUE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5481)
     5481 FORMAT('***** INTERNAL ERROR IN DPFUEV')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5482)
     5482 FORMAT('      AT BRANCH POINT 5481--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5483)
     5483 FORMAT('      PARAMETER NAME FOR FUNCTION EVALUATION')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5484)
     5484 FORMAT('      NOT FOUND IN INTERNAL LIST.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5485)IPJ,IPJ2
     5485 FORMAT('      PARAMETER NAME = ',A4,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5486)
     5486 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,5487)(IANS(I),I=1,IWIDTH)
     5487 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     5490 CONTINUE
          IPASS=2
          CALL COMPIM(IA,NUMCHA,IPASS,PARAM,IPARN,IPARN2,NUMPAR,
         1IANGLU,ITYPEH,IW21HO,IW22HO,W2HOLD,NWHOLD,RIGHT,
         1IBUGCO,IBUGEV,IERROR)
          IF(IERROR.EQ.'YES')GOTO19000
          GOTO5500
    C
     5500 CONTINUE
          IFOUND='YES'
          IHNAME(ILISTL)=ILEFT
          IHNAM2(ILISTL)=ILEFT2
          IUSE(ILISTL)='P'
          VALUE(ILISTL)=RIGHT
    CCCCC IVALUE(ILISTL)=VALUE(ILISTL)+0.5
    C
    CCCCC MARCH 2002.  CHANGE CODE BELOW.  BASE ON LARGEST INTEGER AS
    CCCCC GIVEN IN DPCOMC.
    CCCCC CUTOFF=2**(NUMBPW-3)
    C3/02 ICUTMX=NUMBPW
    C3/02 IF(IHOST1.EQ.'CDC '.OR.IHOST1.EQ.'CYBE')ICUTMX=48
    CCCCC THE FOLLOWING LINE WAS ADDED FEBRUARY 1989
    C3/02 IF(IHOST1.EQ.'205 ')ICUTMX=48
    C3/02 CUTOFF=2**(ICUTMX-3)
          CUTOFF=REAL(I1MACH(9)-1)
    C
          IF((-CUTOFF).LE.RIGHT.AND.RIGHT.LE.CUTOFF)THEN
            IVALUE(ILISTL)=RIGHT+0.5
          ELSEIF(RIGHT.GT.CUTOFF)THEN
            IVALUE(ILISTL)=I1MACH(9)-1
          ELSEIF(RIGHT.LT.(-CUTOFF))THEN
            IVALUE(ILISTL)=-(I1MACH(9)-1)
          ELSE
            IVALUE(ILISTL)=0
          ENDIF
          IN(ILISTL)=1
    C
          IF(NEWNAM.EQ.'YES')NUMNAM=NUMNAM+1
    C
          IF(IPRINT.EQ.'OFF')GOTO5119
          IF(IFEEDB.EQ.'OFF')GOTO5119
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,5111)ILEFT,ILEFT2,RIGHT
     5111 FORMAT('THE COMPUTED VALUE OF THE CONSTANT ',
         1A4,A4,' = ',E15.7)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
     5119 CONTINUE
          GOTO19000
    C
    C               *****************************************************
    C               **  STEP 6--                                       **
    C               **  TREAT THE ELEMENT SPECIFICATION CASE.          **
    C               **  EXAMPLES--                                     **
    C               **            LET Y(2) = X(2)                      **
    C               **            LET Y(2) = 3*SIN(4)                  **
    C               **            LET Y(2) = B*SIN(B)                  **
    C               **            LET U(2) = X(2)                      **
    C               **            LET U(2) = 3*SIN(4)                  **
    C               **            LET U(2) = B*SIN(B)                  **
    C               **  WHERE Y WAS A PREVIOUSLY-DEFINED VARIABLE      **
    C               **  AND WHERE U WAS PREVIOUSLY UNDEFINED.          **
    C               **  CARRY OUT THE LIST UPDATING  AND               **
    C               **  GENERATE THE INFORMATIVE PRINTING.             **
    C               **  THEN EXIT.                                     **
    C               *****************************************************
    C
     6000 CONTINUE
          ISTEPN='6'
          IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
    C
          IARG4I=INT1(4)
    C
          IF(1.LE.IARG4I.AND.IARG4I.LE.MAXN)GOTO6050
          WRITE(ICOUT,6061)
     6061 FORMAT('***** ERROR IN DPFUEV')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6062)IARG4I,ILEFT,ILEFT2
     6062 FORMAT('      THE SPECIFIED ROW (',I8,') OF VARIABLE ',A4,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6063)
     6063 FORMAT('      ON THE LEFT SIDE OF THE EQUAL SIGN')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6064)
     6064 FORMAT('      WAS LESS THAN 1 OR')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6065)MAXN
     6065 FORMAT('      GREATER THAN THE MAX ALLOWABLE ',I8)
          CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     6050 CONTINUE
          IF(ICASEL.EQ.'VAR')ICOLL=IVALUE(ILISTL)
          IF(ICASEL.EQ.'UNKN')ICOLL=NUMCOL+1
          IF(ICOLL.LE.MAXCOL)GOTO6090
          WRITE(ICOUT,6051)
     6051 FORMAT('***** ERROR IN DPFUEV AT 6051--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6052)
     6052 FORMAT('      THE NUMBER OF DATA COLUMNS')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6053)MAXCOL
     6053 FORMAT('      HAS JUST EXCEEDED THE MAX ALLOWABLE ',I8,'  .')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6054)
     6054 FORMAT('      SUGGESTED ACTION--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6055)
     6055 FORMAT('      ENTER      STAT')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6056)
     6056 FORMAT('      TO FIND OUT THE FULL LIST OF USED COLUMNS')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6057)
     6057 FORMAT('      AND THEN OVERWRITE SOME COLUMN.   ')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6058)
     6058 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,6059)(IANS(I),I=1,IWIDTH)
     6059 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     6090 CONTINUE
          IF(ICASEL.EQ.'VAR'.AND.IARG4I.LE.NILEFT)NINEW=NILEFT
          IF(ICASEL.EQ.'VAR'.AND.IARG4I.GT.NILEFT)NINEW=IARG4I
          IF(ICASEL.EQ.'UNKN')NINEW=IARG4I
    C
          IF(ICASER.EQ.'ELEM')GOTO6200
          IF(ICASER.EQ.'PARA')GOTO6300
    C
     6100 CONTINUE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6101)
     6101 FORMAT('***** INTERNAL ERROR IN DPFUEV')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6102)
     6102 FORMAT('      AT BRANCH POINT 6101--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6103)ICASER
     6103 FORMAT('      ICASER = ',A4,' DETECTED')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6104)
     6104 FORMAT('      IN STEP 6 (ELEMENT CALCULATION).')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6106)
     6106 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,6107)(IANS(I),I=1,IWIDTH)
     6107 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     6200 CONTINUE
          IARG9I=INT1(9)
          IJ=MAXN*(ICOLR-1)+IARG9I
          IF(ICOLR.LE.MAXCOL)RIGHT=V(IJ)
          IF(ICOLR.EQ.MAXCP1)RIGHT=PRED(IARG9I)
          IF(ICOLR.EQ.MAXCP2)RIGHT=RES(IARG9I)
          IF(ICOLR.EQ.MAXCP3)RIGHT=YPLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP4)RIGHT=XPLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP5)RIGHT=X2PLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP6)RIGHT=TAGPLO(IARG9I)
          IJ=MAXN*(ICOLL-1)+IARG4I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(IARG4I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(IARG4I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(IARG4I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(IARG4I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(IARG4I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(IARG4I)=RIGHT
          GOTO6500
    C
     6300 CONTINUE
          IF(NUMPAR.LE.0)GOTO6490
          DO6400J=1,NUMPAR
          IPJ=IPARN(J)
          IPJ2=IPARN2(J)
          DO6450I=1,NUMNAM
          I2=I
          IF(IPJ.EQ.IHNAME(I).AND.IPJ2.EQ.IHNAM2(I).AND.
         1IUSE(I).EQ.'P')GOTO6460
     6450 CONTINUE
          GOTO6480
     6460 CONTINUE
          PARAM(J)=VALUE(I2)
     6400 CONTINUE
          GOTO6490
    C
     6480 CONTINUE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6481)
     6481 FORMAT('***** INTERNAL ERROR IN DPFUEV')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6482)
     6482 FORMAT('      AT BRANCH POINT 6481--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6483)
     6483 FORMAT('      PARAMETER NAME FOR FUNCTION EVALUATION')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6484)
     6484 FORMAT('      NOT FOUND IN INTERNAL LIST.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6485)IPJ,IPJ2
     6485 FORMAT('      PARAMETER NAME = ',A4,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6486)
     6486 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,6487)(IANS(I),I=1,IWIDTH)
     6487 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     6490 CONTINUE
          IPASS=2
          CALL COMPIM(IA,NUMCHA,IPASS,PARAM,IPARN,IPARN2,NUMPAR,
         1IANGLU,ITYPEH,IW21HO,IW22HO,W2HOLD,NWHOLD,RIGHT,
         1IBUGCO,IBUGEV,IERROR)
          IF(IERROR.EQ.'YES')GOTO19000
          IJ=MAXN*(ICOLL-1)+IARG4I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(IARG4I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(IARG4I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(IARG4I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(IARG4I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(IARG4I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(IARG4I)=RIGHT
          GOTO6500
    C
     6500 CONTINUE
          IFOUND='YES'
          IHNAME(ILISTL)=ILEFT
          IHNAM2(ILISTL)=ILEFT2
          IUSE(ILISTL)='V'
          IVALUE(ILISTL)=ICOLL
          VALUE(ILISTL)=ICOLL
          IN(ILISTL)=NINEW
    C
    CCCCC IUSE(ICOLL)='V'
    CCCCC IVALUE(ICOLL)=ICOLL
    CCCCC VALUE(ICOLL)=ICOLL
    CCCCC IN(ICOLL)=NINEW
    C
          IF(NEWNAM.EQ.'YES')NUMNAM=NUMNAM+1
          IF(NEWNAM.EQ.'YES')NUMCOL=NUMCOL+1
    C
          DO6600J4=1,NUMNAM
          IF(IUSE(J4).EQ.'V'.AND.IVALUE(J4).EQ.ICOLL)GOTO6605
          GOTO6600
     6605 CONTINUE
          IUSE(J4)='V'
          IVALUE(J4)=ICOLL
          VALUE(J4)=ICOLL
          IN(J4)=NINEW
     6600 CONTINUE
    C
          IF(IPRINT.EQ.'OFF')GOTO6119
          IF(IFEEDB.EQ.'OFF')GOTO6119
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6111)ILEFT,ILEFT2,IARG4I,RIGHT
     6111 FORMAT('THE COMPUTED VALUE OF ',
         1A4,A4,'(',I6,') = ',E15.7)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6112)ILEFT,ILEFT2,ICOLL
     6112 FORMAT('THE CURRENT COLUMN FOR ',
         1'THE VARIABLE ',A4,A4,' = ',I8)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,6113)ILEFT,ILEFT2,NINEW
     6113 FORMAT('THE CURRENT LENGTH OF  ',
         1'THE VARIABLE ',A4,A4,' = ',I8)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
     6119 CONTINUE
          GOTO19000
    C
    C               *****************************************************
    C               **  STEP 7--                                       **
    C               **  TREAT THE FULL VARIABLE CASE.                  **
    C               **  EXAMPLES--                                     **
    C               **            LET Y    = X*SIN(X)                  **
    C               **            LET Y(I) = I                         **
    C               **            LET Y(I) = X(2)                      **
    C               **            LET Y(I) = 3*SIN(4)                  **
    C               **            LET Y(I) = B*SIN(B)                  **
    C               **            LET Y(I) = X*SIN(X)                  **
    C               **            LET U    = X*SIN(X)                  **
    C               **            LET U(I) = X*SIN(X)                  **
    C               **  WHERE Y WAS A PREVIOUSLY-DEFINED VARIABLE      **
    C               **  AND WHERE U WAS PREVIOUSLY UNDEFINED.          **
    C               **  THEN JUMP TO STEP NUMBER 10 BELOW              **
    C               **  FOR THE THE LIST UPDATING AND                  **
    C               **  GENERATE THE INFORMATIVE PRINTING.             **
    C               **  THEN EXIT.                                     **
    C               *****************************************************
    C
     7000 CONTINUE
          ISTEPN='7'
          IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
    C
          IF(ICASEL.EQ.'VAR')ICOLL=IVALUE(ILISTL)
          IF(ICASEL.EQ.'UNKN')ICOLL=NUMCOL+1
    CCCCC IF(ILEFT.EQ.'PRED'.AND.ILEFT2.EQ.'    ')GOTO7090  MARCH 1988
    CCCCC IF(ILEFT.EQ.'RES '.AND.ILEFT2.EQ.'    ')GOTO7090  MARCH 1988
          IF(ICOLL.LE.MAXCOL)GOTO7090
    CCCCC THE FOLLOWING LINE WAS INSERTED MARCH 1988
    CCCCC TO FIX THE PROBLEM OF LET PRED = ... SUBSET ...
    CCCCC YIELDING A "TOO MANY VARIABLES" MESSAGE
          IF(ICASEL.EQ.'VAR')GOTO7090
          WRITE(ICOUT,7051)
     7051 FORMAT('***** ERROR IN DPFUEV AT 7051--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7052)ICOLL
     7052 FORMAT('      THE NUMBER OF DATA COLUMNS (',I8,')')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7053)MAXCOL
     7053 FORMAT('      HAS JUST EXCEEDED THE MAX ALLOWABLE (',I8,').')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7054)
     7054 FORMAT('      SUGGESTED ACTION--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7055)
     7055 FORMAT('      ENTER      STAT')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7056)
     7056 FORMAT('      TO FIND OUT THE FULL LIST OF USED COLUMNS')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7057)
     7057 FORMAT('      AND THEN OVERWRITE SOME COLUMN.   ')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7058)
     7058 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,7059)(IANS(I),I=1,IWIDTH)
     7059 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     7090 CONTINUE
          NINEW=NILEFT
          IF(ICASER.EQ.'VAR')NINEW=NIRIGH
    C
          IF(ICASER.EQ.'DUMM')GOTO7100
          IF(ICASER.EQ.'ELEM')GOTO7200
          IF(ICASER.EQ.'PARA')GOTO7300
          IF(ICASER.EQ.'VAR')GOTO7300
    C
     7100 CONTINUE
          NS2=0
          DO7150I=1,NINEW
          NS2=NS2+1
          RIGHT=I
          IJ=MAXN*(ICOLL-1)+I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=RIGHT
          IF(NS2.EQ.1)IROW1=I
          IROWN=I
     7150 CONTINUE
          GOTO10000
    C
     7200 CONTINUE
          IARG9I=INT1(9)
          IJ=MAXN*(ICOLR-1)+IARG9I
          IF(ICOLR.LE.MAXCOL)RIGHT=V(IJ)
          IF(ICOLR.EQ.MAXCP1)RIGHT=PRED(IARG9I)
          IF(ICOLR.EQ.MAXCP2)RIGHT=RES(IARG9I)
          IF(ICOLR.EQ.MAXCP3)RIGHT=YPLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP4)RIGHT=XPLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP5)RIGHT=X2PLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP6)RIGHT=TAGPLO(IARG9I)
          NS2=0
          DO7250I=1,NINEW
          NS2=NS2+1
          IJ=MAXN*(ICOLL-1)+I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=RIGHT
          IF(NS2.EQ.1)IROW1=I
          IROWN=I
     7250 CONTINUE
          GOTO10000
    C
     7300 CONTINUE
          IPASS=2
          NS2=0
          DO7350I=1,NINEW
          NS2=NS2+1
    C
          IF(NUMPAR.LE.0)GOTO7390
          DO7355J=1,NUMPAR
          IPJ=IPARN(J)
          IPJ2=IPARN2(J)
          DO7356K=1,NUMNAM
          K2=K
          IF(IPJ.EQ.IHNAME(K).AND.IPJ2.EQ.IHNAM2(K).AND.
         1IUSE(K).EQ.'P')GOTO7360
          IF(IPJ.EQ.IHNAME(K).AND.IPJ2.EQ.IHNAM2(K).AND.
         1IUSE(K).EQ.'V')GOTO7370
     7356 CONTINUE
          GOTO7380
    C
     7360 CONTINUE
          PARAM(J)=VALUE(K2)
          GOTO7355
    C
     7370 CONTINUE
          ICOLK2=IVALUE(K2)
          IJ=MAXN*(ICOLK2-1)+I
          IF(ICOLK2.LE.MAXCOL)PARAM(J)=V(IJ)
          IF(ICOLK2.EQ.MAXCP1)PARAM(J)=PRED(I)
          IF(ICOLK2.EQ.MAXCP2)PARAM(J)=RES(I)
          IF(ICOLK2.EQ.MAXCP3)PARAM(J)=YPLOT(I)
          IF(ICOLK2.EQ.MAXCP4)PARAM(J)=XPLOT(I)
          IF(ICOLK2.EQ.MAXCP5)PARAM(J)=X2PLOT(I)
          IF(ICOLK2.EQ.MAXCP6)PARAM(J)=TAGPLO(I)
     7355 CONTINUE
          GOTO7390
    C
     7380 CONTINUE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7381)
     7381 FORMAT('***** INTERNAL ERROR IN DPFUEV')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7382)
     7382 FORMAT('      AT BRANCH POINT 7381--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7383)
     7383 FORMAT('      PARAMETER/VARIABLE NAME FOR FUNCTION ',
         1'EVALUATION')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7384)
     7384 FORMAT('      NOT FOUND IN INTERNAL LIST.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7385)IPJ,IPJ2
     7385 FORMAT('      PARAMETER/VARIABLE NAME = ',A4,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,7386)
     7386 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,7387)(IANS(I3),I3=1,IWIDTH)
     7387 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     7390 CONTINUE
          CALL COMPIM(IA,NUMCHA,IPASS,PARAM,IPARN,IPARN2,NUMPAR,
         1IANGLU,ITYPEH,IW21HO,IW22HO,W2HOLD,NWHOLD,RIGHT,
         1IBUGCO,IBUGEV,IERROR)
          IF(IERROR.EQ.'YES')GOTO19000
          IJ=MAXN*(ICOLL-1)+I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=RIGHT
          IF(NS2.EQ.1)IROW1=I
          IROWN=I
     7350 CONTINUE
          GOTO10000
    C
    C               *****************************************************
    C               **  STEP 8--                                       **
    C               **  TREAT THE PARTIAL VARIABLE SUBSET CASE.        **
    C               **  EXAMPLES--                                     **
    C               **            LET Y    = I         SUBSET 2 3 5    **
    C               **            LET Y    = X(2)      SUBSET 2 3 5    **
    C               **            LET Y    = 3*SIN(4)  SUBSET 2 3 5    **
    C               **            LET Y    = B*SIN(B)  SUBSET 2 3 5    **
    C               **            LET Y    = X*SIN(X)  SUBSET 2 3 5    **
    C               **            LET Y(I) = I         SUBSET 2 3 5    **
    C               **            LET Y(I) = X(2)      SUBSET 2 3 5    **
    C               **            LET Y(I) = 3*SIN(4)  SUBSET 2 3 5    **
    C               **            LET Y(I) = B*SIN(B)  SUBSET 2 3 5    **
    C               **            LET Y(I) = X*SIN(X)  SUBSET 2 3 5    **
    C               **            LET U    = I         SUBSET 2 3 5    **
    C               **            LET U    = X(2)      SUBSET 2 3 5    **
    C               **            LET U    = 3*SIN(4)  SUBSET 2 3 5    **
    C               **            LET U    = B*SIN(B)  SUBSET 2 3 5    **
    C               **            LET U    = X*SIN(X)  SUBSET 2 3 5    **
    C               **            LET U(I) = I         SUBSET 2 3 5    **
    C               **            LET U(I) = X(2)      SUBSET 2 3 5    **
    C               **            LET U(I) = 3*SIN(4)  SUBSET 2 3 5    **
    C               **            LET U(I) = B*SIN(B)  SUBSET 2 3 5    **
    C               **            LET U(I) = X*SIN(X)  SUBSET 2 3 5    **
    C               **  WHERE Y WAS A PREVIOUSLY-DEFINED VARIABLE      **
    C               **  AND WHERE U WAS PREVIOUSLY UNDEFINED.          **
    C               **  THEN JUMP TO STEP NUMBER 10 BELOW              **
    C               **  FOR THE THE LIST UPDATING  AND                 **
    C               **  GENERATE THE INFORMATIVE PRINTING.             **
    C               **  THEN EXIT.                                     **
    C               *****************************************************
    C
     8000 CONTINUE
          ISTEPN='8'
          IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
    C
          IF(ICASEL.EQ.'VAR')ICOLL=IVALUE(ILISTL)
          IF(ICASEL.EQ.'UNKN')ICOLL=NUMCOL+1
          IF(ICOLL.LE.MAXCOL)GOTO8090
    CCCCC THE FOLLOWING LINE WAS INSERTED MARCH 1988
    CCCCC TO FIX THE PROBLEM OF LET PRED = ... SUBSET ...
    CCCCC YIELDING A "TOO MANY VARIABLES" MESSAGE
          IF(ICASEL.EQ.'VAR')GOTO8090
          WRITE(ICOUT,8051)
     8051 FORMAT('***** ERROR IN DPFUEV AT 8051--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8052)
     8052 FORMAT('      THE NUMBER OF DATA COLUMNS')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8053)MAXCOL
     8053 FORMAT('      HAS JUST EXCEEDED THE MAX ALLOWABLE ',I8,'  .')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8054)
     8054 FORMAT('      SUGGESTED ACTION--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8055)
     8055 FORMAT('      ENTER      STAT')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8056)
     8056 FORMAT('      TO FIND OUT THE FULL LIST OF USED COLUMNS')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8057)
     8057 FORMAT('      AND THEN OVERWRITE SOME COLUMN.   ')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8058)
     8058 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,8059)(IANS(I),I=1,IWIDTH)
     8059 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     8090 CONTINUE
          IHSET=IHOL(12)
          IHSET2=IHOL2(12)
          IHWUSE='V'
          MESSAG='YES'
          CALL CHECKN(IHSET,IHSET2,IHWUSE,
         1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
         1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOC,IERROR)
          IF(IERROR.EQ.'YES')GOTO19000
    C
          NISET=IN(ILOC)
          CALL DPSUBS(NISET,ILOCS,NS,IBUGQ,IERROR)
    C
          NINEW=NISET
          IF(ICASER.EQ.'VAR')NINEW=NIRIGH
    C
          IF(ICASER.EQ.'DUMM')GOTO8100
          IF(ICASER.EQ.'ELEM')GOTO8200
          IF(ICASER.EQ.'PARA')GOTO8300
          IF(ICASER.EQ.'VAR')GOTO8300
    C
     8100 CONTINUE
          NS2=0
          DO8150I=1,NISET
          IF(ISUB(I).EQ.0)GOTO8150
          NS2=NS2+1
          RIGHT=I
          IJ=MAXN*(ICOLL-1)+I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=RIGHT
          IF(NS2.EQ.1)IROW1=I
          IROWN=I
     8150 CONTINUE
          GOTO10000
    C
     8200 CONTINUE
          IARG9I=INT1(9)
          IJ=MAXN*(ICOLR-1)+IARG9I
    C ???????????
          IF(ICOLR.LE.MAXCOL)RIGHT=V(IJ)
          IF(ICOLR.EQ.MAXCP1)RIGHT=PRED(IARG9I)
          IF(ICOLR.EQ.MAXCP2)RIGHT=RES(IARG9I)
          IF(ICOLR.EQ.MAXCP3)RIGHT=YPLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP4)RIGHT=XPLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP5)RIGHT=X2PLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP6)RIGHT=TAGPLO(IARG9I)
          NS2=0
          DO8250I=1,NISET
          IF(ISUB(I).EQ.0)GOTO8250
          NS2=NS2+1
          IJ=MAXN*(ICOLL-1)+I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=RIGHT
          IF(NS2.EQ.1)IROW1=I
          IROWN=I
     8250 CONTINUE
          GOTO10000
    C
     8300 CONTINUE
          IPASS=2
          IMAX=NISET
          IF(NINEW.LT.IMAX)IMAX=NINEW
          NS2=0
          DO8350I=1,IMAX
          IF(ISUB(I).EQ.0)GOTO8350
          NS2=NS2+1
    C
          IF(NUMPAR.LE.0)GOTO8390
          DO8355J=1,NUMPAR
          IPJ=IPARN(J)
          IPJ2=IPARN2(J)
          DO8356K=1,NUMNAM
          K2=K
          IF(IPJ.EQ.IHNAME(K).AND.IPJ2.EQ.IHNAM2(K).AND.
         1IUSE(K).EQ.'P')GOTO8360
          IF(IPJ.EQ.IHNAME(K).AND.IPJ2.EQ.IHNAM2(K).AND.
         1IUSE(K).EQ.'V')GOTO8370
     8356 CONTINUE
          GOTO8380
    C
     8360 CONTINUE
          PARAM(J)=VALUE(K2)
          GOTO8355
    C
     8370 CONTINUE
          ICOLK2=IVALUE(K2)
          IJ=MAXN*(ICOLK2-1)+I
          IF(ICOLK2.LE.MAXCOL)PARAM(J)=V(IJ)
          IF(ICOLK2.EQ.MAXCP1)PARAM(J)=PRED(I)
          IF(ICOLK2.EQ.MAXCP2)PARAM(J)=RES(I)
          IF(ICOLK2.EQ.MAXCP3)PARAM(J)=YPLOT(I)
          IF(ICOLK2.EQ.MAXCP4)PARAM(J)=XPLOT(I)
          IF(ICOLK2.EQ.MAXCP5)PARAM(J)=X2PLOT(I)
          IF(ICOLK2.EQ.MAXCP6)PARAM(J)=TAGPLO(I)
     8355 CONTINUE
          GOTO8390
    C
     8380 CONTINUE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8381)
     8381 FORMAT('***** INTERNAL ERROR IN DPFUEV')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8382)
     8382 FORMAT('      AT BRANCH POINT 8381--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8383)
     8383 FORMAT('      PARAMETER/VARIABLE NAME FOR FUNCTION ',
         1'EVALUATION')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8384)
     8384 FORMAT('      NOT FOUND IN INTERNAL LIST.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8385)IPJ,IPJ2
     8385 FORMAT('      PARAMETER/VARIABLE NAME = ',A4,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,8386)
     8386 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,8387)(IANS(I3),I3=1,IWIDTH)
     8387 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     8390 CONTINUE
          CALL COMPIM(IA,NUMCHA,IPASS,PARAM,IPARN,IPARN2,NUMPAR,
         1IANGLU,ITYPEH,IW21HO,IW22HO,W2HOLD,NWHOLD,RIGHT,
         1IBUGCO,IBUGEV,IERROR)
          IF(IERROR.EQ.'YES')GOTO19000
          IJ=MAXN*(ICOLL-1)+I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=RIGHT
          IF(NS2.EQ.1)IROW1=I
          IROWN=I
     8350 CONTINUE
          GOTO10000
    C
    C               *****************************************************
    C               **  STEP 9--                                       **
    C               **  TREAT THE PARTIAL VARIABLE FOR CASE.           **
    C               **  EXAMPLES--                                     **
    C               **            LET Y    = I         FOR I = 1 2 10  **
    C               **            LET Y    = X(2)      FOR I = 1 2 10  **
    C               **            LET Y    = 3*SIN(4)  FOR I = 1 2 10  **
    C               **            LET Y    = B*SIN(B)  FOR I = 1 2 10  **
    C               **            LET Y    = X*SIN(X)  FOR I = 1 2 10  **
    C               **            LET Y(I) = I         FOR I = 1 2 10  **
    C               **            LET Y(I) = X(2)      FOR I = 1 2 10  **
    C               **            LET Y(I) = 3*SIN(4)  FOR I = 1 2 10  **
    C               **            LET Y(I) = B*SIN(B)  FOR I = 1 2 10  **
    C               **            LET Y(I) = X*SIN(X)  FOR I = 1 2 10  **
    C               **            LET U    = I         FOR I = 1 2 10  **
    C               **            LET U    = X(2)      FOR I = 1 2 10  **
    C               **            LET U    = 3*SIN(4)  FOR I = 1 2 10  **
    C               **            LET U    = B*SIN(B)  FOR I = 1 2 10  **
    C               **            LET U    = X*SIN(X)  FOR I = 1 2 10  **
    C               **            LET U(I) = I         FOR I = 1 2 10  **
    C               **            LET U(I) = X(2)      FOR I = 1 2 10  **
    C               **            LET U(I) = 3*SIN(4)  FOR I = 1 2 10  **
    C               **            LET U(I) = B*SIN(B)  FOR I = 1 2 10  **
    C               **            LET U(I) = X*SIN(X)  FOR I = 1 2 10  **
    C               **  WHERE Y WAS A PREVIOUSLY-DEFINED VARIABLE      **
    C               **  AND WHERE U WAS PREVIOUSLY UNDEFINED.          **
    C               **  THEN JUMP TO STEP NUMBER 10 BELOW              **
    C               **  FOR THE THE LIST UPDATING  AND                 **
    C               **  GENERATE THE INFORMATIVE PRINTING.             **
    C               **  THEN EXIT.                                     **
    C               *****************************************************
    C
     9000 CONTINUE
          ISTEPN='9'
          IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
    C
          IF(ICASEL.EQ.'VAR')ICOLL=IVALUE(ILISTL)
          IF(ICASEL.EQ.'UNKN')ICOLL=NUMCOL+1
          IF(ICOLL.LE.MAXCOL)GOTO9090
    CCCCC THE FOLLOWING LINE WAS INSERTED MARCH 1988
    CCCCC TO FIX THE PROBLEM OF LET PRED = ... SUBSET ...
    CCCCC YIELDING A "TOO MANY VARIABLES" MESSAGE
          IF(ICASEL.EQ.'VAR')GOTO9090
          WRITE(ICOUT,9051)
     9051 FORMAT('***** ERROR IN DPFUEV AT 9051--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9052)
     9052 FORMAT('      THE NUMBER OF DATA COLUMNS')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9053)MAXCOL
     9053 FORMAT('      HAS JUST EXCEEDED THE MAX ALLOWABLE ',I8,'  .')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9054)
     9054 FORMAT('      SUGGESTED ACTION--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9055)
     9055 FORMAT('      ENTER      STAT')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9056)
     9056 FORMAT('      TO FIND OUT THE FULL LIST OF USED COLUMNS')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9057)
     9057 FORMAT('      AND THEN OVERWRITE SOME COLUMN.   ')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9058)
     9058 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,9059)(IANS(I),I=1,IWIDTH)
     9059 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     9090 CONTINUE
          NIOLD=IN(ILISTL)
          CALL DPFOR(NIOLD,NIFOR,IROW1,IROWN,
         1NLOCAL,ILOCS,NS,IBUGQ,IERROR)
    C
          NINEW=NIFOR
          IF(ICASER.EQ.'VAR')NINEW=NIRIGH
    C
          IF(ICASER.EQ.'DUMM')GOTO9100
          IF(ICASER.EQ.'ELEM')GOTO9200
          IF(ICASER.EQ.'PARA')GOTO9300
          IF(ICASER.EQ.'VAR')GOTO9300
    C
     9100 CONTINUE
          NS2=0
          DO9150I=1,NIFOR
          IF(ISUB(I).EQ.0)GOTO9150
          NS2=NS2+1
          RIGHT=I
          IJ=MAXN*(ICOLL-1)+I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=RIGHT
          IF(NS2.EQ.1)IROW1=I
          IROWN=I
     9150 CONTINUE
          GOTO10000
    C
     9200 CONTINUE
          IARG9I=INT1(9)
          IJ=MAXN*(ICOLR-1)+IARG9I
          IF(ICOLR.LE.MAXCOL)RIGHT=V(IJ)
          IF(ICOLR.EQ.MAXCP1)RIGHT=PRED(IARG9I)
          IF(ICOLR.EQ.MAXCP2)RIGHT=RES(IARG9I)
          IF(ICOLR.EQ.MAXCP3)RIGHT=YPLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP4)RIGHT=XPLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP5)RIGHT=X2PLOT(IARG9I)
          IF(ICOLR.EQ.MAXCP6)RIGHT=TAGPLO(IARG9I)
          NS2=0
          DO9250I=1,NIFOR
          IF(ISUB(I).EQ.0)GOTO9250
          NS2=NS2+1
          IJ=MAXN*(ICOLL-1)+I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=RIGHT
          IF(NS2.EQ.1)IROW1=I
          IROWN=I
     9250 CONTINUE
          GOTO10000
    C
     9300 CONTINUE
          IPASS=2
          IMAX=NIFOR
          IF(NINEW.LT.IMAX)IMAX=NINEW
          NS2=0
          DO9350I=1,IMAX
          IF(ISUB(I).EQ.0)GOTO9350
          NS2=NS2+1
    C
          IF(NUMPAR.LE.0)GOTO9390
          DO9355J=1,NUMPAR
          IPJ=IPARN(J)
          IPJ2=IPARN2(J)
          DO9356K=1,NUMNAM
          K2=K
          IF(IPJ.EQ.IHNAME(K).AND.IPJ2.EQ.IHNAM2(K).AND.
         1IUSE(K).EQ.'P')GOTO9360
          IF(IPJ.EQ.IHNAME(K).AND.IPJ2.EQ.IHNAM2(K).AND.
         1IUSE(K).EQ.'V')GOTO9370
     9356 CONTINUE
          GOTO9380
    C
     9360 CONTINUE
          PARAM(J)=VALUE(K2)
          GOTO9355
    C
     9370 CONTINUE
          ICOLK2=IVALUE(K2)
          IJ=MAXN*(ICOLK2-1)+I
          IF(ICOLK2.LE.MAXCOL)PARAM(J)=V(IJ)
          IF(ICOLK2.EQ.MAXCP1)PARAM(J)=PRED(I)
          IF(ICOLK2.EQ.MAXCP2)PARAM(J)=RES(I)
          IF(ICOLK2.EQ.MAXCP3)PARAM(J)=YPLOT(I)
          IF(ICOLK2.EQ.MAXCP4)PARAM(J)=XPLOT(I)
          IF(ICOLK2.EQ.MAXCP5)PARAM(J)=X2PLOT(I)
          IF(ICOLK2.EQ.MAXCP6)PARAM(J)=TAGPLO(I)
     9355 CONTINUE
          GOTO9390
    C
     9380 CONTINUE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9381)
     9381 FORMAT('***** INTERNAL ERROR IN DPFUEV')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9382)
     9382 FORMAT('      AT BRANCH POINT 9381--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9393)
     9393 FORMAT('      PARAMETER/VARIABLE NAME FOR FUNCTION ',
         1'EVALUATION')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9384)
     9384 FORMAT('      NOT FOUND IN INTERNAL LIST.')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9385)IPJ,IPJ2
     9385 FORMAT('      PARAMETER/VARIABLE NAME = ',A4,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,9386)
     9386 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
          CALL DPWRST('XXX','BUG ')
          IF(IWIDTH.GE.1)WRITE(ICOUT,9387)(IANS(I3),I3=1,IWIDTH)
     9387 FORMAT(80A1)
          IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
          IERROR='YES'
          GOTO19000
    C
     9390 CONTINUE
          CALL COMPIM(IA,NUMCHA,IPASS,PARAM,IPARN,IPARN2,NUMPAR,
         1IANGLU,ITYPEH,IW21HO,IW22HO,W2HOLD,NWHOLD,RIGHT,
         1IBUGCO,IBUGEV,IERROR)
          IF(IERROR.EQ.'YES')GOTO19000
          IJ=MAXN*(ICOLL-1)+I
          IF(ICOLL.LE.MAXCOL)V(IJ)=RIGHT
          IF(ICOLL.EQ.MAXCP1)PRED(I)=RIGHT
          IF(ICOLL.EQ.MAXCP2)RES(I)=RIGHT
          IF(ICOLL.EQ.MAXCP3)YPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP4)XPLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=RIGHT
          IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=RIGHT
          IF(NS2.EQ.1)IROW1=I
          IROWN=I
     9350 CONTINUE
          GOTO10000
    C
    C               *******************************************
    C               **  STEP 10--                            **
    C               **  CARRY OUT THE LIST UPDATING AND      **
    C               **  GENERATE THE INFORMATIVE PRINTING    **
    C               **  FOR STEP NUMBERS 7, 8, AND 9 ABOVE.  **
    C               *******************************************
    C
    10000 CONTINUE
          IHNAME(ILISTL)=ILEFT
          IHNAM2(ILISTL)=ILEFT2
          IUSE(ILISTL)='V'
          IVALUE(ILISTL)=ICOLL
          VALUE(ILISTL)=ICOLL
          IN(ILISTL)=NINEW
    C
    CCCCC IUSE(ICOLL)='V'
    CCCCC IVALUE(ICOLL)=ICOLL
    CCCCC VALUE(ICOLL)=ICOLL
    CCCCC IN(ICOLL)=NINEW
    C
          IF(NEWNAM.EQ.'YES')NUMNAM=NUMNAM+1
          IF(NEWNAM.EQ.'YES')NUMCOL=NUMCOL+1
    C
          DO10100J4=1,NUMNAM
          IF(IUSE(J4).EQ.'V'.AND.IVALUE(J4).EQ.ICOLL)GOTO10105
          GOTO10100
    10105 CONTINUE
          IUSE(J4)='V'
          IVALUE(J4)=ICOLL
          VALUE(J4)=ICOLL
          IN(J4)=NINEW
    10100 CONTINUE
    C
          IF(IPRINT.EQ.'OFF')GOTO10099
          IF(IFEEDB.EQ.'OFF')GOTO10099
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,10011)ILEFT,ILEFT2,NS2
    10011 FORMAT('THE NUMBER OF VALUES GENERATED FOR ',
         1'THE VARIABLE ',A4,A4,' = ',I8)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          IJ=MAXN*(ICOLL-1)+IROW1
          IF(ICOLL.LE.MAXCOL)WRITE(ICOUT,10021)ILEFT,ILEFT2,V(IJ),IROW1
    10021 FORMAT('THE FIRST          COMPUTED VALUE OF ',A4,A4,
         1' = ',E13.6,' (ROW ',I5,')')
          IF(ICOLL.LE.MAXCOL)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP1)WRITE(ICOUT,10021)ILEFT,ILEFT2,PRED(IROW1),
         1IROW1
          IF(ICOLL.EQ.MAXCP1)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP2)WRITE(ICOUT,10021)ILEFT,ILEFT2,RES(IROW1),IROW1
          IF(ICOLL.EQ.MAXCP2)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP3)WRITE(ICOUT,10021)ILEFT,ILEFT2,YPLOT(IROW1),
         1IROW1
          IF(ICOLL.EQ.MAXCP3)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP4)WRITE(ICOUT,10021)ILEFT,ILEFT2,XPLOT(IROW1),
         1IROW1
          IF(ICOLL.EQ.MAXCP4)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP5)WRITE(ICOUT,10021)ILEFT,ILEFT2,X2PLOT(IROW1),
         1IROW1
          IF(ICOLL.EQ.MAXCP5)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP6)WRITE(ICOUT,10021)ILEFT,ILEFT2,TAGPLO(IROW1),
         1IROW1
          IF(ICOLL.EQ.MAXCP6)CALL DPWRST('XXX','BUG ')
    C
          IJ=MAXN*(ICOLL-1)+IROWN
          IF(ICOLL.LE.MAXCOL.AND.
         1NS2.NE.1)WRITE(ICOUT,10031)NS2,ILEFT,ILEFT2,V(IJ),IROWN
    10031 FORMAT('THE LAST (',I5,'TH) COMPUTED VALUE OF ',A4,A4,
         1' = ',E13.6,' (ROW ',I5,')')
          IF(ICOLL.LE.MAXCOL.AND.
         1NS2.NE.1)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP1.AND.
         1NS2.NE.1)WRITE(ICOUT,10031)NS2,ILEFT,ILEFT2,PRED(IROWN),IROWN
          IF(ICOLL.EQ.MAXCP1.AND.
         1NS2.NE.1)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP2.AND.
         1NS2.NE.1)WRITE(ICOUT,10031)NS2,ILEFT,ILEFT2,YPLOT(IROWN),IROWN
          IF(ICOLL.EQ.MAXCP2.AND.
         1NS2.NE.1)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP3.AND.
         1NS2.NE.1)WRITE(ICOUT,10031)NS2,ILEFT,ILEFT2,XPLOT(IROWN),IROWN
          IF(ICOLL.EQ.MAXCP3.AND.
         1NS2.NE.1)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP4.AND.
         1NS2.NE.1)WRITE(ICOUT,10031)NS2,ILEFT,ILEFT2,X2PLOT(IROWN),IROWN
          IF(ICOLL.EQ.MAXCP4.AND.
         1NS2.NE.1)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP5.AND.
         1NS2.NE.1)WRITE(ICOUT,10031)NS2,ILEFT,ILEFT2,TAGPLO(IROWN),IROWN
          IF(ICOLL.EQ.MAXCP5.AND.
         1NS2.NE.1)CALL DPWRST('XXX','BUG ')
          IF(ICOLL.EQ.MAXCP6.AND.
         1NS2.NE.1)WRITE(ICOUT,10031)NS2,ILEFT,ILEFT2,RES(IROWN),IROWN
          IF(ICOLL.EQ.MAXCP6.AND.
         1NS2.NE.1)CALL DPWRST('XXX','BUG ')
          IF(NS2.NE.1)GOTO10090
          WRITE(ICOUT,10041)
    10041 FORMAT('SINCE THE GENERATED SAMPLE SIZE WAS ONLY 1,')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,10042)
    10042 FORMAT('THE ABOVE VALUE WAS THE SOLE VALUE COMPUTED.')
          CALL DPWRST('XXX','BUG ')
    10090 CONTINUE
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,10092)ILEFT,ILEFT2,ICOLL
    10092 FORMAT('THE CURRENT COLUMN FOR ',
         1'THE VARIABLE ',A4,A4,' = ',I8)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,10093)ILEFT,ILEFT2,NINEW
    10093 FORMAT('THE CURRENT LENGTH OF  ',
         1'THE VARIABLE ',A4,A4,' = ',I8)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
    10099 CONTINUE
          GOTO19000
    C
    C               *****************
    C               **  STEP 90--  **
    C               **  EXIT       **
    C               *****************
    C
    19000 CONTINUE
    C
    C  RESTORE ORIGINAL FUNCTION TABLE
    C
          DO19001I=1,NUMCHF
            IFUNC(I)=IFSAVE(I)
    19001 CONTINUE
    C
          IF(IBUGA3.EQ.'OFF')GOTO19090
          WRITE(ICOUT,999)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,19011)
    19011 FORMAT('***** AT THE END       OF DPFUEV--')
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,19012)IBUGA3
    19012 FORMAT('IBUGA3 = ',A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,19013)IBUGCO,IBUGEV
    19013 FORMAT('IBUGCO,IBUGEV = ',A4,2X,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,19014)IBUGQ
    19014 FORMAT('IBUGQ = ',A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,19015)IANGLU
    19015 FORMAT('IANGLU = ',A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,19016)IFOUND,IERROR
    19016 FORMAT('IFOUND,IERROR = ',A4,2X,A4)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,19017)NUMNAM
    19017 FORMAT('NUMNAM = ',I8)
          CALL DPWRST('XXX','BUG ')
          WRITE(ICOUT,19018)ICASEQ,ICASIF
    19018 FORMAT('ICASEQ,ICASIF = ',A4,2X,A4)
          CALL DPWRST('XXX','BUG ')
          DO19020I=1,NUMNAM
          WRITE(ICOUT,19021)I,IHNAME(I),IHNAM2(I),IUSE(I),IVALUE(I),VALUE(I)
    19021 FORMAT('I,IHNAME(I),IHNAM2(I),IUSE(I),IVALUE(I),VALUE(I) = ',
         1I8,2X,A4,2X,A4,2X,A4,I8,E15.7)
          CALL DPWRST('XXX','BUG ')
    19020 CONTINUE
    19090 CONTINUE
    C
          RETURN
          END