1      SUBROUTINE DPUCDF(X,M,N,ALPHA,BETA,CDF)
2C
3C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
4C              FUNCTION VALUE FOR THE DOUBLY-PARETO UNIFORM
5C              DISTRIBUTION.
6C              THIS DISTRIBUTION HAS THE FOLLOWING CDF FUNCTION:
7C
8C              F(X;ALPHA,BETA,M,N) = K(M,N)*
9C
10C                  [N/(M+M*N+N)]*((BETA-ALPHA/(BETA-X))**M
11C                  X < ALPHA
12C
13C                  [(M*N*(X-ALPHA) + N*(BETA-ALPHA)]/
14C                  [(M+M*N+N)*(BETA-ALPHA)]
15C                  ALPHA  <= X <= BETA
16C
17C                  1 - [M/(M+M*N+N)]*((BETA-ALPHA/(X-ALPHA))**N
18C                  X > BETA
19C
20C     INPUT  ARGUMENTS--X      = THE DOUBLE PRECISION VALUE AT
21C                                WHICH THE CUMULATIVE DISTRIBUTION
22C                                FUNCTION IS TO BE EVALUATED.
23C                     --ALPHA  = THE DOUBLE PRECISION SHAPE PARAMETER
24C                       BETA   = THE DOUBLE PRECISION SHAPE PARAMETER
25C                       M      = THE DOUBLE PRECISION SHAPE PARAMETER
26C                       N      = THE DOUBLE PRECISION SHAPE PARAMETER
27C     OUTPUT ARGUMENTS--CDF    = THE DOUBLE PRECISION CUMULATIVE
28C                                DISTRIBUTION FUNCTION VALUE.
29C     OUTPUT--THE DOUBLE PRECISION CUMULATIVE DISTRIBUTION
30C             FUNCTION VALUE CDF.
31C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
32C     RESTRICTIONS--ALPHA < BETA, M, N > 0.
33C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
34C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
35C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
36C     LANGUAGE--ANSI FORTRAN.
37C     REFERENCES--SINGH, VAN DORP, MAZZUCHI "A NOVEL ASYMMETRIC
38C                 DISTRIBUTION WITH POWER TAILS",
39C                 DOWNLOADED FROM VAN DORP WEB SITE.
40C               --VAN DORP, SIGN, AND MAZZUCHI "THE DOUBLY-PARETO
41C                 UNIFORM DISTRIBUTION WITH APPLICATIONS IN
42C                 UNCERTAINTY ANALYSIS AND ECONOMETRICS",
43C                 DOWNLOADED FROM VAN DORP WEB SITE.
44C     WRITTEN BY--ALAN HECKERT
45C                 STATISTICAL ENGINEERING DIVISION
46C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
47C                 GAITHERSBURG, MD 20899-8980
48C                 PHONE:  301-975-2899
49C     ORIGINAL VERSION--OCTOBER   2007.
50C
51C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
52C
53C---------------------------------------------------------------------
54C
55      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
56      DOUBLE PRECISION M
57      DOUBLE PRECISION N
58C
59      INCLUDE 'DPCOP2.INC'
60C
61C---------------------------------------------------------------------
62C
63C     CHECK THE INPUT ARGUMENTS FOR ERRORS
64C
65      CDF=0.0D0
66      IF(ALPHA.GT.BETA)THEN
67        WRITE(ICOUT,12)
68        CALL DPWRST('XXX','BUG ')
69        WRITE(ICOUT,45)ALPHA
70        CALL DPWRST('XXX','BUG ')
71        WRITE(ICOUT,46)BETA
72        CALL DPWRST('XXX','BUG ')
73        GOTO9000
74      ELSEIF(M.LE.0.0D0)THEN
75        WRITE(ICOUT,22)
76        CALL DPWRST('XXX','BUG ')
77        WRITE(ICOUT,47)M
78        CALL DPWRST('XXX','BUG ')
79        GOTO9000
80      ELSEIF(N.LE.0.0D0)THEN
81        WRITE(ICOUT,32)
82        CALL DPWRST('XXX','BUG ')
83        WRITE(ICOUT,47)N
84        CALL DPWRST('XXX','BUG ')
85        GOTO9000
86      ENDIF
87   12 FORMAT(
88     1'***** ERROR--THE FIFTH ARGUMENT TO DPUCDF IS LESS THAN OR ',
89     1'EQUAL TO THE FOURTH ARGUMENT.')
90   22 FORMAT(
91     1'***** ERROR--THE SECOND ARGUMENT TO DPUCDF IS NON-POSITIVE.')
92   32 FORMAT(
93     1'***** ERROR--THE THIRD ARGUMENT TO DPUCDF IS NON-POSITIVE.')
94   45 FORMAT('      THE VALUE OF ALPHA         = ',G15.7)
95   46 FORMAT('      THE VALUE OF BETA          = ',G15.7)
96   47 FORMAT('      THE VALUE OF THE ARGUMENT  = ',G15.7)
97C
98C-----START POINT-----------------------------------------------------
99C
100      IF(X.LT.ALPHA)THEN
101        TERM1=N/(M+M*N+N)
102        TERM2=((BETA-ALPHA)/(BETA-X))**M
103        CDF=TERM1*TERM2
104      ELSEIF(X.GT.BETA)THEN
105        TERM1=M/(M+M*N+N)
106        TERM2=((BETA-ALPHA)/(X-ALPHA))**N
107        CDF=1.0D0 - TERM1*TERM2
108      ELSE
109        TERM1=M*N*(X-ALPHA) + N*(BETA-ALPHA)
110        TERM2=(M+M*N+N)*(BETA-ALPHA)
111        CDF=TERM1/TERM2
112      ENDIF
113C
114 9000 CONTINUE
115      RETURN
116      END
117      SUBROUTINE DPUPDF(X,M,N,ALPHA,BETA,PDF)
118C
119C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
120C              FUNCTION VALUE FOR THE DOUBLY-PARETO UNIFORM
121C              DISTRIBUTION.
122C              THIS DISTRIBUTION HAS THE FOLLOWING PDF FUNCTION:
123C
124C              f(X;ALPHA,BETA,M,N) = K(M,N)*
125C                  (BETA-ALPHA)**M/(BETA-X)**(M+1))  X < ALPHA
126C                  1/(BETA-ALPHA)                    ALPHA <= X <= BETA
127C                  (BETA-ALPHA)**N/(X-ALPHA)**(N+1)) X > BETA
128C                  ALPHA < BETA; M, N > 0
129C
130C              WHERE
131C                  K(M,N) = M*N/(M+M*N+N)
132C
133C     INPUT  ARGUMENTS--X      = THE DOUBLE PRECISION VALUE AT
134C                                WHICH THE PROBABILITY DENSITY
135C                                FUNCTION IS TO BE EVALUATED.
136C                     --ALPHA  = THE DOUBLE PRECISION SHAPE PARAMETER
137C                       BETA   = THE DOUBLE PRECISION SHAPE PARAMETER
138C                       M      = THE DOUBLE PRECISION SHAPE PARAMETER
139C                       N      = THE DOUBLE PRECISION SHAPE PARAMETER
140C     OUTPUT ARGUMENTS--PDF    = THE DOUBLE PRECISION PROBABILITY
141C                                DENSITY FUNCTION VALUE.
142C     OUTPUT--THE DOUBLE PRECISION PROBABILITY DENSITY
143C             FUNCTION VALUE PDF.
144C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
145C     RESTRICTIONS--ALPHA < BETA, M, N > 0.
146C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
147C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
148C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
149C     LANGUAGE--ANSI FORTRAN.
150C     REFERENCES--SINGH, VAN DORP, MAZZUCHI "A NOVEL ASYMMETRIC
151C                 DISTRIBUTION WITH POWER TAILS",
152C                 DOWNLOADED FROM VAN DORP WEB SITE.
153C               --VAN DORP, SIGN, AND MAZZUCHI "THE DOUBLY-PARETO
154C                 UNIFORM DISTRIBUTION WITH APPLICATIONS IN
155C                 UNCERTAINTY ANALYSIS AND ECONOMETRICS",
156C                 DOWNLOADED FROM VAN DORP WEB SITE.
157C     WRITTEN BY--ALAN HECKERT
158C                 STATISTICAL ENGINEERING DIVISION
159C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
160C                 GAITHERSBURG, MD 20899-8980
161C                 PHONE:  301-975-2899
162C     ORIGINAL VERSION--OCTOBER   2007.
163C
164C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
165C
166C---------------------------------------------------------------------
167C
168      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
169      DOUBLE PRECISION M
170      DOUBLE PRECISION N
171C
172      INCLUDE 'DPCOP2.INC'
173C
174C---------------------------------------------------------------------
175C
176C     CHECK THE INPUT ARGUMENTS FOR ERRORS
177C
178      PDF=0.0D0
179      IF(ALPHA.GT.BETA)THEN
180        WRITE(ICOUT,12)
181        CALL DPWRST('XXX','BUG ')
182        WRITE(ICOUT,45)ALPHA
183        CALL DPWRST('XXX','BUG ')
184        WRITE(ICOUT,46)BETA
185        CALL DPWRST('XXX','BUG ')
186        GOTO9000
187      ELSEIF(M.LE.0.0D0)THEN
188        WRITE(ICOUT,22)
189        CALL DPWRST('XXX','BUG ')
190        WRITE(ICOUT,47)M
191        CALL DPWRST('XXX','BUG ')
192        GOTO9000
193      ELSEIF(N.LE.0.0D0)THEN
194        WRITE(ICOUT,32)
195        CALL DPWRST('XXX','BUG ')
196        WRITE(ICOUT,47)N
197        CALL DPWRST('XXX','BUG ')
198        GOTO9000
199      ENDIF
200   12 FORMAT(
201     1'***** ERROR--THE FIFTH ARGUMENT TO DPUPDF IS LESS THAN OR ',
202     1'EQUAL TO THE FOURTH ARGUMENT.')
203   22 FORMAT(
204     1'***** ERROR--THE SECOND ARGUMENT TO DPUPDF IS NON-POSITIVE.')
205   32 FORMAT(
206     1'***** ERROR--THE THIRD ARGUMENT TO DPUPDF IS NON-POSITIVE.')
207   45 FORMAT('      THE VALUE OF ALPHA         = ',G15.7)
208   46 FORMAT('      THE VALUE OF BETA          = ',G15.7)
209   47 FORMAT('      THE VALUE OF THE ARGUMENT  = ',G15.7)
210C
211C-----START POINT-----------------------------------------------------
212C
213      TERM1=DLOG(M) + DLOG(N) - DLOG(M+M*N+N)
214      IF(X.LT.ALPHA)THEN
215        TERM2=M*DLOG(BETA-ALPHA) - (M+1.0D0)*DLOG(BETA-X)
216        PDF=DEXP(TERM1 + TERM2)
217      ELSEIF(X.GT.BETA)THEN
218        TERM2=N*DLOG(BETA-ALPHA) - (N+1.0D0)*DLOG(X-ALPHA)
219        PDF=DEXP(TERM1 + TERM2)
220      ELSE
221        TERM2=DLOG(BETA-ALPHA)
222        PDF=DEXP(TERM1 - TERM2)
223      ENDIF
224C
225 9000 CONTINUE
226      RETURN
227      END
228      SUBROUTINE DPUPPA(INAME1,INAME2,AVAL,NPAR,
229     1                  IBUGA3,ISUBRO,IERROR)
230C
231C     PURPOSE--MANY DATAPLOT COMMANDS AUTOMATICALLY CREATE PARAMETERS
232C              THAT CAN BE USED IN SUBSEQUENT ANALYSIS.  THIS SUBROUTINE
233C              IS A UTILITY ROUTINE FOR CREATING THOSE PARAMETERS.  THE
234C              INPUT IS AN ARRAY OF PARAMETER NAMES WITH THEIR
235C              ASSOCIATED VALUES.
236C     WRITTEN BY--ALAN HECKERT
237C                 STATISTICAL ENGINEERING DIVISION
238C                 INFORMATION TECHNOLOGY LABORATORY
239C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
240C                 GAITHERSBURG, MD 20899-8980
241C                 PHONE--301-975-2899
242C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
243C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
244C     LANGUAGE--ANSI FORTRAN (1977)
245C     VERSION NUMBER--2014/5
246C     ORIGINAL VERSION--MAY       2014.
247C
248C---------------------------------------------------------------------
249C
250      DIMENSION AVAL(*)
251C
252C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
253C
254C
255      CHARACTER*4 INAME1(*)
256      CHARACTER*4 INAME2(*)
257      CHARACTER*4 IBUGA3
258      CHARACTER*4 ISUBRO
259      CHARACTER*4 IERROR
260C
261      CHARACTER*4 ISUBN1
262      CHARACTER*4 ISUBN2
263      CHARACTER*4 ISTEPN
264C
265      CHARACTER*4 IH
266      CHARACTER*4 IH2
267      CHARACTER*4 IHOST1
268      CHARACTER*4 ISUBN0
269C
270C-----COMMON----------------------------------------------------------
271C
272      INCLUDE 'DPCOPA.INC'
273      INCLUDE 'DPCOHK.INC'
274      INCLUDE 'DPCOP2.INC'
275C
276C-----START POINT-----------------------------------------------------
277C
278      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'UPPA')THEN
279        WRITE(ICOUT,999)
280  999   FORMAT(1X)
281        CALL DPWRST('XXX','BUG ')
282        WRITE(ICOUT,51)
283   51   FORMAT('***** AT THE BEGINNING OF DPUPPA--')
284        CALL DPWRST('XXX','BUG ')
285        WRITE(ICOUT,53)NPAR
286   53   FORMAT('NPAR = ',I8)
287        CALL DPWRST('XXX','BUG ')
288        DO60I=1,NPAR
289          WRITE(ICOUT,63)I,INAME1(I),INAME2(I),AVAL(I)
290   63     FORMAT('I,INAME1(I),INAME2(I),AVAL(I) = ',I8,2A4,G15.7)
291          CALL DPWRST('XXX','BUG ')
292   60   CONTINUE
293      ENDIF
294C
295      IERROR='NO'
296      ISUBN0='DPUP'
297C
298C               ***************************************
299C               **  STEP 1--                         **
300C               **  UPDATE INTERNAL DATAPLOT TABLES  **
301C               ***************************************
302C
303      ISTEPN='1'
304      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'UPPA')
305     1  CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
306C
307      IF(NPAR.LT.1)GOTO9000
308C
309      DO100I=1,NPAR
310        IH=INAME1(I)
311        IH2=INAME2(I)
312        VALUE0=AVAL(I)
313        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
314     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
315     1              IANS,IWIDTH,IBUGA3,IERROR)
316C
317  100 CONTINUE
318C
319C               *****************
320C               **  STEP 90--  **
321C               **  EXIT       **
322C               *****************
323C
324 9000 CONTINUE
325C
326      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'UPPA')THEN
327        WRITE(ICOUT,999)
328        CALL DPWRST('XXX','BUG ')
329        WRITE(ICOUT,9011)
330 9011   FORMAT('***** AT THE END       OF DPUPPA--')
331        CALL DPWRST('XXX','BUG ')
332      ENDIF
333C
334      RETURN
335      END
336      SUBROUTINE DPUPPF(P,M,N,ALPHA,BETA,PPF)
337C
338C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
339C              FUNCTION VALUE FOR THE DOUBLY-PARETO UNIFORM
340C              DISTRIBUTION.
341C              THIS DISTRIBUTION HAS THE FOLLOWING PPF FUNCTION:
342C
343C              G(P;ALPHA,BETA,M,N) =
344C
345C                  LAMBDA1*(BETA-ALPHA) + ALPHA   0 < P < PI1
346C                  LAMBDA2*(BETA-ALPHA) + ALPHA   PI1 <= P <= PI2
347C                  LAMBDA3*(BETA-ALPHA) + ALPHA   PI2 < P < 1
348C
349C                  WHERE
350C
351C                  PI1 = N/(M + M*N + N)
352C                  PI2 = (M*N)/(M + M*N + N)
353C                  PI3 = M/(M + M*N + N)
354C
355C                  LAMBDA1 = 1 - (PI1/P)**(1/M)
356C                  LAMBDA2 = (P - PI1)/PI2
357C                  LAMBDA3 = (PI3/(1-P))**(1/N)
358C
359C     INPUT  ARGUMENTS--P      = THE DOUBLE PRECISION VALUE AT
360C                                WHICH THE PERCENT POINT
361C                                FUNCTION IS TO BE EVALUATED.
362C                     --ALPHA  = THE DOUBLE PRECISION SHAPE PARAMETER
363C                       BETA   = THE DOUBLE PRECISION SHAPE PARAMETER
364C                       M      = THE DOUBLE PRECISION SHAPE PARAMETER
365C                       N      = THE DOUBLE PRECISION SHAPE PARAMETER
366C     OUTPUT ARGUMENTS--PPF    = THE DOUBLE PRECISION PERCENT POINT
367C                                FUNCTION VALUE.
368C     OUTPUT--THE DOUBLE PRECISION PERCENT POINT
369C             FUNCTION VALUE PPF.
370C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
371C     RESTRICTIONS--ALPHA < BETA, M, N > 0.
372C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
373C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
374C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
375C     LANGUAGE--ANSI FORTRAN.
376C     REFERENCES--SINGH, VAN DORP, MAZZUCHI "A NOVEL ASYMMETRIC
377C                 DISTRIBUTION WITH POWER TAILS",
378C                 DOWNLOADED FROM VAN DORP WEB SITE.
379C               --VAN DORP, SIGN, AND MAZZUCHI "THE DOUBLY-PARETO
380C                 UNIFORM DISTRIBUTION WITH APPLICATIONS IN
381C                 UNCERTAINTY ANALYSIS AND ECONOMETRICS",
382C                 DOWNLOADED FROM VAN DORP WEB SITE.
383C     WRITTEN BY--ALAN HECKERT
384C                 STATISTICAL ENGINEERING DIVISION
385C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
386C                 GAITHERSBURG, MD 20899-8980
387C                 PHONE:  301-975-2899
388C     ORIGINAL VERSION--OCTOBER   2007.
389C
390C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
391C
392C---------------------------------------------------------------------
393C
394      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
395      DOUBLE PRECISION M
396      DOUBLE PRECISION N
397C
398      INCLUDE 'DPCOP2.INC'
399C
400C---------------------------------------------------------------------
401C
402C     CHECK THE INPUT ARGUMENTS FOR ERRORS
403C
404      PPF=0.0D0
405C
406      IF(P.LE.0.0D0 .OR. P.GE.1.0D0)THEN
407        WRITE(ICOUT,2)
408        CALL DPWRST('XXX','BUG ')
409        WRITE(ICOUT,47)P
410        CALL DPWRST('XXX','BUG ')
411        GOTO9000
412      ELSEIF(ALPHA.GT.BETA)THEN
413        WRITE(ICOUT,12)
414        CALL DPWRST('XXX','BUG ')
415        WRITE(ICOUT,45)ALPHA
416        CALL DPWRST('XXX','BUG ')
417        WRITE(ICOUT,46)BETA
418        CALL DPWRST('XXX','BUG ')
419        GOTO9000
420      ELSEIF(M.LE.0.0D0)THEN
421        WRITE(ICOUT,22)
422        CALL DPWRST('XXX','BUG ')
423        WRITE(ICOUT,47)M
424        CALL DPWRST('XXX','BUG ')
425        GOTO9000
426      ELSEIF(N.LE.0.0D0)THEN
427        WRITE(ICOUT,32)
428        CALL DPWRST('XXX','BUG ')
429        WRITE(ICOUT,47)N
430        CALL DPWRST('XXX','BUG ')
431        GOTO9000
432      ENDIF
433    2 FORMAT(
434     1'***** ERROR--THE FIRST ARGUMENT TO DPUPPF IS OUTSIDE THE ',
435     1'(0,1) INTERVAL.')
436   12 FORMAT(
437     1'***** ERROR--THE FIFTH ARGUMENT TO DPUPPF IS LESS THAN OR ',
438     1'EQUAL TO THE FOURTH ARGUMENT.')
439   22 FORMAT(
440     1'***** ERROR--THE SECOND ARGUMENT TO DPUPPF IS NON-POSITIVE.')
441   32 FORMAT(
442     1'***** ERROR--THE THIRD ARGUMENT TO DPUPPF IS NON-POSITIVE.')
443   45 FORMAT('      THE VALUE OF ALPHA         = ',G15.7)
444   46 FORMAT('      THE VALUE OF BETA          = ',G15.7)
445   47 FORMAT('      THE VALUE OF THE ARGUMENT  = ',G15.7)
446C
447C-----START POINT-----------------------------------------------------
448C
449      PI1=N/(M + M*N + N)
450      PI2=(M*N)/(M + M*N + N)
451      PI3=M/(M + M*N + N)
452      PCUT1=PI1
453      PCUT2=1.0D0 - PI3
454C
455      IF(P.LT.PCUT1)THEN
456        ALAMB=1.0D0 - (PI1/P)**(1.0D0/M)
457      ELSEIF(P.GT.PCUT2)THEN
458        ALAMB=(PI3/(1.0D0 - P))**(1.0D0/N)
459      ELSE
460        ALAMB=(P - PI1)/PI2
461      ENDIF
462      PPF=ALAMB*(BETA-ALPHA) + ALPHA
463C
464 9000 CONTINUE
465      RETURN
466      END
467      SUBROUTINE DPURAN(N,AM,AN,ALPHA,BETA,ISEED,X)
468C
469C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
470C              FROM THE DOUBLY-PARETO UNIFORM DISTRIBUTION
471C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
472C                                OF RANDOM NUMBERS TO BE
473C                                GENERATED.
474C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
475C                                (OF DIMENSION AT LEAST N)
476C                                INTO WHICH THE GENERATED
477C                                RANDOM SAMPLE WILL BE PLACED.
478C                     --AN     = THE SINGLE PRECISION SHAPE PARAMETER
479C                       AM     = THE SINGLE PRECISION SHAPE PARAMETER
480C                       ALPHA  = THE SINGLE PRECISION SHAPE PARAMETER
481C                       BETA   = THE SINGLE PRECISION SHAPE PARAMETER
482C     OUTPUT--A RANDOM SAMPLE OF SIZE N
483C             FROM THE DOUBLY-PARETO UNIFORM DISTRIBUTION
484C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
485C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
486C                   OF N FOR THIS SUBROUTINE.
487C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, DPUPPF
488C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
489C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
490C     LANGUAGE--ANSI FORTRAN (1977)
491C     REFERENCES--SINGH, VAN DORP, MAZZUCHI "A NOVEL ASYMMETRIC
492C                 DISTRIBUTION WITH POWER TAILS",
493C                 DOWNLOADED FROM VAN DORP WEB SITE.
494C               --VAN DORP, SIGN, AND MAZZUCHI "THE DOUBLY-PARETO
495C                 UNIFORM DISTRIBUTION WITH APPLICATIONS IN
496C                 UNCERTAINTY ANALYSIS AND ECONOMETRICS",
497C                 DOWNLOADED FROM VAN DORP WEB SITE.
498C     WRITTEN BY--JAMES J. FILLIBEN
499C                 STATISTICAL ENGINEERING DIVISION
500C                 INFORMATION TECHNOLOGY LABORATORY
501C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
502C                 GAITHERSBURG, MD 20899-8980
503C                 PHONE--301-975-2855
504C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
505C           OF THE NATIONAL BUREAU OF STANDARDS.
506C     LANGUAGE--ANSI FORTRAN (1977)
507C     VERSION NUMBER--2007.10
508C     ORIGINAL VERSION--OCTOBER   2007.
509C
510C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
511C
512C---------------------------------------------------------------------
513C
514      DOUBLE PRECISION DPPF
515      DIMENSION X(*)
516C
517C---------------------------------------------------------------------
518C
519      INCLUDE 'DPCOP2.INC'
520C
521C-----START POINT-----------------------------------------------------
522C
523C     CHECK THE INPUT ARGUMENTS FOR ERRORS
524C
525      IF(N.LT.1)THEN
526        WRITE(ICOUT, 5)
527        CALL DPWRST('XXX','BUG ')
528        WRITE(ICOUT,47)N
529        CALL DPWRST('XXX','BUG ')
530        GOTO9000
531      ELSEIF(ALPHA.GT.BETA)THEN
532        WRITE(ICOUT,12)
533        CALL DPWRST('XXX','BUG ')
534        WRITE(ICOUT,13)
535        CALL DPWRST('XXX','BUG ')
536        WRITE(ICOUT,45)ALPHA
537        CALL DPWRST('XXX','BUG ')
538        WRITE(ICOUT,46)BETA
539        CALL DPWRST('XXX','BUG ')
540        GOTO9000
541      ELSEIF(AM.LE.0.0)THEN
542        WRITE(ICOUT,12)
543        CALL DPWRST('XXX','BUG ')
544        WRITE(ICOUT,22)
545        CALL DPWRST('XXX','BUG ')
546        WRITE(ICOUT,47)M
547        CALL DPWRST('XXX','BUG ')
548        GOTO9000
549      ELSEIF(AN.LE.0.0)THEN
550        WRITE(ICOUT,12)
551        CALL DPWRST('XXX','BUG ')
552        WRITE(ICOUT,32)
553        CALL DPWRST('XXX','BUG ')
554        WRITE(ICOUT,47)N
555        CALL DPWRST('XXX','BUG ')
556        GOTO9000
557      ENDIF
558    5 FORMAT('***** ERROR--THE REQUESTED NUMBER OF DOUBLY-PARETO',
559     1' UNIFORM RADOM NUMBERS IS NON-POSITIVE')
560   12 FORMAT(
561     1'***** ERROR--DOUBLY-UNIFORM RANDOM NUMBERS')
562   13 FORMAT(
563     1'             ALPHA IS GREATER THAN OR EQUAL TO BETA.')
564   22 FORMAT(
565     1'             THE M PARAMETER IS NON-POSITIVE.')
566   32 FORMAT(
567     1'             THE N PARAMETER IS NON-POSITIVE.')
568   45 FORMAT('      THE VALUE OF ALPHA         = ',G15.7)
569   46 FORMAT('      THE VALUE OF BETA          = ',G15.7)
570   47 FORMAT('      THE VALUE OF THE ARGUMENT  = ',G15.7)
571C
572C
573C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
574C
575      CALL UNIRAN(N,ISEED,X)
576C
577C     GENERATE N DOUBLY-PARETO UNIFORM RANDOM NUMBERS
578C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
579C
580      DO100I=1,N
581      P=X(I)
582      CALL DPUPPF(DBLE(P),DBLE(AM),DBLE(AN),DBLE(ALPHA),
583     1            DBLE(BETA),DPPF)
584      X(I)=DPPF
585  100 CONTINUE
586C
587 9000 CONTINUE
588      RETURN
589      END
590      SUBROUTINE DPUNST(YTEMP,XTEMP,NTEMP,IHLEFT,IHLEF2,XDIST,NDIST,
591     1                  TEMP1,ISUBT,
592     1                  ISUBRO,IBUGA3,IERROR)
593C
594C     PURPOSE--GIVEN A RESPONSE VARIABLE, Y, AND A GROUP-ID
595C              VARIABLE, X, THIS ROUTINE STORES THE RESPONSE
596C              VALUES FOR EACH UNIQUE VALUE OF THE GROUP-ID
597C              VARIABLE.  THIS IS ESSENTIALLY THE REVERSE
598C              OPERATION OF THE STACK COMMAND.
599C     INPUT  ARGUMENTS--YTEMP  = A SINGLE PRECISION VECTOR CONTAINING
600C                                THE RESPONSE VALUES.
601C                       XTEMP  = A SINGLE PRECISION VECTOR CONTAINING
602C                                THE GROUP-ID VARIABLE.
603C                     --NTEMP  = THE INTEGER NUMBER OF OBSERVATIONS
604C                                FOR Y AND X.
605C                     --IHLEFT = CHARACTER STRINGS CONTAINING THE
606C                       IHLEF2   BASE NAME FOR THE NEWLY CREATED
607C                                VARIABLES.
608C     OUTPUT ARGUMENTS--XDIST  = A SINGLE PRECISION VECTOR CONTAINING
609C                                THE DISTINCT VALUES OF THE GROUP-ID
610C                                VARIABLE.
611C     OUTPUT--XDIST
612C     OTHER DATAPAC   SUBROUTINES NEEDED--DPDIST.
613C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
614C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
615C     LANGUAGE--ANSI FORTRAN (1977)
616C     WRITTEN BY--ALAN HECKERT
617C                 STATISTICAL ENGINEERING DIVISION
618C                 INFORMATION TECHNOLOGY LABORATORY
619C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
620C                 GAITHERSBURG, MD 20899-8980
621C                 PHONE--301-975-2899
622C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
623C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
624C     LANGUAGE--ANSI FORTRAN (1977)
625C     VERSION NUMBER--2016.08
626C     ORIGINAL VERSION--AUGUST    2016.
627C
628C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
629C
630C
631      INTEGER NTEMP
632C
633      REAL YTEMP(*)
634      REAL XTEMP(*)
635      REAL XDIST(*)
636      REAL TEMP1(*)
637C
638      INTEGER ISUBT(*)
639C
640      CHARACTER*4 IHLEFT
641      CHARACTER*4 IHLEF2
642      CHARACTER*8 IBASNM
643      CHARACTER*8 INAMET
644      CHARACTER*4 ISUBRO
645      CHARACTER*4 IBUGA3
646      CHARACTER*4 IERROR
647C
648      CHARACTER*4 IWRITE
649C
650C-----COMMON----------------------------------------------------------
651C
652      INCLUDE 'DPCOPA.INC'
653      INCLUDE 'DPCOHK.INC'
654      INCLUDE 'DPCODA.INC'
655      INCLUDE 'DPCOBE.INC'
656      INCLUDE 'DPCOP2.INC'
657C
658C-----START POINT-----------------------------------------------------
659C
660      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'UNST')THEN
661        WRITE(ICOUT,998)
662  998   FORMAT('test')
663        CALL DPWRST('XXX','BUG ')
664        WRITE(ICOUT,999)
665  999   FORMAT(1X)
666        CALL DPWRST('XXX','BUG ')
667        WRITE(ICOUT,51)
668   51   FORMAT('***** AT THE BEGINNING OF DPUNST--')
669        CALL DPWRST('XXX','BUG ')
670        WRITE(ICOUT,52)IBUGA3,ISUBRO,NTEMP
671   52   FORMAT('IBUGA3,ISUBRO,NTEMP = ',2(A4,2X),I8)
672        CALL DPWRST('XXX','BUG ')
673        IF(NTEMP.GT.0)THEN
674          DO55I=1,NTEMP
675            WRITE(ICOUT,56)I,XTEMP(I),YTEMP(I)
676   56       FORMAT('I,XTEMP(I),YTEMP(I) = ',I8,2X,2G15.7)
677            CALL DPWRST('XXX','BUG ')
678   55     CONTINUE
679        ENDIF
680      ENDIF
681C
682      NLAST=0
683C
684      IBASNM(1:4)=IHLEFT(1:4)
685      IBASNM(5:8)=IHLEF2(1:4)
686      DO90I=8,1,-1
687        IF(IBASNM(I:I).NE.' ')THEN
688          NLAST=I
689          GOTO99
690        ENDIF
691   90 CONTINUE
692   99 CONTINUE
693      IF(NLAST.EQ.0)THEN
694        IBASNM='Z'
695        NLAST=1
696      ENDIF
697C
698C     STEP 1: DETERMINE THE UNIQUE VALUES OF THE GROUP-ID
699C             VARIABLE AND SORT THEM.
700C
701      IWRITE='OFF'
702      CALL DISTIN(XTEMP,NTEMP,IWRITE,XDIST,NDIST,IBUGA3,IERROR)
703      IF(NDIST.GT.99)THEN
704        WRITE(ICOUT,999)
705        CALL DPWRST('XXX','BUG ')
706        WRITE(ICOUT,101)
707  101   FORMAT('***** ERROR IN UNSTACK COMMAND--')
708        CALL DPWRST('XXX','BUG ')
709        WRITE(ICOUT,103)NDIST
710  103   FORMAT('      THE NUMBER OF DISTINCT VALUES IN THE ',
711     1         'GROUP-ID VARIABLE (',I8,') IS GREATER THAN 99.')
712        CALL DPWRST('XXX','BUG ')
713        IERROR='YES'
714      ENDIF
715      IF(IERROR.EQ.'YES')GOTO9000
716      CALL SORT(XDIST,NDIST,XDIST)
717C
718      IF(NDIST.LE.9)THEN
719        IF(NLAST.EQ.8)NLAST=7
720      ELSE
721        IF(NLAST.GE.7)NLAST=6
722      ENDIF
723      IBASNM(NLAST+1:8)=' '
724C
725C     STEP 2: NOW LOOP THROUGH THE DISTINCT VALUES OF THE GROUP-ID
726C             VARIABLE
727C
728      DO210I=1,NDIST
729        HOLD=XDIST(I)
730        K=0
731        INAMET=' '
732        INAMET(1:NLAST)=IBASNM(1:NLAST)
733        IF(I.LE.9)THEN
734          WRITE(INAMET(NLAST+1:NLAST+1),'(I1)')I
735        ELSE
736          WRITE(INAMET(NLAST+1:NLAST+2),'(I2)')I
737        ENDIF
738        DO220J=1,NTEMP
739          IF(XTEMP(J).EQ.HOLD)THEN
740            K=K+1
741            TEMP1(K)=YTEMP(J)
742          ENDIF
743  220   CONTINUE
744C
745C       UPDATE THE NAME TABLE WITH THE NEW VARIABLE
746C
747        DO230J=1,K
748          ISUBT(J)=1
749  230   CONTINUE
750C
751        CALL DPADDV(INAMET(1:4),INAMET(5:8),TEMP1,K,ISUBT,
752     1              IHNAME,IHNAM2,IUSE,IVALUE,VALUE,IN,
753     1              IVSTAR,IVSTOP,MAXNAM,NUMNAM,V,MAXN,
754     1              MAXCOL,NUMCOL,
755     1              PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
756     1              IBUGA3,ISUBRO,IERROR)
757C
758        IF(IFEEDB.EQ.'ON')THEN
759          WRITE(ICOUT,999)
760          CALL DPWRST('XXX','BUG ')
761          WRITE(ICOUT,231)INAMET,K
762  231     FORMAT('VARIABLE ',A8,' CREATED WITH ',I8,' ELEMENTS.')
763          CALL DPWRST('XXX','BUG ')
764        ENDIF
765C
766  210 CONTINUE
767C
768 9000 CONTINUE
769C
770      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'UNST')THEN
771        WRITE(ICOUT,9051)
772 9051   FORMAT('***** AT THE END OF DPUNST--')
773        CALL DPWRST('XXX','BUG ')
774        WRITE(ICOUT,9053)NDIST
775 9053   FORMAT('NOUT = ',I8)
776        CALL DPWRST('XXX','BUG ')
777        IF(NDIST.GT.0)THEN
778          DO9055I=1,NDIST
779            WRITE(ICOUT,9056)I,XDIST(I)
780 9056       FORMAT('I,XDIST(I) = ',I8,2X,G15.7)
781            CALL DPWRST('XXX','BUG ')
782 9055     CONTINUE
783        ENDIF
784      ENDIF
785C
786      RETURN
787      END
788      SUBROUTINE DPUOSM(IBUGA3,IBUGQ,IFOUND,IERROR)
789C
790C     PURPOSE--GENERATE UNIFORM ORDER STATISTIC MEDIANS
791C     WRITTEN BY--JAMES J. FILLIBEN
792C                 STATISTICAL ENGINEERING DIVISION
793C                 INFORMATION TECHNOLOGY LABORATORY
794C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
795C                 GAITHERSBURG, MD 20899-8980
796C                 PHONE--301-975-2899
797C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
798C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
799C     LANGUAGE--ANSI FORTRAN (1977)
800C     VERSION NUMBER--82/7
801C     ORIGINAL VERSION--APRIL     1978.
802C     UPDATED         --MAY       1978.
803C     UPDATED         --JUNE      1978.
804C     UPDATED         --MAY       1978.
805C     UPDATED         --NOVEMBER  1978.
806C     UPDATED         --JUNE      1981.
807C     UPDATED         --SEPTEMBER 1981.
808C     UPDATED         --OCTOBER   1981.
809C     UPDATED         --MARCH     1982.
810C     UPDATED         --MAY       1982.
811C
812C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
813C
814      CHARACTER*4 IBUGA3
815      CHARACTER*4 IBUGQ
816      CHARACTER*4 IFOUND
817      CHARACTER*4 IERROR
818C
819      CHARACTER*4 NEWNAM
820      CHARACTER*4 NEWCOL
821      CHARACTER*4 ICASEQ
822      CHARACTER*4 ILEFT
823      CHARACTER*4 ILEFT2
824C
825      CHARACTER*4 ISUBN1
826      CHARACTER*4 ISUBN2
827      CHARACTER*4 ISTEPN
828C
829C-----COMMON----------------------------------------------------------
830C
831      INCLUDE 'DPCOPA.INC'
832      INCLUDE 'DPCOHK.INC'
833      INCLUDE 'DPCODA.INC'
834      INCLUDE 'DPCOP2.INC'
835C
836C-----START POINT-----------------------------------------------------
837C
838      ISUBN1='DPUO'
839      ISUBN2='SM  '
840      IERROR='NO'
841      IFOUND='YES'
842C
843      MAXCP1=MAXCOL+1
844      MAXCP2=MAXCOL+2
845      MAXCP3=MAXCOL+3
846      MAXCP4=MAXCOL+4
847      MAXCP5=MAXCOL+5
848      MAXCP6=MAXCOL+6
849C
850      NS2=0
851C
852C               ***********************************************
853C               **  TREAT THE UNIFORM ORDER STATISTIC MEDIANS CASE  **
854C               **       1) FOR A FULL VARIABLE, OR          **
855C               **       2) FOR PART OF A VARIABLE.          **
856C               ***********************************************
857C
858      IF(IBUGA3.EQ.'OFF')GOTO90
859      WRITE(ICOUT,999)
860  999 FORMAT(1X)
861      CALL DPWRST('XXX','BUG ')
862      WRITE(ICOUT,51)
863   51 FORMAT('***** AT THE BEGINNING OF DPUOSM--')
864      CALL DPWRST('XXX','BUG ')
865      WRITE(ICOUT,52)IBUGA3,IBUGQ
866   52 FORMAT('IBUGA3,IBUGQ = ',A4,2X,A4)
867      CALL DPWRST('XXX','BUG ')
868   90 CONTINUE
869C
870C               **********************************
871C               **  STEP 1--                    **
872C               **  INITIALIZE SOME VARIABLES.  **
873C               **********************************
874C
875      ISTEPN='1'
876      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
877C
878      NEWNAM='NO'
879      NEWCOL='NO'
880C
881C               *******************************************************
882C               **  STEP 2--                                         **
883C               **  CHECK FOR THE PROPER NUMBER OF INPUT ARGUMENTS.  **
884C               *******************************************************
885C
886      ISTEPN='2'
887      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
888C
889      MINNA=3
890      MAXNA=100
891      CALL CHECKA(NUMARG,MINNA,MAXNA,IANS,IWIDTH,ISUBN1,ISUBN2,
892     1IERROR)
893      IF(IERROR.EQ.'YES')GOTO9000
894C
895C               ****************************************************************
896C               **  STEP 3--                                                   *
897C               **  EXAMINE THE LEFT-HAND SIDE--                               *
898C               **  IS THE PARAMETER OR VARIABLE NAME TO LEFT OF = SIGN        *
899C               **  ALREADY IN THE NAME LIST?                                  *
900C               **  NOTE THAT     ILEFT      IS THE NAME OF THE VARIABLE       *
901C               **  ON THE LEFT.                                               *
902C               **  NOTE THAT     ILISTL    IS THE LINE IN THE TABLE           *
903C               **  OF THE NAME ON THE LEFT.                                   *
904C               **  NOTE THAT     ICOLL    IS THE DATA COLUMN (1 TO 12)        *
905C               **  FOR THE NAME OF THE LEFT.                                  *
906C               ****************************************************************
907C
908      ISTEPN='3'
909      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
910C
911CCCCC ILEFT=IHOL(2)
912CCCCC ILEFT2=IHOL2(2)
913      ILEFT=IHARG(1)
914      ILEFT2=IHARG2(1)
915      DO310I=1,NUMNAM
916      I2=I
917      IF(ILEFT.EQ.IHNAME(I).AND.ILEFT2.EQ.IHNAM2(I).AND.
918     1IUSE(I).EQ.'P')GOTO329
919      IF(ILEFT.EQ.IHNAME(I).AND.ILEFT2.EQ.IHNAM2(I).AND.
920     1IUSE(I).EQ.'V')GOTO380
921  310 CONTINUE
922      NEWNAM='YES'
923      ILISTL=NUMNAM+1
924      IF(ILISTL.GT.MAXNAM)GOTO320
925      GOTO330
926C
927  320 CONTINUE
928      WRITE(ICOUT,999)
929      CALL DPWRST('XXX','BUG ')
930      WRITE(ICOUT,321)
931  321 FORMAT('***** ERROR IN DPUOSM--')
932      CALL DPWRST('XXX','BUG ')
933      WRITE(ICOUT,322)
934  322 FORMAT('      THE NUMBER OF VARIABLE AND/OR PARAMETER')
935      CALL DPWRST('XXX','BUG ')
936      WRITE(ICOUT,323)MAXNAM
937  323 FORMAT('      NAMES HAS JUST EXCEEDED THE MAX ALLOWABLE ',
938     1I8,'  .')
939      CALL DPWRST('XXX','BUG ')
940      WRITE(ICOUT,324)
941  324 FORMAT('      SUGGESTED ACTION--')
942      CALL DPWRST('XXX','BUG ')
943      WRITE(ICOUT,325)
944  325 FORMAT('      ENTER      STAT')
945      CALL DPWRST('XXX','BUG ')
946      WRITE(ICOUT,326)
947  326 FORMAT('      TO FIND OUT THE FULL LIST OF USED NAMES,')
948      CALL DPWRST('XXX','BUG ')
949      WRITE(ICOUT,327)
950  327 FORMAT('      AND THEN REDEFINE (REUSE) SOME OF THE')
951      CALL DPWRST('XXX','BUG ')
952      WRITE(ICOUT,328)
953  328 FORMAT('      ALREADY-USED NAMES')
954      CALL DPWRST('XXX','BUG ')
955      IERROR='YES'
956      GOTO9000
957C
958  329 CONTINUE
959      ILISTL=I2
960      GOTO330
961C
962  330 CONTINUE
963      NLEFT=0
964      ICOLL=NUMCOL+1
965      IF(ICOLL.GT.MAXCOL)GOTO340
966      GOTO390
967C
968  340 CONTINUE
969      WRITE(ICOUT,341)
970  341 FORMAT('***** ERROR IN DPUOSM--')
971      CALL DPWRST('XXX','BUG ')
972      WRITE(ICOUT,342)
973  342 FORMAT('      THE NUMBER OF DATA COLUMNS')
974      CALL DPWRST('XXX','BUG ')
975      WRITE(ICOUT,343)MAXCOL
976  343 FORMAT('      HAS JUST EXCEEDED THE MAX ALLOWABLE ',I8,'  .')
977      CALL DPWRST('XXX','BUG ')
978      WRITE(ICOUT,344)
979  344 FORMAT('      SUGGESTED ACTION--')
980      CALL DPWRST('XXX','BUG ')
981      WRITE(ICOUT,345)
982  345 FORMAT('      ENTER      STAT')
983      CALL DPWRST('XXX','BUG ')
984      WRITE(ICOUT,346)
985  346 FORMAT('      TO FIND OUT THE FULL LIST OF USED COLUMNS')
986      CALL DPWRST('XXX','BUG ')
987      WRITE(ICOUT,347)
988  347 FORMAT('      AND THEN OVERWRITE SOME COLUMNS.   EXAMPLE--')
989      CALL DPWRST('XXX','BUG ')
990      WRITE(ICOUT,348)
991  348 FORMAT('      IF       LET X(I) = 3.14         FAILED')
992      CALL DPWRST('XXX','BUG ')
993      WRITE(ICOUT,349)
994  349 FORMAT('      THEN ONE MIGHT ENTER     NAME X 7')
995      CALL DPWRST('XXX','BUG ')
996      WRITE(ICOUT,350)
997  350 FORMAT('      (THEREBY EQUATING THE NAME X WITH COLUMN 7')
998      CALL DPWRST('XXX','BUG ')
999      WRITE(ICOUT,351)
1000  351 FORMAT('      FOLLOWED BY              LET X = 3.14')
1001      CALL DPWRST('XXX','BUG ')
1002      WRITE(ICOUT,352)
1003  352 FORMAT('      (WHICH WILL ACTUALLY OVERWRITE COLUMN 7')
1004      CALL DPWRST('XXX','BUG ')
1005      WRITE(ICOUT,353)
1006  353 FORMAT('      WITH THE NUMERIC CONSTANTS 3.14)')
1007      CALL DPWRST('XXX','BUG ')
1008      IERROR='YES'
1009      GOTO9000
1010C
1011  380 CONTINUE
1012      ILISTL=I2
1013      ICOLL=IVALUE(ILISTL)
1014      NLEFT=IN(ILISTL)
1015C
1016  390 CONTINUE
1017C
1018C               *****************************************
1019C               **  STEP 6--                           **
1020C               **  CHECK TO SEE THE TYPE SUBCASE      **
1021C               **  (BASED ON THE QUALIFIER)           **
1022C               **    1) UNQUALIFIED (THAT IS, FULL);  **
1023C               **    2) SUBSET/EXCEPT; OR             **
1024C               **    3) FOR.                          **
1025C               *****************************************
1026C
1027      ISTEPN='6'
1028      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1029C
1030      ICASEQ='FULL'
1031      ILOCQ=NUMARG+1
1032      IF(NUMARG.LT.1)GOTO670
1033      DO610J=1,NUMARG
1034      J1=J
1035      IF(IHARG(J).EQ.'SUBS'.AND.IHARG2(J).EQ.'ET  ')GOTO620
1036      IF(IHARG(J).EQ.'EXCE'.AND.IHARG2(J).EQ.'PT  ')GOTO620
1037      IF(IHARG(J).EQ.'FOR '.AND.IHARG2(J).EQ.'    ')GOTO630
1038  610 CONTINUE
1039      GOTO680
1040C
1041  620 CONTINUE
1042      ICASEQ='SUBS'
1043      ILOCQ=J1
1044      GOTO680
1045C
1046  630 CONTINUE
1047      ICASEQ='FOR'
1048      ILOCQ=J1
1049      GOTO680
1050C
1051  670 CONTINUE
1052      WRITE(ICOUT,999)
1053      CALL DPWRST('XXX','BUG ')
1054      WRITE(ICOUT,671)
1055  671 FORMAT('***** INTERNAL ERROR IN DPUOSM')
1056      CALL DPWRST('XXX','BUG ')
1057      WRITE(ICOUT,672)
1058  672 FORMAT('      AT BRANCH POINT 5081--')
1059      CALL DPWRST('XXX','BUG ')
1060      WRITE(ICOUT,673)
1061  673 FORMAT('      NUMARG LESS THAN 1 EVEN THOUGH')
1062      CALL DPWRST('XXX','BUG ')
1063      WRITE(ICOUT,674)
1064  674 FORMAT('      NUMARG HAD PREVIOUSLY PASSED THIS TEST')
1065      CALL DPWRST('XXX','BUG ')
1066      WRITE(ICOUT,675)NUMARG
1067  675 FORMAT('      ONCE ALREADY.  VALUE OF NUMARG = ',I8)
1068      CALL DPWRST('XXX','BUG ')
1069      WRITE(ICOUT,676)
1070  676 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
1071      CALL DPWRST('XXX','BUG ')
1072      IF(IWIDTH.GE.1)WRITE(ICOUT,677)(IANS(I),I=1,IWIDTH)
1073  677 FORMAT(80A1)
1074      IF(IWIDTH.GE.1)CALL DPWRST('XXX','BUG ')
1075      IERROR='YES'
1076      GOTO9000
1077C
1078  680 CONTINUE
1079      IF(IBUGA3.EQ.'OFF')GOTO690
1080      WRITE(ICOUT,681)NUMARG,ILOCQ,ICASEQ
1081  681 FORMAT('NUMARG,ILOCQ,ICASEQ = ',I8,I8,2X,A4)
1082      CALL DPWRST('XXX','BUG ')
1083C
1084  690 CONTINUE
1085C
1086C               ******************************************************
1087C               **  STEP 7--                                        **
1088C               **  BRANCH TO THE APPROPRIATE SUBCASE               **
1089C               **  (BASED ON THE QUALIFIER);                       **
1090C               **  DETERMINE THE NUMBER (= NUOSM)                   **
1091C               **  OF UNIFORM ORDER STATISTIC MEDIANS TO BE GENERATED.
1092C               **  NOTE THAT THE VARIABLE NIISUB                   **
1093C               **  IS THE LENGTH OF THE RESULTING                  **
1094C               **  VARIABLE ISUB(.).                               **
1095C               **  NOTE THAT DPFOR AUTOMATICALLY EXTENDS           **
1096C               **  THE INPUT LENGTH OF ISUB(.) IF NECESSARY.       **
1097C               **  (HENCE THE REDEFINITION OF NIISUB TO NINEW      **
1098C               **  AFTER THE CALL TO DPFOR.                        **
1099C               ******************************************************
1100C
1101      ISTEPN='7'
1102      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1103C
1104      IF(ICASEQ.EQ.'FULL')GOTO710
1105      IF(ICASEQ.EQ.'SUBS')GOTO720
1106      IF(ICASEQ.EQ.'FOR')GOTO730
1107C
1108  710 CONTINUE
1109      IF(NEWNAM.EQ.'NO')NIISUB=NLEFT
1110      IF(NEWNAM.EQ.'YES')NIISUB=MAXN
1111      DO715I=1,NIISUB
1112      ISUB(I)=1
1113  715 CONTINUE
1114      NUOSM=NIISUB
1115      GOTO750
1116C
1117  720 CONTINUE
1118      NIISUB=MAXN
1119      CALL DPSUBS(NIISUB,ILOCS,NS,IBUGQ,IERROR)
1120      NUOSM=NS
1121      GOTO750
1122C
1123  730 CONTINUE
1124      IF(NEWNAM.EQ.'NO')NIISUB=NLEFT
1125      IF(NEWNAM.EQ.'YES')NIISUB=MAXN
1126      CALL DPFOR(NIISUB,NINEW,IROW1,IROWN,
1127     1NLOCAL,ILOCS,NS,IBUGQ,IERROR)
1128      NIISUB=NINEW
1129      NUOSM=NS
1130      GOTO750
1131C
1132  750 CONTINUE
1133C
1134C               ******************************************
1135C               **  STEP 8--                            **
1136C               **  GENERATE    NUOSM    UNIFORM ORDER   **
1137C               **  STATISTIC MEDIANS.                  **
1138C               **  STORE THEM TEMPORARILY IN           **
1139C               **  THE VECTOR Y(.).                    **
1140C               ******************************************
1141C
1142      ISTEPN='8'
1143      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1144C
1145      CALL UNIMED(NUOSM,Y)
1146C
1147C               ***********************************************************
1148C               **  STEP 8--                                             **
1149C               **  IF CALLED FOR (THAT IS, IF IBUGA3 IS ON),      **
1150C               **  PRINT OUT THE INTERMEDIATE VARIABLE Y(.).            **
1151C               **  THIS IS USEFUL FOR DIAGNOSTIC PURPOSES               **
1152C               **  IN REVIEWING THE OUTPUT FROM THIS SUBROUTINE.        **
1153C               ***********************************************************
1154C
1155      ISTEPN='9'
1156      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1157C
1158      IF(IBUGA3.EQ.'OFF')GOTO2090
1159      WRITE(ICOUT,2051)
1160 2051 FORMAT('OUTPUT FROM MIDDLE OF DPUOSM AFTER UNIMED ',
1161     1'HAS BEEN CALLED--')
1162      CALL DPWRST('XXX','BUG ')
1163      WRITE(ICOUT,2052)NUOSM
1164 2052 FORMAT('NUOSM = ',I8)
1165      CALL DPWRST('XXX','BUG ')
1166      IF(NUOSM.LE.0)GOTO2090
1167      DO2054I=1,NUOSM
1168      WRITE(ICOUT,2055)I,Y(I)
1169 2055 FORMAT('I,Y(I) = ',I8,F12.5)
1170      CALL DPWRST('XXX','BUG ')
1171 2054 CONTINUE
1172C
1173 2090 CONTINUE
1174C
1175C               ******************************************************
1176C               **  STEP 9--                                        **
1177C               **  COPY THE ORDER STATISTIC MEDIANS                **
1178C               **  FROM THE INTERMEDIATE VECTOR Y(.)               **
1179C               **  TO THE APPROPRIATE COLUMN                       **
1180C               **  (BASED ON THE QUALIFIER--FULL, SUBSET, OR FOR)  **
1181C               **  IN THE INTERNAL DATAPLOT DATA TABLE.            **
1182C               ******************************************************
1183C
1184      ISTEPN='10'
1185      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1186C
1187      NS2=0
1188      DO2100I=1,NIISUB
1189      IJ=MAXN*(ICOLL-1)+I
1190      IF(ISUB(I).EQ.0)GOTO2100
1191      NS2=NS2+1
1192      IF(ICOLL.LE.MAXCOL)V(IJ)=Y(NS2)
1193      IF(ICOLL.EQ.MAXCP1)PRED(I)=Y(NS2)
1194      IF(ICOLL.EQ.MAXCP2)RES(I)=Y(NS2)
1195      IF(ICOLL.EQ.MAXCP3)YPLOT(I)=Y(NS2)
1196      IF(ICOLL.EQ.MAXCP4)XPLOT(I)=Y(NS2)
1197      IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=Y(NS2)
1198      IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=Y(NS2)
1199      IF(NS2.EQ.1)IROW1=I
1200      IROWN=I
1201 2100 CONTINUE
1202C
1203C               *******************************************
1204C               **  STEP 10--                            **
1205C               **  CARRY OUT THE LIST UPDATING AND      **
1206C               **  GENERATE THE INFORMATIVE PRINTING.   **
1207C               *******************************************
1208C
1209      ISTEPN='11'
1210      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1211C
1212      IF(ICASEQ.EQ.'FULL'.AND.NEWNAM.EQ.'NO')NINEW=NLEFT
1213      IF(ICASEQ.EQ.'FULL'.AND.NEWNAM.EQ.'YES')NINEW=MAXN
1214      IF(ICASEQ.EQ.'SUBS'.AND.NEWNAM.EQ.'NO'.AND.
1215     1NLEFT.GE.IROWN)NINEW=NLEFT
1216      IF(ICASEQ.EQ.'SUBS'.AND.NEWNAM.EQ.'NO'.AND.
1217     1NLEFT.LT.IROWN)NINEW=IROWN
1218      IF(ICASEQ.EQ.'SUBS'.AND.NEWNAM.EQ.'YES')NINEW=IROWN
1219      IF(ICASEQ.EQ.'FOR'.AND.NEWNAM.EQ.'NO'.AND.
1220     1NLEFT.GE.IROWN)NINEW=NLEFT
1221      IF(ICASEQ.EQ.'FOR'.AND.NEWNAM.EQ.'NO'.AND.
1222     1NLEFT.LT.IROWN)NINEW=IROWN
1223      IF(ICASEQ.EQ.'FOR'.AND.NEWNAM.EQ.'YES')NINEW=IROWN
1224C
1225      IHNAME(ILISTL)=ILEFT
1226      IHNAM2(ILISTL)=ILEFT2
1227      IUSE(ILISTL)='V'
1228      IVALUE(ILISTL)=ICOLL
1229      VALUE(ILISTL)=ICOLL
1230      IN(ILISTL)=NINEW
1231C
1232CCCCC IUSE(ICOLL)='V'
1233CCCCC IVALUE(ICOLL)=ICOLL
1234CCCCC VALUE(ICOLL)=ICOLL
1235CCCCC IN(ICOLL)=NINEW
1236C
1237      IF(NEWNAM.EQ.'YES')NUMNAM=NUMNAM+1
1238      IF(NEWNAM.EQ.'YES')NUMCOL=NUMCOL+1
1239C
1240      DO4100J4=1,NUMNAM
1241      IF(IUSE(J4).EQ.'V'.AND.IVALUE(J4).EQ.ICOLL)GOTO4105
1242      GOTO4100
1243 4105 CONTINUE
1244      IUSE(J4)='V'
1245      IVALUE(J4)=ICOLL
1246      VALUE(J4)=ICOLL
1247      IN(J4)=NINEW
1248 4100 CONTINUE
1249C
1250      IF(IPRINT.EQ.'OFF')GOTO4059
1251      IF(IFEEDB.EQ.'OFF')GOTO4059
1252      WRITE(ICOUT,999)
1253      CALL DPWRST('XXX','BUG ')
1254      WRITE(ICOUT,4011)ILEFT,ILEFT2,NS2
1255 4011 FORMAT('THE NUMBER OF VALUES GENERATED FOR ',
1256     1'THE VARIABLE ',A4,A4,' = ',I8)
1257      CALL DPWRST('XXX','BUG ')
1258      WRITE(ICOUT,999)
1259      CALL DPWRST('XXX','BUG ')
1260C
1261      IJ=MAXN*(ICOLL-1)+IROW1
1262      IF(ICOLL.LE.MAXCOL)THEN
1263         WRITE(ICOUT,4021)ILEFT,ILEFT2,V(IJ),IROW1
1264 4021    FORMAT('THE FIRST           COMPUTED VALUE OF ',
1265     1   A4,A4,' = ',E15.7,'   (ROW ',I6,')')
1266         CALL DPWRST('XXX','BUG ')
1267      ELSE IF(ICOLL.EQ.MAXCP1)THEN
1268         WRITE(ICOUT,4021)ILEFT,ILEFT2,PRED(IROW1),IROW1
1269         CALL DPWRST('XXX','BUG ')
1270      ELSE IF(ICOLL.EQ.MAXCP2)THEN
1271         WRITE(ICOUT,4021)ILEFT,ILEFT2,RES(IROW1),IROW1
1272         CALL DPWRST('XXX','BUG ')
1273      ELSE IF(ICOLL.EQ.MAXCP3)THEN
1274         WRITE(ICOUT,4021)ILEFT,ILEFT2,YPLOT(IROW1),IROW1
1275         CALL DPWRST('XXX','BUG ')
1276      ELSE IF(ICOLL.EQ.MAXCP4)THEN
1277         WRITE(ICOUT,4021)ILEFT,ILEFT2,XPLOT(IROW1),IROW1
1278         CALL DPWRST('XXX','BUG ')
1279      ELSE IF(ICOLL.EQ.MAXCP5)THEN
1280         WRITE(ICOUT,4021)ILEFT,ILEFT2,X2PLOT(IROW1),IROW1
1281         CALL DPWRST('XXX','BUG ')
1282      ELSE IF(ICOLL.EQ.MAXCP6)THEN
1283         WRITE(ICOUT,4021)ILEFT,ILEFT2,TAGPLO(IROW1),IROW1
1284         CALL DPWRST('XXX','BUG ')
1285      ENDIF
1286C
1287      IJ=MAXN*(ICOLL-1)+IROWN
1288      IF(NS2.NE.1)THEN
1289         IF(ICOLL.LE.MAXCOL)THEN
1290            WRITE(ICOUT,4031)NS2,ILEFT,ILEFT2,V(IJ),IROWN
1291 4031       FORMAT('THE LAST (',I5,'-TH) COMPUTED VALUE OF ',
1292     1      A4,A4,' = ',E15.7,'   (ROW ',I6,')')
1293            CALL DPWRST('XXX','BUG ')
1294         ELSE IF(ICOLL.EQ.MAXCP1)THEN
1295            WRITE(ICOUT,4031)NS2,ILEFT,ILEFT2,PRED(IROWN),IROWN
1296            CALL DPWRST('XXX','BUG ')
1297         ELSE IF(ICOLL.EQ.MAXCP2)THEN
1298            WRITE(ICOUT,4031)NS2,ILEFT,ILEFT2,RES(IROWN),IROWN
1299            CALL DPWRST('XXX','BUG ')
1300         ELSE IF(ICOLL.EQ.MAXCP3)THEN
1301            WRITE(ICOUT,4031)NS2,ILEFT,ILEFT2,YPLOT(IROWN),IROWN
1302            CALL DPWRST('XXX','BUG ')
1303         ELSE IF(ICOLL.EQ.MAXCP4)THEN
1304            WRITE(ICOUT,4031)NS2,ILEFT,ILEFT2,XPLOT(IROWN),IROWN
1305            CALL DPWRST('XXX','BUG ')
1306         ELSE IF(ICOLL.EQ.MAXCP5)THEN
1307            WRITE(ICOUT,4031)NS2,ILEFT,ILEFT2,X2PLOT(IROWN),IROWN
1308            CALL DPWRST('XXX','BUG ')
1309         ELSE IF(ICOLL.EQ.MAXCP6)THEN
1310            WRITE(ICOUT,4031)NS2,ILEFT,ILEFT2,TAGPLO(IROWN),IROWN
1311            CALL DPWRST('XXX','BUG ')
1312         ENDIF
1313      ENDIF
1314      IF(NS2.NE.1)GOTO4090
1315      WRITE(ICOUT,4041)
1316 4041 FORMAT('SINCE THE GENERATED SAMPLE SIZE WAS ONLY 1,')
1317      CALL DPWRST('XXX','BUG ')
1318      WRITE(ICOUT,4042)
1319 4042 FORMAT('THE ABOVE VALUE WAS THE SOLE VALUE COMPUTED.')
1320      CALL DPWRST('XXX','BUG ')
1321 4090 CONTINUE
1322      WRITE(ICOUT,999)
1323      CALL DPWRST('XXX','BUG ')
1324      WRITE(ICOUT,4112)ILEFT,ILEFT2,ICOLL
1325 4112 FORMAT('THE CURRENT COLUMN FOR ',
1326     1'THE VARIABLE ',A4,A4,' = ',I8)
1327      CALL DPWRST('XXX','BUG ')
1328      WRITE(ICOUT,4113)ILEFT,ILEFT2,NINEW
1329 4113 FORMAT('THE CURRENT LENGTH OF  ',
1330     1'THE VARIABLE ',A4,A4,' = ',I8)
1331      CALL DPWRST('XXX','BUG ')
1332      WRITE(ICOUT,999)
1333      CALL DPWRST('XXX','BUG ')
1334      WRITE(ICOUT,999)
1335      CALL DPWRST('XXX','BUG ')
1336 4059 CONTINUE
1337C
1338C               *****************
1339C               **  STEP 90--  **
1340C               **  EXIT       **
1341C               *****************
1342C
1343 9000 CONTINUE
1344      IF(IBUGA3.EQ.'OFF')GOTO9090
1345      WRITE(ICOUT,999)
1346      CALL DPWRST('XXX','BUG ')
1347      WRITE(ICOUT,9011)
1348 9011 FORMAT('***** AT THE END       OF DPUOSM--')
1349      CALL DPWRST('XXX','BUG ')
1350      WRITE(ICOUT,9012)IFOUND,IERROR
1351 9012 FORMAT('IFOUND,IERROR = ',A4,2X,A4)
1352      CALL DPWRST('XXX','BUG ')
1353      WRITE(ICOUT,9013)IBUGA3,IBUGQ
1354 9013 FORMAT('IBUGA3,IBUGQ = ',A4,2X,A4)
1355      CALL DPWRST('XXX','BUG ')
1356      WRITE(ICOUT,9015)NS2
1357 9015 FORMAT('NS2 = ',I8)
1358      CALL DPWRST('XXX','BUG ')
1359      WRITE(ICOUT,9016)NS,NIISUB,NUOSM
1360 9016 FORMAT('NS,NIISUB,NUOSM = ',I8,I8,I8)
1361      CALL DPWRST('XXX','BUG ')
1362 9090 CONTINUE
1363C
1364      RETURN
1365      END
1366      SUBROUTINE DPUPDV(IHNAME,IHNAM2,IUSE,IVALUE,IVALU2,VALUE,IN,
1367CCCCC UPDATE VARIABLE LABELS.  JANUARY 2000.
1368     1IVARLB,
1369CCCCC OCTOBER 1993.  ADD IVALU2 TO ARGUMENT LIST (DELETE CAUSED
1370CCCCC PROBLEMS WITH MATRICES THAT FOLLOWED ON VARIABLE LIST).
1371CCCCC SUBROUTINE DPUPDV(IHNAME,IHNAM2,IUSE,IVALUE,VALUE,IN,
1372     1IVSTAR,IVSTOP,MAXNAM,NUMNAM,V,MAXN,MAXCOL,NUMCOL,
1373     1IBUGS2,IERROR)
1374C
1375C     PURPOSE--HANDLE THE CASE IN WHICH DATA VARIABLES HAVE
1376C              BEEN DELETED AND SO THE ENTIRE DATA ARRAY
1377C              MUST BE SHIFTED TO AVOID HOLES IN THE ARRAY.
1378C              UPDATE HOUSEKEEPING TABLES ACCORDINGLY.
1379C     WRITTEN BY--JAMES J. FILLIBEN
1380C                 STATISTICAL ENGINEERING DIVISION
1381C                 INFORMATION TECHNOLOGY LABORATORY
1382C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
1383C                 GAITHERSBURG, MD 20899-8980
1384C                 PHONE--301-975-2899
1385C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
1386C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
1387C     LANGUAGE--ANSI FORTRAN (1977)
1388C     VERSION NUMBER--82/7
1389C     ORIGINAL VERSION--DECEMBER  1981.
1390C     UPDATED         --MAY       1982.
1391C     UPDATED         --OCTOBER   1993. ADD IVALU2 (FIX MATRICES BUG)
1392C     UPDATED         --JUNE      1994. BUG FOR PARAMETERS
1393C     UPDATED         --OCTOBER   1997. RE-INIATILIZE TO ZERO INSTEAD
1394C                                       OF CPUMIN
1395C     UPDATED         --JANUARY   2000. SUPPORT FOR VARIABLE LABELS
1396C
1397C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
1398C
1399      CHARACTER*4 IHNAME
1400      CHARACTER*4 IHNAM2
1401      CHARACTER*4 IUSE
1402      CHARACTER*4 IBUGS2
1403      CHARACTER*4 IERROR
1404C
1405      CHARACTER*40 IVARLB
1406C
1407      CHARACTER*4 ISUBN1
1408      CHARACTER*4 ISUBN2
1409      CHARACTER*4 ISTEPN
1410C
1411C---------------------------------------------------------------------
1412C
1413      DIMENSION IHNAME(*)
1414      DIMENSION IHNAM2(*)
1415      DIMENSION IUSE(*)
1416      DIMENSION IVALUE(*)
1417CCCCC OCTOBER 1993.  ADD FOLLOWING LINE.
1418      DIMENSION IVALU2(*)
1419      DIMENSION VALUE(*)
1420      DIMENSION IN(*)
1421      DIMENSION IVSTAR(*)
1422      DIMENSION IVSTOP(*)
1423C
1424      DIMENSION IVARLB(*)
1425C
1426      DIMENSION V(*)
1427C
1428C-----COMMON----------------------------------------------------------
1429C
1430      INCLUDE 'DPCOP2.INC'
1431C
1432C-----START POINT-----------------------------------------------------
1433C
1434      ISUBN1='DPUP'
1435      ISUBN2='DV  '
1436      IERROR='NO'
1437C
1438      ILAST=0
1439      ICOLOL=0
1440C
1441      IF(IBUGS2.EQ.'ON')THEN
1442        WRITE(ICOUT,999)
1443  999   FORMAT(1X)
1444        CALL DPWRST('XXX','BUG ')
1445        WRITE(ICOUT,51)
1446   51   FORMAT('***** AT THE BEGINNING OF DPUPDV--')
1447        CALL DPWRST('XXX','BUG ')
1448        WRITE(ICOUT,52)IBUGS2,IERROR,MAXNAM,NUMNAM
1449   52   FORMAT('IBUGS2,IERROR,MAXNAM,NUMNAM = ',2(A4,2X),2I8)
1450        CALL DPWRST('XXX','BUG ')
1451        WRITE(ICOUT,54)MAXN,MAXCOL,NUMCOL
1452   54   FORMAT('MAXN,MAXCOL,NUMCOL = ',3I8)
1453        CALL DPWRST('XXX','BUG ')
1454        DO60I=1,NUMNAM
1455          WRITE(ICOUT,61)I,IHNAME(I),IHNAM2(I),IUSE(I),
1456     1                   IVALUE(I),VALUE(I)
1457   61     FORMAT('I,IHNAME(I),IHNAM2(I),IUSE(I),IVALUE(I),VALUE(I) = ',
1458     1           I8,2X,A4,A4,2X,A4,I8,G15.7)
1459          CALL DPWRST('XXX','BUG ')
1460          WRITE(ICOUT,62)I,IHNAME(I),IHNAM2(I),IN(I),IVSTAR(I),IVSTOP(I)
1461   62     FORMAT('I,IHNAME(I),IHNAM2(I),IN(I),IVSTAR(I),IVSTOP(I)  = ',
1462     1           I8,2X,2A4,6X,3I8)
1463          CALL DPWRST('XXX','BUG ')
1464   60   CONTINUE
1465        WRITE(ICOUT,999)
1466        CALL DPWRST('XXX','BUG ')
1467        DO70J=1,NUMCOL
1468          IJ=MAXN*(J-1)+1
1469          WRITE(ICOUT,71)J,MAXN,IJ,V(IJ)
1470   71     FORMAT('J,MAXN,IJ,V(IJ) = ',I8,I8,I8,E15.7)
1471          CALL DPWRST('XXX','BUG ')
1472   70   CONTINUE
1473      ENDIF
1474C
1475C               *********************************************
1476C               **  STEP 1--                               **
1477C               **  UPDATE THE HOUSEKEEPING TABLES.        **
1478C               **  ELIMINATE ANY ENTRIES IN THESE TABLES  **
1479C               **  WHICH HAVE LENGTH OF VARIABLE = 0;     **
1480C               **  THAT IS, WHICH HAVE IN(.) = 0.         **
1481C               *********************************************
1482C
1483      ISTEPN='1'
1484      IF(IBUGS2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1485C
1486      IF(NUMNAM.LE.1)GOTO1129
1487      J=0
1488 1101 CONTINUE
1489      J=J+1
1490      IF(J.GT.NUMNAM)GOTO1129
1491      IF(IHNAME(J).EQ.'PRED'.AND.IHNAM2(J).EQ.'    ')GOTO1100
1492      IF(IHNAME(J).EQ.'RES '.AND.IHNAM2(J).EQ.'    ')GOTO1100
1493      IF(IHNAME(J).EQ.'YPLO'.AND.IHNAM2(J).EQ.'T   ')GOTO1100
1494      IF(IHNAME(J).EQ.'XPLO'.AND.IHNAM2(J).EQ.'T   ')GOTO1100
1495      IF(IHNAME(J).EQ.'X2PL'.AND.IHNAM2(J).EQ.'OT  ')GOTO1100
1496      IF(IHNAME(J).EQ.'TAGP'.AND.IHNAM2(J).EQ.'LOT ')GOTO1100
1497      IF(IUSE(J).EQ.'V'.AND.IN(J).LE.0)GOTO1109
1498CCCCC OCTOBER 1993.  ADD FOLLOWING 2 LINES
1499CCCCC JUNE 1994. FOR PARAMETER, SET TO -1 TO DELETE (SOME INTERNALLY
1500CCCCC SET PARAMETERS DO NOT SET IN(.), WHICH CAUSED BUGS WHEN RETAIN
1501CCCCC OR DELETE ENTERED).
1502CCCCC IF(IUSE(J).EQ.'P'.AND.IN(J).LE.0)GOTO1109
1503      IF(IUSE(J).EQ.'P'.AND.IN(J).LT.0)GOTO1109
1504      IF(IUSE(J).EQ.'M'.AND.IN(J).LE.0)GOTO1109
1505      IF(IUSE(J).EQ.'F'.AND.IN(J).LT.0)GOTO1109
1506      GOTO1100
1507 1109 CONTINUE
1508C
1509      JP1=J+1
1510      IF(JP1.GT.NUMNAM)GOTO1119
1511      DO1110K=JP1,NUMNAM
1512        KM1=K-1
1513        IHNAME(KM1)=IHNAME(K)
1514        IHNAM2(KM1)=IHNAM2(K)
1515        IUSE(KM1)=IUSE(K)
1516        IVALUE(KM1)=IVALUE(K)
1517CCCCC   OCTOBER 1993.  ADD FOLLOWING LINE.
1518        IVALU2(KM1)=IVALU2(K)
1519        VALUE(KM1)=VALUE(K)
1520        IN(KM1)=IN(K)
1521        IVSTAR(KM1)=IVSTAR(K)
1522        IVSTOP(KM1)=IVSTOP(K)
1523        IVARLB(KM1)=IVARLB(K)
1524 1110 CONTINUE
1525 1119 CONTINUE
1526      NUMNAM=NUMNAM-1
1527      J=J-1
1528C
1529 1100 CONTINUE
1530      GOTO1101
1531 1129 CONTINUE
1532C
1533C               ************************************************
1534C               **  STEP 2--                                  **
1535C               **  DETERMINE THE LARGEST COLUMN REFERENCED.  **
1536C               ************************************************
1537C
1538      ISTEPN='2'
1539      IF(IBUGS2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1540C
1541      ICOLMX=0
1542      IF(NUMNAM.LE.0)GOTO2159
1543      DO2150J=1,NUMNAM
1544        IF(IHNAME(J).EQ.'PRED'.AND.IHNAM2(J).EQ.'    ')GOTO2150
1545        IF(IHNAME(J).EQ.'RES '.AND.IHNAM2(J).EQ.'    ')GOTO2150
1546        IF(IHNAME(J).EQ.'YPLO'.AND.IHNAM2(J).EQ.'T   ')GOTO2150
1547        IF(IHNAME(J).EQ.'XPLO'.AND.IHNAM2(J).EQ.'T   ')GOTO2150
1548        IF(IHNAME(J).EQ.'X2PL'.AND.IHNAM2(J).EQ.'OT  ')GOTO2150
1549        IF(IHNAME(J).EQ.'TAGP'.AND.IHNAM2(J).EQ.'LOT ')GOTO2150
1550        IF(IUSE(J).EQ.'V'.AND.IVALUE(J).GT.ICOLMX)ICOLMX=IVALUE(J)
1551CCCCC   OCTOBER 1993.  ADD FOLLOWING LINE
1552        IF(IUSE(J).EQ.'M'.AND.IVALUE(J).GT.ICOLMX)ICOLMX=IVALUE(J)
1553 2150 CONTINUE
1554 2159 CONTINUE
1555C
1556C               *******************************************************
1557C               **  STEP 3--                                         **
1558C               **  TREAT THE CASE WHERE THERE IS AT LEAST           **
1559C               **  1 VARIABLE IN THE DATA ARRAY WHICH MAY           **
1560C               **  (AT LEAST POTENTIALLY) BE SHIFTED (COMPRESSED).  **
1561C               *******************************************************
1562C
1563      ISTEPN='3'
1564      IF(IBUGS2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1565C
1566      ICODE=0
1567      NUMCO2=NUMCOL
1568      IF(ICOLMX.LE.0)GOTO3900
1569      DO3300ICOL=1,ICOLMX
1570C
1571        IPASS=0
1572        IF(NUMNAM.LE.0)GOTO3900
1573        DO3400J=1,NUMNAM
1574          IF(IHNAME(J).EQ.'PRED'.AND.IHNAM2(J).EQ.'    ')GOTO3400
1575          IF(IHNAME(J).EQ.'RES '.AND.IHNAM2(J).EQ.'    ')GOTO3400
1576          IF(IHNAME(J).EQ.'YPLO'.AND.IHNAM2(J).EQ.'T   ')GOTO3400
1577          IF(IHNAME(J).EQ.'XPLO'.AND.IHNAM2(J).EQ.'T   ')GOTO3400
1578          IF(IHNAME(J).EQ.'X2PL'.AND.IHNAM2(J).EQ.'OT  ')GOTO3400
1579          IF(IHNAME(J).EQ.'TAGP'.AND.IHNAM2(J).EQ.'LOT ')GOTO3400
1580          IF(IUSE(J).EQ.'V'.AND.IVALUE(J).EQ.ICOL)GOTO3450
1581CCCCC     OCTOBER 1993.  ADD FOLLOWING LINE
1582          IF(IUSE(J).EQ.'M'.AND.IVALUE(J).EQ.ICOL)GOTO3450
1583          GOTO3400
1584C
1585 3450   CONTINUE
1586        IPASS=IPASS+1
1587        IF(IPASS.EQ.1)THEN
1588          ICODE=ICODE+1
1589          IF(IVALUE(J).EQ.ICODE)GOTO3490
1590          ICOLOL=IVALUE(J)
1591C
1592          IMAX=MAXN
1593          DO3461I=1,IMAX
1594            IJ=MAXN*(ICODE-1)+I
1595CCCCC       OCTOBER 1997.  FIX FOLLOWING LINE
1596CCCCC       V(IJ)=CPUMIN
1597            V(IJ)=0.0
1598 3461     CONTINUE
1599C
1600          IMAX=IN(J)
1601          DO3462I=1,IMAX
1602            IJ=MAXN*(ICODE-1)+I
1603            IJOL=MAXN*(ICOLOL-1)+I
1604            V(IJ)=V(IJOL)
1605 3462     CONTINUE
1606C
1607          IMAX=MAXN
1608          DO3463I=1,IMAX
1609            IJOL=MAXN*(ICOLOL-1)+I
1610CCCCC       OCTOBER 1997.  FIX FOLLOWING LINE
1611CCCCC       V(IJOL)=CPUMIN
1612            V(IJOL)=0.0
1613 3463     CONTINUE
1614        ENDIF
1615C
1616        IVALUE(J)=ICODE
1617CCCCC   OCTOBER 1993.  ADD FOLLOWING LINE
1618        IVALU2(J)=IVALU2(J)-(ICOLOL-ICODE)
1619        VALUE(J)=IVALUE(J)
1620        IVSTAR(J)=MAXN*(ICODE-1)+1
1621        IVSTOP(J)=MAXN*(ICODE-1)+IN(J)
1622C
1623 3490   CONTINUE
1624 3400   CONTINUE
1625 3300 CONTINUE
1626 3900 CONTINUE
1627      NUMCOL=ICODE
1628C
1629C               *****************************************
1630C               **  STEP 4--                           **
1631C               **  TREAT THE CASE WHERE NO VARIABLES  **
1632C               **  REMAIN IN THE DATA ARRAY.          **
1633C               *****************************************
1634C
1635      ISTEPN='4'
1636      IF(IBUGS2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1637C
1638      IF(ICOLMX.LE.0 .AND. NUMCO2.GT.0)THEN
1639        DO4200J=1,NUMCO2
1640          DO4300I=1,MAXN
1641            IJ=MAXN*(J-1)+I
1642CCCCC       OCTOBER 1997.  FIX FOLLOWING LINE
1643CCCCC       V(IJ)=CPUMIN
1644            V(IJ)=0.0
1645 4300     CONTINUE
1646 4200   CONTINUE
1647      ENDIF
1648C
1649C               *****************
1650C               **  STEP 90--  **
1651C               **  EXIT.      **
1652C               *****************
1653C
1654      IF(IBUGS2.EQ.'ON')THEN
1655        WRITE(ICOUT,999)
1656        CALL DPWRST('XXX','BUG ')
1657        WRITE(ICOUT,9011)
1658 9011   FORMAT('***** AT THE END       OF DPUPDV--')
1659        CALL DPWRST('XXX','BUG ')
1660        WRITE(ICOUT,9013)IERROR,MAXNAM,NUMNAM
1661 9013   FORMAT('IERROR,MAXNAM,NUMNAM = ',A4,2X,2I8)
1662        CALL DPWRST('XXX','BUG ')
1663        WRITE(ICOUT,9014)MAXN,MAXCOL,NUMCOL
1664 9014   FORMAT('MAXN,MAXCOL,NUMCOL = ',3I8)
1665        CALL DPWRST('XXX','BUG ')
1666        DO9020I=1,NUMNAM
1667          WRITE(ICOUT,9021)I,IHNAME(I),IHNAM2(I),IUSE(I),
1668     1                     IVALUE(I),VALUE(I)
1669 9021     FORMAT('I,IHNAME(I),IHNAM2(I),IUSE(I),IVALUE(I),VALUE(I) = ',
1670     1           I8,2X,A4,A4,2X,A4,I8,E15.7)
1671          CALL DPWRST('XXX','BUG ')
1672          WRITE(ICOUT,9022)I,IHNAME(I),IHNAM2(I),IN(I),
1673     1                     IVSTAR(I),IVSTOP(I)
1674 9022     FORMAT('I,IHNAME(I),IHNAM2(I),IN(I),IVSTAR(I),IVSTOP(I)  = ',
1675     1           I8,2X,2A4,6X,3I8)
1676          CALL DPWRST('XXX','BUG ')
1677 9020   CONTINUE
1678        WRITE(ICOUT,999)
1679        CALL DPWRST('XXX','BUG ')
1680        DO9030J=1,NUMCOL
1681          IJ=MAXN*(J-1)+1
1682          WRITE(ICOUT,9031)J,MAXN,IJ,V(IJ)
1683 9031     FORMAT('J,MAXN,IJ,V(IJ) = ',I8,I8,I8,E15.7)
1684          CALL DPWRST('XXX','BUG ')
1685 9030   CONTINUE
1686      ENDIF
1687C
1688      RETURN
1689      END
1690      SUBROUTINE DPUPD2(NUMADD,NFIRST,IBUGS2,IERROR)
1691C
1692C     PURPOSE--ADD NUMADD BLANK COLUMNS BEFORE COLUMN IDENTIFIED
1693C              BY NFIRST.  REQUIRED BY THE MATRIX AUGMENT COMMAND.
1694C     WRITTEN BY--JAMES J. FILLIBEN
1695C                 STATISTICAL ENGINEERING DIVISION
1696C                 INFORMATION TECHNOLOGY LABORATORY
1697C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
1698C                 GAITHERSBURG, MD 20899-8980
1699C                 PHONE--301-975-2855
1700C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
1701C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
1702C     LANGUAGE--ANSI FORTRAN (1977)
1703C     VERSION NUMBER--93/10
1704C     ORIGINAL VERSION--OCTOBER   1993.
1705C
1706C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
1707C
1708      CHARACTER*4 IBUGS2
1709      CHARACTER*4 IERROR
1710C
1711      CHARACTER*4 ISUBN1
1712      CHARACTER*4 ISUBN2
1713      CHARACTER*4 ISTEPN
1714C
1715C-----CHARACTER STATEMENTS FOR COMMON VARIABLES-------------------
1716C
1717      INCLUDE 'DPCOPA.INC'
1718      INCLUDE 'DPCOHK.INC'
1719      INCLUDE 'DPCODA.INC'
1720      INCLUDE 'DPCOP2.INC'
1721C
1722C-----START POINT-----------------------------------------------------
1723C
1724      ISUBN1='DPUP'
1725      ISUBN2='D2  '
1726      IERROR='NO'
1727C
1728      IF(IBUGS2.EQ.'OFF')GOTO90
1729      WRITE(ICOUT,999)
1730  999 FORMAT(1X)
1731      CALL DPWRST('XXX','BUG ')
1732      WRITE(ICOUT,51)
1733   51 FORMAT('***** AT THE BEGINNING OF DPUPD2--')
1734      CALL DPWRST('XXX','BUG ')
1735      WRITE(ICOUT,52)IBUGS2,IERROR
1736   52 FORMAT('IBUGS2,IERROR = ',A4,2X,A4)
1737      CALL DPWRST('XXX','BUG ')
1738      WRITE(ICOUT,53)MAXNAM,NUMNAM
1739   53 FORMAT('MAXNAM,NUMNAM = ',2I8)
1740      CALL DPWRST('XXX','BUG ')
1741      WRITE(ICOUT,54)MAXN,MAXCOL,NUMCOL
1742   54 FORMAT('MAXN,MAXCOL,NUMCOL = ',3I8)
1743      CALL DPWRST('XXX','BUG ')
1744      DO60I=1,NUMNAM
1745      WRITE(ICOUT,61)I,IHNAME(I),IHNAM2(I),IUSE(I),IVALUE(I),VALUE(I)
1746   61 FORMAT('I,IHNAME(I),IHNAM2(I),IUSE(I),IVALUE(I),VALUE(I) = ',
1747     1I8,2X,A4,A4,2X,A4,I8,E15.7)
1748      CALL DPWRST('XXX','BUG ')
1749      WRITE(ICOUT,62)I,IHNAME(I),IHNAM2(I),IN(I),IVSTAR(I),IVSTOP(I)
1750   62 FORMAT('I,IHNAME(I),IHNAM2(I),IN(I),IVSTAR(I),IVSTOP(I)  = ',
1751     1I8,2X,A4,A4,6X,I8,I8,I8)
1752      CALL DPWRST('XXX','BUG ')
1753   60 CONTINUE
1754      WRITE(ICOUT,999)
1755      CALL DPWRST('XXX','BUG ')
1756      DO70J=1,NUMCOL
1757      IJ=MAXN*(J-1)+1
1758      WRITE(ICOUT,71)J,MAXN,IJ,V(IJ)
1759   71 FORMAT('J,MAXN,IJ,V(IJ) = ',I8,I8,I8,E15.7)
1760      CALL DPWRST('XXX','BUG ')
1761   70 CONTINUE
1762      WRITE(ICOUT,76)NFIRST,NUMADD
1763   76 FORMAT('NFIRST,NUMADD = ',I8,2X,I8)
1764      CALL DPWRST('XXX','BUG ')
1765   90 CONTINUE
1766C
1767C               *********************************************
1768C               **  STEP 1--                               **
1769C               **  CHECK THAT MAXIMUM NUMBER OF COLUMNS   **
1770C               **  WON'T BE EXCEEDED.                     **
1771C               *********************************************
1772C
1773      ISTEPN='1'
1774      IF(IBUGS2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1775C
1776      IF(NFIRST+NUMADD.LE.MAXCOL)GOTO199
1777      WRITE(ICOUT,999)
1778      CALL DPWRST('XXX','BUG ')
1779      WRITE(ICOUT,101)
1780  101 FORMAT('***** ERROR FROM DPUPD2--')
1781      CALL DPWRST('XXX','BUG ')
1782      WRITE(ICOUT,102)
1783  102 FORMAT('      ADDING ADDITIONAL COLUMNS WILL EXCEED MAXIMUM')
1784      CALL DPWRST('XXX','BUG ')
1785      WRITE(ICOUT,103)
1786  103 FORMAT('      NUMER OF ALLOWED COLUMNS.')
1787      CALL DPWRST('XXX','BUG ')
1788      WRITE(ICOUT,104)NUMADD
1789  104 FORMAT('      NUMER OF COLUMNS TO ADD = ',I8)
1790      CALL DPWRST('XXX','BUG ')
1791      WRITE(ICOUT,105)MAXCOL
1792  105 FORMAT('      MAXIMUM NUMER OF COLUMNS = ',I8)
1793      CALL DPWRST('XXX','BUG ')
1794      WRITE(ICOUT,106)NUMCOL
1795  106 FORMAT('      CURRENT NUMER OF COLUMNS = ',I8)
1796      CALL DPWRST('XXX','BUG ')
1797      IERROR='YES'
1798      GOTO9090
1799  199 CONTINUE
1800C
1801      DO200I=1,NUMNAM
1802        IF(NFIRST.EQ.IVALUE(I))THEN
1803          IINDX=I
1804          GOTO209
1805        ENDIF
1806 200  CONTINUE
1807 209  CONTINUE
1808C
1809C
1810C               *********************************************
1811C               **  STEP 2--                               **
1812C               **  UPDATE THE HOUSEKEEPING TABLES.        **
1813C               **  ELIMINATE ANY ENTRIES IN THESE TABLES  **
1814C               **  WHICH HAVE LENGTH OF VARIABLE = 0;     **
1815C               **  THAT IS, WHICH HAVE IN(.) = 0.         **
1816C               *********************************************
1817C
1818      ISTEPN='2'
1819      IF(IBUGS2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
1820C
1821      IF(NUMADD.LE.0)GOTO9090
1822      IF(NFIRST.GE.NUMCOL)GOTO9090
1823      IF(NFIRST.LT.1)GOTO9090
1824      IF(NFIRST.LT.1)GOTO9090
1825C
1826      DO1110K=NUMNAM,IINDX,-1
1827      KM1=K+NUMADD
1828      IHNAME(KM1)=IHNAME(K)
1829      IHNAM2(KM1)=IHNAM2(K)
1830      IUSE(KM1)=IUSE(K)
1831      IF(IUSE(K).EQ.'V'.OR.IUSE(K).EQ.'M')THEN
1832        IVALUE(KM1)=IVALUE(K)+NUMADD
1833        IVALU2(KM1)=IVALU2(K)+NUMADD
1834      ELSE
1835        IVALUE(KM1)=IVALUE(K)
1836        IVALU2(KM1)=IVALU2(K)
1837      ENDIF
1838      VALUE(KM1)=VALUE(K)
1839      IN(KM1)=IN(K)
1840      IVSTAR(KM1)=IVSTAR(K)
1841      IVSTOP(KM1)=IVSTOP(K)
1842 1110 CONTINUE
1843C
1844      NTEMP2=IINDX+NUMADD-1
1845      NTEMP1=IINDX-1
1846      IF(NTEMP1.LT.1)NTEMP1=1
1847      DO1120K=NTEMP1,NTEMP2
1848      IHNAME(K)='    '
1849      IHNAM2(K)='    '
1850      IUSE(K)='UNKN'
1851      IVALUE(K)=0
1852      IVALU2(K)=0
1853      VALUE(K)=0.0
1854      IN(K)=0
1855      IVSTAR(K)=0
1856      IVSTOP(K)=0
1857 1120 CONTINUE
1858C
1859      IMAX=MAXN
1860      IVINC=NUMADD*IMAX
1861      NTEMP1=(NFIRST-1)*IMAX+1
1862      IF(NTEMP1.LT.1)NTEMP1=1
1863      NTEMP2=NUMCOL*IMAX
1864      DO1130K=NTEMP2,NTEMP1,-1
1865      V(K+IVINC)=V(K)
1866 1130 CONTINUE
1867      NTEMP2=NTEMP1-1+NUMADD*IMAX
1868      DO1140K=NTEMP1,NTEMP2
1869      V(K)=0.0
1870 1140 CONTINUE
1871C
1872C               *****************
1873C               **  STEP 90--  **
1874C               **  EXIT.      **
1875C               *****************
1876C
1877      IF(IBUGS2.EQ.'OFF')GOTO9090
1878      WRITE(ICOUT,999)
1879      CALL DPWRST('XXX','BUG ')
1880      WRITE(ICOUT,9011)
1881 9011 FORMAT('***** AT THE END       OF DPUPD2--')
1882      CALL DPWRST('XXX','BUG ')
1883      WRITE(ICOUT,9012)IBUGS2,IERROR
1884 9012 FORMAT('IBUGS2,IERROR = ',A4,2X,A4)
1885      CALL DPWRST('XXX','BUG ')
1886      WRITE(ICOUT,9013)IINDX,MAXNAM,NUMNAM
1887 9013 FORMAT('IINDX,MAXNAM,NUMNAM = ',3I8)
1888      CALL DPWRST('XXX','BUG ')
1889      WRITE(ICOUT,9014)MAXN,MAXCOL,NUMCOL
1890 9014 FORMAT('MAXN,MAXCOL,NUMCOL = ',3I8)
1891      CALL DPWRST('XXX','BUG ')
1892      DO9020I=1,NUMNAM
1893      WRITE(ICOUT,9021)I,IHNAME(I),IHNAM2(I),IUSE(I),IVALUE(I),VALUE(I)
1894 9021 FORMAT('I,IHNAME(I),IHNAM2(I),IUSE(I),IVALUE(I),VALUE(I) = ',
1895     1I8,2X,A4,A4,2X,A4,I8,E15.7)
1896      CALL DPWRST('XXX','BUG ')
1897      WRITE(ICOUT,9022)I,IHNAME(I),IHNAM2(I),IN(I),IVSTAR(I),IVSTOP(I)
1898 9022 FORMAT('I,IHNAME(I),IHNAM2(I),IN(I),IVSTAR(I),IVSTOP(I)  = ',
1899     1I8,2X,A4,A4,6X,I8,I8,I8)
1900      CALL DPWRST('XXX','BUG ')
1901 9020 CONTINUE
1902      WRITE(ICOUT,999)
1903      CALL DPWRST('XXX','BUG ')
1904      DO9030J=1,NUMCOL
1905      IJ=MAXN*(J-1)+1
1906      WRITE(ICOUT,9031)J,MAXN,IJ,V(IJ)
1907 9031 FORMAT('J,MAXN,IJ,V(IJ) = ',I8,I8,I8,E15.7)
1908      CALL DPWRST('XXX','BUG ')
1909 9030 CONTINUE
1910 9090 CONTINUE
1911C
1912      RETURN
1913      END
1914      SUBROUTINE DPVECT(NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2,
1915     1                  IVCFMT,IVCARR,IANGLU,
1916     1                  IBUGG2,IBUGG3,IBUGQ,ISUBRO,IFOUND,IERROR)
1917C
1918C     PURPOSE--GENERATE A VECTOR PLOT--
1919C              THE VECTOR CAN BE REPRESENTED IN ONE OF 3 WAYS:
1920C              1)  YSTART XSTART  YSTOP XSTOP
1921C                  (I.E., START AND END POINT OF VECTOR)
1922C              2)  YSTART XSTART ANGLE DIST
1923C                  (I.E., START POINT, ANGLE OF VECTOR AND LENGTH
1924C                  OF VECTOR)
1925C              3)  YSTART XSTART YDELTA XDELTA
1926C                  (I.E., START POINT, X AND Y COMPONENTS OF VECTOR)
1927C              THE FORMAT IS DETERMINED BY THE COMMAND:
1928C                  VECTOR FORMAT <POINT/ANGLE/DELTA>
1929C              THE ARROW HEAD CAN BE EITHER A FIXED SIZE OR A
1930C              VARY ACCORDING TO THE VECTOR LENGTH (THE CHAR SIZE
1931C              COMMAND WILL SET THE ARROW SIZE FOR THE LARGEST VECTOR).
1932C              THIS IS CONTROLLED WITH THE COMMAND:
1933C                   VECTOR ARROW <FIXED/VARIABLE>
1934C     EXAMPLE--VECTOR PLOT XSTART XSTOP ANGLE DISTANCE
1935C     WRITTEN BY--ALAN HECKERT
1936C                 STATISTICAL ENGINEERING DIVISION
1937C                 INFORMATION TECHNOLOGY LABORATORY
1938C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
1939C                 GAITHERSBURG, MD 20899-8980
1940C                 PHONE--301-975-2899
1941C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
1942C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
1943C     LANGUAGE--ANSI FORTRAN (1977)
1944C     VERSION NUMBER--92/8
1945C     ORIGINAL VERSION--AUGUST    1992.
1946C     UPDATED         --SEPTEMBER 1993. BUG FIX
1947C     UPDATED         --AUGUST    1994. BUG FIX FOR VARIABLE CASE
1948C     UPDATED         --FEBRUARY  2011. USE DPPARS AND DPPAR3
1949C
1950C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
1951C
1952      CHARACTER*4 ICASPL
1953      CHARACTER*4 IAND1
1954      CHARACTER*4 IAND2
1955      CHARACTER*4 IVCFMT
1956      CHARACTER*4 IVCARR
1957      CHARACTER*4 IANGLU
1958      CHARACTER*4 IBUGG2
1959      CHARACTER*4 IBUGG3
1960      CHARACTER*4 IBUGQ
1961      CHARACTER*4 ISUBRO
1962      CHARACTER*4 IFOUND
1963      CHARACTER*4 IERROR
1964C
1965      CHARACTER*4 ISUBN1
1966      CHARACTER*4 ISUBN2
1967      CHARACTER*4 ISTEPN
1968C
1969      CHARACTER*4 IHIGH
1970      CHARACTER*40 INAME
1971      PARAMETER (MAXSPN=20)
1972      CHARACTER*4 IVARN1(MAXSPN)
1973      CHARACTER*4 IVARN2(MAXSPN)
1974      CHARACTER*4 IVARTY(MAXSPN)
1975      REAL PVAR(MAXSPN)
1976      INTEGER ILIS(MAXSPN)
1977      INTEGER NRIGHT(MAXSPN)
1978      INTEGER ICOLR(MAXSPN)
1979C
1980C---------------------------------------------------------------------
1981C
1982      INCLUDE 'DPCOPA.INC'
1983C
1984      DIMENSION Y1(MAXOBV)
1985      DIMENSION Y2(MAXOBV)
1986      DIMENSION Y3(MAXOBV)
1987      DIMENSION Y4(MAXOBV)
1988      DIMENSION XHIGH(MAXOBV)
1989      DIMENSION XDIST(MAXOBV)
1990CCCCC FOLLOWING LINES ADDED JUNE, 1990
1991      INCLUDE 'DPCOZZ.INC'
1992      EQUIVALENCE (GARBAG(IGARB1),Y1(1))
1993      EQUIVALENCE (GARBAG(IGARB2),Y2(1))
1994      EQUIVALENCE (GARBAG(IGARB3),Y3(1))
1995      EQUIVALENCE (GARBAG(IGARB4),Y4(1))
1996      EQUIVALENCE (GARBAG(IGARB5),XHIGH(1))
1997      EQUIVALENCE (GARBAG(IGARB6),XDIST(1))
1998CCCCC END CHANGE
1999C
2000C-----COMMON----------------------------------------------------------
2001C
2002      INCLUDE 'DPCOHK.INC'
2003      INCLUDE 'DPCODA.INC'
2004      INCLUDE 'DPCOP2.INC'
2005C
2006C-----START POINT-----------------------------------------------------
2007C
2008      IERROR='NO'
2009      IFOUND='NO'
2010      ISUBN1='DPVE'
2011      ISUBN2='CT  '
2012      ICASPL='VECT'
2013C
2014      MAXCP1=MAXCOL+1
2015      MAXCP2=MAXCOL+2
2016      MAXCP3=MAXCOL+3
2017      MAXCP4=MAXCOL+4
2018      MAXCP5=MAXCOL+5
2019      MAXCP6=MAXCOL+6
2020C
2021C               ***********************************
2022C               **  TREAT THE VECTOR PLOT CASE  **
2023C               ***********************************
2024C
2025      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VECT')THEN
2026        WRITE(ICOUT,999)
2027  999   FORMAT(1X)
2028        CALL DPWRST('XXX','BUG ')
2029        WRITE(ICOUT,51)
2030   51   FORMAT('***** AT THE BEGINNING OF DPVECT--')
2031        CALL DPWRST('XXX','BUG ')
2032        WRITE(ICOUT,52)IBUGG2,IBUGG3,IBUGQ,ISUBRO
2033   52   FORMAT('IBUGG2,IBUGG3,IBUGQ,ISUBRO = ',3(A4,2X),A4)
2034        CALL DPWRST('XXX','BUG ')
2035        WRITE(ICOUT,53)ICASPL,IAND1,IAND2,MAXN
2036   53   FORMAT('ICASPL,IAND1,IAND2,MAXN = ',3(A4,2X,A4,2X,A4),I8)
2037        CALL DPWRST('XXX','BUG ')
2038      ENDIF
2039C
2040C               ***************************
2041C               **  STEP 1--             **
2042C               **  EXTRACT THE COMMAND  **
2043C               ***************************
2044C
2045      ISTEPN='11'
2046      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VECT')
2047     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
2048C
2049      IHIGH='OFF'
2050      IF(ICOM.EQ.'VECT')THEN
2051        IF(NUMARG.GE.1 .AND.
2052     1    (IHARG(1).EQ.'HIGH' .OR. IHARG(1).EQ.'SUBS').AND.
2053     1    IHARG(2).EQ.'PLOT')THEN
2054          ILASTC=2
2055          IHIGH='ON'
2056        ELSEIF(NUMARG.GE.1 .AND. IHARG(1).EQ.'PLOT')THEN
2057          ILASTC=1
2058        ELSE
2059          GOTO9000
2060        ENDIF
2061      ELSEIF(ICOM.EQ.'HIGH' .OR. ICOM.EQ.'SUBS')THEN
2062        IHIGH='ON'
2063        IF(NUMARG.GE.1 .AND.IHARG(1).EQ.'VECT'.AND.
2064     1    IHARG(2).EQ.'PLOT')THEN
2065          ILASTC=2
2066        ELSE
2067          GOTO9000
2068        ENDIF
2069      ELSE
2070        GOTO9000
2071      ENDIF
2072C
2073C
2074C               *********************************
2075C               **  STEP 4--                   **
2076C               **  EXTRACT THE VARIABLE LIST  **
2077C               *********************************
2078C
2079      ISTEPN='4'
2080      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VECT')
2081     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
2082C
2083      INAME='VECTOR PLOT'
2084      MINNA=4
2085      MAXNA=100
2086      MINN2=2
2087      IFLAGE=1
2088      IFLAGM=0
2089      IFLAGP=0
2090      JMIN=1
2091      JMAX=NUMARG
2092      IF(IHIGH.EQ.'ON')THEN
2093        MINNA=5
2094        MINNVA=5
2095        MAXNVA=5
2096      ELSE
2097        MINNVA=4
2098        MAXNVA=4
2099      ENDIF
2100C
2101      CALL DPPARS(IHARG,IHARG2,IARGT,ARG,NUMARG,IANS,IWIDTH,
2102     1            IHNAME,IHNAM2,IUSE,NUMNAM,IN,IVALUE,VALUE,
2103     1            JMIN,JMAX,
2104     1            MINN2,MINNA,MAXNA,MAXSPN,IFLAGE,INAME,
2105     1            IVARN1,IVARN2,IVARTY,PVAR,
2106     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,ILOCQ,NUMVAR,
2107     1            MINNVA,MAXNVA,
2108     1            IFLAGM,IFLAGP,
2109     1            IBUGG3,IBUGQ,ISUBRO,IFOUND,IERROR)
2110      IF(IERROR.EQ.'YES')GOTO9000
2111C
2112      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VECT')THEN
2113        WRITE(ICOUT,999)
2114        CALL DPWRST('XXX','BUG ')
2115        WRITE(ICOUT,281)
2116  281   FORMAT('***** AFTER CALL DPPARS--')
2117        CALL DPWRST('XXX','BUG ')
2118        WRITE(ICOUT,282)NQ,NUMVAR
2119  282   FORMAT('NQ,NUMVAR = ',2I8)
2120        CALL DPWRST('XXX','BUG ')
2121        IF(NUMVAR.GT.0)THEN
2122          DO285I=1,NUMVAR
2123            WRITE(ICOUT,287)I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),
2124     1                      ICOLR(I),PVAR(I)
2125  287       FORMAT('I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),',
2126     1             'ICOLR(I),PVAR(I) = ',I8,2X,A4,A4,2X,3I8,G15.7)
2127            CALL DPWRST('XXX','BUG ')
2128  285     CONTINUE
2129        ENDIF
2130      ENDIF
2131C
2132      ICOL=1
2133      CALL DPPAR5(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
2134     1            INAME,IVARN1,IVARN2,IVARTY,
2135     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVAR,
2136     1            MAXCOL,MAXCP1,MAXCP2,MAXCP3,
2137     1            MAXCP4,MAXCP5,MAXCP6,
2138     1            V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
2139     1            Y1,Y2,Y3,Y4,Y4,XHIGH,Y4,NS,
2140     1            IBUGG3,ISUBRO,IFOUND,IERROR)
2141C
2142C               ********************************************************
2143C               **  STEP 8--                                          **
2144C               **  FORM THE VERTICAL AND HORIZONTAL AXIS             **
2145C               **  VALUES Y(.) AND X(.) FOR THE PLOT.                **
2146C               **  DEFINE THE VECTOR D(.) TO CREATE PAIRS OF POINTS  **
2147C               **  (EACH ROW WILL DEFINE A SINGLE VECTOR WITH A      **
2148C               **  UNIQUE D IDENTIFIER.                              **
2149C               **  DEFINE THE NUMBER OF PLOT POINTS    (NPLOTP).     **
2150C               **  DEFINE THE NUMBER OF PLOT VARIABLES (NPLOTV).     **
2151C               ********************************************************
2152C
2153      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VECT')THEN
2154        ISTEPN='8'
2155        CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
2156        WRITE(ICOUT,8901)NS,ICASPL,IVCFMT,IVCARR,IANGLU
2157 8901   FORMAT('NS,ICASPL,IVCFMT,IVCARR,IANGLU=',I5,4(1X,A4))
2158        CALL DPWRST('XXX','BUG ')
2159      ENDIF
2160C
2161      CALL DPVEC2(Y1,Y2,Y3,Y4,XHIGH,XDIST,NS,ICASPL,IHIGH,
2162     1            IVCFMT,IVCARR,IANGLU,MAXOBV,
2163     1            Y,X,D,DSIZE,NPLOTP,NPLOTV,IBUGG3,ISUBRO,IERROR)
2164C
2165C               *****************
2166C               **  STEP 9--   **
2167C               **  EXIT       **
2168C               *****************
2169C
2170 9000 CONTINUE
2171      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VECT')THEN
2172        WRITE(ICOUT,999)
2173        CALL DPWRST('XXX','BUG ')
2174        WRITE(ICOUT,9011)
2175 9011   FORMAT('***** AT THE END       OF DPVECT--')
2176        CALL DPWRST('XXX','BUG ')
2177        WRITE(ICOUT,9013)IFOUND,IERROR
2178 9013   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
2179        CALL DPWRST('XXX','BUG ')
2180        WRITE(ICOUT,9014)NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2
2181 9014   FORMAT('NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2 = ',
2182     1         3I8,2X,2(A4,2X),A4)
2183        CALL DPWRST('XXX','BUG ')
2184        IF(NS.GE.1)THEN
2185          DO9042I=1,NS
2186            WRITE(ICOUT,9043)I,Y1(I),Y2(I),Y3(I),Y4(I)
2187 9043       FORMAT('I,Y1(I),Y2(I),Y3(I),Y4(I) = ',I8,4G15.7)
2188            CALL DPWRST('XXX','BUG ')
2189 9042      CONTINUE
2190        ENDIF
2191        IF(NPLOTP.GE.1)THEN
2192          DO9052I=1,NPLOTP
2193            WRITE(ICOUT,9053)I,Y(I),X(I),D(I)
2194 9053       FORMAT('I,Y(I),X(I),D(I) = ',I8,3F12.5)
2195            CALL DPWRST('XXX','BUG ')
2196 9052     CONTINUE
2197        ENDIF
2198      ENDIF
2199C
2200      RETURN
2201      END
2202      SUBROUTINE DPVEC2(Y1,Y2,Y3,Y4,XHIGH,XDIST,NZ,ICASPL,IHIGH,
2203     1                  IVCFMT,IVCARR,IANGLU,MAXNXT,
2204     1                  Y,X,D,DSIZE,N2,NPLOTV,IBUGG3,ISUBRO,IERROR)
2205C
2206C     PURPOSE--GENERATE A PAIR OF COORDINATE VECTORS THAT WILL DEFINE
2207C              A VECTOR PLOT
2208C     WRITTEN BY--ALAN HECKERT
2209C                 STATISTICAL ENGINEERING DIVISION
2210C                 INFORMATION TECHNOLOGY LABORATORY
2211C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
2212C                 GAITHERSBURG, MD 20899-8980
2213C                 PHONE--301-975-2899
2214C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
2215C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
2216C     LANGUAGE--ANSI FORTRAN (1977)
2217C     VERSION NUMBER--92/8
2218C     ORIGINAL VERSION--AUGUST    1992.
2219C     UPDATED         --FEBRUARY  2011.
2220C
2221C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
2222C
2223      CHARACTER*4 ICASPL
2224      CHARACTER*4 IHIGH
2225      CHARACTER*4 IBUGG3
2226      CHARACTER*4 ISUBRO
2227      CHARACTER*4 IERROR
2228C
2229      CHARACTER*4 ISUBN1
2230      CHARACTER*4 ISUBN2
2231      CHARACTER*4 IWRITE
2232      CHARACTER*4 IVCFMT
2233      CHARACTER*4 IVCARR
2234      CHARACTER*4 IANGLU
2235C
2236C---------------------------------------------------------------------
2237C
2238      DIMENSION Y1(*)
2239      DIMENSION Y2(*)
2240      DIMENSION Y3(*)
2241      DIMENSION Y4(*)
2242      DIMENSION XHIGH(*)
2243      DIMENSION XDIST(*)
2244C
2245      DIMENSION Y(*)
2246      DIMENSION X(*)
2247      DIMENSION D(*)
2248      DIMENSION DSIZE(*)
2249C
2250C-----COMMON----------------------------------------------------------
2251C
2252      INCLUDE 'DPCOP2.INC'
2253C
2254C-----START POINT-----------------------------------------------------
2255C
2256      ISUBN1='DPVE'
2257      ISUBN2='C2  '
2258      IERROR='NO'
2259      IWRITE='OFF'
2260C
2261      PI=3.1415926
2262C
2263C               ********************************************
2264C               **  STEP 1--                              **
2265C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
2266C               ********************************************
2267C
2268      IF(NZ.LT.1)THEN
2269        WRITE(ICOUT,999)
2270  999   FORMAT(1X)
2271        CALL DPWRST('XXX','BUG ')
2272        WRITE(ICOUT,31)
2273   31   FORMAT('***** ERROR IN VECTOR PLOT--')
2274        CALL DPWRST('XXX','BUG ')
2275        WRITE(ICOUT,32)
2276   32   FORMAT('      THE NUMBER OF OBSERVATIONS MUST BE AT LEAST 1;')
2277        CALL DPWRST('XXX','BUG ')
2278        WRITE(ICOUT,34)NZ
2279   34   FORMAT('      THE ENTERED NUMBER OF OBSERVATIONS HERE = ',I6)
2280        CALL DPWRST('XXX','BUG ')
2281        WRITE(ICOUT,999)
2282        CALL DPWRST('XXX','BUG ')
2283        IERROR='YES'
2284        GOTO9000
2285      ENDIF
2286C
2287      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'VEC2')THEN
2288        WRITE(ICOUT,999)
2289        CALL DPWRST('XXX','BUG ')
2290        WRITE(ICOUT,71)
2291   71   FORMAT('***** AT THE BEGINNING OF DPVEC2--')
2292        CALL DPWRST('XXX','BUG ')
2293        WRITE(ICOUT,72)ICASPL,NZ,N2,NPLOTV,MAXNXT
2294   72   FORMAT('ICASPL,NZ,N2,NPLOTV,MAXNXT = ',A4,2X,4I8)
2295        CALL DPWRST('XXX','BUG ')
2296        WRITE(ICOUT,73)IVCFMT,IVCARR,IANGLU,IHIGH
2297   73   FORMAT('IVCFMT,IVCARR,IANGLU,IHIGH=',3(A4,1X),A4)
2298        CALL DPWRST('XXX','BUG ')
2299        IF(NZ.GE.1)THEN
2300          DO81I=1,NZ
2301           WRITE(ICOUT,82)I,Y1(I),Y2(I),Y3(I),Y4(I)
2302   82      FORMAT('I,Y1(I),Y2(I),Y3(I),Y4(I) = ',I8,4E12.5)
2303           CALL DPWRST('XXX','BUG ')
2304   81    CONTINUE
2305        ENDIF
2306      ENDIF
2307C
2308C               ****************************************
2309C               **  STEP 11--                         **
2310C               **  DETERMINE PLOT COORDINATES        **
2311C               **  HANDLE 3 CASES OF VECTOR FORMAT   **
2312C               **  SEPARATELY.                       **
2313C               **  IVCFMT = POINT                    **
2314C               **           Y1, Y2 = (X,Y) START POINT*
2315C               **           Y3, Y4 = (X,Y) STOP POINT**
2316C               **         = ANGLE                    **
2317C               **           Y1, Y2 = (X,Y) START POINT*
2318C               **           Y3 = ANGLE               **
2319C               **           Y4 = LENGTH              **
2320C               **         = DELTA                    **
2321C               **           Y1, Y2 = (X,Y) START POINT*
2322C               **           Y3 = X DISTANCE          **
2323C               **           Y4 = Y DISTANCE          **
2324C               ****************************************
2325C
2326CCCCC IF(NHIGH.GT.0)THEN
2327      IF(IHIGH.EQ.'ON')THEN
2328        CALL CODE(XHIGH,NZ,IWRITE,XDIST,DSIZE,MAXN,IBUGG3,IERROR)
2329        DO1010I=1,NZ
2330          XHIGH(I)=XDIST(I)
2331 1010   CONTINUE
2332      ELSE
2333        DO1020I=1,NZ
2334          XHIGH(I)=1.0
2335 1020   CONTINUE
2336      ENDIF
2337C
2338      ANZ=NZ
2339      AMXDST=-1.0
2340      IF(IVCFMT.EQ.'POIN')THEN
2341        J=0
2342        K=0
2343        DO1100I=1,NZ
2344          J=J+1
2345          K=K+1
2346          X(J)=Y2(I)
2347          Y(J)=Y1(I)
2348          D(J)=REAL(K)
2349          J=J+1
2350          X(J)=Y4(I)
2351          Y(J)=Y3(I)
2352          D(J)=REAL(K)
2353          DIST=(Y2(I)-Y4(I))**2 + (Y1(I)-Y3(I))**2
2354          IF(DIST.GT.AMXDST)AMXDST=DIST
2355 1100   CONTINUE
2356      ELSEIF(IVCFMT.EQ.'DELT')THEN
2357        J=0
2358        K=0
2359        DO1200I=1,NZ
2360          J=J+1
2361          K=K+1
2362          X(J)=Y2(I)
2363          Y(J)=Y1(I)
2364          D(J)=REAL(K)
2365          J=J+1
2366          X(J)=Y2(I)+Y4(I)
2367          Y(J)=Y1(I)+Y3(I)
2368          D(J)=REAL(K)
2369          DIST=Y4(I)*Y4(I)+Y3(I)*Y3(I)
2370          IF(DIST.GT.AMXDST)AMXDST=DIST
2371 1200   CONTINUE
2372      ELSE
2373        J=0
2374        K=0
2375        DO1300I=1,NZ
2376          J=J+1
2377          K=K+1
2378          X(J)=Y2(I)
2379          Y(J)=Y1(I)
2380          D(J)=REAL(K)
2381          J=J+1
2382          THETA=Y3(I)
2383          DIST=Y4(I)
2384          IF(DIST.GT.AMXDST)AMXDST=DIST
2385          IF(IANGLU.EQ.'DEGR')THETA=THETA*(PI/180.0)
2386          X(J)=Y2(I)+DIST*COS(THETA)
2387          Y(J)=Y1(I)+DIST*SIN(THETA)
2388          D(J)=REAL(K)
2389 1300   CONTINUE
2390      ENDIF
2391C
2392      N2=J
2393      NPLOTV=3
2394C
2395C     ***************************************
2396C     **  HANDLE FIXED OR VARIABLE SIZE    **
2397C     **  ARROWS.                          **
2398C     ***************************************
2399C
2400      IF(IVCARR.EQ.'FIXE')THEN
2401        DO2100I=1,N2
2402          DSIZE(I)=1.0
2403 2100   CONTINUE
2404      ELSE
2405        ICASPL='VVAR'
2406CCCCC   AUGUST, 1994.  BASE ON X AND Y ARRAYS, TREATED SAME
2407CCCCC   FOR ALL CASES.
2408        J1=0
2409        DO2200I=1,N2,2
2410CCCCC     I1=I
2411CCCCC     I2=I+1
2412CCCCC     J=MOD(I1,2)+1
2413CCCCC     IF(IVCFMT.EQ.'POIN')THEN
2414CCCCC       DIST=(Y2(J)-Y4(J))**2 + (Y1(J)-Y3(J))**2
2415CCCCC     ELSEIF(IVCFMT.EQ.'DELT')THEN
2416CCCCC       DIST=Y4(J)*Y4(J)+Y3(J)*Y3(J)
2417CCCCC     ELSE
2418CCCCC       DIST=Y4(J)
2419CCCCC     ENDIF
2420          DIST=(X(I)-X(I+1))**2 + (Y(I)-Y(I+1))**2
2421          ASIZE=DIST/AMXDST
2422          IF(ASIZE.GT.1.0)ASIZE=1.0
2423          IF(ASIZE.LE.0.05)ASIZE=0.05
2424CCCCC     DSIZE(I1)=ASIZE
2425CCCCC     DSIZE(I2)=ASIZE
2426          DSIZE(I)=ASIZE
2427          DSIZE(I+1)=ASIZE
2428 2200   CONTINUE
2429      ENDIF
2430C               *****************
2431C               **  STEP 90--  **
2432C               **  EXIT       **
2433C               *****************
2434C
2435 9000 CONTINUE
2436      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'VEC2')THEN
2437        WRITE(ICOUT,999)
2438        CALL DPWRST('XXX','BUG ')
2439        WRITE(ICOUT,9011)
2440 9011   FORMAT('***** AT THE END       OF DPVEC2--')
2441        CALL DPWRST('XXX','BUG ')
2442        WRITE(ICOUT,9012)ICASPL,NZ,N2,IERROR
2443 9012   FORMAT('ICASPL,NZ,N2,IERROR = ',A4,2I8,2X,A4)
2444        CALL DPWRST('XXX','BUG ')
2445        WRITE(ICOUT,9013)N2,NPLOTV,J,K,AMXDST
2446 9013   FORMAT('N2,NPLOTV,J,K,AMXDST = ',4I8,G15.7)
2447        CALL DPWRST('XXX','BUG ')
2448        IF(NZ.GE.1)THEN
2449          DO9021I=1,NZ
2450            WRITE(ICOUT,9022)I,Y1(I),Y2(I),Y3(I),Y4(I)
2451 9022       FORMAT('I,Y1(I),Y2(I),Y3(I) = ',I8,4E12.5)
2452            CALL DPWRST('XXX','BUG ')
2453 9021     CONTINUE
2454        ENDIF
2455        DO9035I=1,N2
2456          WRITE(ICOUT,9036)I,Y(I),X(I),D(I),DSIZE(I)
2457 9036     FORMAT('I,Y(I),X(I),D(I) = ',I8,2E15.7,F9.2,F5.2)
2458          CALL DPWRST('XXX','BUG ')
2459 9035   CONTINUE
2460      ENDIF
2461C
2462      RETURN
2463      END
2464      SUBROUTINE DPVCFM(IHARG,NUMARG,
2465     1IDEFVF,
2466     1IVCFMT,
2467     1IBUGS2,IFOUND,IERROR)
2468C
2469C     PURPOSE--DEFINE THE VECTOR FORMAT
2470C              CAN BE <POINT/ANGLE/DELTA> (DEFAULT IS ANGLE)
2471C              THIS SWITCH CONTROLS HOW THE 4 ARGUMENTS TO THE
2472C              VECTOR PLOT COMMAND ARE INTERPERTED (2 POINTS,
2473C              1 POINT WITH ANGLE AND DISTANCE, 1 POINT WITH
2474C              X DISTANCE AND Y DISTANCE)
2475C
2476C     INPUT  ARGUMENTS--IHARG  (A  CHARACTER VECTOR)
2477C                     --NUMARG (AN INTEGER VARIABLE)
2478C                     --IDEFVF (A  CHARACTER VARIABLE)
2479C                     --IBUGS2 (A  CHARACTER VARIABLE)
2480C     OUTPUT ARGUMENTS--IVCFMT (A CHARACTER VARIABLE)
2481C                     --IFOUND ('YES' OR 'NO' )
2482C                     --IERROR ('YES' OR 'NO' )
2483C     WRITTEN BY--JAMES J. FILLIBEN
2484C                 STATISTICAL ENGINEERING DIVISION
2485C                 INFORMATION TECHNOLOGY LABORATORY
2486C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
2487C                 GAITHERSBURG, MD 20899-8980
2488C                 PHONE--301-975-2855
2489C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
2490C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
2491C     LANGUAGE--ANSI FORTRAN (1977)
2492C     VERSION NUMBER--82/7
2493C     ORIGINAL VERSION--AUGUST   1992.
2494C
2495C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
2496C
2497      CHARACTER*4 IHARG
2498      CHARACTER*4 IDEFVF
2499      CHARACTER*4 IVCFMT
2500      CHARACTER*4 IBUGS2
2501      CHARACTER*4 IFOUND
2502      CHARACTER*4 IERROR
2503C
2504      CHARACTER*4 IHOLD
2505C
2506C---------------------------------------------------------------------
2507C
2508      DIMENSION IHARG(*)
2509C
2510C-----COMMON----------------------------------------------------------
2511C
2512      INCLUDE 'DPCOP2.INC'
2513C
2514C-----START POINT-----------------------------------------------------
2515C
2516      IF(IBUGS2.EQ.'OFF')GOTO90
2517      WRITE(ICOUT,999)
2518  999 FORMAT(1X)
2519      CALL DPWRST('XXX','BUG ')
2520      WRITE(ICOUT,51)
2521   51 FORMAT('***** AT THE BEGINNING OF DPVCFM--')
2522      CALL DPWRST('XXX','BUG ')
2523      WRITE(ICOUT,53)IDEFVF
2524   53 FORMAT('IDEFVF = ',A4)
2525      CALL DPWRST('XXX','BUG ')
2526      WRITE(ICOUT,54)NUMARG
2527   54 FORMAT('NUMARG = ',I8)
2528      CALL DPWRST('XXX','BUG ')
2529      DO55I=1,NUMARG
2530      WRITE(ICOUT,56)I,IHARG(I)
2531   56 FORMAT('I,IHARG(I) = ',I8,2X,A4)
2532      CALL DPWRST('XXX','BUG ')
2533   55 CONTINUE
2534   90 CONTINUE
2535C
2536      IFOUND='NO'
2537      IERROR='NO'
2538C
2539      IF(NUMARG.LE.1)GOTO1150
2540      IF(NUMARG.GT.2)GOTO9000
2541C
2542      IF(IHARG(2).EQ.'AUTO')GOTO1150
2543      IF(IHARG(2).EQ.'DEFA')GOTO1150
2544      GOTO1160
2545C
2546 1150 CONTINUE
2547      IHOLD=IDEFVF
2548      GOTO1180
2549C
2550 1160 CONTINUE
2551      IHOLD=IHARG(2)
2552      GOTO1180
2553C
2554 1180 CONTINUE
2555      IFOUND='YES'
2556      IVCFMT=IHOLD
2557C
2558      IF(IFEEDB.EQ.'OFF')GOTO1189
2559      WRITE(ICOUT,999)
2560      CALL DPWRST('XXX','BUG ')
2561      WRITE(ICOUT,1181)IVCFMT
2562 1181 FORMAT('THE VECTOR FORMAT SWITCH HAS JUST BEEN SET TO ',
2563     1A4)
2564      CALL DPWRST('XXX','BUG ')
2565 1189 CONTINUE
2566      GOTO9000
2567C
2568 9000 CONTINUE
2569      IF(IBUGS2.EQ.'OFF')GOTO9090
2570      WRITE(ICOUT,999)
2571      CALL DPWRST('XXX','BUG ')
2572      WRITE(ICOUT,9011)
2573 9011 FORMAT('***** AT THE END       OF DPVCFM')
2574      CALL DPWRST('XXX','BUG ')
2575      WRITE(ICOUT,9012)IBUGS2,IFOUND,IERROR
2576 9012 FORMAT('IBUGS2,IFOUND,IERROR = ',A4,2X,A4,2X,A4)
2577      CALL DPWRST('XXX','BUG ')
2578      WRITE(ICOUT,9013)IDEFVF,IVCFMT
2579 9013 FORMAT('IDEFVF,IVCFMT = ',A4,2X,A4)
2580      CALL DPWRST('XXX','BUG ')
2581 9090 CONTINUE
2582C
2583      RETURN
2584      END
2585      SUBROUTINE DPVCAR(IHARG,NUMARG,
2586CCCCC1IDEFAR,IDEFVO,
2587     1IDEFVA,IDEFVO,
2588     1IVCARR,IVCOPN,
2589     1IBUGS2,IFOUND,IERROR)
2590C
2591C     PURPOSE--VECTOR ARROW <FIXED/VARIABLE>
2592C              VECTOR ARROW <OPEN/CLOSED>
2593C              <FIXED/VARIABLE> CONTROLS WHETHER THE ARROWS ON
2594C              THE VECTOR PLOT COMMAND ARE DRAWN AS FIXED LENGTH
2595C              OR SIZE SCALED RELATIVE TO THE LENGTH OF THE VECTOR.
2596C              <OPEN/CLOSED> CONTROLS WHETHER THE ARROW IS DRAWN
2597C              LIKE A TRIANGLE (CLOSED, THE DEFAULT) OR WITH THE
2598C              BASE OF THE TRIANGLE LEFT OFF (OPEN).
2599C
2600C     INPUT  ARGUMENTS--IHARG  (A  CHARACTER VECTOR)
2601C                     --NUMARG (AN INTEGER VARIABLE)
2602C                     --IDEFVA (A  CHARACTER VARIABLE)
2603C                     --IDEFVO (A  CHARACTER VARIABLE)
2604C                     --IBUGS2 (A  CHARACTER VARIABLE)
2605C     OUTPUT ARGUMENTS--IVCARR (A CHARACTER VARIABLE)
2606C                     --IVCOPN (A CHARACTER VARIABLE)
2607C                     --IFOUND ('YES' OR 'NO' )
2608C                     --IERROR ('YES' OR 'NO' )
2609C     WRITTEN BY--JAMES J. FILLIBEN
2610C                 STATISTICAL ENGINEERING DIVISION
2611C                 INFORMATION TECHNOLOGY LABORATORY
2612C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
2613C                 GAITHERSBURG, MD 20899-8980
2614C                 PHONE--301-975-2855
2615C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
2616C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
2617C     LANGUAGE--ANSI FORTRAN (1977)
2618C     VERSION NUMBER--82/7
2619C     ORIGINAL VERSION--AUGUST   1992.
2620C
2621C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
2622C
2623      CHARACTER*4 IHARG
2624      CHARACTER*4 IDEFVA
2625      CHARACTER*4 IVCARR
2626CCCCC OCTOBER 1993. ADD FOLLOWING 2 LINES
2627      CHARACTER*4 IVCOPN
2628      CHARACTER*4 IDEFVO
2629      CHARACTER*4 IBUGS2
2630      CHARACTER*4 IFOUND
2631      CHARACTER*4 IERROR
2632C
2633C---------------------------------------------------------------------
2634C
2635      DIMENSION IHARG(*)
2636C
2637C-----COMMON----------------------------------------------------------
2638C
2639      INCLUDE 'DPCOP2.INC'
2640C
2641C-----START POINT-----------------------------------------------------
2642C
2643      IF(IBUGS2.EQ.'OFF')GOTO90
2644      WRITE(ICOUT,999)
2645  999 FORMAT(1X)
2646      CALL DPWRST('XXX','BUG ')
2647      WRITE(ICOUT,51)
2648   51 FORMAT('***** AT THE BEGINNING OF DPVCAR--')
2649      CALL DPWRST('XXX','BUG ')
2650      WRITE(ICOUT,53)IDEFVA,IDEFVO
2651   53 FORMAT('IDEFVA,IDEFVO = ',A4,1X,A4)
2652      CALL DPWRST('XXX','BUG ')
2653      WRITE(ICOUT,54)NUMARG
2654   54 FORMAT('NUMARG = ',I8)
2655      CALL DPWRST('XXX','BUG ')
2656      DO55I=1,NUMARG
2657      WRITE(ICOUT,56)I,IHARG(I)
2658   56 FORMAT('I,IHARG(I) = ',I8,2X,A4)
2659      CALL DPWRST('XXX','BUG ')
2660   55 CONTINUE
2661   90 CONTINUE
2662C
2663      IFOUND='NO'
2664      IERROR='NO'
2665C
2666      IF(NUMARG.NE.2)GOTO9000
2667C
2668      IF(IHARG(2).EQ.'AUTO')GOTO1150
2669      IF(IHARG(2).EQ.'DEFA')GOTO1150
2670      IF(IHARG(2).EQ.'FIXE')GOTO1160
2671      IF(IHARG(2).EQ.'VARI')GOTO1170
2672      IF(IHARG(2).EQ.'OPEN')GOTO1180
2673      IF(IHARG(2).EQ.'CLOS')GOTO1190
2674      GOTO1150
2675C
2676 1150 CONTINUE
2677      IVCARR=IDEFVA
2678      IVCOPN=IDEFVO
2679      GOTO2000
2680C
2681 1160 CONTINUE
2682      IVCARR='FIXE'
2683      GOTO2000
2684C
2685 1170 CONTINUE
2686      IVCARR='VARI'
2687      GOTO2000
2688C
2689 1180 CONTINUE
2690      IVCOPN='OPEN'
2691      GOTO2000
2692C
2693 1190 CONTINUE
2694      IVCOPN='CLOS'
2695      GOTO2000
2696C
2697 2000 CONTINUE
2698      IFOUND='YES'
2699C
2700      IF(IFEEDB.EQ.'OFF')GOTO2089
2701      WRITE(ICOUT,999)
2702      CALL DPWRST('XXX','BUG ')
2703      WRITE(ICOUT,2051)IVCARR
2704 2051 FORMAT('THE VECTOR ARROW SIZE WILL BE ',A4)
2705      CALL DPWRST('XXX','BUG ')
2706      WRITE(ICOUT,2052)IVCOPN
2707 2052 FORMAT('THE VECTOR ARROW HEAD WILL BE ',A4)
2708      CALL DPWRST('XXX','BUG ')
2709 2089 CONTINUE
2710      GOTO9000
2711C
2712 9000 CONTINUE
2713      IF(IBUGS2.EQ.'OFF')GOTO9090
2714      WRITE(ICOUT,999)
2715      CALL DPWRST('XXX','BUG ')
2716      WRITE(ICOUT,9011)
2717 9011 FORMAT('***** AT THE END       OF DPVCAR-')
2718      CALL DPWRST('XXX','BUG ')
2719      WRITE(ICOUT,9012)IBUGS2,IFOUND,IERROR
2720 9012 FORMAT('IBUGS2,IFOUND,IERROR = ',A4,2X,A4,2X,A4)
2721      CALL DPWRST('XXX','BUG ')
2722      WRITE(ICOUT,9013)IDEFVA,IVCARR
2723 9013 FORMAT('IDEFVA,IVCARR = ',A4,2X,A4)
2724      CALL DPWRST('XXX','BUG ')
2725      WRITE(ICOUT,9014)IDEFVO,IVCOPN
2726 9014 FORMAT('IDEFVO,IVCOPN = ',A4,2X,A4)
2727      CALL DPWRST('XXX','BUG ')
2728 9090 CONTINUE
2729C
2730      RETURN
2731      END
2732      SUBROUTINE DPVERT(IHARG,IARGT,ARG,NUMARG,
2733     1PDEFVG,
2734     1PTEXVG,
2735     1IBUGD2,ISUBRO,IFOUND,IERROR)
2736C
2737C     PURPOSE--DEFINE THE VERTICAL GAP FOR TEXT CHARACTERS.
2738C              THE VERTICAL GAP FOR TEXT CHARACTERS WILL BE PLACED
2739C              IN THE FLOATING POINT VARIABLE PTEXVG.
2740C     NOTE--THE VERTICAL GAP IS IN STANDARDIZED UNITS (0.0 TO 100.0).
2741C     NOTE--THE VERTICAL GAP IS THE BETWEEN-LINE SPACING (DISTANCE)
2742C           FROM THE BOTTOM OF A CHARACTER ON ONE LINE
2743C           TO THE TOP OF A CHARACTER ON THE NEXT LINE.
2744C     INPUT  ARGUMENTS--IHARG  (A  CHARACTER VECTOR)
2745C                     --IARGT
2746C                     --ARG
2747C                     --NUMARG
2748C                     --PDEFVG
2749C                     --IBUGD2
2750C     OUTPUT ARGUMENTS--PTEXVG
2751C                     --IFOUND ('YES' OR 'NO' )
2752C                     --IERROR ('YES' OR 'NO' )
2753C     WRITTEN BY--JAMES J. FILLIBEN
2754C                 STATISTICAL ENGINEERING DIVISION
2755C                 INFORMATION TECHNOLOGY LABORATORY
2756C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
2757C                 GAITHERSBURG, MD 20899-8980
2758C                 PHONE--301-975-2899
2759C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
2760C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
2761C     LANGUAGE--ANSI FORTRAN (1977)
2762C     VERSION NUMBER--82/7
2763C     ORIGINAL VERSION--APRIL     1981.
2764C     UPDATED         --MAY       1982.
2765C
2766C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
2767C
2768      CHARACTER*4 IHARG
2769      CHARACTER*4 IARGT
2770      CHARACTER*4 IBUGD2
2771      CHARACTER*4 ISUBRO
2772      CHARACTER*4 IFOUND
2773      CHARACTER*4 IERROR
2774C
2775C---------------------------------------------------------------------
2776C
2777      DIMENSION IHARG(*)
2778      DIMENSION IARGT(*)
2779      DIMENSION ARG(*)
2780C
2781C-----COMMON----------------------------------------------------------
2782C
2783      INCLUDE 'DPCOP2.INC'
2784C
2785C-----START POINT-----------------------------------------------------
2786C
2787      IFOUND='NO'
2788      IERROR='NO'
2789C
2790      IF(IBUGD2.EQ.'OFF')GOTO90
2791      WRITE(ICOUT,999)
2792  999 FORMAT(1X)
2793      CALL DPWRST('XXX','BUG ')
2794      WRITE(ICOUT,51)
2795   51 FORMAT('***** AT THE BEGINNING OF DPVERT--')
2796      CALL DPWRST('XXX','BUG ')
2797      WRITE(ICOUT,53)PDEFVG
2798   53 FORMAT('PDEFVG = ',E15.7)
2799      CALL DPWRST('XXX','BUG ')
2800      WRITE(ICOUT,54)NUMARG
2801   54 FORMAT('NUMARG = ',I8)
2802      CALL DPWRST('XXX','BUG ')
2803      DO55I=1,NUMARG
2804      WRITE(ICOUT,56)I,IHARG(I),IARGT(I),ARG(I)
2805   56 FORMAT('I,IHARG(I),IARGT(I),ARG(I) = ',I8,2X,A4,2X,A4,E15.7)
2806      CALL DPWRST('XXX','BUG ')
2807   55 CONTINUE
2808   90 CONTINUE
2809C
2810C               ***********************************
2811C               **  TREAT THE VERTICAL GAP CASE  **
2812C               ***********************************
2813C
2814      IF(NUMARG.LE.0)GOTO1150
2815      IF(NUMARG.EQ.1.AND.IHARG(NUMARG).EQ.'GAP')GOTO1150
2816      IF(NUMARG.EQ.1.AND.IHARG(NUMARG).EQ.'SPAC')GOTO1150
2817      IF(NUMARG.EQ.1.AND.IHARG(NUMARG).EQ.'DIST')GOTO1150
2818      IF(NUMARG.EQ.1.AND.IHARG(NUMARG).EQ.'LENG')GOTO1150
2819      IF(IHARG(NUMARG).EQ.'ON')GOTO1150
2820      IF(IHARG(NUMARG).EQ.'OFF')GOTO1150
2821      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150
2822      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150
2823C
2824      IF(NUMARG.GE.1.AND.IARGT(NUMARG).EQ.'NUMB')
2825     1GOTO1160
2826C
2827      IERROR='YES'
2828      WRITE(ICOUT,1121)
2829 1121 FORMAT('***** ERROR IN DPVERT--')
2830      CALL DPWRST('XXX','BUG ')
2831      WRITE(ICOUT,1122)
2832 1122 FORMAT('      ILLEGAL FORM FOR VERTICAL GAP ',
2833     1'COMMAND.')
2834      CALL DPWRST('XXX','BUG ')
2835      WRITE(ICOUT,1124)
2836 1124 FORMAT('      TEST EXAMPLE TO DEMONSTRATE THE ',
2837     1'PROPER FORM--')
2838      CALL DPWRST('XXX','BUG ')
2839      WRITE(ICOUT,1125)
2840 1125 FORMAT('      SUPPOSE IT IS DESIRED THAT ')
2841      CALL DPWRST('XXX','BUG ')
2842      WRITE(ICOUT,1126)
2843 1126 FORMAT('      THE TEXT CHARACTERS HAVE A VERTICAL SPACING ')
2844      CALL DPWRST('XXX','BUG ')
2845      WRITE(ICOUT,1127)
2846 1127 FORMAT('      OF 2 (WHERE THE VERTICAL SCREEN UNITS RANGE')
2847      CALL DPWRST('XXX','BUG ')
2848      WRITE(ICOUT,1128)
2849 1128 FORMAT('      FROM 0 TO 100,')
2850      CALL DPWRST('XXX','BUG ')
2851      WRITE(ICOUT,1130)
2852 1130 FORMAT('      THEN THE ALLOWABLE FORM IS--')
2853      CALL DPWRST('XXX','BUG ')
2854      WRITE(ICOUT,1131)
2855 1131 FORMAT('           VERTICAL SPACING 5 ')
2856      CALL DPWRST('XXX','BUG ')
2857      GOTO9000
2858C
2859 1150 CONTINUE
2860      PTEXVG=PDEFVG
2861      GOTO1180
2862C
2863 1160 CONTINUE
2864      PTEXVG=ARG(NUMARG)
2865      GOTO1180
2866C
2867 1180 CONTINUE
2868      IFOUND='YES'
2869C
2870      IF(IFEEDB.EQ.'OFF')GOTO1189
2871      WRITE(ICOUT,999)
2872      CALL DPWRST('XXX','BUG ')
2873      WRITE(ICOUT,1181)
2874 1181 FORMAT('THE VERTICAL SPACING (FOR TEXT CHARACTERS)  ')
2875      CALL DPWRST('XXX','BUG ')
2876      WRITE(ICOUT,1182)PTEXVG
2877 1182 FORMAT('HAS JUST BEEN SET TO ',E15.7)
2878      CALL DPWRST('XXX','BUG ')
2879 1189 CONTINUE
2880      GOTO9000
2881C
2882C               *****************
2883C               **  STEP 90--  **
2884C               **  EXIT       **
2885C               *****************
2886C
2887 9000 CONTINUE
2888      IF(IBUGD2.EQ.'OFF')GOTO9090
2889      WRITE(ICOUT,999)
2890      CALL DPWRST('XXX','BUG ')
2891      WRITE(ICOUT,9011)
2892 9011 FORMAT('***** AT THE END       OF DPVERT--')
2893      CALL DPWRST('XXX','BUG ')
2894      WRITE(ICOUT,9012)IBUGD2,ISUBRO,IFOUND,IERROR
2895 9012 FORMAT('IBUGD2,ISUBRO,IFOUND,IERROR = ',A4,2X,A4,2X,A4)
2896      CALL DPWRST('XXX','BUG ')
2897      WRITE(ICOUT,9013)PTEXVG
2898 9013 FORMAT('PTEXVG = ',E15.7)
2899      CALL DPWRST('XXX','BUG ')
2900 9090 CONTINUE
2901C
2902      RETURN
2903      END
2904      SUBROUTINE DPVIOL(NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2,
2905     1                  ICONT,IFENCE,IKDETY,IKDENP,PKDEWI,
2906     1                  ISUBRO,IBUGG2,IBUGG3,IBUGQ,IFOUND,IERROR)
2907C
2908C     PURPOSE--GENERATE A VIOLIN PLOT
2909C              A VIOLIN PLOT GENERATES A BOX PLOT.  IT THEN ADDS
2910C              A VERTICAL DENSITY PLOT TO EACH SIDE OF THE BOX
2911C              PLOT.
2912C     WRITTEN BY--ALAN HECKERT
2913C                 STATISTICAL ENGINEERING DIVISION
2914C                 INFORMATION TECHNOLOGY LABORATORY
2915C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
2916C                 GAITHERSBURG, MD 20899-8980
2917C                 PHONE--301-975-2899
2918C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
2919C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
2920C     LANGUAGE--ANSI FORTRAN (1977)
2921C     VERSION NUMBER--2003/2
2922C     ORIGINAL VERSION--FEBRUARY  2003.
2923C     UPDATED         --FEBRUARY  2011. USE DPPARS AND DPPAR3 TO PERFORM
2924C                                       THE COMMAND PARSING
2925C     UPDATED         --FEBRUARY  2011. SUPPORT FOR "MULTIPLE" CASE
2926C     UPDATED         --FEBRUARY  2011. SUPPORT FOR TWO GROUP-ID VARIABLES
2927C
2928C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
2929C
2930      CHARACTER*4 ICASPL
2931      CHARACTER*4 IAND1
2932      CHARACTER*4 IAND2
2933      CHARACTER*4 ICONT
2934      CHARACTER*4 IFENCE
2935      CHARACTER*4 IKDETY
2936      CHARACTER*4 ISUBRO
2937      CHARACTER*4 IBUGG2
2938      CHARACTER*4 IBUGG3
2939      CHARACTER*4 IBUGQ
2940      CHARACTER*4 IFOUND
2941      CHARACTER*4 IERROR
2942      CHARACTER*4 IFOUN1
2943      CHARACTER*4 IFOUN2
2944      CHARACTER*4 IWRITE
2945C
2946      CHARACTER*4 IREPL
2947      CHARACTER*4 IMULT
2948      CHARACTER*4 ISUBN1
2949      CHARACTER*4 ISUBN2
2950      CHARACTER*4 ISTEPN
2951C
2952      CHARACTER*4 ICASE
2953      CHARACTER*40 INAME
2954      PARAMETER (MAXSPN=30)
2955      CHARACTER*4 IVARN1(MAXSPN)
2956      CHARACTER*4 IVARN2(MAXSPN)
2957      CHARACTER*4 IVARTY(MAXSPN)
2958      REAL PVAR(MAXSPN)
2959      INTEGER ILIS(MAXSPN)
2960      INTEGER NRIGHT(MAXSPN)
2961      INTEGER ICOLR(MAXSPN)
2962C
2963C---------------------------------------------------------------------
2964C
2965      INCLUDE 'DPCOPA.INC'
2966      INCLUDE 'DPCOZZ.INC'
2967      INCLUDE 'DPCOZD.INC'
2968C
2969      DIMENSION Y1(MAXOBV)
2970      DIMENSION X1(MAXOBV)
2971      DIMENSION X2(MAXOBV)
2972      DIMENSION X3(MAXOBV)
2973      DIMENSION X4(MAXOBV)
2974      DIMENSION X5(MAXOBV)
2975      DIMENSION X6(MAXOBV)
2976      DIMENSION XTEMP1(MAXOBV)
2977      DIMENSION XTEMP2(MAXOBV)
2978      DIMENSION XTEMP3(MAXOBV)
2979      DIMENSION XTEMP4(MAXOBV)
2980      DIMENSION XTEMP5(MAXOBV)
2981      DIMENSION XTEMP6(MAXOBV)
2982      DIMENSION XTEMP0(MAXOBV)
2983      DIMENSION XIDTEM(MAXOBV)
2984      DIMENSION TEMP(MAXOBV)
2985C
2986      DOUBLE PRECISION DTEMP1(MAXOBV)
2987      DOUBLE PRECISION DTEMP2(MAXOBV)
2988      DOUBLE PRECISION DTEMP3(MAXOBV)
2989C
2990      EQUIVALENCE (GARBAG(IGARB1),Y1(1))
2991      EQUIVALENCE (GARBAG(IGARB2),X1(1))
2992      EQUIVALENCE (GARBAG(IGARB3),X2(1))
2993      EQUIVALENCE (GARBAG(IGARB4),X3(1))
2994      EQUIVALENCE (GARBAG(IGARB5),X4(1))
2995      EQUIVALENCE (GARBAG(IGARB6),X5(1))
2996      EQUIVALENCE (GARBAG(IGARB7),X6(1))
2997      EQUIVALENCE (GARBAG(IGARB8),XIDTEM(1))
2998      EQUIVALENCE (GARBAG(IGARB9),XTEMP1(1))
2999      EQUIVALENCE (GARBAG(IGAR10),XTEMP2(1))
3000      EQUIVALENCE (GARBAG(JGAR11),XTEMP3(1))
3001      EQUIVALENCE (GARBAG(JGAR12),XTEMP4(1))
3002      EQUIVALENCE (GARBAG(JGAR13),XTEMP5(1))
3003      EQUIVALENCE (GARBAG(JGAR14),XTEMP6(1))
3004      EQUIVALENCE (GARBAG(JGAR15),XTEMP0(1))
3005      EQUIVALENCE (GARBAG(JGAR16),TEMP(1))
3006C
3007      EQUIVALENCE (DGARBG(IDGAR1),DTEMP1(1))
3008      EQUIVALENCE (DGARBG(IDGAR2),DTEMP2(1))
3009      EQUIVALENCE (DGARBG(IDGAR3),DTEMP3(1))
3010C
3011C-----COMMON----------------------------------------------------------
3012C
3013      INCLUDE 'DPCOHK.INC'
3014      INCLUDE 'DPCODA.INC'
3015      INCLUDE 'DPCOST.INC'
3016      INCLUDE 'DPCOP2.INC'
3017C
3018C-----START POINT-----------------------------------------------------
3019C
3020      IERROR='NO'
3021      IFOUND='NO'
3022      ISUBN1='DPVI'
3023      ISUBN2='OL  '
3024C
3025      MAXCP1=MAXCOL+1
3026      MAXCP2=MAXCOL+2
3027      MAXCP3=MAXCOL+3
3028      MAXCP4=MAXCOL+4
3029      MAXCP5=MAXCOL+5
3030      MAXCP6=MAXCOL+6
3031C
3032C               **********************************
3033C               **  TREAT THE VIOLIN PLOT CASE  **
3034C               **********************************
3035C
3036      IF(IBUGG2.EQ.'ON' .OR. ISUBRO.EQ.'VIOL')THEN
3037        WRITE(ICOUT,999)
3038  999   FORMAT(1X)
3039        CALL DPWRST('XXX','BUG ')
3040        WRITE(ICOUT,51)
3041   51   FORMAT('***** AT THE BEGINNING OF DPVIOL--')
3042        CALL DPWRST('XXX','BUG ')
3043        WRITE(ICOUT,52)ICASPL,IAND1,IAND2
3044   52   FORMAT('ICASPL,IAND1,IAND2 = ',2(A4,2X),A4)
3045        CALL DPWRST('XXX','BUG ')
3046        WRITE(ICOUT,53)ICONT,IBUGG2,IBUGG3,IBUGQ,ISUBRO
3047   53   FORMAT('ICONT,IBUGG2,IBUGG3,IBUGQ,ISUBRO = ',4(A4,2X),A4)
3048        CALL DPWRST('XXX','BUG ')
3049        WRITE(ICOUT,54)IFENCE,IKDETY,IKDENP,PKDEWI
3050   54   FORMAT('IFENCE,IKDETY,IDENP,PKDEWI = ',A4,2X,A4,I8,G15.7)
3051        CALL DPWRST('XXX','BUG ')
3052      ENDIF
3053C
3054C               ***************************
3055C               **  STEP 1--             **
3056C               **  EXTRACT THE COMMAND  **
3057C               ***************************
3058C
3059      ISTEPN='1'
3060      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VIOL')
3061     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3062C
3063C               ******************************************************
3064C               **  STEP 1--                                        **
3065C               **  EXTRACT THE COMMAND                             **
3066C               **  LOOK FOR ONE OF THE FOLLOWING COMMANDS:         **
3067C               **    1) VIOLIN PLOT Y X1 ... X2                    **
3068C               **    2) MULTIPLE VIOLIN PLOT Y1 ... YK             **
3069C               **    3) REPLICATED VIOLIN PLOT Y X1 X2             **
3070C               **  THE "REPLICATION" CASE IS ACTUALLY THE DEFAULT  **
3071C               **  AND THE KEYWORD "REPLICATION" IS OPTIONAL.      **
3072C               **  HOWEVER, SUPPORT IT FOR COMPATABILITY WITH      **
3073C               **  OTHER COMMANDS.                                 **
3074C               ******************************************************
3075C
3076      ISTEPN='1'
3077      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VIOL')
3078     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3079C
3080      IF(ICOM.EQ.'VIOL')GOTO89
3081      IF(ICOM.EQ.'MULT')GOTO89
3082      IF(ICOM.EQ.'REPL')GOTO89
3083      GOTO9000
3084C
3085   89 CONTINUE
3086      ICASPL='VIPL'
3087      IMULT='OFF'
3088      IREPL='OFF'
3089      ILASTC=-9999
3090C
3091      IF(ICOM.EQ.'VIOL')THEN
3092        IFOUN1='YES'
3093      ELSEIF(ICOM.EQ.'MULT')THEN
3094        IMULT='ON'
3095      ELSEIF(ICOM.EQ.'REPL')THEN
3096        IREPL='ON'
3097      ENDIF
3098C
3099      ISTOP=NUMARG-1
3100      DO90I=1,NUMARG
3101        IF(IHARG(I).EQ.'PLOT')THEN
3102          ISTOP=I
3103          IFOUN2='YES'
3104          GOTO99
3105        ENDIF
3106   90 CONTINUE
3107   99 CONTINUE
3108C
3109      IFOUND='NO'
3110      DO100I=1,ISTOP
3111        IF(IHARG(I).EQ.'=')THEN
3112          IFOUND='NO'
3113          GOTO9000
3114        ELSEIF(IHARG(I).EQ.'VIOL')THEN
3115          IFOUN1='YES'
3116          ILASTC=MAX(ILASTC,I)
3117        ELSEIF(IHARG(I).EQ.'PLOT')THEN
3118          IFOUN2='YES'
3119          ILASTC=MAX(ILASTC,I)
3120        ELSEIF(IHARG(I).EQ.'REPL')THEN
3121          IREPL='ON'
3122        ELSEIF(IHARG(I).EQ.'MULT')THEN
3123          IMULT='ON'
3124        ENDIF
3125  100 CONTINUE
3126C
3127      IF(IFOUN1.EQ.'YES' .AND. IFOUN2.EQ.'YES')IFOUND='YES'
3128      IF(IFOUND.EQ.'NO')GOTO9000
3129C
3130      IF(IMULT.EQ.'ON')THEN
3131        IF(IREPL.EQ.'ON')THEN
3132          WRITE(ICOUT,999)
3133          CALL DPWRST('XXX','BUG ')
3134          WRITE(ICOUT,101)
3135  101     FORMAT('***** ERROR IN VIOLIN PLOT--')
3136          CALL DPWRST('XXX','BUG ')
3137          WRITE(ICOUT,107)
3138  107     FORMAT('      YOU CANNOT SPECIFY BOTH "MULTIPLE" AND ',
3139     1           '"REPLICATION" FOR THIS PLOT.')
3140          CALL DPWRST('XXX','BUG ')
3141          IERROR='YES'
3142          GOTO9000
3143        ENDIF
3144      ENDIF
3145C
3146      IF(ILASTC.GE.1)THEN
3147        CALL ADJUST(ILASTC,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG)
3148      ENDIF
3149C
3150      IF(IBUGG2.EQ.'ON' .OR. ISUBRO.EQ.'VIOL')THEN
3151        WRITE(ICOUT,112)ICASPL,IMULT,IREPL,ILASTC
3152  112   FORMAT('ICASPL,IMULT,IREPL,ILASTC = ',3(A4,2X),I8)
3153        CALL DPWRST('XXX','BUG ')
3154      ENDIF
3155C
3156C               ****************************************
3157C               **  STEP 2--                          **
3158C               **  EXTRACT THE VARIABLE LIST         **
3159C               ****************************************
3160C
3161      ISTEPN='2'
3162      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VIOL')
3163     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3164C
3165      INAME='VIOLIN PLOT'
3166      MINNA=1
3167      MAXNA=100
3168      MINN2=2
3169      IFLAGE=1
3170      IF(IMULT.EQ.'ON')THEN
3171        IFLAGE=0
3172      ELSE
3173        IREPL='ON'
3174      ENDIF
3175      IFLAGM=1
3176      IFLAGP=0
3177      JMIN=1
3178      JMAX=NUMARG
3179      MINNVA=1
3180      MAXNVA=2
3181C
3182C     NOTE: NEED TO KEEP "VIOLIN PLOT Y" AS VALID SYNTAX, SO
3183C           MINIMUM NUMBER OF VARIABLES IS 1 EVEN FOR REPLICATION
3184C           CASE.
3185C
3186      IF(IREPL.EQ.'ON')THEN
3187CCCCC   MINNVA=MINNVA+1
3188        MAXNVA=MAXNVA+5
3189      ELSEIF(IMULT.EQ.'ON')THEN
3190        MAXNVA=30
3191      ENDIF
3192C
3193      CALL DPPARS(IHARG,IHARG2,IARGT,ARG,NUMARG,IANS,IWIDTH,
3194     1            IHNAME,IHNAM2,IUSE,NUMNAM,IN,IVALUE,VALUE,
3195     1            JMIN,JMAX,
3196     1            MINN2,MINNA,MAXNA,MAXSPN,IFLAGE,INAME,
3197     1            IVARN1,IVARN2,IVARTY,PVAR,
3198     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,ILOCQ,NUMVAR,
3199     1            MINNVA,MAXNVA,
3200     1            IFLAGM,IFLAGP,
3201     1            IBUGG3,IBUGQ,ISUBRO,IFOUND,IERROR)
3202      IF(IERROR.EQ.'YES')GOTO9000
3203C
3204      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VIOL')THEN
3205        WRITE(ICOUT,999)
3206        CALL DPWRST('XXX','BUG ')
3207        WRITE(ICOUT,281)
3208  281   FORMAT('***** AFTER CALL DPPARS--')
3209        CALL DPWRST('XXX','BUG ')
3210        WRITE(ICOUT,282)NQ,NUMVAR
3211  282   FORMAT('NQ,NUMVAR = ',2I8)
3212        CALL DPWRST('XXX','BUG ')
3213        IF(NUMVAR.GT.0)THEN
3214          DO285I=1,NUMVAR
3215            WRITE(ICOUT,287)I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),
3216     1                      ICOLR(I),IVARTY(I)
3217  287       FORMAT('I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),',
3218     1             'ICOLR(I),IVARTY(I) = ',I8,2X,A4,A4,2X,3I8,2X,A4)
3219            CALL DPWRST('XXX','BUG ')
3220  285     CONTINUE
3221        ENDIF
3222      ENDIF
3223C
3224      NRESP=1
3225C
3226      NREPL=0
3227      IF(IMULT.EQ.'ON')THEN
3228        NRESP=NUMVAR
3229      ELSE
3230        NREPL=NUMVAR-NRESP
3231        IF(NREPL.LT.0 .OR. NREPL.GT.6)THEN
3232          WRITE(ICOUT,999)
3233          CALL DPWRST('XXX','BUG ')
3234          WRITE(ICOUT,101)
3235          CALL DPWRST('XXX','BUG ')
3236          WRITE(ICOUT,511)
3237  511     FORMAT('      FOR THE REPLICATION CASE, THE NUMBER OF ',
3238     1           'REPLICATION VARIABLES')
3239          CALL DPWRST('XXX','BUG ')
3240          WRITE(ICOUT,512)
3241  512     FORMAT('      MUST BE BETWEEN 0 AND 6;  SUCH WAS NOT THE ',
3242     1           'CASE HERE.')
3243          CALL DPWRST('XXX','BUG ')
3244          WRITE(ICOUT,513)NREPL
3245  513     FORMAT('      THE NUMBER OF REPLICATION VARIABLES = ',I5)
3246          CALL DPWRST('XXX','BUG ')
3247          IERROR='YES'
3248          GOTO9000
3249        ENDIF
3250      ENDIF
3251C
3252      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VIOL')THEN
3253        ISTEPN='6'
3254        CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3255        WRITE(ICOUT,601)NRESP,NREPL
3256  601   FORMAT('NRESP,NREPL = ',2I5)
3257        CALL DPWRST('XXX','BUG ')
3258      ENDIF
3259C
3260C               **************************************************
3261C               **  STEP 7A--                                   **
3262C               **  CASE 1: NO "MULTIPLE" CASE--CAN HAVE EITHER **
3263C               **          1, 2, OR 3 VARIABLES.  THE FIRST    **
3264C               **          VARIABLE IS A RESPONSE VARIABLE     **
3265C               **          AND THE SECOND AND THIRD VARIABLES  **
3266C               **          ARE REPLICATION VARIABLES (IF       **
3267C               **          PRESENT).  NOTE THAT THIS VERSION   **
3268C               **          DOES NOT ACCEPT MATRIX ARGUMENTS    **
3269C               **          EVEN IF ONLY A SINGLE ARGUMENT IS   **
3270C               **          GIVEN (YOU CAN USE THE MULTIPLE     **
3271C               **          OPTION IN THAT CASE).               **
3272C               **************************************************
3273C
3274      IF(IMULT.EQ.'OFF')THEN
3275        ISTEPN='7A'
3276        IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VIOL')
3277     1    CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3278C
3279        ICOL=1
3280        CALL DPPAR5(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
3281     1              INAME,IVARN1,IVARN2,IVARTY,
3282     1              ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVAR,
3283     1              MAXCOL,MAXCP1,MAXCP2,MAXCP3,
3284     1              MAXCP4,MAXCP5,MAXCP6,
3285     1              V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
3286     1              Y1,X1,X2,X3,X4,X5,X6,NLOCAL,
3287     1              IBUGG3,ISUBRO,IFOUND,IERROR)
3288        IF(IERROR.EQ.'YES')GOTO9000
3289C
3290C       IF THERE ARE TWO OR MORE REPLICATION VARIABLES, COMBINE
3291C       THEM TO CREATE A SINGLE REPLICATION VARIABLE.
3292C
3293        IF(NUMVAR.EQ.3)THEN
3294          CALL CODCT2(X1,X2,NLOCAL,ICCTOF,ICCTG1,IWRITE,
3295     1                XTEMP0,XTEMP1,XTEMP2,
3296     1                IBUGG3,ISUBRO,IERROR)
3297          DO7011I=1,NLOCAL
3298            X1(I)=XTEMP0(I)
3299 7011     CONTINUE
3300          NUMVAR=2
3301        ELSEIF(NUMVAR.EQ.4)THEN
3302          CALL CODCT3(X1,X2,X3,NLOCAL,ICCTOF,ICCTG1,ICCTG2,IWRITE,
3303     1                XTEMP0,XTEMP1,XTEMP2,XTEMP3,
3304     1                IBUGG3,ISUBRO,IERROR)
3305          DO7012I=1,NLOCAL
3306            X1(I)=XTEMP0(I)
3307 7012     CONTINUE
3308          NUMVAR=2
3309        ELSEIF(NUMVAR.EQ.5)THEN
3310          CALL CODCT4(X1,X2,X3,X4,NLOCAL,
3311     1                ICCTOF,ICCTG1,ICCTG2,ICCTG3,IWRITE,
3312     1                XTEMP0,XTEMP1,XTEMP2,XTEMP3,XTEMP4,
3313     1                IBUGG3,ISUBRO,IERROR)
3314          DO7013I=1,NLOCAL
3315            X1(I)=XTEMP0(I)
3316 7013     CONTINUE
3317          NUMVAR=2
3318        ELSEIF(NUMVAR.EQ.6)THEN
3319          CALL CODCT5(X1,X2,X3,X4,X5,NLOCAL,
3320     1                ICCTOF,ICCTG1,ICCTG2,ICCTG3,ICCTG4,IWRITE,
3321     1                XTEMP0,XTEMP1,XTEMP2,XTEMP3,XTEMP4,XTEMP5,
3322     1                IBUGG3,ISUBRO,IERROR)
3323          DO7014I=1,NLOCAL
3324            X1(I)=XTEMP0(I)
3325 7014     CONTINUE
3326          NUMVAR=2
3327        ELSEIF(NUMVAR.EQ.7)THEN
3328          CALL CODCT6(X1,X2,X3,X4,X5,X6,NLOCAL,
3329     1                ICCTOF,ICCTG1,ICCTG2,ICCTG3,ICCTG4,ICCTG5,IWRITE,
3330     1                XTEMP0,XTEMP1,XTEMP2,XTEMP3,XTEMP4,XTEMP5,XTEMP6,
3331     1                IBUGG3,ISUBRO,IERROR)
3332          DO7015I=1,NLOCAL
3333            X1(I)=XTEMP0(I)
3334 7015     CONTINUE
3335          NUMVAR=2
3336        ENDIF
3337C
3338C               *********************************************************
3339C               **  STEP 7B--                                         **
3340C               **  GENERATE THE VIOLIN PLOT.                         **
3341C               **  DEFINE THE NUMBER OF PLOT POINTS    (NPLOTP).     **
3342C               **  DEFINE THE NUMBER OF PLOT VARIABLES (NPLOTV).     **
3343C               *********************************************************
3344C
3345        CALL DPVIO2(Y1,X1,NLOCAL,NUMVAR,ICASPL,ISIZE,ICONT,MAXOBV,
3346     1              IFENCE,IBXPWI,IKDETY,IKDENP,PKDEWI,
3347     1              XIDTEM,TEMP,DTEMP1,DTEMP2,DTEMP3,
3348     1              Y,X,D,NPLOTP,NPLOTV,ISUBRO,IBUGG3,IERROR)
3349C
3350C               ***********************************************
3351C               **  STEP 8A--                                **
3352C               **  CASE 2: MULTIPLE RESPONSE VARIABLES.     **
3353C               **          THESE CAN BE EITHER VARIABLE OR  **
3354C               **          MATRIX ARGUMENTS.                **
3355C               ***********************************************
3356C
3357      ELSEIF(IMULT.EQ.'ON')THEN
3358        ISTEPN='8A'
3359        IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'VIOL')
3360     1    CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3361C
3362        ICOL=1
3363        NUMVA2=NUMVAR
3364        CALL DPPAR8(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
3365     1              INAME,IVARN1,IVARN2,IVARTY,
3366     1              ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVA2,
3367     1              MAXCOL,MAXCP1,MAXCP2,MAXCP3,
3368     1              MAXCP4,MAXCP5,MAXCP6,
3369     1              V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
3370     1              XTEMP1,Y1,X1,NLOCAL,ICASE,
3371     1              IBUGG3,ISUBRO,IFOUND,IERROR)
3372        IF(IERROR.EQ.'YES')GOTO9000
3373        NUMVAR=2
3374C
3375C               *****************************************************
3376C               **  STEP 8B--                                      **
3377C               **  FORM THE VERTICAL AND HORIZONTAL AXIS          **
3378C               **  VALUES Y(.) AND X(.) FOR THE PLOT.             **
3379C               *****************************************************
3380C
3381        CALL DPVIO2(Y1,X1,NLOCAL,NUMVAR,ICASPL,ISIZE,ICONT,MAXOBV,
3382     1              IFENCE,IBXPWI,IKDETY,IKDENP,PKDEWI,
3383     1              XIDTEM,TEMP,DTEMP1,DTEMP2,DTEMP3,
3384     1              Y,X,D,NPLOTP,NPLOTV,ISUBRO,IBUGG3,IERROR)
3385      ENDIF
3386C               *****************
3387C               **  STEP 90--  **
3388C               **  EXIT       **
3389C               *****************
3390C
3391 9000 CONTINUE
3392      IF(IBUGG2.EQ.'ON' .OR. ISUBRO.EQ.'VIOL')THEN
3393        WRITE(ICOUT,999)
3394        CALL DPWRST('XXX','BUG ')
3395        WRITE(ICOUT,9011)
3396 9011   FORMAT('***** AT THE END       OF DPVIOL--')
3397        CALL DPWRST('XXX','BUG ')
3398        WRITE(ICOUT,9012)IFOUND,IERROR
3399 9012   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
3400        CALL DPWRST('XXX','BUG ')
3401        WRITE(ICOUT,9013)NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2
3402 9013   FORMAT('NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2 = ',
3403     1         I8,I8,I8,2X,A4,2X,A4,2X,A4)
3404        CALL DPWRST('XXX','BUG ')
3405        WRITE(ICOUT,9014)IFENCE,ISIZE
3406 9014   FORMAT('IFENCE,ISIZE = ',A4,I8)
3407        CALL DPWRST('XXX','BUG ')
3408        IF(NPLOTP.GT.0)THEN
3409          DO9015I=1,NPLOTP
3410            WRITE(ICOUT,9016)I,Y(I),X(I),D(I)
3411 9016       FORMAT('I,Y(I),X(I),D(I) = ',I8,3F12.5)
3412            CALL DPWRST('XXX','BUG ')
3413 9015     CONTINUE
3414        ENDIF
3415      ENDIF
3416C
3417      RETURN
3418      END
3419      SUBROUTINE DPVIO2(Y,X,N,NUMV2,ICASPL,ISIZE,ICONT,MAXOBV,
3420     1                  IFENCE,IBXPWI,IKDETY,IKDENP,PKDEWI,
3421     1                  XIDTEM,TEMP,DY,FT,SMOOTH,
3422     1                  Y2,X2,D2,N2,NPLOTV,ISUBRO,IBUGG3,IERROR)
3423C
3424C     PURPOSE--GENERATE A PAIR OF COORDINATE VECTORS
3425C              THAT WILL DEFINE A VIOLIN PLOT.
3426C     WRITTEN BY--ALAN HECKERT
3427C                 STATISTICAL ENGINEERING DIVISION
3428C                 INFORMATION TECHNOLOGY LABORATORY
3429C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
3430C                 GAITHERSBURG, MD 20899-8980
3431C                 PHONE--301-975-2899
3432C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
3433C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
3434C     LANGUAGE--ANSI FORTRAN (1977)
3435C     VERSION NUMBER--2003/2
3436C     ORIGINAL VERSION--FEBRUARY  2003.
3437C
3438C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
3439C
3440      CHARACTER*4 ICASPL
3441      CHARACTER*4 ICONT
3442      CHARACTER*4 IFENCE
3443      CHARACTER*4 IBXPWI
3444      CHARACTER*4 IKDETY
3445      CHARACTER*4 ISUBRO
3446      CHARACTER*4 IBUGG3
3447      CHARACTER*4 IERROR
3448C
3449      CHARACTER*4 ISUBN1
3450      CHARACTER*4 ISUBN2
3451      CHARACTER*4 ISTEPN
3452C
3453C---------------------------------------------------------------------
3454C
3455      DIMENSION Y(*)
3456      DIMENSION X(*)
3457      DIMENSION Y2(*)
3458      DIMENSION X2(*)
3459      DIMENSION D2(*)
3460C
3461      DIMENSION XIDTEM(*)
3462      DIMENSION TEMP(*)
3463      DOUBLE PRECISION DY(*)
3464      DOUBLE PRECISION FT(*)
3465      DOUBLE PRECISION SMOOTH(*)
3466C
3467      DOUBLE PRECISION DH
3468      DOUBLE PRECISION DHI
3469      DOUBLE PRECISION DLO
3470      DOUBLE PRECISION DN
3471      DOUBLE PRECISION DSUM
3472      DOUBLE PRECISION DX
3473      DOUBLE PRECISION DMEAN
3474      DOUBLE PRECISION DVAR
3475      DOUBLE PRECISION DSD
3476      DOUBLE PRECISION DYMX
3477C
3478C-----COMMON----------------------------------------------------------
3479C
3480      INCLUDE 'DPCOP2.INC'
3481C
3482C-----START POINT-----------------------------------------------------
3483C
3484      ISUBN1='DPVI'
3485      ISUBN2='O2  '
3486C
3487      I2=0
3488      ISIZE2=0
3489C
3490      AN=0.0
3491      SIZE=0.0
3492      SIZE2=0.0
3493      XWIDTH=0.0
3494      XWIDT2=0.0
3495      YBARI=0.0
3496      SDI=0.0
3497      YMED=0.0
3498C
3499      H=0.0
3500      STEP=0.0
3501      AINNFU=0.0
3502      AOUTFU=0.0
3503      IREV=0
3504      AINNFL=0.0
3505      AOUTFL=0.0
3506C
3507      DO 10 I=1,MAXOBV
3508        X2(I)=0.0
3509        Y2(I)=0.0
3510        D2(I)=0.0
3511 10   CONTINUE
3512C
3513C     CHECK THE INPUT ARGUMENTS FOR ERRORS
3514C
3515      IF(N.LE.1)THEN
3516        WRITE(ICOUT,999)
3517  999   FORMAT(1X)
3518        CALL DPWRST('XXX','BUG ')
3519        WRITE(ICOUT,31)
3520   31   FORMAT('***** ERROR IN VIOLIN PLOT--')
3521        CALL DPWRST('XXX','BUG ')
3522        WRITE(ICOUT,32)
3523   32   FORMAT('      THE NUMBER OF OBSERVATIONS MUST BE AT LEAST 1;')
3524        CALL DPWRST('XXX','BUG ')
3525        WRITE(ICOUT,34)N
3526   34   FORMAT('      THE ENTERED NUMBER OF OBSERVATIONS HERE = ',I6)
3527        CALL DPWRST('XXX','BUG ')
3528        WRITE(ICOUT,999)
3529        CALL DPWRST('XXX','BUG ')
3530        IERROR='YES'
3531        GOTO9000
3532      ENDIF
3533C
3534      HOLD=Y(1)
3535      DO60I=1,N
3536        IF(Y(I).NE.HOLD)GOTO69
3537   60 CONTINUE
3538      WRITE(ICOUT,999)
3539      CALL DPWRST('XXX','BUG ')
3540      WRITE(ICOUT,31)
3541      CALL DPWRST('XXX','BUG ')
3542      WRITE(ICOUT,62)
3543   62 FORMAT('      ALL RESPONSE VARIABLE ELEMENTS')
3544      CALL DPWRST('XXX','BUG ')
3545      WRITE(ICOUT,63)HOLD
3546   63 FORMAT('      ARE IDENTICALLY EQUAL TO ',G15.7)
3547      CALL DPWRST('XXX','BUG ')
3548      WRITE(ICOUT,999)
3549      CALL DPWRST('XXX','BUG ')
3550      IERROR='YES'
3551      GOTO9000
3552   69 CONTINUE
3553C
3554      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'VIO2')THEN
3555        WRITE(ICOUT,70)
3556   70   FORMAT('AT THE BEGINNING OF DPVIO2--')
3557        CALL DPWRST('XXX','BUG ')
3558        WRITE(ICOUT,71)N,ICASPL,NUMV2,ISIZE,ICONT
3559   71   FORMAT('N,ICASPL,NUMV2,ISIZE,ICONT = ',I8,2X,A4,I8,I8,2X,A4)
3560        CALL DPWRST('XXX','BUG ')
3561        WRITE(ICOUT,72)IFENCE,IKDETY
3562   72   FORMAT('IFENCE,IKDETY = ',A4,2X,A4)
3563        CALL DPWRST('XXX','BUG ')
3564        DO75I=1,N
3565          WRITE(ICOUT,76)I,Y(I),X(I)
3566   76     FORMAT('I, Y(I), X(I) = ',I8,2F15.7)
3567          CALL DPWRST('XXX','BUG ')
3568   75   CONTINUE
3569      ENDIF
3570C
3571C               ******************************************************
3572C               **  STEP 1--                                        **
3573C               **  DETERMINE THE NUMBER OF DISTINCT VALUES         **
3574C               **  FOR VARIABLE 2 (THE GROUP VARIABLE).            **
3575C               **  IF ALL VALUES ARE DISTINCT, THEN THIS           **
3576C               **  IMPLIES WE HAVE THE NO REPLICATION CASE         **
3577C               **  WHICH IS AN ERROR CONDITION FOR A VIOLIN PLOT.  **
3578C               ******************************************************
3579C
3580      ISTEPN='1'
3581      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'VIO2')
3582     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3583C
3584      IF(NUMV2.EQ.1)THEN
3585        DO120I=1,N
3586          X(I)=1.0
3587  120   CONTINUE
3588        NUMSET=1
3589        XIDTEM(1)=X(1)
3590      ELSEIF(NUMV2.EQ.2)THEN
3591        NUMSET=0
3592        DO160I=1,N
3593          IF(NUMSET.EQ.0)GOTO165
3594          DO170J=1,NUMSET
3595            IF(X(I).EQ.XIDTEM(J))GOTO160
3596  170     CONTINUE
3597  165     CONTINUE
3598          NUMSET=NUMSET+1
3599          XIDTEM(NUMSET)=X(I)
3600  160   CONTINUE
3601        CALL SORT(XIDTEM,NUMSET,XIDTEM)
3602        XID1=XIDTEM(1)
3603        XID2=XIDTEM(NUMSET)
3604      ENDIF
3605C
3606      IF(NUMSET.EQ.0)THEN
3607        WRITE(ICOUT,31)
3608        CALL DPWRST('XXX','BUG ')
3609        WRITE(ICOUT,191)
3610  191   FORMAT('       NUMSET = 0')
3611        CALL DPWRST('XXX','BUG ')
3612        IERROR='YES'
3613        GOTO9000
3614      ELSEIF(NUMSET.EQ.N)THEN
3615        WRITE(ICOUT,31)
3616        CALL DPWRST('XXX','BUG ')
3617        WRITE(ICOUT,192)
3618  192   FORMAT('       NUMSET = N')
3619        CALL DPWRST('XXX','BUG ')
3620        IERROR='YES'
3621        GOTO9000
3622      ENDIF
3623C
3624C               **********************************
3625C               **  STEP 2--                    **
3626C               **  IF NECESSARY,               **
3627C               **  COMPUTE AVERAGE CLASS SIZE  **
3628C               **********************************
3629C
3630      ISTEPN='2'
3631      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'VIO2')
3632     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3633C
3634      AN=N
3635      ANUMSE=NUMSET
3636C
3637      SIZE=ISIZE
3638      SIZE2=SIZE
3639      SIZE2=AN/ANUMSE
3640      ISIZE2=INT(SIZE2+0.5)
3641C
3642C               ***********************************
3643C               **  STEP 3--                     **
3644C               **  COMPUTE MINIMUM CLASS WIDTH  **
3645C               ***********************************
3646C
3647      ISTEPN='3'
3648      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'VIO2')
3649     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3650C
3651      IF(NUMSET.EQ.1)THEN
3652        XWIDTH=0.10*XIDTEM(1)
3653      ELSE
3654        XWIDTH=CPUMAX
3655        IMAX=NUMSET-1
3656        DO300I=1,IMAX
3657          IP1=I+1
3658          XWIDT2=XIDTEM(IP1)-XIDTEM(I)
3659          IF(XWIDT2.LT.XWIDTH)XWIDTH=XWIDT2
3660  300   CONTINUE
3661      ENDIF
3662C
3663C               **************************************
3664C               **  STEP 4--                        **
3665C               **  COMPUTE MAXIMUM SUBSAMPLE SIZE  **
3666C               **************************************
3667C
3668      ISTEPN='4'
3669      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'VIO2')
3670     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3671C
3672      NIMAX=0
3673      DO400ISET=1,NUMSET
3674C
3675        K=0
3676        DO420I=1,N
3677          IF(X(I).EQ.XIDTEM(ISET))THEN
3678            K=K+1
3679            TEMP(K)=Y(I)
3680          ENDIF
3681  420   CONTINUE
3682        NI=K
3683        IF(NI.GT.NIMAX)NIMAX=NI
3684C
3685  400 CONTINUE
3686      ANIMAX=NIMAX
3687C
3688C               ***************************************************
3689C               **  STEP 5--                                     **
3690C               **  DETERMINE PLOT COORDINATES                   **
3691C               ***************************************************
3692C
3693      ISTEPN='5'
3694      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'VIO2')
3695     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3696C
3697      NUMCPL=11
3698      J=0
3699      JD=0
3700      DO1110ISET=1,NUMSET
3701C
3702        K=0
3703        DO1120I=1,N
3704          IF(X(I).EQ.XIDTEM(ISET))THEN
3705            K=K+1
3706            TEMP(K)=Y(I)
3707          ENDIF
3708 1120   CONTINUE
3709        NI=K
3710        ANI=NI
3711C
3712        IF(NI.LE.0)THEN
3713          WRITE(ICOUT,999)
3714          CALL DPWRST('XXX','BUG ')
3715          WRITE(ICOUT,1121)
3716 1121     FORMAT('***** INTERNAL ERROR IN DPVIO2--')
3717          CALL DPWRST('XXX','BUG ')
3718          WRITE(ICOUT,1122)
3719 1122     FORMAT('NI FOR SOME CLASS = 0')
3720          CALL DPWRST('XXX','BUG ')
3721          WRITE(ICOUT,1123)ISET,XIDTEM(ISET),NI
3722 1123     FORMAT('ISET,XIDTEM(ISET),NI = ',I8,E15.7,I8)
3723          CALL DPWRST('XXX','BUG ')
3724          IERROR='YES'
3725          GOTO9000
3726        ENDIF
3727        CALL SORT(TEMP,NI,TEMP)
3728C
3729        XMID=XIDTEM(ISET)
3730C
3731        IF(IBXPWI.EQ.'FIXE')THEN
3732          FACTOR=1.0
3733        ELSE
3734          FACTOR=SQRT(ANI/ANIMAX)
3735        ENDIF
3736        XLEFT=XMID-(XWIDTH/4.0)*FACTOR
3737        XRIGHT=XMID+(XWIDTH/4.0)*FACTOR
3738        XLEF2=XMID-(XWIDTH/2.5)
3739        XRIGH2=XMID+(XWIDTH/2.5)
3740C
3741C               **********************************************
3742C               **  STEP 5.05--                             **
3743C               **  CALL DENEST ROUTINE TO COMPUTE THE      **
3744C               **  KERNEL DENSITY ESTIMATE.                **
3745C               **********************************************
3746C
3747        DO1010I=1,NI
3748          DY(I)=DBLE(TEMP(I))
3749 1010   CONTINUE
3750C
3751        IERROR='NO'
3752        ICAL=0
3753        KFLAG=1
3754        CALL DSORT(DY,DY,NI,KFLAG,IERROR)
3755        DH=DBLE(PKDEWI)
3756        IF(PKDEWI.LE.0)THEN
3757          DN=DBLE(NI)
3758          DSUM=0.0D0
3759          DO1020I=1,NI
3760            DX=DY(I)
3761            DSUM=DSUM+DX
3762 1020     CONTINUE
3763          DMEAN=DSUM/DN
3764          DSUM=0.0D0
3765          DO1030I=1,NI
3766            DX=DY(I)
3767            DSUM=DSUM+(DX-DMEAN)**2
3768 1030     CONTINUE
3769          DVAR=DSUM/(DN-1.0D0)
3770          DSD=0.0D0
3771          IF(DVAR.GT.0.0D0)DSD=DSQRT(DVAR)
3772C
3773          P=0.25
3774          AN=REAL(NI)
3775          ANI=P*(AN+1.0)
3776          NI2=INT(ANI+0.1)
3777          A2NI=REAL(NI)
3778          REM=ANI-A2NI
3779          NIP1=NI2+1
3780          IF(NI2.LE.1)NI2=1
3781          IF(NI2.GE.NI)NI2=NI
3782          IF(NIP1.LE.1)NIP1=1
3783          IF(NIP1.GE.NI)NIP1=NI
3784          XPERC1=(1.0-REM)*TEMP(NI2)+REM*TEMP(NIP1)
3785C
3786          P=0.75
3787          ANI=P*(AN+1.0)
3788          NI2=INT(ANI+0.1)
3789          A2NI=REAL(NI2)
3790          REM=ANI-A2NI
3791          NIP1=NI2+1
3792          IF(NI2.LE.1)NI2=1
3793          IF(NI2.GE.NI)NI2=NI
3794          IF(NIP1.LE.1)NIP1=1
3795          IF(NIP1.GE.NI)NIP1=NI
3796          XPERC2=(1.0-REM)*TEMP(NI2)+REM*Y(NIP1)
3797          AIQ=(XPERC2-XPERC1)/1.34
3798C
3799          DH=0.9D0*MIN(DSD,DBLE(AIQ))*DN**(-1.0D0/5.0D0)
3800        ENDIF
3801        DLO=DY(1) - 3.0D0*DH
3802        DHI=DY(NI) + 3.0D0*DH
3803C
3804        CALL DENEST(DY,NI,DLO,DHI,DH,FT,SMOOTH,IKDENP,ICAL,IERROR)
3805C
3806        IF(IERROR.EQ.'YES')THEN
3807          WRITE(ICOUT,1041)
3808 1041     FORMAT('**** ERROR IN VIOLIN PLOT--')
3809          CALL DPWRST('XXX','BUG ')
3810          WRITE(ICOUT,1043)ISET
3811 1043     FORMAT('     UNABLE TO COMPUTE DENSITY FUNCTION FOR ',
3812     1           'SET ',I8)
3813          CALL DPWRST('XXX','BUG ')
3814          GOTO9000
3815        ENDIF
3816C
3817        DYMX=0.0D0
3818        DO1050I=1,IKDENP
3819          IF(SMOOTH(I).GT.DYMX)DYMX=SMOOTH(I)
3820 1050   CONTINUE
3821C
3822        JD=JD+1
3823        XINC=XRIGH2-XMID
3824        DO1060I=1,IKDENP
3825          J=J+1
3826          X2(J)=XMID + (XINC*REAL(SMOOTH(I))/REAL(DYMX))
3827          Y2(J)=REAL(DLO + (DBLE(I) - 0.5D0)*(DHI-DLO)/DBLE(IKDENP))
3828          D2(J)=REAL(JD)
3829 1060   CONTINUE
3830        DO1065I=IKDENP-1,1,-1
3831          J=J+1
3832          X2(J)=XMID - (XINC*REAL(SMOOTH(I))/REAL(DYMX))
3833          Y2(J)=REAL(DLO + (DBLE(I) - 0.5D0)*(DHI-DLO)/DBLE(IKDENP))
3834          D2(J)=REAL(JD)
3835 1065   CONTINUE
3836        J=J+1
3837        X2(J)=XMID + (XINC*REAL(SMOOTH(1))/REAL(DYMX))
3838        Y2(J)=REAL(DLO + (DBLE(1) - 0.5D0)*(DHI-DLO)/DBLE(IKDENP))
3839        D2(J)=REAL(JD)
3840C
3841C
3842C               ***************************
3843C               **  STEP 5.1--           **
3844C               **  COMPUTE THE MAXIMUM  **
3845C               ***************************
3846C
3847        YMAX=TEMP(NI)
3848C
3849C               ***********************************************
3850C               **  STEP 5.2--                               **
3851C               **  COMPUTE THE POINT AT THE TOP OF THE BOX  **
3852C               **  (THE UPPER HINGE FOR A MEDIAN BOX PLOT)  **
3853C               ***********************************************
3854C
3855        NI2=(NI+1)/2
3856        IARG1=(NI2+1)/2
3857        IARG2=(NI2+1)-IARG1
3858        IARG1R=NI-IARG1+1
3859        IARG2R=NI-IARG2+1
3860        Y75=(TEMP(IARG1R)+TEMP(IARG2R))/2.0
3861C
3862C               ***************************************
3863C               **  STEP 5.3--                       **
3864C               **  COMPUTE UPPER CONFIDENCE LIMITS  **
3865C               **  FOR THE MEAN                     **
3866C               ***************************************
3867C
3868        YUCL=Y75
3869C
3870C               *********************************
3871C               **  STEP 5.4--                 **
3872C               **  COMPUTE THE TYPICAL VALUE  **
3873C               **  (MEDIAN)                   **
3874C               *********************************
3875C
3876        N50=NI/2
3877        N50P1=N50+1
3878        IEVODD=NI-2*(NI/2)
3879        IF(IEVODD.EQ.0)YMED=(TEMP(N50)+TEMP(N50P1))/2.0
3880        IF(IEVODD.EQ.1)YMED=TEMP(N50P1)
3881        Y50=YMED
3882C
3883C               ****************************************************
3884C               **  STEP 5.5--                                    **
3885C               **  COMPUTE LOWER CONFIDENCE LIMITS FOR THE MEAN  **
3886C               ****************************************************
3887C
3888        YLCL=Y50
3889C
3890C               ****************************************************
3891C               **  STEP 5.6--                                    **
3892C               **  COMPUTE THE POINT AT THE BOTTOM OF THE BOX    **
3893C               **  (THE LOWER HINGE FOR A BOX VIOLIN PLOT)       **
3894C               ****************************************************
3895C
3896        NI2=(NI+1)/2
3897        IARG1=(NI2+1)/2
3898        IARG2=(NI2+1)-IARG1
3899        Y25=(TEMP(IARG1)+TEMP(IARG2))/2.0
3900C
3901C               ***************************
3902C               **  STEP 5.7--           **
3903C               **  COMPUTE THE MINIMUM  **
3904C               ***************************
3905C
3906        YMIN=TEMP(1)
3907C
3908C               **************************************************
3909C               **  STEP 5.7A--                                 **
3910C               **  FOR THE UPPER HALF OF THE DATA--            **
3911C               **  COMPUTE THE OUTER FENCE, THE INNER FENCE,   **
3912C               **  AND THE ADJACENT VALUE                      **
3913C               **************************************************
3914C
3915        H=Y75-Y25
3916        STEP=1.5*H
3917C
3918        AINNFU=Y75+STEP
3919        AOUTFU=Y75+2.0*STEP
3920        YADJU=Y75
3921        DO1155I=1,NI
3922          IREV=NI-I+1
3923          IF(TEMP(IREV).LE.AINNFU)GOTO1156
3924 1155   CONTINUE
3925        GOTO1159
3926 1156   CONTINUE
3927        YADJU=TEMP(IREV)
3928 1159   CONTINUE
3929        IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'VIO2')THEN
3930          WRITE(ICOUT,1157)Y75,YADJU,TEMP(IREV),IREV
3931 1157     FORMAT('Y75,YADJU,TEMP(IREV),IREV = ',3E15.7,I8)
3932          CALL DPWRST('XXX','BUG ')
3933        ENDIF
3934C
3935C               ***************************************************
3936C               **  STEP 5.7B--                                  **
3937C               **  FOR THE LOWER HALF OF THE DATA--             **
3938C               **  COMPUTE THE OUTER FENCE, THE INNER FENCE,    **
3939C               **  AND THE ADJACENT VALUE                       **
3940C               ***************************************************
3941C
3942        AINNFL=Y25-STEP
3943        AOUTFL=Y25-2.0*STEP
3944        YADJL=Y25
3945        DO1165I=1,NI
3946          I2=I
3947          IF(TEMP(I2).GE.AINNFL)GOTO1166
3948 1165   CONTINUE
3949        GOTO1169
3950 1166   CONTINUE
3951        YADJL=TEMP(I2)
3952 1169   CONTINUE
3953C
3954C               *******************************************
3955C               **  STEP 6.1--                           **
3956C               **  IF IFENCE IS OFF, THEN               **
3957C               **  DEFINE THE CHARACTER AT THE MAXIMUM. **
3958C               **  IF IFENCE IS ON, THEN                **
3959C               **  DEFINE THE CHARACTER AT THE UPPER    **
3960C               **  ADJACENT VALUE;                      **
3961C               *******************************************
3962C
3963        IF(IFENCE.EQ.'OFF')
3964     1    CALL DPCHLI(ICONT,NUMCPL,YMAX,YMAX,XMID,XMID,J,JD,Y2,X2,D2,
3965     1    IERROR)
3966        IF(IFENCE.EQ.'ON')
3967     1    CALL DPCHLI(ICONT,NUMCPL,YADJU,YADJU,XMID,XMID,J,JD,Y2,X2,D2,
3968     1    IERROR)
3969C
3970C               ****************************************
3971C               **  STEP 6.2--                       **
3972C               **  DEFINE THE CHARACTER AT THE TOP   **
3973C               **  OF THE BOX                        **
3974C               **  (UPPER HINGE CHARACTER, IF ANY).  **
3975C               ****************************************
3976C
3977        CALL DPCHLI(ICONT,NUMCPL,Y75,Y75,XMID,XMID,J,JD,Y2,X2,D2,
3978     1              IERROR)
3979C
3980C               ***************************************************
3981C               **  STEP 6.3--                                   **
3982C               **  DEFINE THE CHARACTER IN THE BOX              **
3983C               **  BUT TOWARDS THE TOP OF THE BOX               **
3984C               ***************************************************
3985C
3986        CALL DPCHLI(ICONT,NUMCPL,YUCL,YUCL,XMID,XMID,J,JD,Y2,X2,D2,
3987     1              IERROR)
3988C
3989C               ***************************************
3990C               **  STEP 6.4--                       **
3991C               **  DEFINE THE CHARACTER IN THE BOX  **
3992C               **  NEAR THE MIDDLE                  **
3993C               **  (SUCH AS THE MEDIAN OR MEAN)     **
3994C               ***************************************
3995C
3996        CALL DPCHLI(ICONT,NUMCPL,Y50,Y50,XMID,XMID,J,JD,Y2,X2,D2,
3997     1              IERROR)
3998C
3999C               *****************************************************
4000C               **  STEP 6.5--                                     **
4001C               **  DEFINE THE CHARACTER IN THE BOX                **
4002C               **  BUT TOWARDS THE BOX OF THE BOX                 **
4003C               **  (SUCH AS A LOWER CONFIDENCE LIMIT FOR THE MEAN,**
4004C               **  IF ANY)                                        **
4005C               *****************************************************
4006C
4007        CALL DPCHLI(ICONT,NUMCPL,YLCL,YLCL,XMID,XMID,J,JD,Y2,X2,D2,
4008     1              IERROR)
4009C
4010C               ******************************************
4011C               **  STEP 6.6--                          **
4012C               **  DEFINE THE CHARACTER AT THE BOTTOM  **
4013C               **  OF THE BOX                          **
4014C               **  (LOWER HINGE CHARACTER, IF ANY).    **
4015C               ******************************************
4016C
4017        CALL DPCHLI(ICONT,NUMCPL,Y25,Y25,XMID,XMID,J,JD,Y2,X2,D2,
4018     1              IERROR)
4019C
4020C               *******************************************
4021C               **  STEP 6.7--                           **
4022C               **  IF IFENCE IS OFF, THEN               **
4023C               **  DEFINE THE CHARACTER AT THE MINIMUM. **
4024C               **  IF IFENCE IS ON, THEN                **
4025C               **  DEFINE THE CHARACTER AT THE LOWER    **
4026C               **  ADJACENT VALUE;                      **
4027C               *******************************************
4028C
4029        IF(IFENCE.EQ.'OFF')
4030     1    CALL DPCHLI(ICONT,NUMCPL,YMIN,YMIN,XMID,XMID,J,JD,Y2,X2,D2,
4031     1    IERROR)
4032        IF(IFENCE.EQ.'ON')
4033     1    CALL DPCHLI(ICONT,NUMCPL,YADJL,YADJL,XMID,XMID,J,JD,Y2,X2,D2,
4034     1    IERROR)
4035C
4036C               ***********************************************
4037C               **  STEP 6.8--                               **
4038C               **  IF IFENCE IS OFF, THEN                   **
4039C               **  DEFINE THE VERTICAL LINE FROM            **
4040C               **  THE MAXIMUM VALUE TO THE TOP OF THE BOX  **
4041C               **  IF IFENCE IS ON, THEN                    **
4042C               **  DEFINE THE VERTICAL LINE FROM            **
4043C               **  THE UPPER ADJACENT VALUE TO THE TOP OF   **
4044C               **  THE BOX                                  **
4045C               ***********************************************
4046C
4047        IF(IFENCE.EQ.'OFF')
4048     1    CALL DPCHLI(ICONT,NUMCPL,YMAX,Y75,XMID,XMID,J,JD,Y2,X2,D2,
4049     1    IERROR)
4050        IF(IFENCE.EQ.'ON')
4051     1    CALL DPCHLI(ICONT,NUMCPL,YADJU,Y75,XMID,XMID,J,JD,Y2,X2,D2,
4052     1    IERROR)
4053C
4054C               *******************************************************
4055C               **  STEP 6.9--                                       **
4056C               **  DEFINE THE VERTICAL LINE                         **
4057C               **  FROM THE TOP OF THE BOX (THE UPPER HINGE POINT)  **
4058C               **  TO THE POINT IN THE BOX TOWARD THE TOP           **
4059C               **  (SUCH AS THE UPPER CONFIDENCE LIMIT POINT)       **
4060C               *******************************************************
4061C
4062        CALL DPCHLI(ICONT,NUMCPL,Y75,YUCL,XMID,XMID,J,JD,Y2,X2,D2,
4063     1              IERROR)
4064C
4065C               **************************************************
4066C               **  STEP 6.10--                                 **
4067C               **  DEFINE THE VERTICAL LINE                    **
4068C               **  FROM THE POINT IN THE BOX TOWARD THE TOP    **
4069C               **  (SUCH AS THE UPPER CONFIDENCE LIMIT POINT)  **
4070C               **  TO THE POINT IN THE BOX                     **
4071C               **  IN THE MIDDLE                               **
4072C               **  (SUCH AS THE MEDIAN OR MEAN)                **
4073C               **************************************************
4074C
4075        CALL DPCHLI(ICONT,NUMCPL,YUCL,Y50,XMID,XMID,J,JD,Y2,X2,D2,
4076     1              IERROR)
4077C
4078C               **************************************************
4079C               **  STEP 6.11--                                 **
4080C               **  DEFINE THE VERTICAL LINE                    **
4081C               **  FROM THE POINT IN THE BOX                   **
4082C               **  IN THE MIDDLE                               **
4083C               **  (SUCH AS THE MEDIAN OR MEAN)                **
4084C               **  TO THE POINT IN THE BOX TOWARD THE BOTTOM   **
4085C               **  (SUCH AS THE LOWER CONFIDENCE LIMIT POINT)  **
4086C               **************************************************
4087C
4088        CALL DPCHLI(ICONT,NUMCPL,Y50,YLCL,XMID,XMID,J,JD,Y2,X2,D2,
4089     1              IERROR)
4090C
4091C               *******************************************************
4092C               **  STEP 6.12--                                      **
4093C               **  DEFINE THE VERTICAL LINE                         **
4094C               **  FROM THE POINT IN THE BOX TOWARD THE BOTTOM      **
4095C               **  (SUCH AS THE LOWER CONFIDENCE LIMIT POINT)       **
4096C               **  TO THE BOTTOM OF THE BOX (THE LOWER HINGE POINT) **
4097C               *******************************************************
4098C
4099        CALL DPCHLI(ICONT,NUMCPL,YLCL,Y25,XMID,XMID,J,JD,Y2,X2,D2,
4100     1              IERROR)
4101C
4102C               **********************************
4103C               **  STEP 6.13--                 **
4104C               **  IF IFENCE IS OFF, THEN      **
4105C               **  DEFINE THE VERTICAL LINE    **
4106C               **  FROM THE BOTTOM OF THE BOX  **
4107C               **  TO THE MINIMUM VALUE        **
4108C               **  IF IFENCE IS ON, THEN       **
4109C               **  DEFINE THE VERTICAL LINE    **
4110C               **  FROM THE BOTTOM OF THE BOX  **
4111C               **  TO THE LOWER ADJACENT VALUE **
4112C               **********************************
4113C
4114        IF(IFENCE.EQ.'OFF')
4115     1    CALL DPCHLI(ICONT,NUMCPL,Y25,YMIN,XMID,XMID,J,JD,Y2,X2,D2,
4116     1    IERROR)
4117        IF(IFENCE.EQ.'ON')
4118     1    CALL DPCHLI(ICONT,NUMCPL,Y25,YADJL,XMID,XMID,J,JD,Y2,X2,D2,
4119     1    IERROR)
4120C
4121C               *********************************************
4122C               **  STEP 6.14--                            **
4123C               **  DEFINE THE VERTICAL LINE               **
4124C               **  CONSTITUTING THE LEFT SIDE OF THE BOX  **
4125C               **  WHICH GOES FROM THE TOP OF THE BOX     **
4126C               **  TO THE BOTTOM OF THE BOX               **
4127C               *********************************************
4128C
4129        CALL DPCHLI(ICONT,NUMCPL,Y75,Y25,XLEFT,XLEFT,J,JD,Y2,X2,D2,
4130     1              IERROR)
4131C
4132C               **********************************************
4133C               **  STEP 6.15--                             **
4134C               **  DEFINE THE VERTICAL LINE                **
4135C               **  CONSTITUTING THE RIGHT SIDE OF THE BOX  **
4136C               **  WHICH GOES FROM THE TOP OF THE BOX      **
4137C               **  TO THE BOTTOM OF THE BOX                **
4138C               **********************************************
4139C
4140        CALL DPCHLI(ICONT,NUMCPL,Y75,Y25,XRIGHT,XRIGHT,J,JD,Y2,X2,D2,
4141     1              IERROR)
4142C
4143C               ***********************************************
4144C               **  STEP 6.16--                              **
4145C               **  DEFINE THE HORIZONTAL LINE               **
4146C               **  AT THE TOP OF THE BOX                    **
4147C               **  (RUNNING THROUGH THE UPPER HINGE POINT)  **
4148C               ***********************************************
4149C
4150        CALL DPCHLI(ICONT,NUMCPL,Y75,Y75,XLEFT,XRIGHT,J,JD,Y2,X2,D2,
4151     1              IERROR)
4152C
4153C               ****************************************************
4154C               **  STEP 6.17--                                   **
4155C               **  DEFINE THE HORIZONTAL LINE                    **
4156C               **  IN THE BOX                                    **
4157C               **  (RUNNING THROUGH THE UPPER CONFIDENCE LIMIT)  **
4158C               ****************************************************
4159C
4160        CALL DPCHLI(ICONT,NUMCPL,YUCL,YUCL,XLEFT,XRIGHT,J,JD,Y2,X2,D2,
4161     1              IERROR)
4162C
4163C               *********************************************
4164C               **  STEP 6.18--                            **
4165C               **  DEFINE THE HORIZONTAL LINE             **
4166C               **  IN THE BOX                             **
4167C               **  (RUNNING THROUGHT THE MEDIAN OR MEAN)  **
4168C               *********************************************
4169C
4170        CALL DPCHLI(ICONT,NUMCPL,Y50,Y50,XLEFT,XRIGHT,J,JD,Y2,X2,D2,
4171     1              IERROR)
4172C
4173C               ****************************************************
4174C               **  STEP 6.19--                                   **
4175C               **  DEFINE THE HORIZONTAL LINE                    **
4176C               **  IN THE BOX                                    **
4177C               **  (RUNNING THROUGH THE LOWER CONFIDENCE LIMIT)  **
4178C               ****************************************************
4179C
4180        CALL DPCHLI(ICONT,NUMCPL,YLCL,YLCL,XLEFT,XRIGHT,J,JD,Y2,X2,D2,
4181     1              IERROR)
4182C
4183C               ***********************************************
4184C               **  STEP 6.20--                              **
4185C               **  DEFINE THE HORIZONTAL LINE               **
4186C               **  AT THE BOTTOM OF THE BOX                 **
4187C               **  (RUNNING THROUGH THE LOWER HINGE POINT)  **
4188C               ***********************************************
4189C
4190        CALL DPCHLI(ICONT,NUMCPL,Y25,Y25,XLEFT,XRIGHT,J,JD,Y2,X2,D2,
4191     1              IERROR)
4192C
4193C               *******************************************************
4194C               **  STEP 6.20B--                                     **
4195C               **  IF A VIOLIN PLOT WITH NO FENCES HAS BEEN CALLED  **
4196C               **  FOR THEN SKIP PAST THE FINAL 4 SPECIFICATIONS.   **
4197C               *******************************************************
4198C
4199        IF(IFENCE.EQ.'OFF')GOTO1110
4200C
4201C               *************************************************
4202C               **  STEP 6.21--                                **
4203C               **  DEFINE THE CHARACTER FOR THE UPPER FAR OUT **
4204C               **  VALUES (BEYOND THE UPPER OUTER FENCE)      **
4205C               *************************************************
4206C
4207        YTEMP=Y25
4208        CALL DPCHLI(ICONT,NUMCPL,YTEMP,YTEMP,XMID,XMID,J,JD,Y2,X2,D2,
4209     1              IERROR)
4210        JD=JD-1
4211C
4212        IPASS=0
4213        DO1215I=1,NI
4214          IREV=NI-I+1
4215          YTEMP=TEMP(IREV)
4216          IF(YTEMP.LE.AOUTFU)GOTO1219
4217          IPASS=IPASS+1
4218          IF(IPASS.EQ.1)J=J-1
4219          CALL DPCHLI(ICONT,NUMCPL,YTEMP,YTEMP,XMID,XMID,J,JD,Y2,X2,D2,
4220     1                IERROR)
4221          JD=JD-1
4222 1215   CONTINUE
4223 1219   CONTINUE
4224        JD=JD+1
4225C
4226C               *******************************************************
4227C               **  STEP 6.22--                                      **
4228C               **  DEFINE THE CHARACTER FOR THE UPPER NEAR OUT      **
4229C               **  VALUES (BETWEEN THE UPPER INNER AND OUTER FENCES)**
4230C               *******************************************************
4231C
4232        YTEMP=Y25
4233        CALL DPCHLI(ICONT,NUMCPL,YTEMP,YTEMP,XMID,XMID,J,JD,Y2,X2,D2,
4234     1              IERROR)
4235        JD=JD-1
4236C
4237        IPASS=0
4238        DO1225I=1,NI
4239          IREV=NI-I+1
4240          YTEMP=TEMP(IREV)
4241          IF(YTEMP.GE.AOUTFU)GOTO1225
4242          IF(YTEMP.LE.AINNFU)GOTO1229
4243          IPASS=IPASS+1
4244          IF(IPASS.EQ.1)J=J-1
4245          CALL DPCHLI(ICONT,NUMCPL,YTEMP,YTEMP,XMID,XMID,J,JD,Y2,X2,D2,
4246     1                IERROR)
4247          JD=JD-1
4248 1225   CONTINUE
4249 1229   CONTINUE
4250        JD=JD+1
4251C
4252C               *******************************************************
4253C               **  STEP 6.23--                                      **
4254C               **  DEFINE THE CHARACTER FOR THE LOWER NEAR OUT      **
4255C               **  VALUES (BETWEEN THE LOWER INNER AND OUTER FENCES)**
4256C               *******************************************************
4257C
4258        YTEMP=Y25
4259        CALL DPCHLI(ICONT,NUMCPL,YTEMP,YTEMP,XMID,XMID,J,JD,Y2,X2,D2,
4260     1              IERROR)
4261        JD=JD-1
4262C
4263        IPASS=0
4264        DO1235I=1,NI
4265          I2=I
4266          YTEMP=TEMP(I2)
4267          IF(YTEMP.LE.AOUTFL)GOTO1235
4268          IF(YTEMP.GE.AINNFL)GOTO1239
4269          IPASS=IPASS+1
4270          IF(IPASS.EQ.1)J=J-1
4271          CALL DPCHLI(ICONT,NUMCPL,YTEMP,YTEMP,XMID,XMID,J,JD,Y2,X2,D2,
4272     1                IERROR)
4273          JD=JD-1
4274 1235   CONTINUE
4275 1239   CONTINUE
4276        JD=JD+1
4277C
4278C               *************************************************
4279C               **  STEP 6.24--                                **
4280C               **  DEFINE THE CHARACTER FOR THE LOWER FAR OUT **
4281C               **  VALUES (BEYOND THE LOWER OUTER FENCE)      **
4282C               *************************************************
4283C
4284        YTEMP=Y25
4285        CALL DPCHLI(ICONT,NUMCPL,YTEMP,YTEMP,XMID,XMID,J,JD,Y2,X2,D2,
4286     1              IERROR)
4287        JD=JD-1
4288C
4289        IPASS=0
4290        DO1245I=1,NI
4291          I2=I
4292          YTEMP=TEMP(I2)
4293          IF(YTEMP.GE.AOUTFL)GOTO1249
4294          IPASS=IPASS+1
4295          IF(IPASS.EQ.1)J=J-1
4296          CALL DPCHLI(ICONT,NUMCPL,YTEMP,YTEMP,XMID,XMID,J,JD,Y2,X2,D2,
4297     1                IERROR)
4298          JD=JD-1
4299 1245   CONTINUE
4300 1249   CONTINUE
4301        JD=JD+1
4302C
4303        IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'VIO2')THEN
4304          WRITE(ICOUT,999)
4305          CALL DPWRST('XXX','BUG ')
4306          WRITE(ICOUT,1251)
4307 1251     FORMAT('***** FROM THE MIDDLE OF DPVIO2--')
4308          CALL DPWRST('XXX','BUG ')
4309          WRITE(ICOUT,1252)ANI,J,JD,XMID
4310 1252     FORMAT('ANI,J,JD,XMID = ',E15.7,I8,I8,E15.7)
4311          CALL DPWRST('XXX','BUG ')
4312          WRITE(ICOUT,1253)YMAX,Y75,Y50,Y25,YMIN
4313 1253     FORMAT('YMAX,Y75,Y50,Y25,YMIN = ',5E15.7)
4314          CALL DPWRST('XXX','BUG ')
4315          WRITE(ICOUT,1254)H,STEP,Y75,YADJU,AINNFU,AOUTFU
4316 1254     FORMAT('H,STEP,Y75,YADJU,AINNFU,AOUTFU = ',6E15.7)
4317          CALL DPWRST('XXX','BUG ')
4318          WRITE(ICOUT,1255)H,STEP,Y25,YADJL,AINNFL,AOUTFL
4319 1255     FORMAT('H,STEP,Y25,YADJL,AINNFL,AOUTFL = ',6E15.7)
4320          CALL DPWRST('XXX','BUG ')
4321      ENDIF
4322C
4323 1110 CONTINUE
4324C
4325      N2=J
4326      NPLOTV=3
4327      GOTO9000
4328C
4329C               ******************
4330C               **   STEP 90--  **
4331C               **   EXIT       **
4332C               ******************
4333C
4334 9000 CONTINUE
4335      IF(IBUGG3.EQ.'ON' .OR. ISUBRO.EQ.'VIO2')THEN
4336        WRITE(ICOUT,999)
4337        CALL DPWRST('XXX','BUG ')
4338        WRITE(ICOUT,9011)
4339 9011   FORMAT('***** AT THE END       OF DPVIO2--')
4340        CALL DPWRST('XXX','BUG ')
4341        WRITE(ICOUT,9012)ICASPL,N,NUMSET,N2,IERROR
4342 9012   FORMAT('ICASPL,N,NUMSET,N2,IERROR = ',A4,3I8,2X,A4)
4343        CALL DPWRST('XXX','BUG ')
4344        WRITE(ICOUT,9013)IFENCE
4345 9013   FORMAT('IFENCE = ',A4)
4346        CALL DPWRST('XXX','BUG ')
4347        WRITE(ICOUT,9014)NUMV2,ISIZE,SIZE,SIZE2,ISIZE2
4348 9014   FORMAT('NUMV2,ISIZE,SIZE,SIZE2,ISIZE2 = ',2I8,2E15.7,I8)
4349        CALL DPWRST('XXX','BUG ')
4350        WRITE(ICOUT,9015)AN,XWIDT2,XWIDTH
4351 9015   FORMAT('AN,XWIDT2,XWIDTH = ',3E15.7)
4352        CALL DPWRST('XXX','BUG ')
4353        WRITE(ICOUT,9021)YMAX,Y75,Y50,Y25,YMIN
4354 9021   FORMAT('YMAX,Y75,Y50,Y25,YMIN = ',5E15.7)
4355        CALL DPWRST('XXX','BUG ')
4356        WRITE(ICOUT,9022)H,STEP,Y75,YADJU,AINNFU,AOUTFU
4357 9022   FORMAT('H,STEP,Y75,YADJU,AINNFU,AOUTFU = ',6E15.7)
4358        CALL DPWRST('XXX','BUG ')
4359        WRITE(ICOUT,9023)H,STEP,Y25,YADJL,AINNFL,AOUTFL
4360 9023   FORMAT('H,STEP,Y25,YADJL,AINNFL,AOUTFL = ',6E15.7)
4361        CALL DPWRST('XXX','BUG ')
4362        DO9035I=1,N2
4363          WRITE(ICOUT,9036)I,Y2(I),X2(I),D2(I)
4364 9036     FORMAT('I,Y2(I),X2(I),D2(I) = ',I8,2E15.7,F9.2)
4365          CALL DPWRST('XXX','BUG ')
4366 9035   CONTINUE
4367      ENDIF
4368C
4369      RETURN
4370      END
4371      SUBROUTINE DPVIS(IHARG,NUMARG,IVISSW,IFOUND,IERROR)
4372C
4373C     PURPOSE--DEFINE THE VISIBLE SWITCH IVISSW.
4374C     INPUT  ARGUMENTS--IHARG  (A  HOLLERITH VECTOR)
4375C                     --NUMARG
4376C     OUTPUT ARGUMENTS--IVISSW   ('ON'  OR 'OFF')
4377C                     --IFOUND ('YES' OR 'NO' )
4378C                     --IERROR ('YES' OR 'NO' )
4379C     WRITTEN BY--JAMES J. FILLIBEN
4380C                 STATISTICAL ENGINEERING DIVISSWION
4381C                 INFORMATION TECHNOLOGY LABORATORY
4382C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4383C                 GAITHERSBURG, MD 20899-8980
4384C                 PHONE--301-975-2899
4385C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
4386C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
4387C     LANGUAGE--ANSI FORTRAN (1977)
4388C     VERSION NUMBER--82/7
4389C     ORIGINAL VERSION--NOVEMBER  1978.
4390C     UPDATED         --SEPTEMBER 1980.
4391C     UPDATED         --MAY       1982.
4392C
4393C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
4394C
4395      CHARACTER*4 IHARG
4396      CHARACTER*4 IVISSW
4397      CHARACTER*4 IFOUND
4398      CHARACTER*4 IERROR
4399C
4400C---------------------------------------------------------------------
4401C
4402      DIMENSION IHARG(*)
4403C
4404C-----COMMON----------------------------------------------------------
4405C
4406      INCLUDE 'DPCOP2.INC'
4407C
4408C-----START POINT-----------------------------------------------------
4409C
4410      IFOUND='NO'
4411      IERROR='NO'
4412C
4413      IF(NUMARG.EQ.0)GOTO1150
4414      IF(NUMARG.GE.1)GOTO1110
4415      GOTO1199
4416C
4417 1110 CONTINUE
4418      IF(IHARG(NUMARG).EQ.'ON')GOTO1150
4419      IF(IHARG(NUMARG).EQ.'OFF')GOTO1160
4420      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150
4421      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1160
4422      GOTO1199
4423C
4424 1150 CONTINUE
4425      IVISSW='ON'
4426      GOTO1180
4427C
4428 1160 CONTINUE
4429      IVISSW='OFF'
4430      GOTO1180
4431C
4432 1180 CONTINUE
4433      IFOUND='YES'
4434C
4435      IF(IFEEDB.EQ.'OFF')GOTO1189
4436      WRITE(ICOUT,999)
4437  999 FORMAT(1X)
4438      CALL DPWRST('XXX','BUG ')
4439      WRITE(ICOUT,1181)
4440 1181 FORMAT('THE VISIBLE SWITCH (AFFECTING BACKGROUND LINES ',
4441     1'IN 3-D PLOTS)')
4442      CALL DPWRST('XXX','BUG ')
4443      WRITE(ICOUT,1182)IVISSW
4444 1182 FORMAT('           HAS JUST BEEN TURNED ',A4)
4445      CALL DPWRST('XXX','BUG ')
4446 1189 CONTINUE
4447      GOTO1199
4448C
4449 1199 CONTINUE
4450      RETURN
4451      END
4452      SUBROUTINE DPVLAB(IHARG,IHARG2,IARG,NUMARG,
4453     1                  IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,
4454     1                  NUMNAM,MAXNAM,IVARLB,
4455     1                  IANS,IANSLC,IWIDTH,IBUGS2,IFOUND,IERROR)
4456C
4457C     PURPOSE--DEFINE A VARIABLE LABEL FOR A VARIABLE.
4458C              THIS CAN BE USED IN SOME PLOTS (AND ITS USE WILL
4459C              PROBABLY BE EXTENDED IN THE FUTURE).
4460C              EXAMPLE--VARIABLE LABEL X1 PRESSURE
4461C     WRITTEN BY--ALAN HECKERT
4462C                 STATISTICAL ENGINEERING DIVISION
4463C                 INFORMATION TECHNOLOGY LABORATORY
4464C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4465C                 GAITHERSBURG, MD 20899-8980
4466C                 PHONE--301-975-2899
4467C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
4468C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
4469C     LANGUAGE--ANSI FORTRAN (1977)
4470C     VERSION NUMBER--99/11
4471C     ORIGINAL VERSION--NOVEMBER  1999.
4472C
4473C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
4474C
4475      CHARACTER*4 IHARG
4476      CHARACTER*4 IHARG2
4477      CHARACTER*4 IHNAME
4478      CHARACTER*4 IHNAM2
4479      CHARACTER*4 IUSE
4480      CHARACTER*4 IANS
4481      CHARACTER*4 IANSLC
4482      CHARACTER*40 IVARLB
4483      CHARACTER*4 IBUGS2
4484      CHARACTER*4 IFOUND
4485      CHARACTER*4 IERROR
4486C
4487      CHARACTER*4 ILEFT
4488      CHARACTER*4 ILEFT2
4489      CHARACTER*4 IHWUSE
4490      CHARACTER*4 MESSAG
4491      CHARACTER*4 ISUBN1
4492      CHARACTER*4 ISUBN2
4493      CHARACTER*4 ISTEPN
4494C
4495C---------------------------------------------------------------------
4496C
4497      DIMENSION IHARG(*)
4498      DIMENSION IHARG2(*)
4499      DIMENSION IARG(*)
4500C
4501      DIMENSION IHNAME(*)
4502      DIMENSION IHNAM2(*)
4503      DIMENSION IUSE(*)
4504      DIMENSION IN(*)
4505      DIMENSION IVALUE(*)
4506      DIMENSION VALUE(*)
4507C
4508      DIMENSION IANS(*)
4509      DIMENSION IANSLC(*)
4510      DIMENSION IVARLB(*)
4511C
4512C-----COMMON----------------------------------------------------------
4513C
4514      INCLUDE 'DPCOP2.INC'
4515C
4516C-----START POINT-----------------------------------------------------
4517C
4518      IFOUND='YES'
4519      IERROR='NO'
4520      ISUBN1='DPVL'
4521      ISUBN2='AB  '
4522      ILEFT='UNKN'
4523      ILEFT2='UNKN'
4524C
4525      ICOLL=0
4526      ILISTR=0
4527      ILISTL=0
4528C
4529C
4530C               *************************************
4531C               **  TREAT THE VARIABLE LABEL CASE  **
4532C               *************************************
4533C
4534C               *******************************************************
4535C               **  STEP 1--                                         **
4536C               **  CHECK THAT THE FIRST ARGUMENT IS LABEL.          **
4537C               **  THEN THE NEXT ARGUMENT SHOULD BE THE VARIABLE    **
4538C               **  NAME.                                            **
4539C               *******************************************************
4540C
4541      ISTEPN='1'
4542      IF(IBUGS2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
4543C
4544      MINNA=2
4545      MAXNA=100
4546      CALL CHECKA(NUMARG,MINNA,MAXNA,IANS,IWIDTH,ISUBN1,ISUBN2,
4547     1IERROR)
4548      IF(IERROR.EQ.'YES')GOTO9000
4549C
4550      IF(IHARG(1).NE.'LABE')THEN
4551        IFOUND='NO'
4552        GOTO9000
4553CCCCC ELSE
4554CCCCC   ISHIFT=1
4555CCCCC   CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
4556CCCCC1              IBUGS2,IERROR)
4557      ENDIF
4558C
4559      IF(NUMARG.LE.1)GOTO110
4560      IF(NUMARG.EQ.2.AND.IHARG(2).EQ.'ON')GOTO110
4561      IF(NUMARG.EQ.2.AND.IHARG(2).EQ.'OFF')GOTO110
4562      IF(NUMARG.EQ.2.AND.IHARG(2).EQ.'AUTO')GOTO110
4563      IF(NUMARG.EQ.2.AND.IHARG(2).EQ.'DEFA')GOTO110
4564      GOTO150
4565C
4566  110 CONTINUE
4567      DO120I=1,MAXNAM
4568      IVARLB(I)=' '
4569  120 CONTINUE
4570      ICOLL=-1
4571      GOTO8000
4572C
4573  150 CONTINUE
4574      ILEFT=IHARG(2)
4575      ILEFT2=IHARG2(2)
4576      ICOLL=IARG(2)
4577      IHWUSE='V'
4578      MESSAG='YES'
4579      CALL CHECKN(ILEFT,ILEFT2,IHWUSE,
4580     1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
4581     1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
4582      IF(IERROR.EQ.'YES')GOTO9000
4583      ICOLL=IVALUE(ILOCV)
4584C
4585      IF(NUMARG.EQ.3.AND.IHARG(3).EQ.'ON')GOTO157
4586      IF(NUMARG.EQ.3.AND.IHARG(3).EQ.'OFF')GOTO157
4587      IF(NUMARG.EQ.3.AND.IHARG(3).EQ.'AUTO')GOTO157
4588      IF(NUMARG.EQ.3.AND.IHARG(3).EQ.'DEFA')GOTO157
4589      IF(NUMARG.EQ.2)GOTO157
4590      GOTO159
4591  157 CONTINUE
4592      IVARLB(ICOLL)=' '
4593      GOTO8000
4594  159 CONTINUE
4595C
4596C               *****************************************************
4597C               **  STEP 3--                                       **
4598C               **  DETERMINE THE LOCATION OF THE WORD    LABEL  . **
4599C               *****************************************************
4600C
4601      DO160I=1,IWIDTH
4602        I2=I
4603        IP1=I+1
4604        IP2=I+2
4605        IP3=I+3
4606        IP4=I+4
4607        IF(IP4.GT.IWIDTH)GOTO169
4608        IF(IANS(I).EQ.'L'.AND.IANS(IP1).EQ.'A'.AND.
4609     1    IANS(IP2).EQ.'B'.AND.IANS(IP3).EQ.'E'.AND.
4610     1    (IANS(IP4).EQ.'L'.OR.IANS(IP4).EQ.' '))GOTO180
4611  160 CONTINUE
4612  169 CONTINUE
4613C
4614      WRITE(ICOUT,171)
4615  171 FORMAT('***** ERROR IN VARIABLE LABEL--')
4616      CALL DPWRST('XXX','BUG ')
4617      WRITE(ICOUT,172)
4618  172 FORMAT('      THE WORD     LABEL     NOT FOUND.')
4619      CALL DPWRST('XXX','BUG ')
4620      GOTO9000
4621C
4622  180 CONTINUE
4623      ISTOPL=IP4+1
4624C
4625C               *****************************************************
4626C               **  STEP 4--                                       **
4627C               **  SKIP THE NEXT WORD (THE VARIABLE NAME)         **
4628C               **  AND THEN FIND NEXT NON-BLANK CHARACTER         **
4629C               **  (THIS CHARACTER TILL END OF LINE EQUAL         **
4630C               **  = VARIABLE LABEL)                              **
4631C               *****************************************************
4632C
4633      ISTART=ISTOPL
4634      DO190I=ISTART,IWIDTH
4635        ISTOPL=I
4636        IF(IANSLC(I).EQ.' ')GOTO190
4637        GOTO191
4638  190 CONTINUE
4639      ISTOPL=IWIDTH+1
4640  191 CONTINUE
4641      IF(ISTOPL.GT.IWIDTH)THEN
4642        IVARLB(ICOLL)=' '
4643        GOTO8000
4644      ENDIF
4645      ISTART=ISTOPL
4646      DO195I=ISTART,IWIDTH
4647        ISTOPL=I
4648        IF(IANSLC(I).EQ.' ')GOTO196
4649  195 CONTINUE
4650      ISTOPL=IWIDTH+1
4651  196 CONTINUE
4652      IF(ISTOPL.GT.IWIDTH)THEN
4653        IVARLB(ICOLL)=' '
4654        GOTO8000
4655      ENDIF
4656      ISTART=ISTOPL
4657      DO198I=ISTART,IWIDTH
4658        IF(IANSLC(I).NE.' ')THEN
4659          ISTARS=I
4660          GOTO199
4661        ENDIF
4662  198 CONTINUE
4663      ISTARS=IWIDTH+1
4664  199 CONTINUE
4665      IF(ISTARS.GT.IWIDTH)THEN
4666        IVARLB(ICOLL)=' '
4667        GOTO8000
4668      ENDIF
4669C
4670      NCHAR=IWIDTH-ISTARS+1
4671      IF(NCHAR.GT.40)NCHAR=40
4672      IVARLB(ICOLL)=' '
4673      J=0
4674      DO250I=ISTARS,ISTARS+NCHAR-1
4675        J=J+1
4676        IVARLB(ICOLL)(J:J)=IANSLC(I)(1:1)
4677  250 CONTINUE
4678      GOTO8000
4679C
4680C               **********************************************
4681C               **  STEP 5--                                **
4682C               **  PRINT OUT A BRIEF MESSAGE               **
4683C               **  INDICATING THAT THE VARIABLE LABEL      **
4684C               **  HAS BEEN CARRIED OUT.                   **
4685C               **********************************************
4686C
4687 8000 CONTINUE
4688      ISTEPN='5'
4689      IF(IBUGS2.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
4690C
4691      IF(IFEEDB.EQ.'ON')THEN
4692        WRITE(ICOUT,999)
4693        CALL DPWRST('XXX','BUG ')
4694        IF(ICOLL.GE.1)THEN
4695          WRITE(ICOUT,611)ILEFT,ILEFT2
4696  611     FORMAT('VARIABLE ',A4,A4,' LABEL HAS JUST BEEN SET TO')
4697          CALL DPWRST('XXX','BUG ')
4698          WRITE(ICOUT,613)IVARLB(ICOLL)
4699  613     FORMAT(A40)
4700          CALL DPWRST('XXX','BUG ')
4701        ELSE
4702          WRITE(ICOUT,621)
4703  621     FORMAT('ALL VARIABLE LABELS HAVE JUST BEEN SET TO THERE ',
4704     1           'DEFAULT VALUES.')
4705          CALL DPWRST('XXX','BUG ')
4706        ENDIF
4707      ENDIF
4708C
4709C               *****************
4710C               **  STEP 90--  **
4711C               **  EXIT.      **
4712C               *****************
4713C
4714 9000 CONTINUE
4715C
4716      IF(IBUGS2.EQ.'ON')THEN
4717        WRITE(ICOUT,999)
4718  999   FORMAT(1X)
4719        CALL DPWRST('XXX','BUG ')
4720        WRITE(ICOUT,9011)
4721 9011   FORMAT('***** AT THE END       OF DPVLAB--')
4722        CALL DPWRST('XXX','BUG ')
4723        WRITE(ICOUT,9012)ILEFT,ILEFT2,ICOLL
4724 9012   FORMAT('ILEFT,ILEFT2,ICOLL = ',2(A4,2X),I8)
4725        CALL DPWRST('XXX','BUG ')
4726        DO9030I=1,NUMNAM
4727          WRITE(ICOUT,9031)I,IUSE(I),IVALUE(I),IN(I)
4728 9031    FORMAT('I,IUSE(I),IVALUE(I),IN(I) = ',I8,2X,A4,2I8)
4729         CALL DPWRST('XXX','BUG ')
4730 9030   CONTINUE
4731      ENDIF
4732C
4733      RETURN
4734      END
4735      SUBROUTINE DPVRML(NPTS,NLAB,
4736     1                  AMEAN,ASD,N,
4737     1                  AMEAN2,ASD2,N2,XTEMP1,XTEMP2,
4738     1                  X,T,W,DTEMP1,DTEMP2,
4739     1                  XMLS,S2BMLS,SEML,SEMLK1,SEMLK2,
4740     1                  DLOWML,DHIGML,STXMU,STS2B,
4741     1                  SEMLBO,DLOWM2,DHIGM2,
4742     1                  IWRITE,
4743     1                  ICAPSW,ICAPTY,IOUNI5,NUMDIG,ISEED,
4744     1                  ISUBRO,IBUGA3,IERROR)
4745C
4746C     PURPOSE--IMPLEMENT VANGEL-RUKHIN APPROACH TO CONSENSUS MEANS
4747C     WRITTEN BY--CODE FOR VANGEL-RUKHIN PROVIDED BY MARK VANGEL.
4748C     PRINTING--YES
4749C     SUBROUTINES NEEDED--MPSUB
4750C     WRITTEN BY--ALAN HECKERT
4751C                 STATISTICAL ENGINEERING DIVISION
4752C                 INFORMATION TECHNOLOGY LABORATORY
4753C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4754C                 GAITHERSBURG, MD 20899-8980
4755C                 PHONE--301-975-2899
4756C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
4757C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
4758C     LANGUAGE--ANSI FORTRAN (1977)
4759C     VERSION NUMBER--2006/3
4760C     ORIGINAL VERSION--MARCH     2006. EXTRACTED FROM DPMAN2 ROUTINE
4761C     UPDATED         --FEBRUARY  2010. USE DPDTA1 TO PRINT
4762C     UPDATED         --OCTOBER   2011. SUPPORT PARAMETERIC BOOTSTRAP
4763C                                       OPTION
4764C
4765C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES--------------
4766C
4767      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
4768C
4769      CHARACTER*4 ICAPSW
4770      CHARACTER*4 ICAPTY
4771      CHARACTER*4 ISUBRO
4772      CHARACTER*4 IBUGA3
4773      CHARACTER*4 IERROR
4774C
4775      CHARACTER*4 IWRITE
4776      CHARACTER*4 ICAPS2
4777      CHARACTER*4 ICAPT2
4778      CHARACTER*4 ISUBN1
4779      CHARACTER*4 ISUBN2
4780      CHARACTER*4 ICASJB
4781      CHARACTER*4 IPRSAV
4782C
4783      REAL APPF
4784      REAL XML
4785      REAL XMLS
4786      REAL S2BML
4787      REAL S2BMLS
4788      REAL SEML
4789      REAL SEMLK1
4790      REAL SEMLK2
4791      REAL SEMLBO
4792      REAL XMLST
4793      REAL XMEAN
4794      REAL XSD
4795      REAL XMPST
4796      REAL STXMU
4797      REAL STS2B
4798      REAL ALPHA1
4799      REAL XPERC
4800      REAL AJUNK1
4801      REAL AJUNK2
4802      REAL AJUNK3
4803      REAL AJUNK4
4804      REAL AJUNK5
4805      REAL AJUNK6
4806C
4807C----------------------------------------------------------------
4808C
4809      REAL AMEAN(*)
4810      REAL ASD(*)
4811      REAL AMEAN2(*)
4812      REAL ASD2(*)
4813      REAL XTEMP1(*)
4814      REAL XTEMP2(*)
4815C
4816      INTEGER N(*)
4817      INTEGER N2(*)
4818C
4819      DOUBLE PRECISION X(*)
4820      DOUBLE PRECISION T(*)
4821      DOUBLE PRECISION W(*)
4822      DOUBLE PRECISION DTEMP1(*)
4823      DOUBLE PRECISION DTEMP2(*)
4824C
4825      COMMON /MPCOM/ T0, T1
4826C
4827      PARAMETER (MAXROW=30)
4828      CHARACTER*60 ITITLE
4829      CHARACTER*60 ITITLZ
4830      CHARACTER*60 ITITL9
4831      CHARACTER*60 ITEXT(MAXROW)
4832      REAL         AVALUE(MAXROW)
4833      INTEGER      NCTEXT(MAXROW)
4834      INTEGER      IDIGIT(MAXROW)
4835      INTEGER      NTOT(MAXROW)
4836      LOGICAL IFRST
4837      LOGICAL ILAST
4838C
4839C-----COMMON-----------------------------------------------------
4840C
4841      INCLUDE 'DPCOST.INC'
4842      INCLUDE 'DPCOP2.INC'
4843C
4844C-----START POINT------------------------------------------------
4845C
4846      IERROR='NO'
4847      ISUBN1='DPVR'
4848      ISUBN2='ML  '
4849C
4850      IFLAGB=0
4851      IPRSAV=IPRINT
4852C
4853      IF (STS2B .GT. 0.D0) THEN
4854        DO 501 I=1,NLAB
4855          W(I) = STS2B/(STS2B +T(I))
4856 501    CONTINUE
4857      ELSE
4858        DO 507 I=1,NLAB
4859          W(I) = 1.0D0/T(I)
4860 507    CONTINUE
4861      END IF
4862C
4863      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'VRML')THEN
4864        WRITE(ICOUT,999)
4865  999   FORMAT(1X)
4866        CALL DPWRST('XXX','BUG ')
4867        WRITE(ICOUT,51)
4868   51   FORMAT('***** AT THE BEGINNING OF DPVRML--')
4869        CALL DPWRST('XXX','BUG ')
4870        WRITE(ICOUT,52)NPTS,NLAB,STS2B,STXMU
4871   52   FORMAT('NPTS,NLAB,STS2B,STXMU = ',2I8,2G15.7)
4872        CALL DPWRST('XXX','BUG ')
4873        WRITE(ICOUT,55)IVRUCM,IVRBCM,T0,T1,NUMDIG
4874   55   FORMAT('IVRUCM,IVRBCM,T0,T1,NUMDIG = ',2(A4,2X),2G15.7,I8)
4875        CALL DPWRST('XXX','BUG ')
4876        DO65I=1,NLAB
4877          WRITE(ICOUT,66)I,T(I),X(I),W(I),N(I)
4878   66     FORMAT('I,T(I),X(I),W(I),N(I) = ',I8,3G15.7,I8)
4879          CALL DPWRST('XXX','BUG ')
4880   65   CONTINUE
4881      ENDIF
4882C
4883      MAXIT = 1000
4884      DXML   = STXMU
4885      DS2BML = STS2B
4886      CALL MPINTL(NLAB,N,X,T,DXML,DS2BML,W,MAXIT,DLIK,IBUGA3,IERROR)
4887      IF(IERROR.EQ.'YES')GOTO9000
4888      XML=REAL(DXML)
4889      S2BML=REAL(DS2BML)
4890      DXMLS=(T1-T0)*DXML + T0
4891      XMLS=REAL(DXMLS)
4892      D2BMLS=((T1-T0)**2)*DS2BML
4893      S2BMLS=REAL(D2BMLS)
4894C
4895      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'VRML')THEN
4896        WRITE(ICOUT,520)XML,XMLS,S2BML,S2BMLS
4897  520   FORMAT('XML,XMLS,S2BML,S2BMLS = ',4E15.7)
4898        CALL DPWRST('XXX','BUG ')
4899        DO522I=1,NLAB
4900          WRITE(ICOUT,526)I,T(I),W(I)
4901  526     FORMAT('I,T(I),W(I) = ',I8,2G15.7)
4902          CALL DPWRST('XXX','BUG ')
4903  522   CONTINUE
4904      ENDIF
4905C
4906      DSUM1=0.0D0
4907      DSUM2=0.0D0
4908      WRITE(IOUNI5,506)
4909  506 FORMAT('VANGEL-RUKHIN:  W(I)     TAU(I)')
4910      DO509J=1,NLAB
4911        TAU=DS2BML/W(J) - DS2BML
4912        TAU=(T1-T0)**2*TAU + D2BMLS
4913        XJ=(T1-T0)*X(J) + T0
4914        DSUM1=DSUM1 +  (XJ-DXMLS)**2/(TAU**2)
4915        DSUM2=DSUM2 + 1.0D0/TAU
4916        WRITE(IOUNI5,508)W(J),TAU
4917  509 CONTINUE
4918  508 FORMAT(E15.7,1X,E15.7)
4919C
4920      STDERR=DSQRT(DSUM1)/DSUM2
4921      SEML=REAL(STDERR)
4922      SEMLK1=SEML
4923      SEMLK2=2.0*SEML
4924      CALL NORPPF(0.975,APPF)
4925      DLOWML=XMLS - DBLE(APPF)*STDERR
4926      DHIGML=XMLS + DBLE(APPF)*STDERR
4927C
4928C     2011/10: IMPLEMENT PARAMETERIC BOOTSTRAP TO OBTAIN STANDARD
4929C              ERROR FOR CONSENSUS MEAN ESTIMATE
4930C
4931      IF(IVRBCM.EQ.'ON')THEN
4932        IFLAGB=1
4933        ICASJB='BOOT'
4934        NRESAM=2000
4935        NUMDI9=-99
4936        ICNT=0
4937        DO1010IRESAM=1,NRESAM
4938          DO1030IROW=1,NLAB
4939            NTEMP=N(IROW)
4940            IF(NTEMP.LE.0)THEN
4941              IFLAGB=0
4942              GOTO1099
4943            ENDIF
4944            YMEAN=AMEAN(IROW)
4945            YSD=ASD(IROW)
4946            CALL NORRAN(NTEMP,ISEED,XTEMP1)
4947            DO1031IJ=1,NTEMP
4948              XTEMP1(IJ)=YMEAN + YSD*XTEMP1(IJ)
4949 1031       CONTINUE
4950            CALL MEAN(XTEMP1,NTEMP,IWRITE,XMEAN,IBUGA3,IERROR)
4951            CALL SD(XTEMP1,NTEMP,IWRITE,XSD,IBUGA3,IERROR)
4952            AMEAN2(IROW)=XMEAN
4953            ASD2(IROW)=XSD
4954            N2(IROW)=INT(REAL(NTEMP)+0.1)
4955 1030     CONTINUE
4956C
4957C         NOW COMPUTE THE VANGEL-RUKHIN ML ESTIMATE OF THE
4958C         CONSENSUS MEAN.
4959C
4960          T0=10000000.D0
4961          T1=-T0
4962C
4963          AMNX=CPUMAX
4964          AMXX=CPUMIN
4965          AMNSD=CPUMAX
4966          AMXSD=CPUMIN
4967C
4968          DO32250II=1,NLAB
4969C
4970            DTEMP1(II)=DBLE(AMEAN2(II))
4971            IF(DTEMP1(II).LT.T0) T0=DTEMP1(II)
4972            IF(DTEMP1(II).GT.T1) T1=DTEMP1(II)
4973            IF(AMEAN2(II).GT.AMXX)AMXX=AMEAN2(II)
4974            IF(AMEAN2(II).LT.AMNX)AMNX=AMEAN2(II)
4975C
4976            IF(N(I).LT.0)THEN
4977              DTEMP2(II)=DBLE(ASD2(II))**2
4978            ELSE
4979              DTEMP2(II)=DBLE(ASD2(II))**2/DBLE(N2(II))
4980            ENDIF
4981            IF(ASD2(II).GT.0.0)THEN
4982              IF(ASD2(II).LT.AMNSD)AMNSD=ASD2(II)
4983              IF(ASD2(II).GT.AMXSD)AMXSD=ASD2(II)
4984            ENDIF
4985C
498632250     CONTINUE
4987C
4988          EPS=0.00001
4989          T0=AMNX - EPS
4990          T1=AMXX
4991          DO32270II=1,NLAB
4992            DTEMP1(II)=(DTEMP1(II)-T0)/(T1-T0)
4993            DTEMP2(II)=DTEMP2(II)/((T1-T0)**2)
499432270     CONTINUE
4995C
4996          IPRINT='OFF'
4997          ICAPS2='OFF'
4998          ICAPT2='ASCI'
4999          CALL DPMNPL(AMEAN2,ASD2,XTEMP1,NPTS,NLAB,
5000     1                DTEMP1,DTEMP2,N2,
5001     1                XMPST,AJUNK1,AJUNK2,AJUNK3,AJUNK4,
5002     1                DJUNK1,DJUNK2,AJUNK5,AJUNK6,
5003     1                IWRITE,
5004     1                ICAPS2,ICAPT2,NUMDI9,
5005     1                ISUBRO,IBUGA3,IERROR)
5006          IPRINT=IPRSAV
5007          CALL DPVRM2(NPTS,NLAB,
5008     1                DTEMP1,DTEMP2,W,N2,
5009     1                XMLST,AJUNK5,AJUNK6,
5010     1                ISUBRO,IBUGA3,IERROR)
5011C
5012C         FOLLOWING TRICK IS TO TEST FOR "NaN", I.E., THE
5013C         ALGORITHM FAILED.
5014C
5015          IF(XMLST == XMLST) THEN
5016            ICNT=ICNT+1
5017            XTEMP2(ICNT)=XMLST
5018          ENDIF
5019C
5020          IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'VRML')THEN
5021            WRITE(ICOUT,32271)IRESAM,ICNT,XMLST
502232271      FORMAT('IRESAM,ICNT,XMLST = ',2I8,G15.7)
5023           CALL DPWRST('XXX','BUG ')
5024          ENDIF
5025C
5026 1010   CONTINUE
5027        NRESAM=ICNT
5028        CALL SD(XTEMP2,NRESAM,IWRITE,XSD,IBUGA3,IERROR)
5029        SEMLBO=XSD
5030        SEMLB2=2.0*XSD
5031        ALPHA1=100.0*0.025
5032        CALL PERCEN(ALPHA1,XTEMP2,NRESAM,IWRITE,XTEMP1,NRESAM,
5033     1              XPERC,IBUGA3,IERROR)
5034        DLOWM2=DBLE(XPERC)
5035        ALPHA1=100.0*0.975
5036        CALL PERCEN(ALPHA1,XTEMP2,NRESAM,IWRITE,XTEMP1,NRESAM,
5037     1              XPERC,IBUGA3,IERROR)
5038        DHIGM2=DBLE(XPERC)
5039      ENDIF
5040C
5041 1099 CONTINUE
5042C
5043      IF(IPRINT.EQ.'OFF')GOTO9000
5044      IF(IVRUCM.EQ.'OFF')GOTO4009
5045C
5046      ITITLE=' '
5047      NCTITL=0
5048      ITITLZ=' '
5049      NCTITZ=0
5050C
5051      ICNT=1
5052      ITEXT(ICNT)=' 3. Method: Vangel-Rukhin Maximum Likelihood'
5053      NCTEXT(ICNT)=44
5054      AVALUE(ICNT)=0.0
5055      IDIGIT(ICNT)=-1
5056C
5057      ICNT=ICNT+1
5058      ITEXT(ICNT)='    Estimate of (unscaled) Consensus Mean:'
5059      NCTEXT(ICNT)=42
5060      AVALUE(ICNT)=XMLS
5061      IDIGIT(ICNT)=NUMDIG
5062      ICNT=ICNT+1
5063      ITEXT(ICNT)='    Estimate of (scaled) Consensus Mean:'
5064      NCTEXT(ICNT)=40
5065      AVALUE(ICNT)=XML
5066      IDIGIT(ICNT)=NUMDIG
5067      ICNT=ICNT+1
5068      ITEXT(ICNT)='    Between Lab Variance (unscaled):'
5069      NCTEXT(ICNT)=36
5070      AVALUE(ICNT)=S2BMLS
5071      IDIGIT(ICNT)=NUMDIG
5072      ICNT=ICNT+1
5073      ITEXT(ICNT)='    Between Lab SD (unscaled):'
5074      NCTEXT(ICNT)=30
5075      AVALUE(ICNT)=SQRT(S2BMLS)
5076      IDIGIT(ICNT)=NUMDIG
5077      ICNT=ICNT+1
5078      ITEXT(ICNT)='    Between Lab Variance (scaled):'
5079      NCTEXT(ICNT)=34
5080      AVALUE(ICNT)=S2BML
5081      IDIGIT(ICNT)=NUMDIG
5082      ICNT=ICNT+1
5083      ITEXT(ICNT)='    Standard Deviation of Consensus Mean:'
5084      NCTEXT(ICNT)=41
5085      AVALUE(ICNT)=SEML
5086      IDIGIT(ICNT)=NUMDIG
5087      ICNT=ICNT+1
5088      ITEXT(ICNT)='    Standard Uncertainty (k = 1):'
5089      NCTEXT(ICNT)=33
5090      AVALUE(ICNT)=SEML
5091      IDIGIT(ICNT)=NUMDIG
5092      ICNT=ICNT+1
5093      ITEXT(ICNT)='    Expanded Uncertainty (k = 2):'
5094      NCTEXT(ICNT)=33
5095      AVALUE(ICNT)=2.0*SEML
5096      IDIGIT(ICNT)=NUMDIG
5097      ICNT=ICNT+1
5098      ITEXT(ICNT)='    Expanded Uncertainty (k =           ):'
5099      WRITE(ITEXT(ICNT)(31:40),'(F10.7)')APPF
5100      NCTEXT(ICNT)=42
5101      AVALUE(ICNT)=APPF*SEML
5102      IDIGIT(ICNT)=NUMDIG
5103      ICNT=ICNT+1
5104      ITEXT(ICNT)='    Normal PPF of 0.975:'
5105      NCTEXT(ICNT)=24
5106      AVALUE(ICNT)=APPF
5107      IDIGIT(ICNT)=NUMDIG
5108      ICNT=ICNT+1
5109      ITEXT(ICNT)='    Lower 95% (normal) Confidence Limit:'
5110      NCTEXT(ICNT)=40
5111      AVALUE(ICNT)=DLOWML
5112      IDIGIT(ICNT)=NUMDIG
5113      ICNT=ICNT+1
5114      ITEXT(ICNT)='    Upper 95% (normal) Confidence Limit:'
5115      NCTEXT(ICNT)=40
5116      AVALUE(ICNT)=DHIGML
5117      IDIGIT(ICNT)=NUMDIG
5118      ICNT=ICNT+1
5119      ITEXT(ICNT)='    Note: Vangel-Rukhin Maximum Likelihood'
5120      NCTEXT(ICNT)=42
5121      AVALUE(ICNT)=0.0
5122      IDIGIT(ICNT)=-1
5123      ICNT=ICNT+1
5124      ITEXT(ICNT)='          Best Usage: 6 or More Labs'
5125      NCTEXT(ICNT)=36
5126      AVALUE(ICNT)=0.0
5127      IDIGIT(ICNT)=-1
5128C
5129C     PRINT EXPLICIT WARNING IF BETWEEN LAB VARIANCE IS TO
5130C     SMALL (SAY ON THE ORDER OF 1E-05 OR LESS)
5131C
5132      EPS=1.0E-05
5133      IF(S2BML.LE.EPS)THEN
5134        ICNT=ICNT+1
5135        ITEXT(ICNT)=' '
5136        NCTEXT(ICNT)=0
5137        AVALUE(ICNT)=0.0
5138        IDIGIT(ICNT)=-1
5139        ICNT=ICNT+1
5140        ITEXT(ICNT)='    WARNING: ESTIMATED BETWEEN LAB VARIANCE'
5141        NCTEXT(ICNT)=43
5142        AVALUE(ICNT)=0.0
5143        IDIGIT(ICNT)=-1
5144        ICNT=ICNT+1
5145        ITEXT(ICNT)='             IS LESS THAN 0.00001.  THE'
5146        NCTEXT(ICNT)=39
5147        AVALUE(ICNT)=0.0
5148        IDIGIT(ICNT)=-1
5149        ICNT=ICNT+1
5150        ITEXT(ICNT)='             ESTIMATED STANDARD ERROR OF THE'
5151        NCTEXT(ICNT)=44
5152        AVALUE(ICNT)=0.0
5153        IDIGIT(ICNT)=-1
5154        ICNT=ICNT+1
5155        ITEXT(ICNT)='             CONSENSUS MEAN MAY BE SUSPECT.'
5156        NCTEXT(ICNT)=45
5157        AVALUE(ICNT)=0.0
5158        IDIGIT(ICNT)=-1
5159      ENDIF
5160C
5161      NUMROW=ICNT
5162      DO310I=1,NUMROW
5163        NTOT(I)=15
5164  310 CONTINUE
5165C
5166      IFRST=.TRUE.
5167      ILAST=.TRUE.
5168      CALL DPDTA1(ITITLE,NCTITL,ITITLZ,NCTITZ,ITEXT,NCTEXT,
5169     1            AVALUE,IDIGIT,
5170     1            NTOT,NUMROW,
5171     1            ICAPSW,ICAPTY,ILAST,IFRST,
5172     1            ISUBRO,IBUGA3,IERROR)
5173C
5174      ITITLE=' '
5175      NCTITL=0
5176      ITITLZ=' '
5177      NCTITZ=0
5178      ITITL9=' '
5179      NCTIT9=0
5180C
5181 4009 CONTINUE
5182C
5183      IF(IVRBCM.EQ.'OFF' .OR. IFLAGB.EQ.0)GOTO9000
5184C
5185      ICNT=1
5186      ITEXT(ICNT)=' 3b. Method: Vangel-Rukhin Maximum Likelihood'
5187      NCTEXT(ICNT)=45
5188      AVALUE(ICNT)=0.0
5189      IDIGIT(ICNT)=-1
5190C
5191      ICNT=ICNT+1
5192      ITEXT(ICNT)='     with Parameteric Bootstrap Variance Estimate'
5193      NCTEXT(ICNT)=49
5194      AVALUE(ICNT)=0.0
5195      IDIGIT(ICNT)=-1
5196C
5197      ICNT=ICNT+1
5198      ITEXT(ICNT)='     Number of Bootstrap Samples:'
5199      NCTEXT(ICNT)=33
5200      AVALUE(ICNT)=REAL(NRESAM)
5201      IDIGIT(ICNT)=NUMDIG
5202      ICNT=ICNT+1
5203      ITEXT(ICNT)='     Estimate of (unscaled) Consensus Mean:'
5204      NCTEXT(ICNT)=43
5205      AVALUE(ICNT)=XMLS
5206      IDIGIT(ICNT)=NUMDIG
5207      ICNT=ICNT+1
5208      ITEXT(ICNT)='     Standard Uncertainty (k = 1):'
5209      NCTEXT(ICNT)=34
5210      AVALUE(ICNT)=SEMLBO
5211      IDIGIT(ICNT)=NUMDIG
5212      ICNT=ICNT+1
5213      ITEXT(ICNT)='     Expanded Uncertainty (k = 2):'
5214      NCTEXT(ICNT)=34
5215      AVALUE(ICNT)=2.0*SEMLBO
5216      IDIGIT(ICNT)=NUMDIG
5217      ICNT=ICNT+1
5218      ITEXT(ICNT)='     Lower 95% (normal) Confidence Limit:'
5219      NCTEXT(ICNT)=41
5220      AVALUE(ICNT)=DLOWM2
5221      IDIGIT(ICNT)=NUMDIG
5222      ICNT=ICNT+1
5223      ITEXT(ICNT)='     Upper 95% (normal) Confidence Limit:'
5224      NCTEXT(ICNT)=41
5225      AVALUE(ICNT)=DHIGM2
5226      IDIGIT(ICNT)=NUMDIG
5227      ICNT=ICNT+1
5228      ITEXT(ICNT)='     Note: Vangel-Rukhin Maximum Likelihood'
5229      NCTEXT(ICNT)=43
5230      AVALUE(ICNT)=0.0
5231      IDIGIT(ICNT)=-1
5232      ICNT=ICNT+1
5233      ITEXT(ICNT)='           Best Usage: 6 or More Labs'
5234      NCTEXT(ICNT)=37
5235      AVALUE(ICNT)=0.0
5236      IDIGIT(ICNT)=-1
5237C
5238      NUMROW=ICNT
5239      DO320I=1,NUMROW
5240        NTOT(I)=15
5241  320 CONTINUE
5242C
5243      IFRST=.TRUE.
5244      ILAST=.TRUE.
5245      CALL DPDTA1(ITITLE,NCTITL,ITITLZ,NCTITZ,ITEXT,NCTEXT,
5246     1            AVALUE,IDIGIT,
5247     1            NTOT,NUMROW,
5248     1            ICAPSW,ICAPTY,ILAST,IFRST,
5249     1            ISUBRO,IBUGA3,IERROR)
5250C
5251CCCCC FOLLOWING CODE IS STILL EXPERIMENTAL BY MARK VANGEL.
5252CCCCC WE PRINT COPY OF TAU (CAN BE COMPARED TO T(I), BUT RES
5253CCCCC IS STILL UNDER DEVELOPMENT.
5254CCCCC DO320I=1,NLAB
5255CCCCC   A   =S2BML/(X(I) -XML)**2
5256CCCCC   B   =T(I)/(X(I)-XML)**2
5257CCCCC   D   =(X(I)-XML)**2
5258CCCCC   TAU =S2BML/W(I) - S2BML
5259CCCCC   RES = (DBLE(N(I)-1)/TAU) *(1.0D0 - T(I)/TAU)
5260CCCCC   WRITE TO IOUNI2?
5261CCCCC   WRITE (IOUNI1,322) X(I),T(I),TAU,(X(I)-XML)/(S2BML+TAU),RES
5262C322    FORMAT(5G15.7)
5263C320  CONTINUE
5264C
5265C               *****************
5266C               **  STEP 90--  **
5267C               **  EXIT       **
5268C               *****************
5269C
5270 9000 CONTINUE
5271      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'VRML')THEN
5272        WRITE(ICOUT,999)
5273        CALL DPWRST('XXX','BUG ')
5274        WRITE(ICOUT,9011)
5275 9011   FORMAT('***** AT THE END       OF DPVRML--')
5276        CALL DPWRST('XXX','BUG ')
5277        WRITE(ICOUT,9012)IERROR
5278 9012   FORMAT('IERROR = ',A4)
5279        CALL DPWRST('XXX','BUG ')
5280        WRITE(ICOUT,9013)NPTS,NLAB
5281 9013   FORMAT('NPTS,NLAB = ',2I8)
5282        CALL DPWRST('XXX','BUG ')
5283        WRITE(ICOUT,9014)XMLS,S2BMLS,SEML
5284 9014   FORMAT('XMLS,S2BMLS,SEML = ',3G15.7)
5285        CALL DPWRST('XXX','BUG ')
5286        WRITE(ICOUT,9015)DLOWML,DHIGML
5287 9015   FORMAT('DLOWML,DHIGML = ',2G15.7)
5288        CALL DPWRST('XXX','BUG ')
5289      ENDIF
5290C
5291      RETURN
5292      END
5293      SUBROUTINE DPVRM2(NPTS,NLAB,
5294     1                  X,T,W,N,
5295     1                  XMLS,STXMU,STS2B,
5296     1                  ISUBRO,IBUGA3,IERROR)
5297C
5298C     PURPOSE--IMPLEMENT VANGEL-RUKHIN APPROACH TO CONSENSUS MEANS
5299C     WRITTEN BY--CODE FOR VANGEL-RUKHIN PROVIDED BY MARK VANGEL.
5300C     PRINTING--YES
5301C     SUBROUTINES NEEDED--MPSUB
5302C     WRITTEN BY--JAMES J. FILLIBEN
5303C                 STATISTICAL ENGINEERING DIVISION
5304C                 INFORMATION TECHNOLOGY LABORATORY
5305C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
5306C                 Gaithersburg, MD 20899-8980
5307C                 PHONE--301-975-2899
5308C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
5309C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
5310C     LANGUAGE--ANSI FORTRAN (1977)
5311C     VERSION NUMBER--2006/3
5312C     ORIGINAL VERSION--MARCH     2006. EXTRACTED FROM DPMAN2 ROUTINE
5313C     UPDATED         --FEBRUARY  2010. USE DPDTA1 TO PRINT
5314C
5315C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES--------------
5316C
5317      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
5318C
5319      CHARACTER*4 ISUBRO
5320      CHARACTER*4 IBUGA3
5321      CHARACTER*4 IERROR
5322C
5323      REAL STXMU
5324      REAL STS2B
5325      REAL XML
5326      REAL XMLS
5327C
5328C----------------------------------------------------------------
5329C
5330      INTEGER N(*)
5331C
5332      DOUBLE PRECISION X(*)
5333      DOUBLE PRECISION T(*)
5334      DOUBLE PRECISION W(*)
5335C
5336      COMMON /MPCOM/ T0, T1
5337C
5338C-----COMMON-----------------------------------------------------
5339C
5340      INCLUDE 'DPCOP2.INC'
5341C
5342C-----START POINT------------------------------------------------
5343C
5344      IERROR='NO'
5345C
5346      IF (STS2B .GT. 0.D0) THEN
5347        DO 501 I=1,NLAB
5348          W(I) = STS2B/(STS2B +T(I))
5349 501    CONTINUE
5350      ELSE
5351        DO 507 I=1,NLAB
5352          W(I) = 1.0D0/T(I)
5353 507    CONTINUE
5354      END IF
5355C
5356      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'VRM2')THEN
5357        WRITE(ICOUT,999)
5358  999   FORMAT(1X)
5359        CALL DPWRST('XXX','BUG ')
5360        WRITE(ICOUT,51)
5361   51   FORMAT('***** AT THE BEGINNING OF DPVRM2--')
5362        CALL DPWRST('XXX','BUG ')
5363        WRITE(ICOUT,52)NPTS,NLAB,STS2B,STXMU
5364   52   FORMAT('NPTS,NLAB,STS2B,STXMU = ',2I8,2G15.7)
5365        CALL DPWRST('XXX','BUG ')
5366        WRITE(ICOUT,55)T0,T1,NUMDIG
5367   55   FORMAT('T0,T1,NUMDIG = ',2G15.7,I8)
5368        CALL DPWRST('XXX','BUG ')
5369        DO65I=1,NLAB
5370          WRITE(ICOUT,66)I,T(I),X(I),W(I),N(I)
5371   66     FORMAT('I,T(I),X(I),W(I),N(I) = ',I8,3G15.7,I8)
5372          CALL DPWRST('XXX','BUG ')
5373   65   CONTINUE
5374      ENDIF
5375C
5376      MAXIT = 1000
5377      DXML   = STXMU
5378      DS2BML = STS2B
5379      CALL MPINTL(NLAB,N,X,T,DXML,DS2BML,W,MAXIT,DLIK,IBUGA3,IERROR)
5380      IF(IERROR.EQ.'YES')GOTO9000
5381      XML=REAL(DXML)
5382      DXMLS=(T1-T0)*DXML + T0
5383      XMLS=REAL(DXMLS)
5384C
5385C               *****************
5386C               **  STEP 90--  **
5387C               **  EXIT       **
5388C               *****************
5389C
5390 9000 CONTINUE
5391      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'VRM2')THEN
5392        WRITE(ICOUT,999)
5393        CALL DPWRST('XXX','BUG ')
5394        WRITE(ICOUT,9011)
5395 9011   FORMAT('***** AT THE END       OF DPVRM2--')
5396        CALL DPWRST('XXX','BUG ')
5397        WRITE(ICOUT,9012)IERROR,NPTS,NLAB,XMLS
5398 9012   FORMAT('IERROR,NPTS,NLAB,XMLS = ',A4,2X,2I8,G15.7)
5399        CALL DPWRST('XXX','BUG ')
5400      ENDIF
5401C
5402      RETURN
5403      END
5404      SUBROUTINE DPVWAE(YTEMP,XTEMP,MAXNXT,
5405     1                  ICAPSW,IFORSW,IMULT,
5406     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
5407C
5408C     PURPOSE--CARRY OUT VAN DER WAERDEN TEST
5409C              NON-PARAMETRIC ONE-WAY ANOVA
5410C     EXAMPLE--VAN DER WAERDEN TEST Y X
5411C     REFERENCE--W. J, CONOVER, "PRACTICAL NONPARAMETRIC STATISTICS",
5412C                THIRD EDITION, WILEY, 1999, PP. 396-406.
5413C     WRITTEN BY--ALAN HECKERT
5414C                 STATISTICAL ENGINEERING DIVISION
5415C                 INFORMATION TECHNOLOGY LABORATORY
5416C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
5417C                 GAITHERSBURG, MD 20899-8980
5418C                 PHONE--301-975-2899
5419C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
5420C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
5421C     LANGUAGE--ANSI FORTRAN (1977)
5422C     VERSION NUMBER--2004/10
5423C     ORIGINAL VERSION--OCTOBER   2004.
5424C     UPDATED         --JANUARY   2007. CALL LIST TO RANK
5425C     UPDATED         --FEBRUARY  2011. USE DPPARS
5426C     UPDATED         --FEBRUARY  2011. SUPPORT FOR "MULTIPLE" CASE
5427C
5428C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
5429C
5430      CHARACTER*4 ICAPSW
5431      CHARACTER*4 IFORSW
5432      CHARACTER*4 IMULT
5433      CHARACTER*4 IBUGA2
5434      CHARACTER*4 IBUGA3
5435      CHARACTER*4 IBUGQ
5436      CHARACTER*4 ISUBRO
5437      CHARACTER*4 IFOUND
5438      CHARACTER*4 IERROR
5439C
5440      CHARACTER*4 ICASE
5441      CHARACTER*4 ISUBN1
5442      CHARACTER*4 ISUBN2
5443      CHARACTER*4 ISTEPN
5444      CHARACTER*4 IH
5445      CHARACTER*4 IH2
5446      CHARACTER*4 IHOST1
5447      CHARACTER*4 ISUBN0
5448C
5449      CHARACTER*40 INAME
5450      PARAMETER (MAXSPN=30)
5451      CHARACTER*4 IVARN1(MAXSPN)
5452      CHARACTER*4 IVARN2(MAXSPN)
5453      CHARACTER*4 IVARTY(MAXSPN)
5454      REAL PVAR(MAXSPN)
5455      INTEGER ILIS(MAXSPN)
5456      INTEGER NRIGHT(MAXSPN)
5457      INTEGER ICOLR(MAXSPN)
5458C
5459C---------------------------------------------------------------------
5460C
5461      DIMENSION YTEMP(*)
5462      DIMENSION XTEMP(*)
5463C
5464C-----COMMON----------------------------------------------------------
5465C
5466      INCLUDE 'DPCOST.INC'
5467      INCLUDE 'DPCOPA.INC'
5468C
5469      DIMENSION DTAG(MAXOBV)
5470      DIMENSION ARANK(MAXOBV)
5471      DIMENSION ANORM(MAXOBV)
5472      DIMENSION NRANK(MAXOBV)
5473      DIMENSION XTEMP2(MAXOBV)
5474      DIMENSION TEMP1(MAXOBV)
5475      DIMENSION TEMP2(MAXOBV)
5476      DIMENSION TEMP3(MAXOBV)
5477      DIMENSION TEMP4(MAXOBV)
5478      DIMENSION TEMP5(MAXOBV)
5479      DIMENSION TEMP6(MAXOBV)
5480C
5481      INCLUDE 'DPCOZZ.INC'
5482      EQUIVALENCE(GARBAG(IGARB1),DTAG(1))
5483      EQUIVALENCE(GARBAG(IGARB2),ARANK(1))
5484      EQUIVALENCE(GARBAG(IGARB3),ANORM(1))
5485      EQUIVALENCE(GARBAG(IGARB4),XTEMP2(1))
5486      EQUIVALENCE(GARBAG(IGARB5),TEMP1(1))
5487      EQUIVALENCE(GARBAG(IGARB6),TEMP2(1))
5488      EQUIVALENCE(GARBAG(IGARB7),TEMP3(1))
5489      EQUIVALENCE(GARBAG(IGARB8),TEMP4(1))
5490      EQUIVALENCE(GARBAG(IGARB9),TEMP5(1))
5491      EQUIVALENCE(GARBAG(IGAR10),TEMP6(1))
5492C
5493      INCLUDE 'DPCOZI.INC'
5494      EQUIVALENCE(IGARBG(IIGAR1),NRANK(1))
5495C
5496      INCLUDE 'DPCOHK.INC'
5497      INCLUDE 'DPCOSU.INC'
5498      INCLUDE 'DPCODA.INC'
5499      INCLUDE 'DPCOP2.INC'
5500C
5501C-----START POINT-----------------------------------------------------
5502C
5503      ISUBN1='DPVW'
5504      ISUBN2='AE  '
5505      IFOUND='YES'
5506      IERROR='NO'
5507C
5508      MAXCP1=MAXCOL+1
5509      MAXCP2=MAXCOL+2
5510      MAXCP3=MAXCOL+3
5511      MAXCP4=MAXCOL+4
5512      MAXCP5=MAXCOL+5
5513      MAXCP6=MAXCOL+6
5514C
5515C               *******************************************
5516C               **  TREAT THE VAN DER WAERDEN TEST CASE  **
5517C               *******************************************
5518C
5519      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'VWAE')THEN
5520        WRITE(ICOUT,999)
5521  999   FORMAT(1X)
5522        CALL DPWRST('XXX','BUG ')
5523        WRITE(ICOUT,51)
5524   51   FORMAT('***** AT THE BEGINNING OF DPVWAE--')
5525        CALL DPWRST('XXX','BUG ')
5526        WRITE(ICOUT,52)IBUGA2,IBUGA3,IBUGQ,ISUBRO
5527   52   FORMAT('IBUGA2,IBUGA3,IBUGQ,ISUBRO = ',3(A4,2X),A4)
5528        CALL DPWRST('XXX','BUG ')
5529        WRITE(ICOUT,55)IMULT,IKRUGS,MAXNXT
5530   55   FORMAT('IMULT,IKRUGS,MAXNXT = ',2(A4,2X),I8)
5531        CALL DPWRST('XXX','BUG ')
5532      ENDIF
5533C
5534C               *********************************
5535C               **  STEP 1--                   **
5536C               **  EXTRACT THE VARIABLE LIST  **
5537C               *********************************
5538C
5539      ISTEPN='1'
5540      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'VWAE')
5541     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
5542C
5543      INAME='VAN DER WAERDEN TEST'
5544      MAXNA=100
5545      MINNVA=1
5546      MAXNVA=100
5547      MINNA=1
5548      IFLAGE=1
5549      IFLAGM=0
5550      IF(IMULT.EQ.'ON')THEN
5551        IFLAGE=0
5552        IFLAGM=1
5553      ENDIF
5554      MINN2=2
5555      IFLAGP=0
5556      JMIN=1
5557      JMAX=NUMARG
5558C
5559      CALL DPPARS(IHARG,IHARG2,IARGT,ARG,NUMARG,IANS,IWIDTH,
5560     1            IHNAME,IHNAM2,IUSE,NUMNAM,IN,IVALUE,VALUE,
5561     1            JMIN,JMAX,
5562     1            MINN2,MINNA,MAXNA,MAXSPN,IFLAGE,INAME,
5563     1            IVARN1,IVARN2,IVARTY,PVAR,
5564     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,ILOCQ,NUMVAR,
5565     1            MINNVA,MAXNVA,
5566     1            IFLAGM,IFLAGP,
5567     1            IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
5568      IF(IERROR.EQ.'YES')GOTO9000
5569C
5570      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'VWAE')THEN
5571        WRITE(ICOUT,999)
5572        CALL DPWRST('XXX','BUG ')
5573        WRITE(ICOUT,181)
5574  181   FORMAT('***** AFTER CALL DPPARS--')
5575        CALL DPWRST('XXX','BUG ')
5576        WRITE(ICOUT,182)NQ,NUMVAR,IMULT
5577  182   FORMAT('NQ,NUMVAR,IMULT = ',2I8,2X,A4)
5578        CALL DPWRST('XXX','BUG ')
5579        IF(NUMVAR.GT.0)THEN
5580          DO185I=1,NUMVAR
5581            WRITE(ICOUT,187)I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),
5582     1                      ICOLR(I)
5583  187       FORMAT('I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),',
5584     1             'ICOLR(I) = ',I8,2X,A4,A4,2X,3I8)
5585            CALL DPWRST('XXX','BUG ')
5586  185     CONTINUE
5587        ENDIF
5588      ENDIF
5589C
5590C               *******************************************************
5591C               **  STEP 3--                                         **
5592C               **  GENERATE THE VAN DER WAERDEN TEST FOR THE        **
5593C               **  VARIOUS CASES                                    **
5594C               *******************************************************
5595C
5596      ISTEPN='3'
5597      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'VWAE')
5598     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
5599C
5600C               *****************************************
5601C               **  STEP 3A--                          **
5602C               **  CASE 1: TWO RESPONSE VARIABLES     **
5603C               **          WITH NO REPLICATION        **
5604C               *****************************************
5605C
5606      IF(IMULT.EQ.'OFF')THEN
5607        ISTEPN='3A'
5608        IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'VWAE')
5609     1    CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
5610C
5611        ICOL=1
5612        NUMVA2=2
5613        CALL DPPAR3(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
5614     1              INAME,IVARN1,IVARN2,IVARTY,
5615     1              ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVA2,
5616     1              MAXCOL,MAXCP1,MAXCP2,MAXCP3,
5617     1              MAXCP4,MAXCP5,MAXCP6,
5618     1              V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
5619     1              Y,X,YTEMP,NLOCAL,NLOCA2,NLOCA3,ICASE,
5620     1              IBUGA3,ISUBRO,IFOUND,IERROR)
5621        IF(IERROR.EQ.'YES')GOTO9000
5622C
5623C
5624C               ******************************************************
5625C               **  STEP 3B--
5626C               **  PREPARE FOR ENTRANCE INTO DPVWA2--
5627C               ******************************************************
5628C
5629        ISTEPN='3B'
5630        IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'VWAE')THEN
5631          CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
5632          WRITE(ICOUT,999)
5633          CALL DPWRST('XXX','BUG ')
5634          WRITE(ICOUT,331)
5635  331     FORMAT('***** FROM DPVWAE, AS WE ARE ABOUT TO CALL DPVWA2--')
5636          CALL DPWRST('XXX','BUG ')
5637          WRITE(ICOUT,332)NLOCAL
5638  332     FORMAT('NLOCAL = ',I8)
5639          CALL DPWRST('XXX','BUG ')
5640          DO335I=1,NLOCAL
5641            WRITE(ICOUT,336)I,Y(I),X(I)
5642  336       FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
5643            CALL DPWRST('XXX','BUG ')
5644  335     CONTINUE
5645        ENDIF
5646C
5647      CALL DPVWA2(Y,X,NLOCAL,IVARN1,IVARN2,
5648     1            YTEMP,DTAG,XTEMP,ANORM,ARANK,NRANK,XTEMP2,MAXNXT,
5649     1            TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6,
5650     1            STATVA,STATCD,PVAL,
5651     1            CUT0,CUT50,CUT75,CUT90,CUT95,CUT975,CUT99,CUT999,
5652     1            ICAPSW,ICAPTY,IFORSW,IMULT,IKRUGS,
5653     1            IBUGA3,ISUBRO,IERROR)
5654C
5655C               *******************************************************
5656C               **  STEP 4A--                                        **
5657C               **  CASE 2: MULTIPLE RESPONSE VARIABLES.  NOTE THAT  **
5658C               **          LEVENE TEST, THE MULTIPLE LABS ARE       **
5659C               **          CONVERTED INTO A "Y X" STACKED PAIR      **
5660C               **          WHERE "X" IS THE LAB-ID VARIABLE.        **
5661C               *******************************************************
5662C
5663      ELSEIF(IMULT.EQ.'ON')THEN
5664        ISTEPN='4A'
5665        IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'VWAE')
5666     1    CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
5667C
5668        ICOL=1
5669        NUMVA2=NUMVAR
5670        CALL DPPAR8(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
5671     1              INAME,IVARN1,IVARN2,IVARTY,
5672     1              ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVA2,
5673     1              MAXCOL,MAXCP1,MAXCP2,MAXCP3,
5674     1              MAXCP4,MAXCP5,MAXCP6,
5675     1              V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
5676     1              XTEMP,Y,X,NLOCAL,ICASE,
5677     1              IBUGA3,ISUBRO,IFOUND,IERROR)
5678        NUMVAR=2
5679        IF(IERROR.EQ.'YES')GOTO9000
5680C
5681        IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'VWAE')THEN
5682          ISTEPN='4B'
5683          CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
5684          WRITE(ICOUT,999)
5685          CALL DPWRST('XXX','BUG ')
5686          WRITE(ICOUT,442)
5687  442     FORMAT('***** FROM THE MIDDLE  OF DPKRUS--')
5688          CALL DPWRST('XXX','BUG ')
5689          WRITE(ICOUT,443)ICASAN,NUMVAR,NLOCAL
5690  443     FORMAT('ICASAN,NUMVAR,NLOCAL = ',A4,2I8)
5691          CALL DPWRST('XXX','BUG ')
5692          IF(NLOCAL.GE.1)THEN
5693            DO445I=1,NLOCAL
5694              WRITE(ICOUT,446)I,Y(I),X(I)
5695  446         FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
5696              CALL DPWRST('XXX','BUG ')
5697  445       CONTINUE
5698          ENDIF
5699        ENDIF
5700C
5701        CALL DPVWA2(Y,X,NS1,IVARN1,IVARN2,
5702     1              YTEMP,DTAG,XTEMP,ANORM,ARANK,NRANK,XTEMP2,MAXNXT,
5703     1              TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6,
5704     1              STATVA,STATCD,PVAL,
5705     1              CUT0,CUT50,CUT75,CUT90,CUT95,CUT975,CUT99,CUT999,
5706     1              ICAPSW,ICAPTY,IFORSW,IMULT,IKRUGS,
5707     1              IBUGA3,ISUBRO,IERROR)
5708C
5709      ENDIF
5710C
5711C               ***************************************
5712C               **  STEP 61--                        **
5713C               **  UPDATE INTERNAL DATAPLOT TABLES  **
5714C               ***************************************
5715C
5716      ISTEPN='61'
5717      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'VWAE')
5718     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
5719C
5720      ISUBN0='DPVW'
5721C
5722      IH='STAT'
5723      IH2='VAL '
5724      VALUE0=STATVA
5725      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5726     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5727     1IANS,IWIDTH,IBUGA3,IERROR)
5728C
5729      IH='STAT'
5730      IH2='CDF '
5731      VALUE0=STATCD
5732      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5733     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5734     1IANS,IWIDTH,IBUGA3,IERROR)
5735C
5736      IH='PVAL'
5737      IH2='UE  '
5738      VALUE0=PVAL
5739      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5740     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5741     1IANS,IWIDTH,IBUGA3,IERROR)
5742C
5743      IH='CUTO'
5744      IH2='FF0 '
5745      VALUE0=CUT0
5746      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5747     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5748     1IANS,IWIDTH,IBUGA3,IERROR)
5749C
5750      IH='CUTO'
5751      IH2='FF50'
5752      VALUE0=CUT50
5753      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5754     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5755     1IANS,IWIDTH,IBUGA3,IERROR)
5756C
5757      IH='CUTO'
5758      IH2='FF75'
5759      VALUE0=CUT75
5760      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5761     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5762     1IANS,IWIDTH,IBUGA3,IERROR)
5763C
5764      IH='CUTO'
5765      IH2='FF90'
5766      VALUE0=CUT90
5767      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5768     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5769     1IANS,IWIDTH,IBUGA3,IERROR)
5770C
5771      IH='CUTO'
5772      IH2='FF95'
5773      VALUE0=CUT95
5774      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5775     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5776     1IANS,IWIDTH,IBUGA3,IERROR)
5777C
5778      IH='CUTO'
5779      IH2='F975'
5780      VALUE0=CUT975
5781      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5782     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5783     1IANS,IWIDTH,IBUGA3,IERROR)
5784C
5785      IH='CUTO'
5786      IH2='FF99'
5787      VALUE0=CUT99
5788      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5789     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5790     1IANS,IWIDTH,IBUGA3,IERROR)
5791C
5792      IH='CUTO'
5793      IH2='F999'
5794      VALUE0=CUT99
5795      CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
5796     1IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
5797     1IANS,IWIDTH,IBUGA3,IERROR)
5798C
5799C               *****************
5800C               **  STEP 90--  **
5801C               **  EXIT       **
5802C               *****************
5803C
5804 9000 CONTINUE
5805      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'VWAE')THEN
5806        WRITE(ICOUT,999)
5807        CALL DPWRST('XXX','BUG ')
5808        WRITE(ICOUT,9011)
5809 9011   FORMAT('***** AT THE END       OF DPVWAE--')
5810        CALL DPWRST('XXX','BUG ')
5811        WRITE(ICOUT,9014)NLOCAL,STATVA,STATCD
5812 9014   FORMAT('NLOCAL,STATVA,STATCD = ',I8,2G15.7)
5813        CALL DPWRST('XXX','BUG ')
5814        WRITE(ICOUT,9016)IFOUND,IERROR
5815 9016   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
5816        CALL DPWRST('XXX','BUG ')
5817      ENDIF
5818C
5819      RETURN
5820      END
5821      SUBROUTINE DPVWA2(Y,TAG,N,IVARID,IVARI2,
5822     1                  YTEMP,DTAG,AMEAN,ANORM,ARANK,NRANK,
5823     1                  XTEMP2,MAXNXT,
5824     1                  TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6,
5825     1                  STATVA,STATCD,PVAL,
5826     1                  CUT0,CUT50,CUT75,CUT90,CUT95,CUT975,
5827     1                  CUT99,CUT999,
5828     1                  ICAPSW,ICAPTY,IFORSW,IMULT,IKRUGS,
5829     1                  IBUGA3,ISUBRO,IERROR)
5830C
5831C     PURPOSE--THIS ROUTINE CARRIES OUT VAN DER WAERDEN (NORMAL SCORE
5832C              TEST) FOR SEVERAL INDEPENDENT VARIABLES, I.E.,
5833C              A NON-PARAMETRIC ONE-WAY ANOVA
5834C     EXAMPLE--VAN DER WAERDEN TEST Y TAG
5835C     REFERENCE--W. J. CONOVER, "PRACTICAL NONPARAMETRIC
5836C                STATISTICS", THIRD EDITION, 1999, WILEY,
5837C                PP. 396-405.
5838C     WRITTEN BY--ALAN HECKERT
5839C                 STATISTICAL ENGINEERING DIVISION
5840C                 INFORMATION TECHNOLOGY LABORATORY
5841C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
5842C                 GAITHERSBURG, MD 20899-8980
5843C                 PHONE--301-975-2899
5844C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
5845C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
5846C     LANGUAGE--ANSI FORTRAN (1977)
5847C     VERSION NUMBER--2004/10
5848C     ORIGINAL VERSION--OCTOBER   2004.
5849C     UPDATED         --OCTOBER   2006. CALL LIST TO TPPF
5850C     UPDATED         --JANUARY   2007. CALL LIST TO RANK
5851C     UPDATED         --FEBRUARY  2011. USE DPDTA1 AND DPDTA4 TO PRINT
5852C                                       OUTPUT TABLES.  THIS ADDS RTF
5853C                                       SUPPORT AND SPECIFICATION OF
5854C                                       THE NUMBER OF DIGITS.
5855C     UPDATED         --FEBRUARY  2011. OPTION TO PRINT GROUP
5856C                                       STATISTICS
5857C
5858C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
5859C
5860      CHARACTER*4 ICAPSW
5861      CHARACTER*4 ICAPTY
5862      CHARACTER*4 IFORSW
5863      CHARACTER*4 IMULT
5864      CHARACTER*4 IKRUGS
5865      CHARACTER*4 IBUGA3
5866      CHARACTER*4 ISUBRO
5867      CHARACTER*4 IERROR
5868      CHARACTER*4 IVARID(*)
5869      CHARACTER*4 IVARI2(*)
5870C
5871      CHARACTER*4 IWRITE
5872C
5873      CHARACTER*3 IATEMP
5874C
5875      CHARACTER*4 ISUBN0
5876      CHARACTER*4 ISUBN1
5877      CHARACTER*4 ISUBN2
5878      CHARACTER*4 ISTEPN
5879C
5880      CHARACTER*4 IOP
5881C
5882      DOUBLE PRECISION DSUM1
5883C
5884C---------------------------------------------------------------------
5885C
5886      DIMENSION Y(*)
5887      DIMENSION TAG(*)
5888      DIMENSION DTAG(*)
5889      DIMENSION ANORM(*)
5890      DIMENSION YTEMP(*)
5891      DIMENSION AMEAN(*)
5892      DIMENSION ARANK(*)
5893      DIMENSION NRANK(*)
5894      DIMENSION XTEMP2(*)
5895      DIMENSION TEMP1(*)
5896      DIMENSION TEMP2(*)
5897      DIMENSION TEMP3(*)
5898      DIMENSION TEMP4(*)
5899      DIMENSION TEMP5(*)
5900      DIMENSION TEMP6(*)
5901C
5902      PARAMETER (NUMALP=8)
5903      REAL ALPHA(NUMALP)
5904C
5905      PARAMETER(NUMCLI=6)
5906      PARAMETER(MAXLIN=2)
5907      PARAMETER (MAXROW=50)
5908      CHARACTER*60 ITITLE
5909      CHARACTER*60 ITITLZ
5910      CHARACTER*1  ITITL9
5911      CHARACTER*60 ITEXT(MAXROW)
5912      CHARACTER*4  ALIGN(NUMCLI)
5913      CHARACTER*4  VALIGN(NUMCLI)
5914      REAL         AVALUE(MAXROW)
5915      INTEGER      NCTEXT(MAXROW)
5916      INTEGER      IDIGIT(MAXROW)
5917      INTEGER      NTOT(MAXROW)
5918      CHARACTER*60 ITITL2(MAXLIN,NUMCLI)
5919      CHARACTER*15 IVALUE(MAXROW,NUMCLI)
5920      CHARACTER*4  ITYPCO(NUMCLI)
5921      INTEGER      NCTIT2(MAXLIN,NUMCLI)
5922      INTEGER      NCVALU(MAXROW,NUMCLI)
5923      INTEGER      IWHTML(NUMCLI)
5924      INTEGER      IWRTF(NUMCLI)
5925      REAL         AMAT(MAXROW,NUMCLI)
5926      LOGICAL IFRST
5927      LOGICAL ILAST
5928      LOGICAL IFLAGS
5929      LOGICAL IFLAGE
5930C
5931C-----COMMON----------------------------------------------------------
5932C
5933      INCLUDE 'DPCOP2.INC'
5934C
5935      DATA ALPHA/
5936     1 0.0, 50.0, 75.0, 90.0, 95.0, 97.5, 99.0, 99.9/
5937C
5938C-----START POINT-----------------------------------------------------
5939C
5940      ISUBN1='DPVW'
5941      ISUBN2='A2  '
5942      ISUBN0='    '
5943C
5944      IERROR='NO'
5945C
5946      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'VWA2')THEN
5947        WRITE(ICOUT,999)
5948  999   FORMAT(1X)
5949        CALL DPWRST('XXX','WRIT')
5950        WRITE(ICOUT,51)
5951   51   FORMAT('**** AT THE BEGINNING OF DPVWA2--')
5952        CALL DPWRST('XXX','WRIT')
5953        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
5954   52   FORMAT('IBUGA3,ISUBRO,N = ',A4,2X,A4,2X,I8)
5955        CALL DPWRST('XXX','WRIT')
5956        DO56I=1,N
5957          WRITE(ICOUT,57)I,Y(I),TAG(I)
5958   57     FORMAT('I,Y(I),TAG(I) = ',I8,2G15.7)
5959          CALL DPWRST('XXX','WRIT')
5960   56   CONTINUE
5961      ENDIF
5962C
5963C               ********************************************
5964C               **  STEP 11--                             **
5965C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
5966C               ********************************************
5967C
5968      ISTEPN='11'
5969      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'VWA2')
5970     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
5971C
5972      IF(N.LT.4)THEN
5973        WRITE(ICOUT,999)
5974        CALL DPWRST('XXX','WRIT')
5975        WRITE(ICOUT,111)
5976  111   FORMAT('***** ERROR IN VAN DER WAERDEN TEST--')
5977        CALL DPWRST('XXX','WRIT')
5978        WRITE(ICOUT,112)
5979  112   FORMAT('      THE NUMBER OF OBSERVATIONS IS LESS THAN 4.')
5980        CALL DPWRST('XXX','WRIT')
5981        WRITE(ICOUT,113)N
5982  113   FORMAT('SAMPLE SIZE = ',I8)
5983        CALL DPWRST('XXX','WRIT')
5984        IERROR='YES'
5985        GOTO9000
5986      ENDIF
5987C
5988      HOLD=Y(1)
5989      DO135I=2,N
5990        IF(Y(I).NE.HOLD)GOTO139
5991  135 CONTINUE
5992      WRITE(ICOUT,999)
5993      CALL DPWRST('XXX','WRIT')
5994      WRITE(ICOUT,111)
5995      CALL DPWRST('XXX','WRIT')
5996      WRITE(ICOUT,131)HOLD
5997  131 FORMAT('      THE RESPONSE VARIABLE HAS ALL ELEMENTS = ',G15.7)
5998      CALL DPWRST('XXX','WRIT')
5999      GOTO9000
6000  139 CONTINUE
6001C
6002      HOLD=TAG(1)
6003      DO235I=2,N
6004      IF(TAG(I).NE.HOLD)GOTO239
6005  235 CONTINUE
6006      WRITE(ICOUT,999)
6007      CALL DPWRST('XXX','WRIT')
6008      WRITE(ICOUT,111)
6009      CALL DPWRST('XXX','WRIT')
6010      WRITE(ICOUT,231)HOLD
6011  231 FORMAT('      THE GROUP-ID VARIABLE HAS ALL ELEMENTS = ',G15.7)
6012      CALL DPWRST('XXX','WRIT')
6013      GOTO9000
6014  239 CONTINUE
6015C
6016C               *******************************
6017C               **  STEP 41--                **
6018C               **  CARRY OUT CALCULATIONS   **
6019C               **  FOR VAN DER WAERDEN TEST **
6020C               *******************************
6021C
6022      ISTEPN='41'
6023      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'VWA2')
6024     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
6025C
6026      IWRITE='OFF'
6027C
6028CCCCC THE ALGORITHM FOR VAN DER WAERDEN TEST IS:
6029CCCCC
6030CCCCC   1) RANK ALL OBSERVATIONS (R)
6031CCCCC   2) COMPUTE: A = NORPPF(RANK/(N+1))
6032CCCCC   3) COMPUTE MEAN OF A FOR EACH GROUP (Abar(i))
6033CCCCC   4) COMPUTE VARIACE FOR FULL SAMPLE (S**2)
6034CCCCC   5) TEST STATISTIC IS:
6035CCCCC
6036CCCCC      T = (1/S**2)*SUM[i=1 to k][N(i)*(Abar(i)**2]
6037CCCCC
6038CCCCC THE CRITICAL VALUE IS A CHI-SQUARED DISTRIBUTION WITH
6039CCCCC (K-1) DEGREES OF FREEDOM
6040CCCCC
6041C
6042      CALL DISTIN(TAG,N,IWRITE,DTAG,NUMDIS,IBUGA3,IERROR)
6043      IF(IERROR.EQ.'YES')GOTO9000
6044CCCCC CALL SORTC(TAG,Y,N,TAG,Y)
6045      CALL RANK(Y,N,IWRITE,ARANK,XTEMP2,MAXNXT,IBUGA3,IERROR)
6046      IF(IERROR.EQ.'YES')GOTO9000
6047      DO420I=1,N
6048        ATEMP=ARANK(I)/REAL(N+1)
6049        CALL NORPPF(ATEMP,ANORM(I))
6050  420 CONTINUE
6051      CALL VAR(ANORM,N,IWRITE,S2,IBUGA3,IERROR)
6052C
6053      AN=REAL(N)
6054C
6055      DSUM1=0.0D0
6056      DO460IDIS=1,NUMDIS
6057         J=0
6058         DO470I=1,N
6059            IF(TAG(I).EQ.DTAG(IDIS))THEN
6060               J=J+1
6061               YTEMP(J)=ANORM(I)
6062               TEMP5(J)=Y(I)
6063            ENDIF
6064  470    CONTINUE
6065         CALL MEDIAN(TEMP5,J,IWRITE,TEMP6,MAXNXT,YMED,
6066     1               IBUGA3,IERROR)
6067         CALL MEAN(TEMP5,J,IWRITE,YMEANT,IBUGA3,IERROR)
6068         CALL SD(TEMP5,J,IWRITE,YSD,IBUGA3,IERROR)
6069         TEMP1(IDIS)=J
6070         TEMP2(IDIS)=YMEANT
6071         TEMP3(IDIS)=YMED
6072         TEMP4(IDIS)=YSD
6073         NRANK(IDIS)=J
6074         ANR=REAL(NRANK(IDIS))
6075         CALL MEAN(YTEMP,NRANK(IDIS),IWRITE,YMEAN,IBUGA3,IERROR)
6076         AMEAN(IDIS)=YMEAN
6077         DSUM1=DSUM1 + DBLE(NRANK(IDIS))*DBLE(YMEAN)**2
6078  460 CONTINUE
6079C
6080      STATVA=REAL(DSUM1/DBLE(S2))
6081      NUMDF=NUMDIS-1
6082      CALL CHSCDF(STATVA,NUMDF,STATCD)
6083      PVAL=1.0 - STATCD
6084C
6085      CUT0=0.0
6086      CALL CHSPPF(.50,NUMDF,CUT50)
6087      CALL CHSPPF(.75,NUMDF,CUT75)
6088      CALL CHSPPF(.90,NUMDF,CUT90)
6089      CALL CHSPPF(.95,NUMDF,CUT95)
6090      CALL CHSPPF(.975,NUMDF,CUT975)
6091      CALL CHSPPF(.99,NUMDF,CUT99)
6092      CALL CHSPPF(.999,NUMDF,CUT999)
6093C
6094      IOP='OPEN'
6095      IFLG1=1
6096      IFLG2=1
6097      IFLG3=0
6098      IFLG4=0
6099      IFLG5=0
6100      CALL DPAUFI(IOP,IFLG1,IFLG2,IFLG3,IFLG4,IFLG5,
6101     1            IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
6102     1            IBUGA3,ISUBRO,IERROR)
6103      IF(IERROR.EQ.'YES')GOTO9000
6104C
6105      WRITE(IOUNI1,501)
6106  501 FORMAT('     I       J  ',
6107     1       '|Abar(i) - Abar(j)|  ',
6108     1       '90% CV        ',
6109     1       '95% CV        ',
6110     1       '99% CV        ')
6111C
6112      IDF=N-NUMDIS
6113      ALPHAT=0.05
6114      CALL TPPF(1.0-ALPHAT/2.0,REAL(IDF),AT95)
6115      ALPHAT=0.10
6116      CALL TPPF(1.0-ALPHAT/2.0,REAL(IDF),AT90)
6117      ALPHAT=0.01
6118      CALL TPPF(1.0-ALPHAT/2.0,REAL(IDF),AT99)
6119      AFACT2=SQRT(S2*(AN-1.0-STATVA)/REAL(N-NUMDIS))
6120C
6121      DO530I=1,NUMDIS
6122        DO539J=1,NUMDIS
6123          IF(I.LT.J)THEN
6124            ANI=REAL(NRANK(I))
6125            ANJ=REAL(NRANK(J))
6126            ADIFF=ABS(AMEAN(I) - AMEAN(J))
6127            AFACT3=SQRT((1.0/ANI) + (1.0/ANJ))
6128            ACV90=AT90*AFACT2*AFACT3
6129            ACV95=AT95*AFACT2*AFACT3
6130            ACV99=AT99*AFACT2*AFACT3
6131            IATEMP='   '
6132            IF(ADIFF.GE.ACV90)IATEMP(1:1)='*'
6133            IF(ADIFF.GE.ACV95)IATEMP(2:2)='*'
6134            IF(ADIFF.GE.ACV99)IATEMP(3:3)='*'
6135            WRITE(IOUNI1,537)I,J,ADIFF,ACV90,ACV95,ACV99,IATEMP
6136  537       FORMAT(I6,2X,I6,2X,4E15.7,A3)
6137          ENDIF
6138  539   CONTINUE
6139  530 CONTINUE
6140C
6141      DO590I=1,N
6142        WRITE(IOUNI2,597)I,Y(I),ARANK(I),ANORM(I),AMEAN(I),NRANK(I)
6143  597   FORMAT(I8,4E15.7,I8)
6144  590 CONTINUE
6145C
6146      IOP='CLOS'
6147      CALL DPAUFI(IOP,IFLG1,IFLG2,IFLG3,IFLG4,IFLG5,
6148     1            IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
6149     1            IBUGA3,ISUBRO,IERROR)
6150      IF(IERROR.EQ.'YES')GOTO9000
6151C
6152C               ********************************
6153C               **   STEP 42--                **
6154C               **   WRITE OUT EVERYTHING     **
6155C               **   FOR VAN DER WAERDEN TEST **
6156C               ********************************
6157C
6158      ISTEPN='42'
6159      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'VWA2')
6160     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
6161C
6162      IF(IPRINT.EQ.'OFF')GOTO9000
6163C
6164      NUMDIG=7
6165      IF(IFORSW.EQ.'1')NUMDIG=1
6166      IF(IFORSW.EQ.'2')NUMDIG=2
6167      IF(IFORSW.EQ.'3')NUMDIG=3
6168      IF(IFORSW.EQ.'4')NUMDIG=4
6169      IF(IFORSW.EQ.'5')NUMDIG=5
6170      IF(IFORSW.EQ.'6')NUMDIG=6
6171      IF(IFORSW.EQ.'7')NUMDIG=7
6172      IF(IFORSW.EQ.'8')NUMDIG=8
6173      IF(IFORSW.EQ.'9')NUMDIG=9
6174      IF(IFORSW.EQ.'0')NUMDIG=0
6175      IF(IFORSW.EQ.'E')NUMDIG=-2
6176      IF(IFORSW.EQ.'-2')NUMDIG=-2
6177      IF(IFORSW.EQ.'-3')NUMDIG=-3
6178      IF(IFORSW.EQ.'-4')NUMDIG=-4
6179      IF(IFORSW.EQ.'-5')NUMDIG=-5
6180      IF(IFORSW.EQ.'-6')NUMDIG=-6
6181      IF(IFORSW.EQ.'-7')NUMDIG=-7
6182      IF(IFORSW.EQ.'-8')NUMDIG=-8
6183      IF(IFORSW.EQ.'-9')NUMDIG=-9
6184C
6185      ITITLE='Van Der Waerden (Normal Scores) One Factor Test'
6186      NCTITL=47
6187      ITITLZ=' '
6188      NCTITZ=0
6189C
6190      ICNT=1
6191      ITEXT(ICNT)=' '
6192      NCTEXT(ICNT)=0
6193      AVALUE(ICNT)=0.0
6194      IDIGIT(ICNT)=-1
6195      IF(IMULT.EQ.'OFF')THEN
6196        ICNT=ICNT+1
6197        ITEXT(ICNT)='Response Variable: '
6198        WRITE(ITEXT(ICNT)(20:23),'(A4)')IVARID(1)(1:4)
6199        WRITE(ITEXT(ICNT)(24:27),'(A4)')IVARI2(1)(1:4)
6200        NCTEXT(ICNT)=27
6201        AVALUE(ICNT)=0.0
6202        IDIGIT(ICNT)=-1
6203C
6204        ICNT=ICNT+1
6205        ITEXT(ICNT)='Group-ID Variable: '
6206        WRITE(ITEXT(ICNT)(20:23),'(A4)')IVARID(2)(1:4)
6207        WRITE(ITEXT(ICNT)(24:27),'(A4)')IVARI2(2)(1:4)
6208        NCTEXT(ICNT)=27
6209        AVALUE(ICNT)=0.0
6210        IDIGIT(ICNT)=-1
6211      ENDIF
6212C
6213C     IF REQUESTED, PRINT OUT GROUP INFORMATION.  SINCE NUMBER
6214C     OF GROUPS IS UNKNOWN (AND POTENTIALLY LARGE, PRINT EACH
6215C     GROUP AS A SEPARATE TABLE.
6216C
6217      IF(IKRUGS.EQ.'ON')THEN
6218C
6219        DO2160I=1,NUMDIS
6220C
6221          NUMROW=ICNT
6222          DO2165II=1,NUMROW
6223            NTOT(II)=15
6224 2165     CONTINUE
6225C
6226          IFRST=.TRUE.
6227          ILAST=.TRUE.
6228C
6229          CALL DPDTA1(ITITLE,NCTITL,ITITLZ,NCTITZ,ITEXT,NCTEXT,
6230     1                AVALUE,IDIGIT,
6231     1                NTOT,NUMROW,
6232     1                ICAPSW,ICAPTY,ILAST,IFRST,
6233     1                ISUBRO,IBUGA3,IERROR)
6234          ICNT=0
6235          ITITLE=' '
6236          NCTITL=0
6237          ITITLZ=' '
6238          NCTITZ=0
6239C
6240          ICNT=ICNT+1
6241          ITEXT(ICNT)=' '
6242          NCTEXT(ICNT)=1
6243          AVALUE(ICNT)=0.0
6244          IDIGIT(ICNT)=-1
6245C
6246          IF(IMULT.EQ.'ON')THEN
6247            ICNT=ICNT+1
6248            ITEXT(ICNT)='Group Variable: '
6249            WRITE(ITEXT(ICNT)(17:20),'(A4)')IVARID(I)(1:4)
6250            WRITE(ITEXT(ICNT)(21:24),'(A4)')IVARI2(I)(1:4)
6251            NCTEXT(ICNT)=24
6252            AVALUE(ICNT)=0.0
6253            IDIGIT(ICNT)=-1
6254          ELSE
6255            ICNT=ICNT+1
6256            ITEXT(ICNT)='Group    '
6257            WRITE(ITEXT(ICNT)(7:9),'(I3)')I
6258            NCTEXT(ICNT)=9
6259            AVALUE(ICNT)=0.0
6260            IDIGIT(ICNT)=-1
6261          ENDIF
6262          ICNT=ICNT+1
6263          ITEXT(ICNT)='Number of Observations:'
6264          NCTEXT(ICNT)=23
6265          AVALUE(ICNT)=TEMP1(I)
6266          IDIGIT(ICNT)=0
6267          ICNT=ICNT+1
6268          ITEXT(ICNT)='Mean:'
6269          NCTEXT(ICNT)=5
6270          AVALUE(ICNT)=TEMP2(I)
6271          IDIGIT(ICNT)=NUMDIG
6272          ICNT=ICNT+1
6273          ITEXT(ICNT)='Median:'
6274          NCTEXT(ICNT)=7
6275          AVALUE(ICNT)=TEMP3(I)
6276          IDIGIT(ICNT)=NUMDIG
6277          ICNT=ICNT+1
6278          ITEXT(ICNT)='SD:'
6279          NCTEXT(ICNT)=3
6280          AVALUE(ICNT)=TEMP4(I)
6281          IDIGIT(ICNT)=NUMDIG
6282 2160   CONTINUE
6283C
6284        IF(ICNT.GT.0)THEN
6285          NUMROW=ICNT
6286          DO2168II=1,NUMROW
6287            NTOT(II)=15
6288 2168     CONTINUE
6289C
6290          IFRST=.TRUE.
6291          ILAST=.TRUE.
6292C
6293          CALL DPDTA1(ITITLE,NCTITL,ITITLZ,NCTITZ,ITEXT,NCTEXT,
6294     1                AVALUE,IDIGIT,
6295     1                NTOT,NUMROW,
6296     1                ICAPSW,ICAPTY,ILAST,IFRST,
6297     1                ISUBRO,IBUGA3,IERROR)
6298          ICNT=0
6299        ENDIF
6300      ENDIF
6301C
6302      ICNT=ICNT+1
6303      ITEXT(ICNT)=' '
6304      NCTEXT(ICNT)=1
6305      AVALUE(ICNT)=0.0
6306      IDIGIT(ICNT)=-1
6307C
6308      ICNT=ICNT+1
6309      ITEXT(ICNT)='H0: Samples Come From Identical Populations'
6310      NCTEXT(ICNT)=43
6311      AVALUE(ICNT)=0.0
6312      IDIGIT(ICNT)=-1
6313      ICNT=ICNT+1
6314      ITEXT(ICNT)='Ha: Samples Do Not Come From Identical Populations'
6315      NCTEXT(ICNT)=50
6316      AVALUE(ICNT)=0.0
6317      IDIGIT(ICNT)=-1
6318C
6319      ICNT=ICNT+1
6320      ITEXT(ICNT)=' '
6321      NCTEXT(ICNT)=1
6322      AVALUE(ICNT)=0.0
6323      IDIGIT(ICNT)=-1
6324      ICNT=ICNT+1
6325      ITEXT(ICNT)='Summary Statistics:'
6326      NCTEXT(ICNT)=19
6327      AVALUE(ICNT)=0.0
6328      IDIGIT(ICNT)=-1
6329      ICNT=ICNT+1
6330      ITEXT(ICNT)='Total Number of Observations:'
6331      NCTEXT(ICNT)=29
6332      AVALUE(ICNT)=REAL(N)
6333      IDIGIT(ICNT)=0
6334      ICNT=ICNT+1
6335      ITEXT(ICNT)='Number of Groups:'
6336      NCTEXT(ICNT)=17
6337      AVALUE(ICNT)=REAL(NUMDIS)
6338      IDIGIT(ICNT)=0
6339      ICNT=ICNT+1
6340      ITEXT(ICNT)=' '
6341      NCTEXT(ICNT)=1
6342      AVALUE(ICNT)=0.0
6343      IDIGIT(ICNT)=-1
6344C
6345      ICNT=ICNT+1
6346      ITEXT(ICNT)='Variance of Normal Scores of Ranks'
6347      NCTEXT(ICNT)=34
6348      AVALUE(ICNT)=S2
6349      IDIGIT(ICNT)=NUMDIG
6350      ICNT=ICNT+1
6351      ITEXT(ICNT)='Van Der Waerden Test Statistic Value:'
6352      NCTEXT(ICNT)=37
6353      AVALUE(ICNT)=STATVA
6354      IDIGIT(ICNT)=NUMDIG
6355      ICNT=ICNT+1
6356      ITEXT(ICNT)='CDF of Test Statistic:'
6357      NCTEXT(ICNT)=22
6358      AVALUE(ICNT)=STATCD
6359      IDIGIT(ICNT)=NUMDIG
6360      ICNT=ICNT+1
6361      ITEXT(ICNT)='P-Value:'
6362      NCTEXT(ICNT)=8
6363      PVAL=1.0 - STATCD
6364      AVALUE(ICNT)=1.0 - STATCD
6365      IDIGIT(ICNT)=NUMDIG
6366C
6367      NUMROW=ICNT
6368      DO4210I=1,NUMROW
6369        NTOT(I)=15
6370 4210 CONTINUE
6371C
6372      IFRST=.TRUE.
6373      ILAST=.TRUE.
6374C
6375      ISTEPN='42A'
6376      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'VWA2')
6377     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
6378C
6379      CALL DPDTA1(ITITLE,NCTITL,ITITLZ,NCTITZ,ITEXT,NCTEXT,
6380     1            AVALUE,IDIGIT,
6381     1            NTOT,NUMROW,
6382     1            ICAPSW,ICAPTY,ILAST,IFRST,
6383     1            ISUBRO,IBUGA3,IERROR)
6384C
6385      ITITLE=' '
6386      NCTITL=0
6387C
6388      ITITL9=' '
6389      NCTIT9=0
6390      ITITLE(1:55)=
6391     1'Percent Points of the Chi-Square Reference Distribution'
6392      NCTITL=55
6393      NUMLIN=1
6394      NUMROW=8
6395      NUMCOL=3
6396      ITITL2(1,1)='Percent Point'
6397      ITITL2(1,2)=' '
6398      ITITL2(1,3)='Value'
6399      NCTIT2(1,1)=13
6400      NCTIT2(1,2)=1
6401      NCTIT2(1,3)=5
6402C
6403      NMAX=0
6404      DO4221I=1,NUMCOL
6405        VALIGN(I)='b'
6406        ALIGN(I)='r'
6407        NTOT(I)=15
6408        IF(I.EQ.2)NTOT(I)=5
6409        NMAX=NMAX+NTOT(I)
6410        IDIGIT(I)=NUMDIG
6411        ITYPCO(I)='NUME'
6412 4221 CONTINUE
6413      ITYPCO(2)='ALPH'
6414      IDIGIT(1)=1
6415      IDIGIT(3)=3
6416      DO4223I=1,NUMROW
6417        DO4225J=1,NUMCOL
6418          NCVALU(I,J)=0
6419          IVALUE(I,J)=' '
6420          NCVALU(I,J)=0
6421          AMAT(I,J)=0.0
6422          IF(J.EQ.1)THEN
6423            AMAT(I,J)=ALPHA(I)
6424          ELSEIF(J.EQ.2)THEN
6425            IVALUE(I,J)='='
6426            NCVALU(I,J)=1
6427          ELSEIF(J.EQ.3)THEN
6428            IF(I.EQ.1)THEN
6429              AMAT(I,J)=RND(CUT0,IDIGIT(J))
6430            ELSEIF(I.EQ.2)THEN
6431              AMAT(I,J)=RND(CUT50,IDIGIT(J))
6432            ELSEIF(I.EQ.3)THEN
6433              AMAT(I,J)=RND(CUT75,IDIGIT(J))
6434            ELSEIF(I.EQ.4)THEN
6435              AMAT(I,J)=RND(CUT90,IDIGIT(J))
6436            ELSEIF(I.EQ.5)THEN
6437              AMAT(I,J)=RND(CUT95,IDIGIT(J))
6438            ELSEIF(I.EQ.6)THEN
6439              AMAT(I,J)=RND(CUT975,IDIGIT(J))
6440            ELSEIF(I.EQ.7)THEN
6441              AMAT(I,J)=RND(CUT99,IDIGIT(J))
6442            ELSEIF(I.EQ.8)THEN
6443              AMAT(I,J)=RND(CUT999,IDIGIT(J))
6444            ENDIF
6445          ENDIF
6446 4225   CONTINUE
6447 4223 CONTINUE
6448C
6449      IWHTML(1)=150
6450      IWHTML(2)=50
6451      IWHTML(3)=150
6452      IWRTF(1)=2000
6453      IWRTF(2)=IWRTF(1)+500
6454      IWRTF(3)=IWRTF(2)+2000
6455      IFRST=.TRUE.
6456      ILAST=.FALSE.
6457C
6458      ISTEPN='42C'
6459      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'VWA2')
6460     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
6461C
6462      CALL DPDTA4(ITITL9,NCTIT9,
6463     1            ITITLE,NCTITL,ITITL2,NCTIT2,
6464     1            MAXLIN,NUMLIN,NUMCLI,NUMCOL,
6465     1            IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,NUMROW,
6466     1            IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
6467     1            ICAPSW,ICAPTY,IFRST,ILAST,
6468     1            ISUBRO,IBUGA3,IERROR)
6469C
6470      ISTEPN='42D'
6471      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'VWA2')
6472     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
6473C
6474      CDF1=CUT90
6475      CDF2=CUT95
6476      CDF3=CUT975
6477      CDF4=CUT99
6478C
6479      ITITL9=' '
6480      NCTIT9=0
6481      ITITLE='Conclusions (Upper 1-Tailed Test)'
6482      NCTITL=33
6483      NUMLIN=1
6484      NUMROW=4
6485      NUMCOL=4
6486      ITITL2(1,1)='Alpha'
6487      ITITL2(1,2)='CDF'
6488      ITITL2(1,3)='Critical Value'
6489      ITITL2(1,4)='Conclusion'
6490      NCTIT2(1,1)=5
6491      NCTIT2(1,2)=3
6492      NCTIT2(1,3)=14
6493      NCTIT2(1,4)=10
6494C
6495      NMAX=0
6496      DO4321I=1,NUMCOL
6497        VALIGN(I)='b'
6498        ALIGN(I)='r'
6499        NTOT(I)=15
6500        IF(I.EQ.1 .OR. I.EQ.2)NTOT(I)=7
6501        IF(I.EQ.3)NTOT(I)=17
6502        NMAX=NMAX+NTOT(I)
6503        IDIGIT(I)=3
6504        ITYPCO(I)='ALPH'
6505 4321 CONTINUE
6506      ITYPCO(3)='NUME'
6507      IDIGIT(1)=0
6508      IDIGIT(2)=0
6509      DO4323I=1,NUMROW
6510        DO4325J=1,NUMCOL
6511          NCVALU(I,J)=0
6512          IVALUE(I,J)=' '
6513          NCVALU(I,J)=0
6514          AMAT(I,J)=0.0
6515 4325   CONTINUE
6516 4323 CONTINUE
6517      IVALUE(1,1)='10%'
6518      IVALUE(2,1)='5%'
6519      IVALUE(3,1)='2.5%'
6520      IVALUE(4,1)='1%'
6521      IVALUE(1,2)='90%'
6522      IVALUE(2,2)='95%'
6523      IVALUE(3,2)='97.5%'
6524      IVALUE(4,2)='99%'
6525      NCVALU(1,1)=3
6526      NCVALU(2,1)=2
6527      NCVALU(3,1)=4
6528      NCVALU(4,1)=2
6529      NCVALU(1,2)=3
6530      NCVALU(2,2)=3
6531      NCVALU(3,2)=5
6532      NCVALU(4,2)=3
6533      IVALUE(1,4)='Accept H0'
6534      IVALUE(2,4)='Accept H0'
6535      IVALUE(3,4)='Accept H0'
6536      IVALUE(4,4)='Accept H0'
6537      NCVALU(1,4)=9
6538      NCVALU(2,4)=9
6539      NCVALU(3,4)=9
6540      NCVALU(4,4)=9
6541      IF(STATVA.GT.CUT90)IVALUE(1,4)='Reject H0'
6542      IF(STATVA.GT.CUT95)IVALUE(2,4)='Reject H0'
6543      IF(STATVA.GT.CUT975)IVALUE(3,4)='Reject H0'
6544      IF(STATVA.GT.CUT99)IVALUE(4,4)='Reject H0'
6545      AMAT(1,3)=RND(CUT90,IDIGIT(3))
6546      AMAT(2,3)=RND(CUT95,IDIGIT(3))
6547      AMAT(3,3)=RND(CUT975,IDIGIT(3))
6548      AMAT(4,3)=RND(CUT99,IDIGIT(3))
6549C
6550      IWHTML(1)=150
6551      IWHTML(2)=150
6552      IWHTML(3)=150
6553      IWHTML(4)=150
6554      IWRTF(1)=1500
6555      IWRTF(2)=IWRTF(1)+1500
6556      IWRTF(3)=IWRTF(2)+2000
6557      IWRTF(4)=IWRTF(3)+2000
6558      IFRST=.FALSE.
6559      ILAST=.TRUE.
6560C
6561      ISTEPN='42E'
6562      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'VWA2')
6563     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
6564C
6565      CALL DPDTA4(ITITL9,NCTIT9,
6566     1            ITITLE,NCTITL,ITITL2,NCTIT2,
6567     1            MAXLIN,NUMLIN,NUMCLI,NUMCOL,
6568     1            IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,NUMROW,
6569     1            IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
6570     1            ICAPSW,ICAPTY,IFRST,ILAST,
6571     1            ISUBRO,IBUGA3,IERROR)
6572C
6573      ITITLE(1:26)='Multiple Comparisons Table'
6574      NCTITL=26
6575      ITITL9=' '
6576      NCTIT9=0
6577C
6578      ITITL2(1,1)='I'
6579      NCTIT2(1,1)=1
6580      ITITL2(1,2)='J'
6581      NCTIT2(1,2)=1
6582      ITITL2(1,3)='|Abar(i)-Abar(j)|'
6583      NCTIT2(1,3)=15
6584      ITITL2(1,4)='90% CV'
6585      NCTIT2(1,4)=6
6586      ITITL2(1,5)='95% CV'
6587      NCTIT2(1,5)=6
6588      ITITL2(1,6)='99% CV'
6589      NCTIT2(1,6)=6
6590C
6591      NMAX=0
6592      NUMCOL=6
6593      DO4010I=1,NUMCOL
6594        VALIGN(I)='b'
6595        ALIGN(I)='r'
6596        ITYPCO(I)='NUME'
6597        IDIGIT(I)=NUMDIG
6598        NTOT(I)=15
6599        IF(I.EQ.1 .OR. I.EQ.2)THEN
6600          NTOT(I)=5
6601          IDIGIT(I)=0
6602        ELSEIF(I.EQ.3)THEN
6603          NTOT(I)=20
6604        ENDIF
6605        NMAX=NMAX+NTOT(I)
6606 4010 CONTINUE
6607      IWHTML(1)=50
6608      IWHTML(2)=50
6609      IWHTML(3)=150
6610      IWHTML(4)=150
6611      IWHTML(5)=150
6612      IWHTML(6)=150
6613      IINC=1600
6614      IINC2=200
6615      IINC3=1000
6616      IWRTF(1)=IINC2
6617      IWRTF(2)=IWRTF(1)+IINC2
6618      IWRTF(3)=IWRTF(2)+IINC
6619      IWRTF(4)=IWRTF(3)+IINC
6620      IWRTF(5)=IWRTF(4)+IINC
6621      IWRTF(6)=IWRTF(5)+IINC
6622C
6623      ICNT=0
6624      AFACT2=SQRT(S2*(AN-1.0-STATVA)/REAL(N-NUMDIS))
6625      DO4081I=1,NUMDIS
6626        DO4083J=1,NUMDIS
6627          IF(I.LT.J)THEN
6628C
6629            ANI=REAL(NRANK(I))
6630            ANJ=REAL(NRANK(J))
6631            ADIFF=ABS(AMEAN(I) - AMEAN(J))
6632            AFACT3=SQRT((1.0/ANI) + (1.0/ANJ))
6633            ACV90=AT90*AFACT2*AFACT3
6634            ACV95=AT95*AFACT2*AFACT3
6635            ACV99=AT99*AFACT2*AFACT3
6636C
6637            IF(ICNT.GE.MAXROW)THEN
6638              NUMLIN=1
6639              IFRST=.TRUE.
6640              ILAST=.TRUE.
6641              IFLAGS=.TRUE.
6642              IFLAGE=.TRUE.
6643              CALL DPDTA5(ITITLE,NCTITL,
6644     1                    ITITL9,NCTIT9,ITITL2,NCTIT2,
6645     1                    MAXLIN,NUMLIN,NUMCLI,NUMCOL,
6646     1                    IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
6647     1                    IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
6648     1                    ICAPSW,ICAPTY,IFRST,ILAST,
6649     1                    IFLAGS,IFLAGE,
6650     1                    ISUBRO,IBUGA3,IERROR)
6651              ICNT=0
6652            ENDIF
6653C
6654            ICNT=ICNT+1
6655            IVALUE(ICNT,1)=' '
6656            NCVALU(ICNT,1)=0
6657            AMAT(ICNT,1)=REAL(I)
6658            IVALUE(ICNT,2)=' '
6659            NCVALU(ICNT,2)=0
6660            AMAT(ICNT,2)=REAL(J)
6661            IVALUE(ICNT,3)=' '
6662            NCVALU(ICNT,3)=0
6663            AMAT(ICNT,3)=ADIFF
6664            IVALUE(ICNT,4)=' '
6665            NCVALU(ICNT,4)=0
6666            AMAT(ICNT,4)=ACV90
6667            IVALUE(ICNT,5)=' '
6668            NCVALU(ICNT,5)=0
6669            AMAT(ICNT,5)=ACV95
6670            IVALUE(ICNT,6)=' '
6671            NCVALU(ICNT,6)=0
6672            AMAT(ICNT,6)=ACV99
6673          ENDIF
6674 4083   CONTINUE
6675 4081 CONTINUE
6676C
6677      IF(ICNT.GE.1)THEN
6678        NUMLIN=1
6679        IFRST=.TRUE.
6680        ILAST=.TRUE.
6681        IFLAGS=.TRUE.
6682        IFLAGE=.TRUE.
6683        CALL DPDTA5(ITITLE,NCTITL,
6684     1              ITITL9,NCTIT9,ITITL2,NCTIT2,
6685     1              MAXLIN,NUMLIN,NUMCLI,NUMCOL,
6686     1              IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
6687     1              IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
6688     1              ICAPSW,ICAPTY,IFRST,ILAST,
6689     1              IFLAGS,IFLAGE,
6690     1              ISUBRO,IBUGA3,IERROR)
6691       ENDIF
6692C
6693C               *****************
6694C               **  STEP 90--  **
6695C               **  EXIT       **
6696C               *****************
6697C
6698 9000 CONTINUE
6699      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'VWA2')THEN
6700        WRITE(ICOUT,999)
6701        CALL DPWRST('XXX','WRIT')
6702        WRITE(ICOUT,9011)
6703 9011   FORMAT('***** AT THE END       OF DPVWA2--')
6704        CALL DPWRST('XXX','WRIT')
6705        DO9016I=1,N
6706          WRITE(ICOUT,9017)I,Y(I),TAG(I),ARANK(I),ANORM(I)
6707 9017     FORMAT('I,TAG(I),ARANK(I),ANORM(I) = ',I8,4G15.7)
6708          CALL DPWRST('XXX','WRIT')
6709 9016   CONTINUE
6710        DO9026I=1,NUMDIS
6711          WRITE(ICOUT,9027)I,AMEAN(I),NRANK(I)
6712 9027     FORMAT('I,AMEAN(I),NRANK(I) = ',I8,G15.7,I8)
6713          CALL DPWRST('XXX','WRIT')
6714 9026   CONTINUE
6715        WRITE(ICOUT,9031)STAVA,STATCD
6716 9031   FORMAT('STATVA,STATCD = ',2G15.7)
6717        CALL DPWRST('XXX','WRIT')
6718      ENDIF
6719C
6720      RETURN
6721      END
6722      SUBROUTINE DPWCCP(ICASPL,
6723     1                  YLOWER,YUPPER,IOUT,KMAXM1,PEROUT,
6724     1                  IBUGS2,ISUBRO,IFOUND,IERROR)
6725C
6726C     PURPOSE--WRITE CONCLUSIONS
6727C              FROM CORRELATION PLOT COMMANDS--
6728C                 1) AUTOCORRELATION PLOT
6729C                 2) CROSS-CORRELATION PLOT
6730C                 3) PARTIAL AUTOCORRELATION PLOT
6731C              OUT TO A FILE.
6732C
6733C     WRITTEN BY--JAMES J. FILLIBEN
6734C                 STATISTICAL ENGINEERING DIVISION
6735C                 INFORMATION TECHNOLOGY LABORATORY
6736C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
6737C                 GAITHERSBURG, MD 20899-8980
6738C                 PHONE--301-975-2899
6739C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
6740C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
6741C     LANGUAGE--ANSI FORTRAN (1977)
6742C     VERSION NUMBER--82/7
6743C     ORIGINAL VERSION--JUNE      1982.
6744C     UPDATED         --FEBRUARY  1989.  FORMATS DUE TO 2X NOS LOWER CASE CHAR
6745C     UPDATED         --NOVEMBER  1989.  FIX IOUNIT=0 BUG (NELSON)
6746C     UPDATED         --FEBRUARY  1993.  PARTIAL AUTOCORRELATION PLOT
6747C
6748C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
6749C
6750      CHARACTER*4 ICASPL
6751      CHARACTER*4 IBUGS2
6752      CHARACTER*4 ISUBRO
6753      CHARACTER*4 IFOUND
6754      CHARACTER*4 IERROR
6755C
6756      INCLUDE 'DPCOPA.INC'
6757C
6758CCCCC CHARACTER*80 IFILE
6759      CHARACTER (LEN=MAXFNC) :: IFILE
6760      CHARACTER*12 ISTAT
6761      CHARACTER*12 IFORM
6762      CHARACTER*12 IACCES
6763      CHARACTER*12 IPROT
6764      CHARACTER*12 ICURST
6765CCCCC CHARACTER*4 IENDFI
6766CCCCC CHARACTER*4 IREWIN
6767      CHARACTER*4 ISUBN0
6768      CHARACTER*4 IERRFI
6769C
6770      CHARACTER*4 ISUBN1
6771      CHARACTER*4 ISUBN2
6772      CHARACTER*4 ISTEPN
6773C
6774C-----COMMON----------------------------------------------------------
6775C
6776      CHARACTER*4 ICONFL
6777      COMMON/ICONCO/ICONFL
6778      INCLUDE 'DPCOF2.INC'
6779      INCLUDE 'DPCOP2.INC'
6780C
6781C-----START POINT-----------------------------------------------------
6782C
6783      ISUBN1='DPWC'
6784      ISUBN2='CP  '
6785      IERROR='NO'
6786C
6787CCCCC THE FOLLOWING LINE WAS FIXED NOVEMBER 1989
6788CCCCC IF(IBUGS2.EQ.'OFF'.AND.ISUBRO.NE.'WCCP')GOTO1199
6789      IF(IBUGS2.EQ.'ON' .OR. ISUBRO.EQ.'WCCP')THEN
6790        WRITE(ICOUT,999)
6791  999   FORMAT(1X)
6792        CALL DPWRST('XXX','BUG ')
6793        WRITE(ICOUT,51)
6794   51   FORMAT('***** AT THE BEGINNING OF DPWCCP--')
6795        CALL DPWRST('XXX','BUG ')
6796        WRITE(ICOUT,52)ICASPL,YLOWER,YUPPER,PEROUT
6797   52   FORMAT('ICASPL,YLOWER,YUPPER,PEROUT = ',A4,2X,3G15.7)
6798        CALL DPWRST('XXX','BUG ')
6799        WRITE(ICOUT,54)IOUT,KMAXM1,ICONNU
6800   54   FORMAT('IOUT,KMAXM1,ICONNU = ',3I8)
6801        CALL DPWRST('XXX','BUG ')
6802        WRITE(ICOUT,59)IBUGS2,IFOUND,IERROR
6803   59   FORMAT('IBUGS2,IFOUND,IERROR = ',2(A4,2X),A4)
6804        CALL DPWRST('XXX','BUG ')
6805        WRITE(ICOUT,62)ICONNA(1:80)
6806   62   FORMAT('ICONNA = ',A80)
6807        CALL DPWRST('XXX','BUG ')
6808        WRITE(ICOUT,63)ICONST,ICONFO,ICONAC,ICONFO,ICONCS
6809   63   FORMAT('ICONST,ICONFO,ICONAC,ICONFO,ICONCS = ',4(A12,2X),A12)
6810        CALL DPWRST('XXX','BUG ')
6811      ENDIF
6812C
6813C               **************************
6814C               **  STEP 11--           **
6815C               **  COPY OVER VARIABLES **
6816C               **************************
6817C
6818      ISTEPN='11'
6819      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCCP')
6820     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
6821C
6822      IF(ICONFL.EQ.'CLOS')THEN
6823        CALL DPOPF0(ICONNU,IBUGS2,ISUBRO,IERROR)
6824        ICONFL='OPEN'
6825      ENDIF
6826C
6827      IOUNIT=ICONNU
6828      IFILE=ICONNA
6829      ISTAT=ICONST
6830      IFORM=ICONFO
6831      IACCES=ICONAC
6832      IPROT=ICONPR
6833      ICURST=ICONCS
6834C
6835      ISUBN0='WCCP'
6836      IERRFI='NO'
6837C
6838      IF(IBUGS2.EQ.'ON' .OR. ISUBRO.EQ.'WCCP')THEN
6839        WRITE(ICOUT,1193)IOUNIT
6840 1193   FORMAT('IOUNIT = ',I8)
6841        CALL DPWRST('XXX','BUG ')
6842        WRITE(ICOUT,1194)IFILE(1:80)
6843 1194   FORMAT('IFILE = ',A80)
6844        CALL DPWRST('XXX','BUG ')
6845        WRITE(ICOUT,1195)ISTAT,IFORM,IACCES,IPROT,ICURST
6846 1195   FORMAT('ISTAT,IFORM,IACCES,IPROT,ICURST = ',4(A12,2X),A12)
6847        CALL DPWRST('XXX','BUG ')
6848        WRITE(ICOUT,1196)ISUBN0,IERRFI
6849 1196   FORMAT('ISUBN0,IERRFI = ',A4,2X,A4)
6850        CALL DPWRST('XXX','BUG ')
6851      ENDIF
6852C
6853C               **************************************************
6854C               **  STEP 12--                                   **
6855C               **  CHECK TO SEE IF CONCLUSIONS FILE MAY EXIST  **
6856C               **************************************************
6857C
6858      ISTEPN='12'
6859      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCCP')
6860     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
6861C
6862      IF(ISTAT.EQ.'NONE')THEN
6863        IERROR='YES'
6864        WRITE(ICOUT,999)
6865        CALL DPWRST('XXX','BUG ')
6866        WRITE(ICOUT,1211)
6867 1211   FORMAT('***** ERROR IN DPWCCP--')
6868        CALL DPWRST('XXX','BUG ')
6869        WRITE(ICOUT,1212)
6870 1212   FORMAT('      THE CONCLUSIONS CANNOT BE SENT TO FILE BECAUSE')
6871        CALL DPWRST('XXX','BUG ')
6872        WRITE(ICOUT,1214)
6873 1214   FORMAT('      THE REQUIRED SYSTEM MASS STORAGE FILE WHICH ',
6874     1         'STORES')
6875        CALL DPWRST('XXX','BUG ')
6876        WRITE(ICOUT,1216)
6877 1216   FORMAT('      SUCH CONCLUSIONS IS NOT AVAILABLE AT THIS ',
6878     1         'INSTALLATION.')
6879        CALL DPWRST('XXX','BUG ')
6880        WRITE(ICOUT,1217)ISTAT,ICONST
6881 1217   FORMAT('ISTAT,ICONST = ',A12,2X,A12)
6882        CALL DPWRST('XXX','BUG ')
6883        GOTO9000
6884      ENDIF
6885C
6886C               ******************************************
6887C               **  STEP 30--                           **
6888C               **  BRANCH TO THE APPROPRIATE CASE      **
6889C               **  AND WRITE OUT          CONCLUSIONS  **
6890C               ******************************************
6891C
6892      ISTEPN='30'
6893      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCCP')
6894     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
6895C
6896      IF(ICASPL.EQ.'AUCO')GOTO3100
6897      IF(ICASPL.EQ.'CRCO')GOTO4100
6898CCCCC THE FOLLOWING LINE WAS ADDED FEBRUARY 1993
6899      IF(ICASPL.EQ.'PACO')GOTO5100
6900C
6901      WRITE(ICOUT,999)
6902      CALL DPWRST('XXX','BUG ')
6903      WRITE(ICOUT,3011)
6904 3011 FORMAT('***** INTERNAL ERROR IN DPWCCP ',
6905     1'AT BRANCH POINT 3011--')
6906      CALL DPWRST('XXX','BUG ')
6907      WRITE(ICOUT,3012)
6908 3012 FORMAT('      ICASPL SHOULD BE ')
6909      CALL DPWRST('XXX','BUG ')
6910      WRITE(ICOUT,3013)
6911 3013 FORMAT('      AUCO, CRCO, OR PACO, BUT IS NOT.')
6912      CALL DPWRST('XXX','BUG ')
6913      WRITE(ICOUT,3014)ICASPL
6914 3014 FORMAT('      ICASPL = ',A4)
6915      CALL DPWRST('XXX','BUG ')
6916      IERROR='YES'
6917      GOTO9000
6918C
6919C               *********************************************
6920C               **  STEP 31--                            **
6921C               **  WRITE OUT          CONCLUSIONS       **
6922C               **  FOR AUTOCORRELATION PLOT ANALYSIS    **
6923C               *******************************************
6924C
6925 3100 CONTINUE
6926      ISTEPN='31'
6927      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCCP')
6928     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
6929      IF(IBUGS2.EQ.'ON')WRITE(ICOUT,3101)ICONNU
6930 3101 FORMAT('ICONNU = ',I8)
6931      IF(IBUGS2.EQ.'ON')CALL DPWRST('XXX','BUG ')
6932C
6933      WRITE(IOUNIT,999)
6934      WRITE(IOUNIT,3111)
6935 3111 FORMAT(
6936     *'Conclusion from autocorrelation',
6937     *' plot')
6938      WRITE(IOUNIT,999)
6939      WRITE(IOUNIT,3112)
6940 3112 FORMAT(
6941     *'      Under the null hypothesis',
6942     *' of white noise')
6943      WRITE(IOUNIT,3113)
6944 3113 FORMAT(
6945     *'      (and normality), a ',
6946     *'2-sided 95% confidence')
6947      WRITE(IOUNIT,3114)
6948 3114 FORMAT(
6949     *  '      interval for the ',
6950     *  'autocorrelation coefficient')
6951      WRITE(IOUNIT,999)
6952      WRITE(IOUNIT,3115)YLOWER,YUPPER
6953 3115 FORMAT('      ',F10.2,'      to ',F10.2)
6954C
6955      WRITE(IOUNIT,999)
6956      WRITE(IOUNIT,3116)
6957 3116 FORMAT(
6958     *'      Under this null hypothesis,',
6959     *' only 5')
6960      WRITE(IOUNIT,3117)
6961 3117 FORMAT(
6962     *'      average) of the ',
6963     *'computed autocorelations')
6964      WRITE(IOUNIT,3118)
6965 3118 FORMAT(
6966     *'      should fall outside ',
6967     *'of this interval')
6968C
6969      WRITE(IOUNIT,999)
6970      WRITE(IOUNIT,3121)
6971 3121 FORMAT(
6972     *'      For this data set, ',
6973     *'it is observed')
6974      WRITE(IOUNIT,999)
6975      WRITE(IOUNIT,3122)IOUT,KMAXM1,PEROUT
6976 3122 FORMAT('      ',I8,
6977     *'     out of the ',I8,' (= ',F7.2,'%)')
6978      WRITE(IOUNIT,999)
6979      WRITE(IOUNIT,3123)
6980 3123 FORMAT(
6981     *'      of the computed ',
6982     *'autocorrelation coefficients ',
6983     *'fall')
6984      WRITE(IOUNIT,3124)
6985 3124 FORMAT('      outside of this interval.')
6986C
6987      IF(PEROUT.LE.5.0)GOTO3130
6988      GOTO3140
6989C
6990 3130 CONTINUE
6991      WRITE(IOUNIT,999)
6992      WRITE(IOUNIT,3131)
6993 3131 FORMAT(
6994     *'Conclusion--based on this ',
6995     *'autocorrelation')
6996      WRITE(IOUNIT,3132)
6997 3132 FORMAT(
6998     *'            plot test, ',
6999     *'there is no evidence from')
7000      WRITE(IOUNIT,3133)
7001 3133 FORMAT(
7002     *'            this data to reject',
7003     *' the hypothesis')
7004      WRITE(IOUNIT,3134)
7005 3134 FORMAT('            of randomness.')
7006      WRITE(IOUNIT,999)
7007      GOTO3190
7008C
7009 3140 CONTINUE
7010      WRITE(IOUNIT,999)
7011      WRITE(IOUNIT,3141)
7012 3141 FORMAT(
7013     *'Conclusion--based ',
7014     *'on this autocorrelation')
7015      WRITE(IOUNIT,3142)
7016 3142 FORMAT(
7017     *'            plot test, ',
7018     *  'there is evidence from')
7019      WRITE(IOUNIT,3143)
7020 3143 FORMAT(
7021     *'            this data that ',
7022     *'the hypothesis')
7023      WRITE(IOUNIT,3144)
7024 3144 FORMAT('            of randomness should be')
7025      WRITE(IOUNIT,3145)
7026 3145 FORMAT('            rejected.')
7027      WRITE(IOUNIT,999)
7028      GOTO3190
7029C
7030 3190 CONTINUE
7031      GOTO9000
7032C
7033C               *******************************************
7034C               **  STEP 41--                            **
7035C               **  WRITE OUT          CONCLUSIONS       **
7036C               **  FOR CROSS-CORRELATION PLOT ANALYSIS  **
7037C               *******************************************
7038C
7039 4100 CONTINUE
7040      ISTEPN='41'
7041      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCCP')
7042     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7043C
7044      GOTO9000
7045C
7046CCCCC THE FOLLOWING SECTION WAS ADDED FEBRUARY 1993
7047C               *******************************************
7048C               **  STEP 51--                            **
7049C               **  WRITE OUT          CONCLUSIONS       **
7050C               **  FOR PARTIAL AUTOCORRELATION PLOT ANALYSIS  **
7051C               *******************************************
7052C
7053 5100 CONTINUE
7054      ISTEPN='51'
7055      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCCP')
7056     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7057C
7058      GOTO9000
7059C
7060C               ******************
7061C               **   STEP 90--  **
7062C               **   EXIT       **
7063C               ******************
7064C
7065 9000 CONTINUE
7066      IF(IBUGS2.EQ.'ON' .OR. ISUBRO.EQ.'WCCP')THEN
7067        WRITE(ICOUT,999)
7068        CALL DPWRST('XXX','BUG ')
7069        WRITE(ICOUT,9011)
7070 9011   FORMAT('***** AT THE END       OF DPWCCP--')
7071        CALL DPWRST('XXX','BUG ')
7072        WRITE(ICOUT,9021)IERROR,ISUBN0,IERRFI,IOUNIT
7073 9021   FORMAT('IERROR,ISUBN0,IERRFI,IOUNIT = ',3(A4,2X),I8)
7074        CALL DPWRST('XXX','BUG ')
7075        WRITE(ICOUT,9022)IFILE(1:80)
7076 9022   FORMAT('IFILE  = ',A80)
7077        CALL DPWRST('XXX','BUG ')
7078      ENDIF
7079C
7080      RETURN
7081      END
7082      SUBROUTINE DPWCPP(X1,N1,ICASPL,IDATSW,
7083     1                  CORR,DISPAR,NUMDIS,
7084     1                  IBUGS2,ISUBRO,IFOUND,IERROR)
7085C
7086C     PURPOSE--WRITE CONCLUSIONS BASED ON ANALYSIS OF PPCC PLOT
7087C              (PROBABILITY PLOT CORRELATION COEFFICIENT PLOT)
7088C              OUT TO A FILE.
7089C     WRITTEN BY--JAMES J. FILLIBEN
7090C                 STATISTICAL ENGINEERING DIVISION
7091C                 INFORMATION TECHNOLOGY LABORATORY
7092C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
7093C                 GAITHERSBURG, MD 20899-8980
7094C                 PHONE--301-975-2899
7095C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
7096C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
7097C     LANGUAGE--ANSI FORTRAN (1977)
7098C     VERSION NUMBER--86/1
7099C     ORIGINAL VERSION--JUNE      1982.
7100C     UPDATED         --JANUARY   1986.
7101C     UPDATED         --FEBRUARY  1989.  FORMATS DUE TO 2X NOS LOWER CASE CHAR
7102C     UPDATED         --MAY       1990.  EXIT FOR IG, WALD, RIG, FL
7103C     UPDATED         --DECEMBER  1993.  EXIT FOR POISSON, CHIS, GEOM,
7104C                                        GAMMA, EV, AND GP
7105C     UPDATED         --APRIL     1995.  EXIT FOR LOGNORMAL, POWER
7106C                                        NORMAL, POWER LOGNORMAL
7107C     UPDATED         --DECEMBER  1995.  EXIT FOR GENERALIZED LOGISTIC
7108C     UPDATED         --FEBRUARY  1996.  EXIT FOR BRADFORD
7109C     UPDATED         --MAY       1996.  EXIT FOR RECIPROCAL
7110C     UPDATED         --JANUARY   1998.  EXIT FOR VON MISES
7111C     UPDATED         --JANUARY   1998.  EXIT FOR INVERTED GAMMA
7112C     UPDATED         --AUGUST    2001.  EXIT FOR 2-PARAMETER DISTRIBUTIONS
7113C     UPDATED         --SEPTEMBER 2001.  EXIT FOR 4 ADDITIONAL
7114C                                        DISTRIBUTIONS
7115C     UPDATED         --NOVEMBER  2001.  EXIT FOR GEOM EXTR EXPO
7116C     UPDATED         --MAY       2002.  EXIT FOR TWO-SIDED POWER
7117C     UPDATED         --NOVEMBER  2009.  DISTRIBUTIONS HAVE BEEN
7118C                                        RENAMED
7119C
7120C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
7121C
7122      CHARACTER*4 ICASPL
7123      CHARACTER*4 IDATSW
7124      CHARACTER*4 IBUGS2
7125      CHARACTER*4 ISUBRO
7126      CHARACTER*4 IFOUND
7127      CHARACTER*4 IERROR
7128C
7129      INCLUDE 'DPCOPA.INC'
7130C
7131CCCCC CHARACTER*80 IFILE
7132      CHARACTER (LEN=MAXFNC) :: IFILE
7133      CHARACTER*12 ISTAT
7134      CHARACTER*12 IFORM
7135      CHARACTER*12 IACCES
7136      CHARACTER*12 IPROT
7137      CHARACTER*12 ICURST
7138CCCCC CHARACTER*4 IENDFI
7139CCCCC CHARACTER*4 IREWIN
7140      CHARACTER*4 ISUBN0
7141      CHARACTER*4 IERRFI
7142C
7143      CHARACTER*4 ISUBN1
7144      CHARACTER*4 ISUBN2
7145      CHARACTER*4 ISTEPN
7146C
7147      DIMENSION X1(*)
7148      DIMENSION CORR(*)
7149      DIMENSION DISPAR(*)
7150C
7151C-----COMMON----------------------------------------------------------
7152C
7153      CHARACTER*4 ICONFL
7154      COMMON/ICONCO/ICONFL
7155      INCLUDE 'DPCOF2.INC'
7156      INCLUDE 'DPCOP2.INC'
7157C
7158C-----START POINT-----------------------------------------------------
7159C
7160      ISUBN1='DPWC'
7161      ISUBN2='PP  '
7162      IERROR='NO'
7163C
7164      B1=(-999.0)
7165      EB1=(-999.0)
7166      SDB1=(-999.0)
7167      ZB1=(-999.0)
7168      B2=(-999.0)
7169      EB2=(-999.0)
7170      SDB2=(-999.0)
7171      ZB2=(-999.0)
7172      CORRMX=(-999.0)
7173      PARMX=(-999.0)
7174      CORRUN=(-999.0)
7175      CORRNO=(-999.0)
7176      RATIUN=(-999.0)
7177C
7178      IF(IBUGS2.EQ.'ON' .OR. ISUBRO.EQ.'WCPP')THEN
7179        WRITE(ICOUT,999)
7180  999   FORMAT(1X)
7181        CALL DPWRST('XXX','BUG ')
7182        WRITE(ICOUT,51)
7183   51   FORMAT('***** AT THE BEGINNING OF DPWCPP--')
7184        CALL DPWRST('XXX','BUG ')
7185        WRITE(ICOUT,52)N1,NUMDIS,ICONNU,ICASPL,IDATSW
7186   52   FORMAT('N1,NUMDIS,ICONNU,ICASPL,IDATSW = ',3I8,2(2X,A4))
7187        CALL DPWRST('XXX','BUG ')
7188        IF(NUMDIS.GE.1)THEN
7189          DO55I=1,MIN(500,NUMDIS)
7190            WRITE(ICOUT,56)I,DISPAR(I),CORR(I)
7191   56       FORMAT('I,DISPAR(I),CORR(I) = ',I8,2G15.7)
7192            CALL DPWRST('XXX','BUG ')
7193   55     CONTINUE
7194        ENDIF
7195        WRITE(ICOUT,60)IBUGS2,ISUBRO,IFOUND,IERROR
7196   60   FORMAT('IBUGS2,ISUBRO,IFOUND,IERROR = ',3(A4,2X),A4)
7197        CALL DPWRST('XXX','BUG ')
7198        WRITE(ICOUT,62)ICONNA(1:80)
7199   62   FORMAT('ICONNA = ',A80)
7200        CALL DPWRST('XXX','BUG ')
7201        WRITE(ICOUT,63)ICONST,ICONFO,ICONAC,ICONFO,ICONCS
7202   63   FORMAT('ICONST,ICONFO,ICONAC,ICONFO,ICONCS = ',4(A12,2X),A12)
7203        CALL DPWRST('XXX','BUG ')
7204      ENDIF
7205C
7206C               **************************
7207C               **  STEP 11--           **
7208C               **  COPY OVER VARIABLES **
7209C               **************************
7210C
7211      ISTEPN='11'
7212      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCPP')
7213     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7214C
7215      IF(ICONFL.EQ.'CLOS')THEN
7216        CALL DPOPF0(ICONNU,IBUGS2,ISUBRO,IERROR)
7217        ICONFL='OPEN'
7218      ENDIF
7219C
7220      IOUNIT=ICONNU
7221      IFILE=ICONNA
7222      ISTAT=ICONST
7223      IFORM=ICONFO
7224      IACCES=ICONAC
7225      IPROT=ICONPR
7226      ICURST=ICONCS
7227C
7228      ISUBN0='WCPP'
7229      IERRFI='NO'
7230C
7231      IF(IBUGS2.EQ.'ON' .OR. ISUBRO.EQ.'WCPP')THEN
7232        WRITE(ICOUT,1193)ISUBN0,IERRFI,IOUNIT
7233 1193   FORMAT('ISUBN0,IERRFI,IOUNIT = ',2(A4,2X),I8)
7234        CALL DPWRST('XXX','BUG ')
7235        WRITE(ICOUT,1194)IFILE(1:80)
7236 1194   FORMAT('IFILE = ',A80)
7237        CALL DPWRST('XXX','BUG ')
7238        WRITE(ICOUT,1195)ISTAT,IFORM,IACCES,IPROT,ICURST
7239 1195   FORMAT('ISTAT,IFORM,IACCES,IPROT,ICURST = ',4(A12,2X),A12)
7240        CALL DPWRST('XXX','BUG ')
7241      ENDIF
7242C
7243C               **************************************************
7244C               **  STEP 12--                                   **
7245C               **  CHECK TO SEE IF CONCLUSIONS FILE MAY EXIST  **
7246C               **************************************************
7247C
7248      ISTEPN='12'
7249      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCPP')
7250     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7251C
7252      IF(ISTAT.EQ.'NONE')THEN
7253        IERROR='YES'
7254        WRITE(ICOUT,999)
7255        CALL DPWRST('XXX','BUG ')
7256        WRITE(ICOUT,1211)
7257 1211   FORMAT('***** ERROR IN DPWCPP--')
7258        CALL DPWRST('XXX','BUG ')
7259        WRITE(ICOUT,1212)
7260 1212   FORMAT('      THE CONCLUSIONS CANNOT BE SENT TO FILE BECAUSE')
7261        CALL DPWRST('XXX','BUG ')
7262        WRITE(ICOUT,1214)
7263 1214   FORMAT('      THE REQUIRED SYSTEM MASS STORAGE FILE WHICH ',
7264     1         'STORES')
7265        CALL DPWRST('XXX','BUG ')
7266        WRITE(ICOUT,1216)
7267 1216   FORMAT('      SUCH CONCLUSIONS IS NOT AVAILABLE AT THIS ',
7268     1         'INSTALLATION.')
7269        CALL DPWRST('XXX','BUG ')
7270        WRITE(ICOUT,1217)ISTAT,ICONST
7271 1217   FORMAT('ISTAT,ICONST = ',A12,2X,A12)
7272        CALL DPWRST('XXX','BUG ')
7273        GOTO9000
7274      ENDIF
7275C
7276C               ****************************************************************
7277C               **  STEP 20--
7278C               **  MAKE PRELIMINARY CALCULTIONS--
7279C               **  COMPUTE MEAN, S, BIASED S,
7280C               **  B1, AND B2.
7281C               **  COMPUTE THE EXPECTED VALUE AND STANDARD DEVIATION OF B1 AND
7282C               **  UNDER THE NORMALITY ASSUMPTION
7283C               **  REFERENCE--CRAMER, PAGE 386
7284C               ****************************************************************
7285C
7286      ISTEPN='21'
7287      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCPP')
7288     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7289C
7290      N=N1
7291      AN=N
7292C
7293      SUM1=0.0
7294      DO2110I=1,N
7295        SUM1=SUM1+X1(I)
7296 2110 CONTINUE
7297      XBAR=SUM1/AN
7298C
7299      SUM2=0.0
7300      SUM3=0.0
7301      SUM4=0.0
7302      DO2120I=1,N
7303        DEL=X1(I)-XBAR
7304        A2=DEL*DEL
7305        A3=DEL*A2
7306        A4=A2*A2
7307        SUM2=SUM2+A2
7308        SUM3=SUM3+A3
7309        SUM4=SUM4+A4
7310 2120 CONTINUE
7311      AM2=SUM2/AN
7312      AM3=SUM3/AN
7313      AM4=SUM4/AN
7314      S=SQRT(SUM2/(AN-1.0))
7315      BS=SQRT(AM2)
7316      B1=AM3/(BS**3)
7317      B2=AM4/(BS**4)
7318C
7319      EB1=0.0
7320      SDB1=6.0*(AN-2.0)/((AN+1.0)*(AN+3.0))
7321      SDB1=SQRT(SDB1)
7322      ZB1=(B1-EB1)/SDB1
7323C
7324      EB2=3.0-6.0/(AN+1.0)
7325      SDB2=24.0*AN*(AN-2.0)*(AN-3.0)/((AN+1.0)*(AN+1.0)*(AN+3.0)*(AN+5.0
7326     1))
7327      ZB2=(B2-EB2)/SDB2
7328C
7329      CORRMX=CORR(1)
7330      PARMX=DISPAR(1)
7331      DO2130I=1,NUMDIS
7332        IF(CORR(I).GT.CORRMX)THEN
7333          CORRMX=CORR(I)
7334          PARMX=DISPAR(I)
7335        ENDIF
7336 2130 CONTINUE
7337C
7338      IF(ICASPL.NE.'LACP')GOTO2149
7339      CORRUN=0.0
7340      CORRNO=1.0
7341      RATIUN=0.0
7342      DO2140I=1,NUMDIS
7343      IF(0.99.LE.DISPAR(I).AND.DISPAR(I).LE.1.01)CORRUN=CORR(I)
7344      IF(0.09.LE.DISPAR(I).AND.DISPAR(I).LE.0.11)CORRNO=CORR(I)
7345 2140 CONTINUE
7346      RATIUN=CORRUN/CORRNO
7347 2149 CONTINUE
7348C
7349C               *****************************************
7350C               **  STEP 30--                          **
7351C               **  BRANCH TO THE APPROPRIATE CASE     **
7352C               **  AND WRITE OUT        CONCLUSIONS   **
7353C               *****************************************
7354C
7355      ISTEPN='30'
7356      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCPP')
7357     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7358C
7359      WRITE(IOUNIT,999)
7360      WRITE(IOUNIT,3001)
7361 3001 FORMAT(
7362     *'Conclusion regarding ',
7363     *'distributional')
7364C
7365      IF(-3.0.LE.ZB1.AND.ZB1.LE.3.0)GOTO3011
7366      GOTO3019
7367 3011 CONTINUE
7368      WRITE(IOUNIT,999)
7369      WRITE(IOUNIT,3012)
7370 3012 FORMAT(
7371     *'      Based on the third ',
7372     *'central moment')
7373      WRITE(IOUNIT,3013)
7374 3013 FORMAT(
7375     *'      there is no evidence ',
7376     *'from this data')
7377      WRITE(IOUNIT,3014)
7378 3014 FORMAT(
7379     *'      to reject the ',
7380     *'hypothesis of symmetry')
7381      WRITE(IOUNIT,3015)
7382 3015 FORMAT(
7383     *'      In such case, ',
7384     *'parsimony dictates that the')
7385      WRITE(IOUNIT,3016)
7386 3016 FORMAT(
7387     *'      symmetric model be ',
7388     *'preferable over the')
7389      WRITE(IOUNIT,3017)
7390 3017 FORMAT(
7391     *  '      non-symmetric model.')
7392 3019 CONTINUE
7393C
7394      IF(ZB1.LE.(-3.0).OR.ZB1.GT.3.0)GOTO3021
7395      GOTO3029
7396 3021 CONTINUE
7397      WRITE(IOUNIT,999)
7398      WRITE(IOUNIT,3022)
7399 3022 FORMAT(
7400     *'      Based on the third ',
7401     *'central moment')
7402      WRITE(IOUNIT,3023)
7403 3023 FORMAT(
7404     *'      There is evidence ',
7405     *'from this data')
7406      WRITE(IOUNIT,3024)
7407 3024 FORMAT(
7408     *'      that the hypothesis of ',
7409     *  'symmetry')
7410      WRITE(IOUNIT,3025)
7411 3025 FORMAT('      should be rejected.')
7412 3029 CONTINUE
7413C
7414      IF(ICASPL.EQ.'TULA')GOTO3100
7415      IF(ICASPL.EQ.'TPP')GOTO3100
7416      IF(ICASPL.EQ.'WEIB')GOTO4100
7417      IF(ICASPL.EQ.'EV2 ')GOTO5100
7418      GOTO9000
7419C
7420      WRITE(ICOUT,999)
7421      CALL DPWRST('XXX','BUG ')
7422      WRITE(ICOUT,3031)
7423 3031 FORMAT('***** INTERNAL ERROR IN DPWCPP ',
7424     1'AT BRANCH POINT 3031--')
7425      CALL DPWRST('XXX','BUG ')
7426      WRITE(ICOUT,3032)
7427 3032 FORMAT('      ICASPL SHOULD BE ')
7428      CALL DPWRST('XXX','BUG ')
7429      WRITE(ICOUT,3033)
7430 3033 FORMAT('      LACP, TCP, WECP, E2CP,   ETC. ')
7431      CALL DPWRST('XXX','BUG ')
7432      WRITE(ICOUT,3034)
7433 3034 FORMAT('      BUT IS NOT.')
7434      CALL DPWRST('XXX','BUG ')
7435      WRITE(ICOUT,3035)ICASPL
7436 3035 FORMAT('      ICASPL = ',A4)
7437      CALL DPWRST('XXX','BUG ')
7438      IERROR='YES'
7439      GOTO9000
7440C
7441C               *****************************************
7442C               **  STEP 31--                          **
7443C               **  WRITE OUT        CONCLUSIONS       **
7444C               **  FOR TUKEY OR T PPCC PLOT ANALYSIS  **
7445C               *****************************************
7446C
7447 3100 CONTINUE
7448      ISTEPN='31'
7449      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCPP')
7450     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7451C
7452      WRITE(IOUNIT,999)
7453      WRITE(IOUNIT,3201)
7454 3201 FORMAT(
7455     *'Conclusion regarding ',
7456     *'normality--')
7457C
7458      IF(-3.0.LE.ZB2.AND.ZB2.LE.3.0)GOTO3211
7459      GOTO3219
7460 3211 CONTINUE
7461      WRITE(IOUNIT,999)
7462      WRITE(IOUNIT,3212)
7463 3212 FORMAT(
7464     *'      Based on the fourth ',
7465     *'central moment')
7466      WRITE(IOUNIT,3213)
7467 3213 FORMAT(
7468     *'      there is no evidence ',
7469     *'from this data')
7470      WRITE(IOUNIT,3214)
7471 3214 FORMAT(
7472     *'      to reject the hypothesis ',
7473     *'of normality')
7474 3219 CONTINUE
7475C
7476      IF(ZB2.LE.(-3.0).OR.ZB2.GT.3.0)GOTO3221
7477      GOTO3229
7478 3221 CONTINUE
7479      WRITE(IOUNIT,999)
7480      WRITE(IOUNIT,3222)
7481 3222 FORMAT(
7482     *'      Based on the fourth ',
7483     *'central moment')
7484      WRITE(IOUNIT,3223)
7485 3223 FORMAT(
7486     *'      There is evidence ',
7487     *'from this data')
7488      WRITE(IOUNIT,3224)
7489 3224 FORMAT(
7490     *'      that the hypothesis ',
7491     *'of normality')
7492      WRITE(IOUNIT,3225)
7493 3225 FORMAT('      should be rejected.')
7494 3229 CONTINUE
7495C
7496      IF(0.0.LE.PARMX.AND.PARMX.LE.0.3)GOTO3231
7497      GOTO3239
7498 3231 CONTINUE
7499      WRITE(IOUNIT,999)
7500      WRITE(IOUNIT,3232)
7501 3232 FORMAT(
7502     *'      Based on the probability ',
7503     *'plot')
7504      WRITE(IOUNIT,3233)
7505 3233 FORMAT(
7506     *'      correlation coefficient ',
7507     *'analysis')
7508      WRITE(IOUNIT,3234)
7509 3234 FORMAT(
7510     *'      indications are that ',
7511     *'the normal')
7512      WRITE(IOUNIT,3235)
7513 3235 FORMAT(
7514     *'      provides a near-optimal ',
7515     *'fit among')
7516      IF(ICASPL.EQ.'LACP')WRITE(IOUNIT,3236)
7517 3236 FORMAT(
7518     *'      various members of ',
7519     *'the Tukey lambda')
7520      IF(ICASPL.EQ.'TCP')WRITE(IOUNIT,3237)
7521 3237 FORMAT(
7522     *'      various members of the t')
7523      WRITE(IOUNIT,3238)
7524 3238 FORMAT('      distribution family.')
7525 3239 CONTINUE
7526C
7527      IF(0.0.LE.PARMX.AND.PARMX.LE.0.3.AND.
7528     1RATIUN.GE.0.95)GOTO3241
7529      GOTO3249
7530 3241 CONTINUE
7531      WRITE(IOUNIT,999)
7532      WRITE(IOUNIT,3242)
7533 3242 FORMAT(
7534     *'      However, there is ',
7535     *'also evidence')
7536      WRITE(IOUNIT,3243)
7537 3243 FORMAT(
7538     *'      that many distributions ',
7539     *'shorter-')
7540      WRITE(IOUNIT,3244)
7541 3244 FORMAT(
7542     *'      tailed than normal ',
7543     *'(e.g., uniform)')
7544      WRITE(IOUNIT,3245)
7545 3245 FORMAT(
7546     *'      would serve-equally-well ',
7547     *  'as a')
7548      WRITE(IOUNIT,3246)
7549 3246 FORMAT('      distributional model.')
7550 3249 CONTINUE
7551      GOTO7900
7552C
7553C               **************************************
7554C               **  STEP 41--                       **
7555C               **  WRITE OUT EXPERT CONCLUSIONS    **
7556C               **  FOR WEIBULL PPCC PLOT ANALYSIS  **
7557C               **************************************
7558C
7559 4100 CONTINUE
7560      ISTEPN='31'
7561      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCPP')
7562     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7563C
7564      GOTO7900
7565C
7566C               ***************************************************
7567C               **  STEP 51--                                    **
7568C               **  WRITE OUT EXPERT CONCLUSIONS                 **
7569C               **  FOR EXTREME VALUE TYPE 2 PPCC PLOT ANALYSIS  **
7570C               ***************************************************
7571C
7572 5100 CONTINUE
7573      ISTEPN='51'
7574      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCPP')
7575     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7576C
7577      WRITE(IOUNIT,999)
7578      WRITE(IOUNIT,5101)
7579 5101 FORMAT(
7580     *'Conclusion regarding extreme ',
7581     *'value')
7582C
7583      IF(PARMX.GT.20.0)GOTO5111
7584      GOTO5119
7585 5111 CONTINUE
7586      WRITE(IOUNIT,999)
7587      WRITE(IOUNIT,5112)
7588 5112 FORMAT(
7589     *'      Based on the ',
7590     *'probability plot')
7591      WRITE(IOUNIT,5113)
7592 5113 FORMAT(
7593     *'      correlation coefficient ',
7594     *'analysis')
7595      WRITE(IOUNIT,5114)
7596 5114 FORMAT(
7597     *'      indications are ',
7598     *'that the  ')
7599      WRITE(IOUNIT,5115)
7600 5115 FORMAT(
7601     *'      extreme value type ',
7602     *'1 distribution')
7603      WRITE(IOUNIT,5116)
7604 5116 FORMAT(
7605     *'      provides a near-optimal ',
7606     *'fit among')
7607      WRITE(IOUNIT,5117)
7608 5117 FORMAT(
7609     *'      various members of the ',
7610     *'extreme value')
7611      WRITE(IOUNIT,5118)
7612 5118 FORMAT('      distribution family.')
7613 5119 CONTINUE
7614C
7615      GOTO7900
7616C
7617C               **************************************************
7618C               **  STEP 79--                                   **
7619C               **  IF APPROPRIATE, PRINT OUT A COMMENT         **
7620C               **  REGARDING THE SMALLESS OF THE SAMPLE SIZE.  **
7621C               **************************************************
7622C
7623 7900 CONTINUE
7624      ISTEPN='79'
7625      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WCPP')
7626     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7627C
7628      IF(N.LE.30)GOTO7951
7629      GOTO7959
7630 7951 CONTINUE
7631      WRITE(IOUNIT,999)
7632      WRITE(IOUNIT,7952)
7633 7952 FORMAT(
7634     *'      Caution must be ',
7635     *'exercised in')
7636      WRITE(IOUNIT,7953)
7637 7953 FORMAT(
7638     *'      this distributional-modeling',
7639     *' problem')
7640      WRITE(IOUNIT,7954)
7641 7954 FORMAT(
7642     *'      due to the relatively ',
7643     *'small number')
7644      WRITE(IOUNIT,7955)
7645 7955 FORMAT('      of data points.')
7646 7959 CONTINUE
7647      WRITE(IOUNIT,999)
7648C
7649C
7650C               ******************
7651C               **   STEP 90--  **
7652C               **   EXIT       **
7653C               ******************
7654C
7655 9000 CONTINUE
7656      IF(IBUGS2.EQ.'ON' .OR. ISUBRO.EQ.'WCPP')THEN
7657        WRITE(ICOUT,999)
7658        CALL DPWRST('XXX','BUG ')
7659        WRITE(ICOUT,9011)
7660 9011   FORMAT('***** AT THE END       OF DPWCPP--')
7661        CALL DPWRST('XXX','BUG ')
7662        WRITE(ICOUT,9012)N,N1,NUMDIS,ICASPL,IDATSW
7663 9012   FORMAT('N,N1,NUMDIS,ICASPL,IDATSW = ',3I8,2(2X,A4))
7664        CALL DPWRST('XXX','BUG ')
7665        IF(NUMDIS.GE.1)THEN
7666          DO9015I=1,MIN(500,NUMDIS)
7667            WRITE(ICOUT,9016)I,DISPAR(I),CORR(I)
7668 9016       FORMAT('I,DISPAR(I),CORR(I) = ',I8,2G15.7)
7669            CALL DPWRST('XXX','BUG ')
7670 9015     CONTINUE
7671        ENDIF
7672        WRITE(ICOUT,9023)AN,XBAR,S,BS
7673 9023   FORMAT('AN,XBAR,S,BS = ',4G15.7)
7674        CALL DPWRST('XXX','BUG ')
7675        WRITE(ICOUT,9024)B1,EB1,SDB1,ZB1
7676 9024   FORMAT('B1,EB1,SDB1,ZB1 = ',4G15.7)
7677        CALL DPWRST('XXX','BUG ')
7678        WRITE(ICOUT,9025)B2,EB2,SDB2,ZB2
7679 9025   FORMAT('B2,EB2,SDB2,ZB2 = ',4G15.7)
7680        CALL DPWRST('XXX','BUG ')
7681        WRITE(ICOUT,9026)CORRMX,PARMX
7682 9026   FORMAT('CORRMX,PARMX = ',2G15.7)
7683        CALL DPWRST('XXX','BUG ')
7684        WRITE(ICOUT,9027)CORRUN,CORRNO,RATIUN
7685 9027   FORMAT('CORRUN,CORRNO,RATIUN = ',3G15.7)
7686        CALL DPWRST('XXX','BUG ')
7687        WRITE(ICOUT,9029)IBUGS2,ISUBRO,ISUBN0,IFOUND,IERROR
7688 9029   FORMAT('IBUGS2,ISUBRO,ISUBB0,IFOUND,IERROR = ',4(A4,2X),A4)
7689        CALL DPWRST('XXX','BUG ')
7690        WRITE(ICOUT,9031)IERRFI,IOUNIT
7691 9031   FORMAT('IERRFOI,IOUNIT = ',A4,2X,I8)
7692        CALL DPWRST('XXX','BUG ')
7693        WRITE(ICOUT,9032)IFILE(1:80)
7694 9032   FORMAT('IFILE  = ',A80)
7695        CALL DPWRST('XXX','BUG ')
7696        WRITE(ICOUT,9033)ISTAT,IFORM,IACCES,IPROT,ICURST
7697 9033   FORMAT('ISTAT,IFORM,IACCES,IPROT,ICURST  = ',4(A12,2X),A12)
7698        CALL DPWRST('XXX','BUG ')
7699      ENDIF
7700C
7701      RETURN
7702      END
7703      SUBROUTINE DPWDST(IWD1,IWD12,ISHIFT,IWD2,IWD22,IANS,IWIDTH,
7704     1                  IANS2,N2,IBUGA3,IERROR)
7705C
7706C     PURPOSE--GIVEN THAT WE HAVE THE PAIR OF A4 WORDS (IWD1 AND IWD2)
7707C              IN IHARG(.) THAT ARE    ISHIFT    APART
7708C              (ISHIFT = 0, 1, 2, ...), FIND THE CORRESPONDING A1
7709C              HOLLERITH STRING FOR THE SECOND WORD (IWD2);
7710C              INCLUDE ALSO ANY CONTINUATIONS OF THE SECOND WORD.
7711C     NOTE--THIS SUBROUTINE IS USEFUL IN THE CONVERSION OF A WORD (AND
7712C           ITS CONTINUATION) INTO A CONSTANT OR AN ELEMENT OF A VECTOR.
7713C     NOTE--VALID VALUES OF ISHIFT FOR THIS SUBROUTINE
7714C           ARE 0 AND THE POSITIVE INTEGERS.
7715C
7716C     WRITTEN BY--JAMES J. FILLIBEN
7717C                 STATISTICAL ENGINEERING DIVISION
7718C                 INFORMATION TECHNOLOGY LABORATORY
7719C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
7720C                 GAITHERSBURG, MD 20899-8980
7721C                 PHONE--301-975-2899
7722C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
7723C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
7724C     LANGUAGE--ANSI FORTRAN (1977)
7725C     VERSION NUMBER--82/7
7726C     ORIGINAL VERSION--JANUARY  1979.
7727C     UPDATED         --MAY       1982.
7728C
7729C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
7730C
7731      CHARACTER*4 IWD1
7732      CHARACTER*4 IWD12
7733      CHARACTER*4 IWD2
7734      CHARACTER*4 IWD22
7735      CHARACTER*4 IANS
7736      CHARACTER*4 IANS2
7737      CHARACTER*4 IBUGA3
7738      CHARACTER*4 IERROR
7739C
7740      CHARACTER*4 ICH1
7741      CHARACTER*4 ICH11
7742      CHARACTER*4 ICH12
7743      CHARACTER*4 ICH2
7744      CHARACTER*4 ICH21
7745      CHARACTER*4 ICH22
7746C
7747      CHARACTER*4 ISUBN1
7748      CHARACTER*4 ISUBN2
7749      CHARACTER*4 ISTEPN
7750C
7751C---------------------------------------------------------------------
7752C
7753      DIMENSION IANS(*)
7754      DIMENSION IANS2(*)
7755C
7756      DIMENSION ICH11(10)
7757      DIMENSION ICH12(10)
7758      DIMENSION ICH1(20)
7759      DIMENSION ICH21(10)
7760      DIMENSION ICH22(10)
7761      DIMENSION ICH2(20)
7762C
7763C-----COMMON----------------------------------------------------------
7764C
7765      INCLUDE 'DPCOP2.INC'
7766C
7767C-----DATA STATEMENTS-------------------------------------------------
7768C
7769      DATA MAXPAS/100/
7770C
7771C-----START POINT-----------------------------------------------------
7772C
7773      ISUBN1='DPWD'
7774      ISUBN2='ST  '
7775      IERROR='NO'
7776C
7777      NUMASC=4
7778      NUMAS2=2*NUMASC
7779C
7780      IPOS1=0
7781      IPOS2=0
7782      I2=0
7783C
7784      DO11I=1,10
7785        ICH11(I)=' '
7786        ICH12(I)=' '
7787        ICH21(I)=' '
7788        ICH22(I)=' '
7789   11 CONTINUE
7790      DO13I=1,20
7791        ICH1(I)=' '
7792        ICH2(I)=' '
7793   13 CONTINUE
7794C
7795      IF(IBUGA3.EQ.'ON')THEN
7796        WRITE(ICOUT,999)
7797  999   FORMAT(1X)
7798        CALL DPWRST('XXX','BUG ')
7799        WRITE(ICOUT,51)
7800   51   FORMAT('***** AT THE BEGINNING OF DPWDST--')
7801        CALL DPWRST('XXX','BUG ')
7802        WRITE(ICOUT,52)IWD1,IWD12,ISHIFT,IWD2,IWD22
7803   52   FORMAT('IWD1,IWD12,ISHIFT,IWD2,IWD22 = ',2A4,2X,I8,2X,2A4)
7804        CALL DPWRST('XXX','BUG ')
7805        WRITE(ICOUT,53)IWIDTH,IBUGA3
7806   53   FORMAT('IWIDTH,IBUGA3 = ',I8,2X,A4)
7807        CALL DPWRST('XXX','BUG ')
7808        WRITE(ICOUT,54)(IANS(I),I=1,MIN(100,IWIDTH))
7809   54   FORMAT('IANS(.) = ',100A1)
7810        CALL DPWRST('XXX','BUG ')
7811      ENDIF
7812C
7813C
7814C               ************************************
7815C               **  STEP 2--                      **
7816C               **  DETERMINE THE A1-EQUIVALENT   **
7817C               **  OF THE A4-WORD IWD1.          **
7818C               **  DETERMINE THE A1-EQUIVALENT   **
7819C               **  OF THE A4-WORD IWD2.          **
7820C               ************************************
7821C
7822      ISTEPN='2'
7823      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7824C
7825      CALL DPXH1H(IWD1,ICH11,IEND11,IBUGA3)
7826      CALL DPXH1H(IWD12,ICH12,IEND12,IBUGA3)
7827      DO205K=1,NUMAS2
7828        ICH1(K)=' '
7829  205 CONTINUE
7830      L=0
7831      DO206K=1,NUMASC
7832        L=L+1
7833        ICH1(L)=ICH11(K)
7834  206 CONTINUE
7835      DO207K=1,NUMASC
7836        L=L+1
7837        ICH1(L)=ICH12(K)
7838  207 CONTINUE
7839      IEND1=0
7840      IF(IEND11.GE.1)IEND1=IEND11
7841      IF(IEND11.GE.NUMASC)IEND1=NUMASC
7842      IF(IEND12.GE.1)IEND1=NUMASC+IEND12
7843      IF(IEND12.GE.NUMAS2)IEND1=NUMAS2
7844C
7845      CALL DPXH1H(IWD2,ICH21,IEND21,IBUGA3)
7846      CALL DPXH1H(IWD22,ICH22,IEND22,IBUGA3)
7847      DO605K=1,NUMAS2
7848        ICH2(K)=' '
7849  605 CONTINUE
7850      L=0
7851      DO606K=1,NUMASC
7852        L=L+1
7853        ICH2(L)=ICH21(K)
7854  606 CONTINUE
7855      DO607K=1,NUMASC
7856        L=L+1
7857        ICH2(L)=ICH22(K)
7858  607 CONTINUE
7859      IEND2=0
7860      IF(IEND21.GE.1)IEND2=IEND21
7861      IF(IEND21.GE.NUMASC)IEND2=NUMASC
7862      IF(IEND22.GE.1)IEND2=NUMASC+IEND22
7863      IF(IEND22.GE.NUMAS2)IEND2=NUMAS2
7864C
7865C               ******************************************
7866C               **  STEP 3--                            **
7867C               **  SET UP A LARGE LOOP--               **
7868C               **  MAKE AT MOST 100 PASSES AT IANS(.)  **
7869C               **  TO SEARCH FOR IWD1                  **
7870C               **  AND FOLLOWED (ISHIFT WORDS LATER)   **
7871C               **  BY IWD2.                            **
7872C               ******************************************
7873C
7874      IF(IBUGA3.EQ.'ON')THEN
7875        ISTEPN='3'
7876        CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7877        WRITE(ICOUT,1011)IEND1,IEND2
7878 1011   FORMAT('IEND1,IEND2 = ',2I8)
7879        CALL DPWRST('XXX','BUG ')
7880        WRITE(ICOUT,1012)IEND11,IEND12,IEND21,IEND22
7881 1012   FORMAT('IEND11,IEND12,IEND21,IEND22 = ',4I8)
7882        CALL DPWRST('XXX','BUG ')
7883        DO1013II=1,MAX(IEND1,IEND2)
7884          WRITE(ICOUT,1015)II,ICH1(II),ICH2(II)
7885 1015     FORMAT('II,ICH1(II),ICH2(II) = ',I5,2(2X,A4))
7886          CALL DPWRST('XXX','BUG ')
7887 1013   CONTINUE
7888      ENDIF
7889C
7890      IMINCO=1
7891      DO1000IPASS=1,MAXPAS
7892C
7893C               **************************************
7894C               **  STEP 4--                        **
7895C               **  LOCATE THE POSITION IN IANS(.)  **
7896C               **  OF THE FIRST LETTER OF THE      **
7897C               **  A1-EQUIVALENT OF IWD1.          **
7898C               **  STORE THIS POSITION IN IPOS1.   **
7899C               **************************************
7900C
7901        IF(IBUGA3.EQ.'ON')THEN
7902          ISTEPN='4'
7903          CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7904          WRITE(ICOUT,1091)IMINCO
7905 1091     FORMAT('IMINCO = ',I8)
7906          CALL DPWRST('XXX','BUG ')
7907        ENDIF
7908C
7909        DO410I=IMINCO,IWIDTH
7910          DO420J=1,IEND1
7911            K=I+J-1
7912            IF(K.GT.IWIDTH)GOTO430
7913            IF(IANS(K).NE.ICH1(J))GOTO410
7914  420     CONTINUE
7915          KP1=K+1
7916          IF(KP1.GT.IWIDTH)GOTO430
7917          IF(IEND1.NE.NUMCPW.AND.IANS(KP1).NE.' ')GOTO410
7918          IPOS1=I
7919          GOTO490
7920  410   CONTINUE
7921  430   CONTINUE
7922C
7923        WRITE(ICOUT,431)
7924  431   FORMAT('***** INTERNAL ERROR IN DPWDST--')
7925        CALL DPWRST('XXX','BUG ')
7926        WRITE(ICOUT,432)IWD1,IWD12
7927  432   FORMAT('      1H REPRESENTATION FOR    ',A4,A4,
7928     1         '   NOT FOUND.')
7929        CALL DPWRST('XXX','BUG ')
7930        IF(IWIDTH.GE.1)THEN
7931          WRITE(ICOUT,433)(IANS(I),I=1,MIN(100,IWIDTH))
7932  433     FORMAT('      ',100A1)
7933          CALL DPWRST('XXX','BUG ')
7934        ENDIF
7935        IERROR='YES'
7936        GOTO9000
7937  490   CONTINUE
7938C
7939        IF(IBUGA3.EQ.'ON')THEN
7940          WRITE(ICOUT,491)IPOS1,K
7941  491     FORMAT('IPOS1,K = ',I8,I8)
7942          CALL DPWRST('XXX','BUG ')
7943        ENDIF
7944C
7945C               **************************************
7946C               **  STEP 5--                        **
7947C               **  LOCATE THE POSITION IN IANS(.)  **
7948C               **  OF THE FIRST LETTER OF THE      **
7949C               **  A1-EQUIVALENT OF THE WORD       **
7950C               **  ISHIFT    WORDS TO THE RIGHT    **
7951C               **  OF IWD1.                        **
7952C               **  THIS SHOULD CORRESPOND TO       **
7953C               **  THE WORD FOUND IN IWD2.         **
7954C               **  STORE THIS POSITION IN IPOS2.   **
7955C               **************************************
7956C
7957        ISTEPN='5'
7958        IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
7959C
7960        IMIN=IPOS1
7961        IPOS2=IMIN
7962        IF(ISHIFT.LE.0)GOTO590
7963        DO510K=1,ISHIFT
7964          DO520I=IMIN,IWIDTH
7965            I2=I
7966            IF(IANS(I).EQ.' ')THEN
7967              DO530J=I2,IWIDTH
7968                J2=J
7969                IF(IANS(J).NE.' ')THEN
7970                  IMIN=J2
7971                  IPOS2=IMIN
7972                  GOTO510
7973                ENDIF
7974  530         CONTINUE
7975              GOTO580
7976            ELSEIF(IANS(IMIN).NE.'='.AND.IANS(I).EQ.'=')THEN
7977              IMIN=I2
7978              IPOS2=IMIN
7979              GOTO510
7980            ELSEIF(IANS(IMIN).EQ.'='.AND.IANS(I).NE.'=')THEN
7981              IMIN=I2
7982              IPOS2=IMIN
7983              GOTO510
7984            ENDIF
7985  520     CONTINUE
7986          GOTO580
7987  510   CONTINUE
7988        GOTO590
7989C
7990  580   CONTINUE
7991        WRITE(ICOUT,431)
7992        CALL DPWRST('XXX','BUG ')
7993        WRITE(ICOUT,582)ISHIFT
7994  582   FORMAT('      1H REPRESENTATION FOR WORD SHIFTED ',I8,' WORDS')
7995        CALL DPWRST('XXX','BUG ')
7996        WRITE(ICOUT,583)IWD1,IWD12
7997  583   FORMAT('      TO THE RIGHT OF ',A4,A4,' NOT FOUND.')
7998        CALL DPWRST('XXX','BUG ')
7999        IF(IWIDTH.GE.1)THEN
8000          WRITE(ICOUT,433)(IANS(I),I=1,MIN(100,IWIDTH))
8001          CALL DPWRST('XXX','BUG ')
8002        ENDIF
8003        IERROR='YES'
8004        GOTO9000
8005  590   CONTINUE
8006C
8007        IF(IBUGA3.EQ.'ON')THEN
8008          WRITE(ICOUT,591)IPOS2,I2
8009  591     FORMAT('IPOS2,I2 = ',I8,I8)
8010          CALL DPWRST('XXX','BUG ')
8011        ENDIF
8012C
8013C               ************************************************
8014C               **  STEP 6--                                  **
8015C               **  EXTRACT THE CHARACTER STRING IN IANS(.)   **
8016C               **  STARTING WITH POSITION IPOS2              **
8017C               **  AND STOPPING WITH (BUT NOT INCLUDING)     **
8018C               **  THE FIRST BLANK CHARACTER.                **
8019C               **  STORE SUCH A STRING IN IANS2(.).          **
8020C               **  STORE THE LENGTH OF SUCH A STRING IN N2.  **
8021C               ************************************************
8022C
8023        ISTEPN='6'
8024        IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8025C
8026        J=0
8027        DO610I=IPOS2,IWIDTH
8028          IF(IANS(I).EQ.' ')GOTO620
8029          J=J+1
8030          IANS2(J)=IANS(I)
8031  610   CONTINUE
8032  620   CONTINUE
8033        N2=J
8034        IF(N2.LT.1)THEN
8035          WRITE(ICOUT,431)
8036          CALL DPWRST('XXX','BUG ')
8037          WRITE(ICOUT,622)
8038  622     FORMAT('      LENGTH N2 OF OUTPUT STRING = 0')
8039          CALL DPWRST('XXX','BUG ')
8040          WRITE(ICOUT,623)
8041  623     FORMAT('      FOR 1H REPRESENTATION OF WORD')
8042          CALL DPWRST('XXX','BUG ')
8043          WRITE(ICOUT,624)ISHIFT
8044  624     FORMAT('      SHIFTED ',I8,' WORDS TO THE RIGHT')
8045          CALL DPWRST('XXX','BUG ')
8046          WRITE(ICOUT,625)IWD1,IWD12
8047  625     FORMAT('OF ',A4,A4,'   .')
8048          CALL DPWRST('XXX','BUG ')
8049          IF(IWIDTH.GE.1)THEN
8050            WRITE(ICOUT,433)(IANS(I),I=1,MIN(100,IWIDTH))
8051            CALL DPWRST('XXX','BUG ')
8052          ENDIF
8053          IERROR='YES'
8054          GOTO9000
8055        ENDIF
8056C
8057        IF(IBUGA3.EQ.'ON')THEN
8058          WRITE(ICOUT,691)N2,IEND2
8059  691     FORMAT('N2,IEND2 = ',2I8)
8060          CALL DPWRST('XXX','BUG ')
8061          WRITE(ICOUT,692)(IANS2(I),I=1,MIN(100,N2))
8062  692     FORMAT('IANS2(.) = ',100A1)
8063          CALL DPWRST('XXX','BUG ')
8064        ENDIF
8065C
8066C               ****************************************
8067C               **  STEP 7--                          **
8068C               **  AS A FINAL CHECK,                 **
8069C               **  COMPARE THE A1-EQUIVALENT         **
8070C               **  OF THE A4-WORD IWD2               **
8071C               **  WITH THE CONTENTS                 **
8072C               **  OF IANS2(.)--THE FIRST IEND2      **
8073C               **  CHARACTERS SHOULD BE IDENTICAL.   **
8074C               **  IF NOT, THEN MAKE ANOTHER         **
8075C               **  PASS FURTHER DOWN IANS(.)         **
8076C               **  TO SEARCH FOR                     **
8077C               **  THE PAIR (IWWD1 AND IWD2)         **
8078C               **  AT THE SPECIFIED                  **
8079C               **  ISHIFT   WORDS APART.             **
8080C               ****************************************
8081C
8082        ISTEPN='7'
8083        IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8084C
8085        IF(N2.GE.IEND2)THEN
8086          DO710I=1,IEND2
8087            IF(ICH2(I).NE.IANS2(I))GOTO719
8088  710     CONTINUE
8089          GOTO9000
8090        ENDIF
8091  719   CONTINUE
8092C
8093        IMINCO=IPOS1+1
8094        IF(IMINCO.LE.IWIDTH)GOTO1000
8095        WRITE(ICOUT,431)
8096        CALL DPWRST('XXX','BUG ')
8097        WRITE(ICOUT,1102)IWD1,IWD12,IWD2,IWD22
8098 1102   FORMAT('      1H REPRESENTATION FOR    ',A4,A4,' AND ',A4,A4)
8099        CALL DPWRST('XXX','BUG ')
8100        WRITE(ICOUT,1103)ISHIFT
8101 1103   FORMAT('      (',I8,' WORDS APART) NOT FOUND.')
8102        CALL DPWRST('XXX','BUG ')
8103        IF(IWIDTH.GE.1)THEN
8104          WRITE(ICOUT,433)(IANS(I),I=1,IWIDTH)
8105          CALL DPWRST('XXX','BUG ')
8106        ENDIF
8107        IERROR='YES'
8108        GOTO9000
8109C
8110 1000 CONTINUE
8111C
8112C               ****************
8113C               **  STEP 90-- **
8114C               **  EXIT.     **
8115C               ****************
8116C
8117 9000 CONTINUE
8118C
8119      ISTEPN='8'
8120      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8121C
8122      IF(IBUGA3.EQ.'ON')THEN
8123        WRITE(ICOUT,999)
8124        CALL DPWRST('XXX','BUG ')
8125        WRITE(ICOUT,9011)
8126 9011   FORMAT('***** AT THE END       OF DPWDST--')
8127        CALL DPWRST('XXX','BUG ')
8128        WRITE(ICOUT,9012)IEND1,IEND2,IPOS1,IPOS2,N2
8129 9012   FORMAT('IEND1,IEND2,IPOS1,IPOS2,N2 = ',5I8)
8130        CALL DPWRST('XXX','BUG ')
8131        WRITE(ICOUT,9014)(IANS2(I),I=1,MIN(100,N2))
8132 9014   FORMAT('IANS2(.) = ',100A1)
8133        CALL DPWRST('XXX','BUG ')
8134        WRITE(ICOUT,9015)IERROR,NUMASC,NUMAS2
8135 9015   FORMAT('IERROR,NUMASC,NUMAS2 = ',A4,2X,2I5)
8136        CALL DPWRST('XXX','BUG ')
8137        WRITE(ICOUT,9020)IEND11,IEND12,IEND1,IEND21,IEND22,IEND2
8138 9020   FORMAT('IEND11,IEND12,IEND1,IEND21,IEND22,IEND2 = ',6I8)
8139        CALL DPWRST('XXX','BUG ')
8140        WRITE(ICOUT,9021)(ICH11(I),I=1,10)
8141 9021   FORMAT('(ICH11(I),I=1,10) = ',10A1)
8142        CALL DPWRST('XXX','BUG ')
8143        WRITE(ICOUT,9022)(ICH12(I),I=1,10)
8144 9022   FORMAT('(ICH12(I),I=1,10) = ',10A1)
8145        CALL DPWRST('XXX','BUG ')
8146        WRITE(ICOUT,9023)(ICH1 (I),I=1,10)
8147 9023   FORMAT('(ICH1 (I),I=1,10) = ',10A1)
8148        CALL DPWRST('XXX','BUG ')
8149        WRITE(ICOUT,9024)(ICH21(I),I=1,10)
8150 9024   FORMAT('(ICH21(I),I=1,10) = ',10A1)
8151        CALL DPWRST('XXX','BUG ')
8152        WRITE(ICOUT,9025)(ICH22(I),I=1,10)
8153 9025   FORMAT('(ICH22(I),I=1,10) = ',10A1)
8154        CALL DPWRST('XXX','BUG ')
8155        WRITE(ICOUT,9026)(ICH2 (I),I=1,10)
8156 9026   FORMAT('(ICH2 (I),I=1,10) = ',10A1)
8157        CALL DPWRST('XXX','BUG ')
8158      ENDIF
8159C
8160      RETURN
8161      END
8162      SUBROUTINE DPWEAR(TEMP,TEMP2,IBUGA3,IBUGQ,IFOUND,IERROR)
8163C
8164C     PURPOSE--GENERATE ADJUSTED RANKS
8165C              FOR DATA IN PREPARATION
8166C              WITH A WEIBULL PLOT ANALYSIS.
8167C     WRITTEN BY--JAMES J. FILLIBEN
8168C                 STATISTICAL ENGINEERING DIVISION
8169C                 INFORMATION TECHNOLOGY LABORATORY
8170C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
8171C                 GAITHERSBURG, MD 20899-8980
8172C                 PHONE--301-975-2899
8173C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
8174C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
8175C     LANGUAGE--ANSI FORTRAN (1977)
8176C     VERSION NUMBER--82/7
8177C     ORIGINAL VERSION--APRIL     1978.
8178C     UPDATED         --MAY       1978.
8179C     UPDATED         --JUNE      1978.
8180C     UPDATED         --MAY       1978.
8181C     UPDATED         --NOVEMBER  1978.
8182C     UPDATED         --JUNE      1981.
8183C     UPDATED         --SEPTEMBER 1981.
8184C     UPDATED         --OCTOBER   1981.
8185C     UPDATED         --MARCH     1982.
8186C     UPDATED         --MAY       1982.
8187C     UPDATED         --JUNE      1990. TEMPORARY ARRAYS TO GARBAGE COMMON
8188C     UPDATED         --JULY      2019. MOVE CREATION OF SCRATCH STORAGE
8189C                                       TO DPLET
8190C
8191C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
8192C
8193      CHARACTER*4 IBUGA3
8194      CHARACTER*4 IBUGQ
8195      CHARACTER*4 IFOUND
8196      CHARACTER*4 IERROR
8197C
8198      CHARACTER*4 NEWNAM
8199      CHARACTER*4 NEWCOL
8200      CHARACTER*4 ICASEQ
8201      CHARACTER*4 IHWUSE
8202      CHARACTER*4 MESSAG
8203      CHARACTER*4 IWRITE
8204      CHARACTER*4 IHARG3
8205      CHARACTER*4 IHARG4
8206      CHARACTER*4 IHARG5
8207      CHARACTER*4 IHARG6
8208      CHARACTER*4 ILEFT
8209      CHARACTER*4 ILEFT2
8210      CHARACTER*4 IRIGHT
8211      CHARACTER*4 IRIGH2
8212      CHARACTER*4 IHSET
8213      CHARACTER*4 IHSET2
8214C
8215      CHARACTER*4 ISUBN1
8216      CHARACTER*4 ISUBN2
8217      CHARACTER*4 ISTEPN
8218C
8219C---------------------------------------------------------------------
8220C
8221      DIMENSION TEMP(*)
8222      DIMENSION TEMP2(*)
8223C
8224C-----COMMON----------------------------------------------------------
8225C
8226      INCLUDE 'DPCOPA.INC'
8227      INCLUDE 'DPCOHK.INC'
8228      INCLUDE 'DPCODA.INC'
8229      INCLUDE 'DPCOP2.INC'
8230C
8231C-----START POINT-----------------------------------------------------
8232C
8233      ISUBN1='DPWE'
8234      ISUBN2='AR  '
8235      IERROR='NO'
8236      IFOUND='YES'
8237C
8238      MAXCP1=MAXCOL+1
8239      MAXCP2=MAXCOL+2
8240      MAXCP3=MAXCOL+3
8241      MAXCP4=MAXCOL+4
8242      MAXCP5=MAXCOL+5
8243      MAXCP6=MAXCOL+6
8244C
8245      NS2=0
8246      NS3=0
8247      NIISUB=(-999)
8248      ICOLL=(-999)
8249      IRIGHT='-999'
8250      IRIGH2='-999'
8251      ILOCV=(-999)
8252      NUMVAR=(-999)
8253      ICOLR=(-999)
8254      NIRIGH=(-999)
8255      ICOL2=(-999)
8256      NIRIG2=(-999)
8257      ILOCSV=(-999)
8258      NLEFT=(-999)
8259C
8260C               ***********************************************
8261C               **  TREAT THE WEIBULL ADJUSTED RANKS CASE    **
8262C               **       1) FOR A FULL VARIABLE, OR          **
8263C               **       2) FOR PART OF A VARIABLE.          **
8264C               ***********************************************
8265C
8266      IF(IBUGA3.EQ.'ON')THEN
8267        WRITE(ICOUT,999)
8268  999   FORMAT(1X)
8269        CALL DPWRST('XXX','BUG ')
8270        WRITE(ICOUT,51)
8271   51   FORMAT('***** AT THE BEGINNING OF DPWEAR--')
8272        CALL DPWRST('XXX','BUG ')
8273        WRITE(ICOUT,52)IBUGA3,IBUGQ
8274   52   FORMAT('IBUGA3,IBUGQ = ',A4,2X,A4)
8275        CALL DPWRST('XXX','BUG ')
8276      ENDIF
8277C
8278C               **********************************
8279C               **  STEP 1--                    **
8280C               **  INITIALIZE SOME VARIABLES.  **
8281C               **********************************
8282C
8283      ISTEPN='1'
8284      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8285C
8286      NEWNAM='NO'
8287      NEWCOL='NO'
8288C
8289C               ********************************************************
8290C               **  STEP 2--                                           *
8291C               **  EXAMINE THE LEFT-HAND SIDE--                       *
8292C               **  IS THE VARIABLE NAME TO LEFT OF = SIGN ALREADY IN  *
8293C               **  THE NAME LIST?    AS A VARIABLE?  NOTE THAT        *
8294C               **  ILEFT     IS THE NAME OF THE VARIABLE ON THE LEFT. *
8295C               **  NOTE THAT   ILISTL  IS THE LINE IN THE TABLE OF    *
8296C               **  THE NAME ON THE LEFT.  NOTE THAT   ICOLL  IS THE   *
8297C               **  DATA COLUMN (1 TO 12) FOR THE NAME OF THE LEFT.    *
8298C               ********************************************************
8299C
8300      ISTEPN='2'
8301      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8302C
8303      ILEFT=IHARG(1)
8304      ILEFT2=IHARG2(1)
8305      DO200I=1,NUMNAM
8306        I2=I
8307        IF(ILEFT.EQ.IHNAME(I).AND.ILEFT2.EQ.IHNAM2(I).AND.
8308     1     IUSE(I).EQ.'P')THEN
8309          ILISTL=I2
8310          GOTO235
8311        ELSEIF(ILEFT.EQ.IHNAME(I).AND.ILEFT2.EQ.IHNAM2(I).AND.
8312     1         IUSE(I).EQ.'V')THEN
8313          ILISTL=I2
8314          ICOLL=IVALUE(ILISTL)
8315          NIOLD=IN(ILISTL)
8316          GOTO290
8317        ENDIF
8318  200 CONTINUE
8319C
8320      NEWNAM='YES'
8321      ILISTL=NUMNAM+1
8322      IF(ILISTL.GT.MAXNAM)THEN
8323        WRITE(ICOUT,999)
8324        CALL DPWRST('XXX','BUG ')
8325        WRITE(ICOUT,221)
8326  221   FORMAT('***** ERROR IN DPWEAR--')
8327        CALL DPWRST('XXX','BUG ')
8328        WRITE(ICOUT,222)
8329  222   FORMAT('      THE NUMBER OF VARIABLE AND/OR PARAMETER')
8330        CALL DPWRST('XXX','BUG ')
8331        WRITE(ICOUT,223)MAXNAM
8332  223   FORMAT('      NAMES HAS JUST EXCEEDED THE MAX ALLOWABLE ',
8333     1         I8,'  .')
8334        CALL DPWRST('XXX','BUG ')
8335        WRITE(ICOUT,224)
8336  224   FORMAT('      SUGGESTED ACTION--')
8337        CALL DPWRST('XXX','BUG ')
8338        WRITE(ICOUT,225)
8339  225   FORMAT('      ENTER      STATUS')
8340        CALL DPWRST('XXX','BUG ')
8341        WRITE(ICOUT,226)
8342  226   FORMAT('      TO FIND OUT THE FULL LIST OF USED NAMES,')
8343        CALL DPWRST('XXX','BUG ')
8344        WRITE(ICOUT,227)
8345  227   FORMAT('      AND THEN REDEFINE (REUSE) SOME OF THE')
8346        CALL DPWRST('XXX','BUG ')
8347        WRITE(ICOUT,228)
8348  228   FORMAT('      ALREADY-USED NAMES')
8349        CALL DPWRST('XXX','BUG ')
8350        IERROR='YES'
8351        GOTO19000
8352      ENDIF
8353C
8354  235 CONTINUE
8355      NIOLD=0
8356      ICOLL=NUMCOL+1
8357      IF(ICOLL.GT.MAXCOL)THEN
8358        WRITE(ICOUT,221)
8359        CALL DPWRST('XXX','BUG ')
8360        WRITE(ICOUT,242)
8361  242   FORMAT('      THE NUMBER OF DATA COLUMNS HAS JUST EXCEEDED')
8362        CALL DPWRST('XXX','BUG ')
8363        WRITE(ICOUT,243)MAXCOL
8364  243   FORMAT('      THE MAX ALLOWABLE ',I8,'  .  SUGGESTED ACTION--')
8365        CALL DPWRST('XXX','BUG ')
8366        WRITE(ICOUT,245)
8367  245   FORMAT('      ENTER      STATUS VARIABLES')
8368        CALL DPWRST('XXX','BUG ')
8369        WRITE(ICOUT,246)
8370  246   FORMAT('      TO FIND OUT THE FULL LIST OF USED COLUMNS')
8371        CALL DPWRST('XXX','BUG ')
8372        WRITE(ICOUT,247)
8373  247   FORMAT('      AND THEN DELETE SOME COLUMNS.   EXAMPLE--')
8374        CALL DPWRST('XXX','BUG ')
8375        WRITE(ICOUT,248)
8376  248   FORMAT('      IF       LET X(I) = 3.14         FAILED,')
8377        CALL DPWRST('XXX','BUG ')
8378        WRITE(ICOUT,249)
8379  249   FORMAT('      THEN ONE MIGHT ENTER     DELETE Y1')
8380        CALL DPWRST('XXX','BUG ')
8381        WRITE(ICOUT,250)
8382  250   FORMAT('      (ASSUMING Y1 IS A VARAIBLE IN THE LIST)')
8383        CALL DPWRST('XXX','BUG ')
8384        WRITE(ICOUT,251)
8385  251   FORMAT('      FOLLOWED BY              LET X(I) = 3.14')
8386        CALL DPWRST('XXX','BUG ')
8387        IERROR='YES'
8388        GOTO19000
8389      ENDIF
8390C
8391  290 CONTINUE
8392      IF(IBUGA3.EQ.'ON')THEN
8393        WRITE(ICOUT,291)
8394  291   FORMAT('AT THE END OF STEP 2--')
8395        CALL DPWRST('XXX','BUG ')
8396        WRITE(ICOUT,292)ILEFT,ILEFT2,NEWNAM,NUMNAM,ILISTL,NUMCOL,ICOLL,
8397     1                  NIOLD
8398  292   FORMAT('ILEFT,ILEFT2,NEWNAM,NUMNAM,ILISTL,NUMCOL,ICOLL,',
8399     1         'NIOLD = ',2A4,2X,A4,2X,5I8)
8400        CALL DPWRST('XXX','BUG ')
8401      ENDIF
8402C
8403C               ********************************************************
8404C               **  STEP 3--                                           *
8405C               **  EXAMINE THE RIGHT-HAND SIDE--                      *
8406C               **  HAS THE VARIABLE OR COLUMN ON THE RIGHT            *
8407C               **  ALREADY BEEN DEFINED?                              *
8408C               **  NOTE THAT     ILISTR    IS THE LINE IN THE TABLE   *
8409C               **  OF THE VARIABLE OR COLUMN ON THE RIGHT.            *
8410C               **  NOTE THAT   ICOLR   IS THE DATA COLUMN (1 TO 12)   *
8411C               **  FOR THE VARIABLE OR COLUMN ON THE RIGHT.           *
8412C               ********************************************************
8413C
8414      ISTEPN='3'
8415      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8416C
8417C               ***********************************************
8418C               **  STEP 4--                                 **
8419C               **  BRANCH BETWEEN 1-VARIABLE SPECIFICATION  **
8420C               **  (LET Y = WEIBULL ADJUSTED RANKS X)       **
8421C               **  AND 2-VARIABLE SPECIFICATION             **
8422C               **  (LET Y = WEIBULL ADJUSTED RANKS X TAG)   **
8423C               ***********************************************
8424C
8425      ISTEPN='4'
8426      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8427C
8428      ILOCV=6
8429C
8430      NUMVAR=1
8431      ILOCVP=ILOCV+1
8432      IF(ILOCVP.GT.NUMARG)GOTO1000
8433      IHARG5=IHARG(ILOCVP)
8434      IHARG6=IHARG2(ILOCVP)
8435      IF(IHARG5.EQ.'SUBS'.AND.IHARG6.EQ.'ET  ')GOTO1000
8436      IF(IHARG5.EQ.'EXCE'.AND.IHARG6.EQ.'PT  ')GOTO1000
8437      IF(IHARG5.EQ.'FOR '.AND.IHARG6.EQ.'    ')GOTO1000
8438      NUMVAR=2
8439      GOTO2000
8440C
8441C               *******************************************
8442C               **  STEP 5--                             **
8443C               **  TREAT THE 1-VARIABLE SPECIFICATIONS  **
8444C               *******************************************
8445C
8446 1000 CONTINUE
8447C
8448      ISTEPN='5'
8449      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8450C
8451      NUMVAR=1
8452C
8453      IRIGHT=IHARG(ILOCV)
8454      IRIGH2=IHARG2(ILOCV)
8455      DO1100I=1,NUMNAM
8456        I2=I
8457        IF(IRIGHT.EQ.IHNAME(I).AND.IRIGH2.EQ.IHNAM2(I).AND.
8458     1     IUSE(I).EQ.'V')THEN
8459          ILISTR=I2
8460          ICOLR=IVALUE(ILISTR)
8461          NIRIGH=IN(ILISTR)
8462          GOTO7000
8463        ELSEIF(IRIGHT.EQ.IHNAME(I).AND.IRIGH2.EQ.IHNAM2(I).AND.
8464     1         IUSE(I).EQ.'P')THEN
8465          WRITE(ICOUT,999)
8466          CALL DPWRST('XXX','BUG ')
8467          WRITE(ICOUT,221)
8468          CALL DPWRST('XXX','BUG ')
8469          WRITE(ICOUT,1102)
8470          CALL DPWRST('XXX','BUG ')
8471          WRITE(ICOUT,1154)
8472 1154     FORMAT('      ON THE RIGHT OF THE = SIGN WAS FOUND IN THE')
8473          CALL DPWRST('XXX','BUG ')
8474          WRITE(ICOUT,1156)
8475 1156     FORMAT('      INTERNAL NAME LIST, BUT AS A PARAMETER,')
8476          CALL DPWRST('XXX','BUG ')
8477          WRITE(ICOUT,1157)
8478 1157     FORMAT('      AND NOT AS A VARIABLE AS IT SHOULD BE HERE.')
8479          CALL DPWRST('XXX','BUG ')
8480          WRITE(ICOUT,1108)
8481          CALL DPWRST('XXX','BUG ')
8482          WRITE(ICOUT,1109)(IANS(II),II=1,MIN(80,IWIDTH))
8483          CALL DPWRST('XXX','BUG ')
8484          IERROR='YES'
8485          GOTO19000
8486        ENDIF
8487 1100 CONTINUE
8488C
8489      WRITE(ICOUT,999)
8490      CALL DPWRST('XXX','BUG ')
8491      WRITE(ICOUT,221)
8492      CALL DPWRST('XXX','BUG ')
8493      WRITE(ICOUT,1102)
8494 1102 FORMAT('      THE SPECIFIED ARGUMENT (VARIABLE NAME OR COLUMN ',
8495     1       'NUMBER)')
8496      CALL DPWRST('XXX','BUG ')
8497      WRITE(ICOUT,1104)
8498 1104 FORMAT('      ON THE RIGHT OF THE = SIGN WAS NOT FOUND IN THE')
8499      CALL DPWRST('XXX','BUG ')
8500      WRITE(ICOUT,1106)
8501 1106 FORMAT('      INTERNAL NAME LIST OF AVAILABLE VARIABLE NAMES.')
8502      CALL DPWRST('XXX','BUG ')
8503      WRITE(ICOUT,999)
8504      CALL DPWRST('XXX','BUG ')
8505      WRITE(ICOUT,1107)IRIGHT,IRIGH2
8506 1107 FORMAT('      THE VARIABLE IN QUESTION WAS ',2A4)
8507      CALL DPWRST('XXX','BUG ')
8508      WRITE(ICOUT,999)
8509      CALL DPWRST('XXX','BUG ')
8510      WRITE(ICOUT,1108)
8511 1108 FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
8512      CALL DPWRST('XXX','BUG ')
8513      IF(IWIDTH.GE.1)THEN
8514        WRITE(ICOUT,1109)(IANS(I),I=1,MIN(80,IWIDTH))
8515 1109   FORMAT(80A1)
8516        CALL DPWRST('XXX','BUG ')
8517      ENDIF
8518      IERROR='YES'
8519      GOTO19000
8520C
8521C               ************************************************
8522C               **  STEP 6.2--                                **
8523C               **  TREAT THE 2 VARIABLE SPECIFICATION.       **
8524C               **  CHECK THE VALIDITY OF THE FIRST ARGUMENT  **
8525C               ************************************************
8526C
8527 2000 CONTINUE
8528C
8529      ISTEPN='6.2'
8530      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8531C
8532      NUMVAR=2
8533C
8534      IHARG3=IHARG(ILOCV)
8535      IHARG4=IHARG2(ILOCV)
8536      DO2210I=1,NUMNAM
8537        I2=I
8538        IF(IHARG3.EQ.IHNAME(I).AND.IHARG4.EQ.IHNAM2(I).AND.
8539     1     IUSE(I).EQ.'V')THEN
8540          ILISTR=I2
8541          ICOLR=IVALUE(ILISTR)
8542          NIRIGH=IN(ILISTR)
8543          GOTO2300
8544        ELSEIF(IHARG3.EQ.IHNAME(I).AND.IHARG4.EQ.IHNAM2(I).AND.
8545     1         IUSE(I).EQ.'P')THEN
8546          WRITE(ICOUT,999)
8547          CALL DPWRST('XXX','BUG ')
8548          WRITE(ICOUT,221)
8549          CALL DPWRST('XXX','BUG ')
8550          WRITE(ICOUT,2212)
8551          CALL DPWRST('XXX','BUG ')
8552          WRITE(ICOUT,1154)
8553          CALL DPWRST('XXX','BUG ')
8554          WRITE(ICOUT,1156)
8555          CALL DPWRST('XXX','BUG ')
8556          WRITE(ICOUT,1157)
8557          CALL DPWRST('XXX','BUG ')
8558          WRITE(ICOUT,999)
8559          CALL DPWRST('XXX','BUG ')
8560          WRITE(ICOUT,1107)IHARG3,IHARG4
8561          CALL DPWRST('XXX','BUG ')
8562          WRITE(ICOUT,999)
8563          CALL DPWRST('XXX','BUG ')
8564          WRITE(ICOUT,1108)
8565          CALL DPWRST('XXX','BUG ')
8566          IF(IWIDTH.GE.1)THEN
8567            WRITE(ICOUT,1109)(IANS(II),II=1,MIN(80,IWIDTH))
8568            CALL DPWRST('XXX','BUG ')
8569          ENDIF
8570          IERROR='YES'
8571          GOTO19000
8572        ENDIF
8573 2210 CONTINUE
8574C
8575      WRITE(ICOUT,999)
8576      CALL DPWRST('XXX','BUG ')
8577      WRITE(ICOUT,221)
8578      CALL DPWRST('XXX','BUG ')
8579      WRITE(ICOUT,2212)
8580 2212 FORMAT('      THE SPECIFIED FIRST  ARGUMENT (VARIABLE NAME ',
8581     1       'OR COLUMN NUMBER)')
8582      CALL DPWRST('XXX','BUG ')
8583      WRITE(ICOUT,1104)
8584      CALL DPWRST('XXX','BUG ')
8585      WRITE(ICOUT,1106)
8586      CALL DPWRST('XXX','BUG ')
8587      WRITE(ICOUT,999)
8588      CALL DPWRST('XXX','BUG ')
8589      WRITE(ICOUT,1107)IHARG3,IHARG4
8590      CALL DPWRST('XXX','BUG ')
8591      WRITE(ICOUT,999)
8592      CALL DPWRST('XXX','BUG ')
8593      WRITE(ICOUT,1108)
8594      CALL DPWRST('XXX','BUG ')
8595      IF(IWIDTH.GE.1)THEN
8596        WRITE(ICOUT,1109)(IANS(I),I=1,MIN(80,IWIDTH))
8597        CALL DPWRST('XXX','BUG ')
8598      ENDIF
8599      IERROR='YES'
8600      GOTO19000
8601C
8602C
8603C               *****************************************************
8604C               **  STEP 6.3--                                     **
8605C               **  CHECK THE VALIDITY OF THE SECOND ARGUMENT      **
8606C               *****************************************************
8607C
8608 2300 CONTINUE
8609C
8610      ISTEPN='6.3'
8611      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8612C
8613      ILOCVP=ILOCV+1
8614      IF(ILOCVP.GT.NUMARG)THEN
8615        WRITE(ICOUT,221)
8616        CALL DPWRST('XXX','BUG ')
8617        WRITE(ICOUT,2302)
8618 2302   FORMAT('      NO SECOND VARIABLE NAME OR COLUMN NUMBER')
8619        CALL DPWRST('XXX','BUG ')
8620        WRITE(ICOUT,2303)
8621 2303   FORMAT('      WAS GIVEN AFTER THE OPERATION CALCULATION')
8622        CALL DPWRST('XXX','BUG ')
8623        WRITE(ICOUT,1108)
8624        CALL DPWRST('XXX','BUG ')
8625        IF(IWIDTH.GE.1)THEN
8626          WRITE(ICOUT,1109)(IANS(I),I=1,MIN(80,IWIDTH))
8627          CALL DPWRST('XXX','BUG ')
8628        ENDIF
8629        IERROR='YES'
8630        GOTO19000
8631      ENDIF
8632C
8633      IHARG5=IHARG(ILOCVP)
8634      IHARG6=IHARG2(ILOCVP)
8635      DO2310I=1,NUMNAM
8636        I2=I
8637        IF(IHARG5.EQ.IHNAME(I).AND.IHARG6.EQ.IHNAM2(I).AND.
8638     1     IUSE(I).EQ.'V')THEN
8639          ILIST2=I2
8640          ICOL2=IVALUE(ILIST2)
8641          NIRIG2=IN(ILIST2)
8642          GOTO2390
8643C
8644        ELSEIF(IHARG5.EQ.IHNAME(I).AND.IHARG6.EQ.IHNAM2(I).AND.
8645     1         IUSE(I).EQ.'P')THEN
8646          WRITE(ICOUT,999)
8647          CALL DPWRST('XXX','BUG ')
8648          WRITE(ICOUT,221)
8649          CALL DPWRST('XXX','BUG ')
8650          WRITE(ICOUT,2312)
8651          CALL DPWRST('XXX','BUG ')
8652          WRITE(ICOUT,1154)
8653          CALL DPWRST('XXX','BUG ')
8654          WRITE(ICOUT,1156)
8655          CALL DPWRST('XXX','BUG ')
8656          WRITE(ICOUT,1157)
8657          CALL DPWRST('XXX','BUG ')
8658          WRITE(ICOUT,999)
8659          CALL DPWRST('XXX','BUG ')
8660          WRITE(ICOUT,1107)IHARG3,IHARG4
8661          CALL DPWRST('XXX','BUG ')
8662          WRITE(ICOUT,999)
8663          CALL DPWRST('XXX','BUG ')
8664          WRITE(ICOUT,1108)
8665          CALL DPWRST('XXX','BUG ')
8666          IF(IWIDTH.GE.1)THEN
8667            WRITE(ICOUT,1109)(IANS(II),II=1,MIN(80,IWIDTH))
8668            CALL DPWRST('XXX','BUG ')
8669          ENDIF
8670          IERROR='YES'
8671          GOTO19000
8672        ENDIF
8673 2310 CONTINUE
8674C
8675      WRITE(ICOUT,999)
8676      CALL DPWRST('XXX','BUG ')
8677      WRITE(ICOUT,221)
8678      CALL DPWRST('XXX','BUG ')
8679      WRITE(ICOUT,2312)
8680 2312 FORMAT('      THE SPECIFIED SECOND ARGUMENT (VARIABLE NAME OR ',
8681     1       'COLUMN NUMBER)')
8682      CALL DPWRST('XXX','BUG ')
8683      WRITE(ICOUT,1104)
8684      CALL DPWRST('XXX','BUG ')
8685      WRITE(ICOUT,1106)
8686      CALL DPWRST('XXX','BUG ')
8687      WRITE(ICOUT,999)
8688      CALL DPWRST('XXX','BUG ')
8689      WRITE(ICOUT,1107)IRIGHT,IRIGH2
8690      CALL DPWRST('XXX','BUG ')
8691      WRITE(ICOUT,999)
8692      CALL DPWRST('XXX','BUG ')
8693      WRITE(ICOUT,1108)
8694      CALL DPWRST('XXX','BUG ')
8695      IF(IWIDTH.GE.1)THEN
8696        WRITE(ICOUT,1109)(IANS(I),I=1,MIN(80,IWIDTH))
8697        CALL DPWRST('XXX','BUG ')
8698      ENDIF
8699      IERROR='YES'
8700      GOTO19000
8701C
8702 2390 CONTINUE
8703C
8704C               ******************************************************
8705C               **  STEP 6.4--                                      **
8706C               **  CHECK THAT THE 2 VARIABLES HAVE THE SAME        **
8707C               **  NUMBER OF ELEMENTS.                             **
8708C               ******************************************************
8709C
8710
8711      ISTEPN='6.4'
8712      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8713C
8714      IF(NIRIG2.NE.NIRIGH)THEN
8715        WRITE(ICOUT,221)
8716        CALL DPWRST('XXX','BUG ')
8717        WRITE(ICOUT,2412)
8718 2412   FORMAT('      FOR A 2-VARIABLE MATHEMATICAL OPERATION, THE')
8719        CALL DPWRST('XXX','BUG ')
8720        WRITE(ICOUT,2413)
8721 2413   FORMAT('      NUMBER OF OBSERVATIONS IN EACH VARIABLE MUST BE')
8722        CALL DPWRST('XXX','BUG ')
8723        WRITE(ICOUT,2415)
8724 2415   FORMAT('      THE SAME;  SUCH WAS NOT THE CASE HERE.')
8725        CALL DPWRST('XXX','BUG ')
8726        WRITE(ICOUT,2416)IHARG3,IHARG4,NIRIGH
8727 2416   FORMAT('           VARIABLE ',2A4,' HAS ',I8,' OBSERVATIONS;')
8728        CALL DPWRST('XXX','BUG ')
8729        WRITE(ICOUT,2416)IHARG5,IHARG6,NIRIG2
8730        CALL DPWRST('XXX','BUG ')
8731        WRITE(ICOUT,1108)
8732        CALL DPWRST('XXX','BUG ')
8733        IF(IWIDTH.GE.1)THEN
8734          WRITE(ICOUT,1109)(IANS(I),I=1,MIN(80,IWIDTH))
8735          CALL DPWRST('XXX','BUG ')
8736        ENDIF
8737        IERROR='YES'
8738        GOTO19000
8739      ENDIF
8740      GOTO7000
8741C
8742C               *******************************
8743C               **  STEP 7--                 **
8744C               **  DETERMINE THE SUBCASE    **
8745C               **  AND BRANCH ACCORDINGLY.  **
8746C               *******************************
8747C
8748 7000 CONTINUE
8749C
8750      ISTEPN='7'
8751      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8752C
8753      IF(IBUGA3.EQ.'ON')THEN
8754        WRITE(ICOUT,7006)NINEW,NIRIGH,NIRIG2,NUMVAR
8755 7006   FORMAT('NINEW,NIRIGH,NIRIG2,NUMVAR = ',4I8)
8756        CALL DPWRST('XXX','BUG ')
8757      ENDIF
8758C
8759      IF(NUMVAR.EQ.1)THEN
8760        IF(ILOCV.EQ.NUMARG)GOTO8000
8761        ILOCVP=ILOCV+1
8762        IF(ILOCV.LT.NUMARG.AND.IHARG(ILOCVP).EQ.'SUBS'.AND.
8763     1     IHARG2(ILOCVP).EQ.'ET  ')GOTO9000
8764        IF(ILOCV.LT.NUMARG.AND.IHARG(ILOCVP).EQ.'EXCE'.AND.
8765     1     IHARG2(ILOCVP).EQ.'PT  ')GOTO9000
8766        IF(ILOCV.LT.NUMARG.AND.IHARG(ILOCVP).EQ.'FOR '.AND.
8767     1     IHARG2(ILOCVP).EQ.'    ')GOTO10000
8768      ELSEIF(NUMVAR.EQ.2)THEN
8769        ILOCVP=ILOCV+1
8770        IF(ILOCVP.EQ.NUMARG)GOTO8000
8771        ILOCV2=ILOCV+2
8772        IF(ILOCVP.LT.NUMARG.AND.IHARG(ILOCV2).EQ.'SUBS'.AND.
8773     1     IHARG2(ILOCV2).EQ.'ET  ')GOTO9000
8774        IF(ILOCVP.LT.NUMARG.AND.IHARG(ILOCV2).EQ.'EXCE'.AND.
8775     1     IHARG2(ILOCV2).EQ.'PT  ')GOTO9000
8776        IF(ILOCVP.LT.NUMARG.AND.IHARG(ILOCV2).EQ.'FOR '.AND.
8777     1     IHARG2(ILOCV2).EQ.'    ')GOTO10000
8778      ENDIF
8779C
8780      WRITE(ICOUT,221)
8781      CALL DPWRST('XXX','BUG ')
8782      WRITE(ICOUT,7012)
8783 7012 FORMAT('      ILLEGAL SYNTAX FOR LET COMMAND')
8784      CALL DPWRST('XXX','BUG ')
8785      WRITE(ICOUT,1108)
8786      CALL DPWRST('XXX','BUG ')
8787      WRITE(ICOUT,1109)(IANS(I),I=1,MIN(80,IWIDTH))
8788      CALL DPWRST('XXX','BUG ')
8789      IERROR='YES'
8790      GOTO19000
8791C
8792C               ************************************************
8793C               **  STEP 8--                                  **
8794C               **  TREAT THE FULL VARIABLE CASE.             **
8795C               **  EXAMPLE--LET Y = WEIBULL ADJUSTED RANKS X **
8796C               **  THEN JUMP TO STEP NUMBER 10 BELOW         **
8797C               **  FOR THE LIST UPDATING AND                 **
8798C               **  FOR SOME INFORMATIVE PRINTING.            **
8799C               ************************************************
8800C
8801 8000 CONTINUE
8802C
8803      IF(IBUGA3.EQ.'ON')THEN
8804        ISTEPN='8'
8805        CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8806        WRITE(ICOUT,8011)NINEW,NIRIGH,NUMVAR
8807 8011   FORMAT('NINEW,NIRIGH,NUMVAR = ',3I8)
8808        CALL DPWRST('XXX','BUG ')
8809      ENDIF
8810C
8811      ICASEQ='FULL'
8812      NIOLD=NIRIGH
8813      IF(NUMVAR.GE.2.AND.NIRIG2.GT.NIOLD)NIOLD=NIRIG2
8814      NINEW=NIOLD
8815      DO8100I=1,NINEW
8816        ISUB(I)=1
8817 8100 CONTINUE
8818      NIISUB=NIOLD
8819      GOTO11000
8820C
8821C               ********************************************************
8822C               **  STEP 9--                                           *
8823C               **  TREAT THE PARTIAL VARIABLE SUBSET CASE.            *
8824C               **  EXAMPLE--LET Y = WEIBULL ADJUSTED RANKS X          *
8825C               **                   SUBSET 2 3 5                      *
8826C               **  JUMP TO STEP NUMBER 11 BELOW FOR THE ACTUAL        *
8827C               **  MATHEMATICAL OPERATIOn, FOR THE LIST UPDATING, AND *
8828C               **  FOR SOME INFORMATIVE PRINTING.                     *
8829C               ********************************************************
8830C
883119000 CONTINUE
8832      ISTEPN='9'
8833      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8834C
8835      ICASEQ='SUBS'
8836      IF(NUMVAR.EQ.1)ILOCSV=ILOCV+2
8837      IF(NUMVAR.EQ.2)ILOCSV=ILOCV+3
8838      IHSET=IHARG(ILOCSV)
8839      IHSET2=IHARG2(ILOCSV)
8840      IHWUSE='V'
8841      MESSAG='YES'
8842      CALL CHECKN(IHSET,IHSET2,IHWUSE,
8843     1            IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
8844     1            ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOC,IERROR)
8845      IF(IERROR.EQ.'YES')GOTO19000
8846      NIOLD=IN(ILOC)
8847      CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERROR)
8848CCCCC NINEW=NS
8849      NINEW=NIOLD
8850      NIISUB=NIOLD
8851      GOTO11000
8852C
8853C               ********************************************************
8854C               **  STEP 10--                                          *
8855C               **  TREAT THE PARTIAL VARIABLE FOR CASE.               *
8856C               **  EXAMPLE--LET Y = WEIBULL ADJUSTED RANKS X          *
8857C               **                   FOR I = 1 2 10                    *
8858C               **  JUMP TO STEP NUMBER 11 BELOW FOR THE ACTUAL        *
8859C               **  MATHEMATICAL OPERATION, FOR THE LIST UPDATING, AND *
8860C               **  FOR SOME INFORMATIVE PRINTING.                     *
8861C               ********************************************************
8862C
886310000 CONTINUE
8864      ISTEPN='10'
8865      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8866C
8867      ICASEQ='FOR'
8868      CALL DPFOR(NIOLD,NINEW,IROW1,IROWN,
8869     1           NLOCAL,ILOCS,NS,IBUGQ,IERROR)
8870      NIFOR=NINEW
8871      NIISUB=NINEW
8872      GOTO11000
8873C
8874C               ********************************************
8875C               **  STEP 11--                             **
8876C               **  GENERATE    WEIBULL   ADJUSTED RANKS. **
8877C               **  STORE THEM TEMPORARILY IN             **
8878C               **  THE VECTOR TEMP(.).                   **
8879C               ********************************************
8880C
888111000 CONTINUE
8882      ISTEPN='11'
8883      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8884C
8885      NITEMP=NINEW
8886      NS2=0
8887      DO11100I=1,NINEW
8888        IJ=MAXN*(ICOLR-1)+I
8889C
8890        IF(IBUGA3.EQ.'ON')THEN
8891          WRITE(ICOUT,11110)I,NS2,NINEW,ISUB(I),IJ,V(IJ)
889211110     FORMAT('I,NS2,NINEW,ISUB(I),IJ,V(IJ) = ',5I8,F12.5)
8893          CALL DPWRST('XXX','BUG ')
8894        ENDIF
8895C
8896        IF(ISUB(I).EQ.0)GOTO11100
8897C
8898        IF(NUMVAR.EQ.1)THEN
8899          IF(I.LE.NIRIGH)THEN
8900            NS2=NS2+1
8901            IJ=MAXN*(ICOLR-1)+I
8902            IF(ICOLR.LE.MAXCOL)TEMP(NS2)=1.0
8903            IF(ICOLR.EQ.MAXCP1)TEMP(NS2)=1.0
8904            IF(ICOLR.EQ.MAXCP2)TEMP(NS2)=1.0
8905            IF(ICOLR.EQ.MAXCP3)TEMP(NS2)=1.0
8906            IF(ICOLR.EQ.MAXCP4)TEMP(NS2)=1.0
8907            IF(ICOLR.EQ.MAXCP5)TEMP(NS2)=1.0
8908            IF(ICOLR.EQ.MAXCP6)TEMP(NS2)=1.0
8909          ENDIF
8910        ELSEIF(NUMVAR.EQ.2)THEN
8911          IF(I.LE.NIRIG2)THEN
8912            NS2=NS2+1
8913            IJ=MAXN*(ICOL2-1)+I
8914            IF(ICOL2.LE.MAXCOL)TEMP(NS2)=V(IJ)
8915            IF(ICOL2.EQ.MAXCP1)TEMP(NS2)=PRED(I)
8916            IF(ICOL2.EQ.MAXCP2)TEMP(NS2)=RES(I)
8917            IF(ICOL2.EQ.MAXCP3)TEMP(NS2)=RES(I)
8918            IF(ICOL2.EQ.MAXCP4)TEMP(NS2)=RES(I)
8919            IF(ICOL2.EQ.MAXCP5)TEMP(NS2)=RES(I)
8920            IF(ICOL2.EQ.MAXCP6)TEMP(NS2)=RES(I)
8921          ENDIF
8922        ENDIF
8923C
892411100 CONTINUE
8925C
8926      IF(IBUGA3.EQ.'ON')THEN
8927        WRITE(ICOUT,11131)ICOLL,ICOLR,ICOL2,NS2,NINEW,ICASEQ
892811131   FORMAT('ICOLL,ICOLR,ICOL2,NS2,NINEW,ICASEQ = ',5I8,2X,A4)
8929        CALL DPWRST('XXX','BUG ')
8930      ENDIF
8931C
8932      IWRITE='ON'
8933      IF(IPRINT.EQ.'OFF' .OR. IFEEDB.EQ.'OFF')IWRITE='OFF'
8934C
8935      IF(IBUGA3.EQ.'ON')THEN
8936        WRITE(ICOUT,11132)(TEMP(I),I=1,NS2)
893711132   FORMAT(F10.5)
8938        CALL DPWRST('XXX','BUG ')
8939      ENDIF
8940C
8941      CALL WEIBAR(TEMP,NS2,IWRITE,TEMP2,IBUGA3,IERROR)
8942C
8943      IF(IBUGA3.EQ.'ON')THEN
8944        WRITE(ICOUT,999)
8945        CALL DPWRST('XXX','BUG ')
8946        WRITE(ICOUT,11132)(TEMP2(I),I=1,NS2)
8947        CALL DPWRST('XXX','BUG ')
8948      ENDIF
8949C
8950C               ********************************************************
8951C               **  STEP 12--                                         **
8952C               **  IF CALLED FOR (THAT IS, IF IBUGA3 IS ON),         **
8953C               **  PRINT OUT THE INTERMEDIATE VARIABLE TEMP2(.).     **
8954C               **  THIS IS USEFUL FOR DIAGNOSTIC PURPOSES            **
8955C               **  IN REVIEWING THE OUTPUT FROM THIS SUBROUTINE.     **
8956C               ********************************************************
8957C
8958C
8959      IF(IBUGA3.EQ.'ON')THEN
8960        ISTEPN='12'
8961        CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8962        WRITE(ICOUT,12051)
896312051   FORMAT('OUTPUT FROM MIDDLE OF DPWEAR AFTER WEIBAR ',
8964     1         'HAS BEEN CALLED--')
8965        CALL DPWRST('XXX','BUG ')
8966        WRITE(ICOUT,12052)NS2
896712052   FORMAT('NS2 = ',I8)
8968        CALL DPWRST('XXX','BUG ')
8969        IF(NS2.GT.0)THEN
8970          DO12054I=1,NS2
8971            WRITE(ICOUT,12055)I,TEMP(I),TEMP2(I)
897212055       FORMAT('I,TEMP(I),TEMP2(I) = ',I8,2G15.7)
8973            CALL DPWRST('XXX','BUG ')
897412054     CONTINUE
8975        ENDIF
8976      ENDIF
8977C
8978C               ******************************************************
8979C               **  STEP 13--                                       **
8980C               **  COPY THE WEIBULL ADJUSTED RANKS                 **
8981C               **  FROM THE INTERMEDIATE VECTOR TEMP2(.)           **
8982C               **  TO THE APPROPRIATE COLUMN                       **
8983C               **  (BASED ON THE QUALIFIER--FULL, SUBSET, OR FOR)  **
8984C               **  IN THE INTERNAL DATAPLOT DATA TABLE.            **
8985C               ******************************************************
8986C
8987      ISTEPN='13'
8988      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
8989C
8990      NS3=0
8991      DO13000I=1,NIISUB
8992        IJ=MAXN*(ICOLL-1)+I
8993        IF(ISUB(I).EQ.0)GOTO13000
8994        NS3=NS3+1
8995        IF(ICOLL.LE.MAXCOL)V(IJ)=TEMP2(NS3)
8996        IF(ICOLL.EQ.MAXCP1)PRED(I)=TEMP2(NS3)
8997        IF(ICOLL.EQ.MAXCP2)RES(I)=TEMP2(NS3)
8998        IF(ICOLL.EQ.MAXCP3)YPLOT(I)=TEMP2(NS3)
8999        IF(ICOLL.EQ.MAXCP4)XPLOT(I)=TEMP2(NS3)
9000        IF(ICOLL.EQ.MAXCP5)X2PLOT(I)=TEMP2(NS3)
9001        IF(ICOLL.EQ.MAXCP6)TAGPLO(I)=TEMP2(NS3)
9002        IF(NS3.EQ.1)IROW1=I
9003        IROWN=I
900413000 CONTINUE
9005C
9006C               *******************************************
9007C               **  STEP 14--                            **
9008C               **  CARRY OUT THE LIST UPDATING AND      **
9009C               **  GENERATE THE INFORMATIVE PRINTING.   **
9010C               *******************************************
9011C
9012      ISTEPN='14'
9013      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
9014C
9015      IF(ICASEQ.EQ.'FULL')THEN
9016        IF(NEWNAM.EQ.'NO')THEN
9017          NINEW=NIRIGH
9018        ELSEIF(NEWNAM.EQ.'YES')THEN
9019          NINEW=IROWN
9020        ENDIF
9021      ELSEIF(ICASEQ.EQ.'SUBS')THEN
9022        IF(NEWNAM.EQ.'NO'.AND.NLEFT.GE.IROWN)THEN
9023          NINEW=NLEFT
9024        ELSEIF(NEWNAM.EQ.'NO'.AND.NLEFT.LT.IROWN)THEN
9025          NINEW=IROWN
9026        ELSEIF(NEWNAM.EQ.'YES')THEN
9027           NINEW=IROWN
9028        ENDIF
9029      ELSEIF(ICASEQ.EQ.'FOR')THEN
9030        IF(NEWNAM.EQ.'NO'.AND.NLEFT.GE.IROWN)THEN
9031          NINEW=NLEFT
9032        ELSEIF(NEWNAM.EQ.'NO'.AND.NLEFT.LT.IROWN)THEN
9033          NINEW=IROWN
9034        ELSEIF(NEWNAM.EQ.'YES')THEN
9035          NINEW=IROWN
9036        ENDIF
9037      ENDIF
9038C
9039      IHNAME(ILISTL)=ILEFT
9040      IHNAM2(ILISTL)=ILEFT2
9041      IUSE(ILISTL)='V'
9042      IVALUE(ILISTL)=ICOLL
9043      VALUE(ILISTL)=ICOLL
9044      IN(ILISTL)=NINEW
9045C
9046      IF(NEWNAM.EQ.'YES')THEN
9047        NUMNAM=NUMNAM+1
9048        NUMCOL=NUMCOL+1
9049      ENDIF
9050C
9051      DO14100J4=1,NUMNAM
9052        IF(IUSE(J4).EQ.'V'.AND.IVALUE(J4).EQ.ICOLL)THEN
9053          IUSE(J4)='V'
9054          IVALUE(J4)=ICOLL
9055          VALUE(J4)=ICOLL
9056          IN(J4)=NINEW
9057        ENDIF
905814100 CONTINUE
9059C
9060      IF(IPRINT.EQ.'ON' .AND. IFEEDB.EQ.'ON')THEN
9061        WRITE(ICOUT,999)
9062        CALL DPWRST('XXX','BUG ')
9063        WRITE(ICOUT,14011)ILEFT,ILEFT2,NS2
906414011   FORMAT('THE NUMBER OF VALUES GENERATED FOR ',
9065     1         'THE VARIABLE ',2A4,' = ',I8)
9066        CALL DPWRST('XXX','BUG ')
9067        WRITE(ICOUT,999)
9068        CALL DPWRST('XXX','BUG ')
9069C
9070        IJ=MAXN*(ICOLL-1)+IROW1
9071        IJN=MAXN*(ICOLL-1)+IROWN
9072        IF(ICOLL.LE.MAXCOL)THEN
9073          WRITE(ICOUT,14021)ILEFT,ILEFT2,V(IJ),IROW1
907414021     FORMAT('THE FIRST           COMPUTED VALUE OF ',2A4,
9075     1           ' = ',E15.7,'   (ROW ',I6,')')
9076          CALL DPWRST('XXX','BUG ')
9077          IF(NS2.NE.1)THEN
9078            WRITE(ICOUT,14031)NS2,ILEFT,ILEFT2,V(IJN),IROWN
907914031       FORMAT('THE LAST (',I5,'-TH) COMPUTED VALUE OF ',2A4,
9080     1             ' = ',E15.7,'   (ROW ',I6,')')
9081            CALL DPWRST('XXX','BUG ')
9082          ENDIF
9083        ELSEIF(ICOLL.EQ.MAXCP1)THEN
9084          WRITE(ICOUT,14021)ILEFT,ILEFT2,PRED(IROW1),IROW1
9085          CALL DPWRST('XXX','BUG ')
9086          IF(NS2.NE.1)THEN
9087            WRITE(ICOUT,14031)NS2,ILEFT,ILEFT2,PRED(IROWN),IROWN
9088            CALL DPWRST('XXX','BUG ')
9089          ENDIF
9090        ELSEIF(ICOLL.EQ.MAXCP2)THEN
9091           WRITE(ICOUT,14021)ILEFT,ILEFT2,RES(IROW1),IROW1
9092           CALL DPWRST('XXX','BUG ')
9093          IF(NS2.NE.1)THEN
9094            WRITE(ICOUT,14031)NS2,ILEFT,ILEFT2,RES(IROWN),IROWN
9095            CALL DPWRST('XXX','BUG ')
9096          ENDIF
9097        ELSEIF(ICOLL.EQ.MAXCP3)THEN
9098          WRITE(ICOUT,14021)ILEFT,ILEFT2,YPLOT(IROW1),IROW1
9099          CALL DPWRST('XXX','BUG ')
9100          IF(NS2.NE.1)THEN
9101            WRITE(ICOUT,14031)NS2,ILEFT,ILEFT2,YPLOT(IROWN),IROWN
9102            CALL DPWRST('XXX','BUG ')
9103          ENDIF
9104        ELSEIF(ICOLL.EQ.MAXCP4)THEN
9105          WRITE(ICOUT,14021)ILEFT,ILEFT2,XPLOT(IROW1),IROW1
9106          CALL DPWRST('XXX','BUG ')
9107          IF(NS2.NE.1)THEN
9108            WRITE(ICOUT,14031)NS2,ILEFT,ILEFT2,XPLOT(IROWN),IROWN
9109            CALL DPWRST('XXX','BUG ')
9110          ENDIF
9111        ELSEIF(ICOLL.EQ.MAXCP5)THEN
9112          WRITE(ICOUT,14021)ILEFT,ILEFT2,X2PLOT(IROW1),IROW1
9113          CALL DPWRST('XXX','BUG ')
9114          IF(NS2.NE.1)THEN
9115            WRITE(ICOUT,14031)NS2,ILEFT,ILEFT2,X2PLOT(IROWN),IROWN
9116            CALL DPWRST('XXX','BUG ')
9117          ENDIF
9118        ELSEIF(ICOLL.EQ.MAXCP6)THEN
9119          WRITE(ICOUT,14021)ILEFT,ILEFT2,TAGPLO(IROW1),IROW1
9120          CALL DPWRST('XXX','BUG ')
9121          IF(NS2.NE.1)THEN
9122            WRITE(ICOUT,14031)NS2,ILEFT,ILEFT2,TAGPLO(IROWN),IROWN
9123            CALL DPWRST('XXX','BUG ')
9124          ENDIF
9125        ENDIF
9126C
9127        IF(NS2.EQ.1)THEN
9128          WRITE(ICOUT,14041)
912914041     FORMAT('SINCE THE GENERATED SAMPLE SIZE WAS ONLY 1,')
9130          CALL DPWRST('XXX','BUG ')
9131          WRITE(ICOUT,14042)
913214042     FORMAT('THE ABOVE VALUE WAS THE SOLE VALUE COMPUTED.')
9133          CALL DPWRST('XXX','BUG ')
9134        ENDIF
9135C
9136        WRITE(ICOUT,999)
9137        CALL DPWRST('XXX','BUG ')
9138        WRITE(ICOUT,14112)ILEFT,ILEFT2,ICOLL
913914112   FORMAT('THE CURRENT COLUMN FOR THE VARIABLE ',2A4,' = ',I8)
9140        CALL DPWRST('XXX','BUG ')
9141        WRITE(ICOUT,14113)ILEFT,ILEFT2,NINEW
914214113   FORMAT('THE CURRENT LENGTH OF THE VARIABLE ',2A4,' = ',I8)
9143        CALL DPWRST('XXX','BUG ')
9144        WRITE(ICOUT,999)
9145        CALL DPWRST('XXX','BUG ')
9146        WRITE(ICOUT,999)
9147        CALL DPWRST('XXX','BUG ')
9148      ENDIF
9149C
9150C               *****************
9151C               **  STEP 90--  **
9152C               **  EXIT       **
9153C               *****************
9154C
9155 9000 CONTINUE
9156      IF(IBUGA3.EQ.'ON')THEN
9157        WRITE(ICOUT,999)
9158        CALL DPWRST('XXX','BUG ')
9159        WRITE(ICOUT,9011)
9160 9011   FORMAT('***** AT THE END       OF DPWEAR--')
9161        CALL DPWRST('XXX','BUG ')
9162        WRITE(ICOUT,9012)IFOUND,IERROR
9163 9012   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
9164        CALL DPWRST('XXX','BUG ')
9165        WRITE(ICOUT,9015)NS,NS2,NS3,NINEW,NIISUB
9166 9015   FORMAT('NS,NS2,NS3,NINEW,NIISUB = ',5I8)
9167        CALL DPWRST('XXX','BUG ')
9168      ENDIF
9169C
9170      RETURN
9171      END
9172      SUBROUTINE DPWEB(ICOM,ICOM2,IHARG,IHARG2,NUMARG,
9173     1                 IANSLC,IWIDTH,IBUGS2,ISUBRO,IFOUND,IERROR)
9174C
9175C     PURPOSE--ACCESS THE WORLD WIDE WEB
9176C
9177C              THIS COMMAND TAKES THE FOLLOWING FORMS:
9178C                  WEB                - GO TO DEFAULT URL
9179C                  WEB <STRING>  - GO TO URL SPECIFIED BY <STRING>
9180C     INPUT  ARGUMENTS--IANS    (A  HOLLERITH VECTOR)
9181C                     --IWIDTH (AN INTEGER VARIABLE)
9182C                     --IBROWS  (A CHARACTER VARIABLE THAT IDENTIFIES
9183C                               THE BROWSER TO USE)
9184C                     --IURL    (A CHARACTER VARIABLE THAT IDENTIFIES
9185C                               THE WEB URL OF THE DATAPLOT HOME PAGE)
9186C     OUTPUT ARGUMENTS--IFOUND ('YES' OR 'NO' )
9187C                     --IERROR ('YES' OR 'NO' )
9188C     WRITTEN BY--ALAN HECKERT
9189C                 STATISTICAL ENGINEERING DIVISION
9190C                 INFORMATION TECHNOLOGY LABORATORY
9191C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
9192C                 GAITHERSBURG, MD 20899-8980
9193C                 PHONE--301-975-2899
9194C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
9195C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
9196C     LANGUAGE--ANSI FORTRAN (1977)
9197C     VERSION NUMBER--97/4
9198C     ORIGINAL VERSION--APRIL     1997.
9199C     UPDATED         --MARCH     1999. UPDATE A FEW ADDRESSES
9200C     UPDATED         --MARCH     1999. TREAT "HANDBOOK" SPECIAL
9201C     UPDATED         --NOVEMBER  2015. ADD "WEB SEARCH" OPTION
9202C     UPDATED         --APRIL     2018. ADD SOME SYNONYMS
9203C     UPDATED         --MARCH     2019. SET SYSTEM PERSIST
9204C                                       SET SYSTEM HIDDEN
9205C     UPDATED         --NOVEMBER  2019. SET FILE NAME QUOTE ON
9206C     UPDATED         --NOVEMBER  2019. SET HYPHEN WORD SEPARATOR OFF
9207C     UPDATED         --DECEMBER  2019. SUPPORT FOR EDGE BROWSER
9208C
9209C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
9210C
9211      CHARACTER*4 ICOM
9212      CHARACTER*4 ICOM2
9213      CHARACTER*4 IHARG
9214      CHARACTER*4 IHARG2
9215      CHARACTER*4 IANSLC
9216      CHARACTER*4 IBUGS2
9217      CHARACTER*4 ISUBRO
9218      CHARACTER*4 IFOUND
9219      CHARACTER*4 IERROR
9220C
9221      CHARACTER*4 ISUBN1
9222      CHARACTER*4 ISUBN2
9223      CHARACTER*4 ISTEPN
9224      CHARACTER*4 IERRO2
9225      CHARACTER*1 IQUOTE
9226      CHARACTER*500 ICALL
9227      CHARACTER*128 ICANS
9228      CHARACTER*128 ISTRIN
9229      CHARACTER*4 ISSAV1
9230      CHARACTER*4 ISSAV2
9231      CHARACTER*4 ICLESV
9232      CHARACTER*4 IFILQ2
9233      CHARACTER*4 IHYPS2
9234C
9235      DIMENSION IHARG(*)
9236      DIMENSION IHARG2(*)
9237      DIMENSION IANSLC(*)
9238C
9239C-----COMMON----------------------------------------------------------
9240C
9241      INCLUDE 'DPCOPA.INC'
9242      INCLUDE 'DPCOHO.INC'
9243      INCLUDE 'DPCOST.INC'
9244      INCLUDE 'DPCOF2.INC'
9245C
9246      CHARACTER*80 PROFIL
9247      CHARACTER*80 P86FIL
9248      CHARACTER*80 APPDAT
9249      CHARACTER*80 COMNAM
9250      CHARACTER*80 UPROFI
9251      CHARACTER*80 DEFPRI
9252      CHARACTER*20 USRNAM
9253      CHARACTER*20 ISHELL
9254      CHARACTER*4  WINBIT
9255      COMMON/SYSVAR/PROFIL,P86FIL,APPDAT,COMNAM,UPROFI,USRNAM,DEFPRI,
9256     1              WINBIT,ISHELL
9257      COMMON/SYSVA2/NCPROF,NCP86F,NCAPPD,NCCOMP,NCUPRO,NCUSER,NCPRIN,
9258     1              NCSHEL
9259C
9260C-----COMMON VARIABLES (GENERAL)--------------------------------------
9261C
9262      INCLUDE 'DPCOP2.INC'
9263C
9264C-----START POINT-----------------------------------------------------
9265C
9266      ISUBN1='DPWE'
9267      ISUBN2='B   '
9268      IFOUND='YES'
9269      IERROR='NO'
9270      ISTRIN=' '
9271      ICALL=' '
9272      NCSTR=0
9273      NCURL=0
9274C
9275      CALL DPCONA(39,IQUOTE)
9276C
9277      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WEB ')THEN
9278        WRITE(ICOUT,999)
9279  999   FORMAT(1X)
9280        CALL DPWRST('XXX','BUG ')
9281        WRITE(ICOUT,51)
9282   51   FORMAT('***** AT THE BEGINNING OF DPWEB--')
9283        CALL DPWRST('XXX','BUG ')
9284        WRITE(ICOUT,53)IBUGS2,ISUBRO,IERROR,ICOM,ICOM2,IWIDTH,NUMARG
9285   53   FORMAT('IBUGS2,ISUBRO,IERROR,ICOM,ICOM2,IWIDTH,NUMARG = ',
9286     1         5(A4,2X),2I5)
9287        CALL DPWRST('XXX','BUG ')
9288        WRITE(ICOUT,55)(IANSLC(I),I=1,MIN(IWIDTH,80))
9289   55   FORMAT('IANS(.) = ',80A1)
9290        CALL DPWRST('XXX','BUG ')
9291        WRITE(ICOUT,86)IBROWS(1:80)
9292   86   FORMAT('IBROWS = ',A80)
9293        CALL DPWRST('XXX','BUG ')
9294        WRITE(ICOUT,88)IURL(1:80)
9295   88   FORMAT('IDPURL = ',A80)
9296        CALL DPWRST('XXX','BUG ')
9297        WRITE(ICOUT,89)IHBURL(1:80)
9298   89   FORMAT('IHBURL = ',A80)
9299        CALL DPWRST('XXX','BUG ')
9300      ENDIF
9301C
9302CCCCC IF(
9303CCCCC1       (IHOST1.EQ.'SUN') .OR.
9304CCCCC1       (IHOST1.EQ.'CRAY' .AND. IOPSY1.EQ.'UNIX') .OR.
9305CCCCC1       (IHOST1.EQ.'CONV') .OR.
9306CCCCC1       (IHOST1.EQ.'SGI ') .OR.
9307CCCCC1       (IHOST1.EQ.'HP-9') .OR.
9308CCCCC1       (IHOST1.EQ.'AIX ') .OR.
9309CCCCC1       (IHOST1.EQ.'LINU') .OR.
9310CCCCC1       (IOPSY1.EQ.'UNIX'))GOTO199
9311CCCCC IF(IHOST1.EQ.'IBM-'.AND.ICOMPI.EQ.'MS-F')GOTO199
9312CC100 CONTINUE
9313CCCCC WRITE(ICOUT,999)
9314CCCCC CALL DPWRST('XXX','BUG ')
9315CCCCC WRITE(ICOUT,111)
9316CC111 FORMAT('***** FROM DPWEB--WEB COMMAND CURRENTLY ONLY SUPPORTED ',
9317CCCCC1       'UNIX OR IBM-PC WINDOWS PLATFORMS.')
9318CC199 CONTINUE
9319C
9320C               ******************************************************
9321C               **  STEP 1--                                        **
9322C               **  CHECK FOR SOME SPECIAL CASES FIRST              **
9323C               ******************************************************
9324C
9325      NCURL=0
9326      IHB=0
9327      IF((NUMARG.GE.1.AND.IHARG(1).EQ.'SEAR') .OR.
9328     1   (ICOM.EQ.'????' .AND. ICOM2.EQ.'?   ') .OR.
9329     1    ICOM.EQ.'WS  ')THEN
9330C
9331        IFLAGW=0
9332        IF(ICOM.EQ.'WS  ')IFLAGW=1
9333        IF(ICOM.EQ.'????' .AND. ICOM2.EQ.'?   ')IFLAGW=1
9334C
9335C       2015/11: ADD SEARCH OPTION.  CURRENTLY SUPPORT THE FOLLOWING
9336C                SEARCH ENGINES:
9337C
9338C                  1. GOOGLE (THE DEFAULT)
9339C                  2. BING
9340C                  3. DUCKDUCKGO
9341C                  4. WOW (AOL SEARCH ENGINE)
9342C                  5. YAHOO
9343C
9344        IF(IWEBSE.EQ.'BING' .OR. IWEBSE.EQ.'GOOG' .OR.
9345     1     IWEBSE.EQ.'WOW' .OR. IWEBSE.EQ.'YAHO')THEN
9346          IF((IFLAGW.EQ.0 .AND. NUMARG.EQ.1) .OR.
9347     1      (IFLAGW.EQ.1 .AND. NUMARG.EQ.0))THEN
9348            IF(IWEBSE.EQ.'BING')THEN
9349              ISTRIN='https://www.bing.com/'
9350              NCURL=21
9351            ELSEIF(IWEBSE.EQ.'WOW ')THEN
9352              ISTRIN='http://www.wow.com/'
9353              NCURL=19
9354            ELSEIF(IWEBSE.EQ.'YAHO')THEN
9355              ISTRIN='https://search.yahoo.com/'
9356              NCURL=25
9357            ELSE
9358              ISTRIN='https://www.google.com/'
9359              NCURL=23
9360            ENDIF
9361          ELSE
9362            IF(IWEBSE.EQ.'BING')THEN
9363              ISTRIN='https://www.bing.com/search?q='
9364              NCURL=30
9365            ELSEIF(IWEBSE.EQ.'WOW ')THEN
9366              ISTRIN='http://www.wow.com/search?q='
9367              NCURL=28
9368            ELSEIF(IWEBSE.EQ.'YAHO')THEN
9369              ISTRIN='https://search.yahoo.com/search?q='
9370              NCURL=34
9371            ELSE
9372              ISTRIN='https://www.google.com/search?q='
9373              NCURL=32
9374            ENDIF
9375C
9376            IFRST=2
9377            IF(IFLAGW.EQ.1)IFRST=1
9378            DO211I=IFRST,NUMARG
9379              IF(I.GT.IFRST)THEN
9380                ISTRIN(NCURL+1:NCURL+1)='+'
9381                NCURL=NCURL+1
9382              ENDIF
9383              ISTRIN(NCURL+1:NCURL+4)=IHARG(I)
9384              ISTRIN(NCURL+5:NCURL+8)=IHARG2(I)
9385              NCURL=NCURL+8
9386              ISTRT=NCURL
9387              ISTOP=NCURL-8
9388              DO213JJ=ISTRT,ISTOP,-1
9389                IF(ISTRIN(JJ:JJ).NE.' ')THEN
9390                  NCURL=JJ
9391                  GOTO219
9392                ENDIF
9393  213         CONTINUE
9394              NCURL=NCURL-8
9395  219         CONTINUE
9396  211       CONTINUE
9397C
9398            IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WEB ')THEN
9399              WRITE(ICOUT,216)NCURL,ISTRIN(1:MIN(100,NCURL))
9400  216         FORMAT('AT 211: NCURL,ISTRIN = ',I5,2X,A100)
9401              CALL DPWRST('XXX','BUG ')
9402            ENDIF
9403C
9404C           IF "SET WEB SEARCH DATAPLOT" SWITCH IS SET TO ON, THEN
9405C           ADD "DATAPLOT" TO SEARCH STRING.
9406C
9407            IF(IWBSDP.EQ.'ON')THEN
9408              ISTRIN(NCURL+1:NCURL+1)='+'
9409              NCURL=NCURL+1
9410              ISTRIN(NCURL+1:NCURL+8)='DATAPLOT'
9411              NCURL=NCURL+8
9412            ENDIF
9413          ENDIF
9414        ELSEIF(IWEBSE.EQ.'DUCK')THEN
9415          ISTRIN='https://www.duckduckgo.com/'
9416          NCURL=27
9417          DO221I=2,NUMARG
9418            IF(I.GT.2)THEN
9419              ISTRIN(NCURL+1:NCURL+1)='+'
9420              NCURL=NCURL+1
9421            ENDIF
9422            ISTRIN(NCURL+1:NCURL+4)=IHARG(I)
9423            ISTRIN(NCURL+5:NCURL+8)=IHARG2(I)
9424            NCURL=NCURL+8
9425            ISTRT=NCURL
9426            ISTOP=NCURL-8
9427            DO223JJ=ISTRT,ISTOP,-1
9428              IF(ISTRIN(JJ:JJ).NE.' ')THEN
9429                NCURL=JJ
9430                GOTO229
9431              ENDIF
9432  223       CONTINUE
9433            NCURL=NCURL-8
9434  229       CONTINUE
9435  221     CONTINUE
9436        ENDIF
9437      ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'NIST')THEN
9438        NCURL=21
9439        ISTRIN='https://www.nist.gov/'
9440      ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'SED ')THEN
9441        NCURL=28
9442        ISTRIN='https://www.nist.gov/itl/sed'
9443      ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'ITL ')THEN
9444        NCURL=25
9445        ISTRIN='https://www.nist.gov/itl/'
9446CCCCC ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'SIMA')THEN
9447CCCCC   NCURL=49
9448CCCCC   ISTRIN='http://www.mel.nist.gov/div826/msid/sima/sima.htm'
9449CCCCC ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'HPCC')THEN
9450CCCCC   NCURL=20
9451CCCCC   ISTRIN='http://www.hpcc.gov/'
9452      ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'SEMA')THEN
9453        NCURL=24
9454        ISTRIN='http://www.sematech.org/'
9455      ELSEIF(NUMARG.GE.1.AND.
9456     1      (IHARG(1).EQ.'JJF ' .OR. IHARG(1).EQ.'FILL'))THEN
9457        NCURL=40
9458        ISTRIN='http:/stat.nist.gov/~filliben/index.html'
9459      ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'HECK')THEN
9460        NCURL=39
9461        ISTRIN='http:/stat.nist.gov/~heckert/index.html'
9462      ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'HAND')THEN
9463        IHB=1
9464      ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'DATA'.AND.
9465     1       IHARG2(1).EQ.'PLOT')THEN
9466        GOTO9000
9467      ENDIF
9468C
9469      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WEB ')THEN
9470        WRITE(ICOUT,999)
9471        CALL DPWRST('XXX','BUG ')
9472        WRITE(ICOUT,291)IHB,NCURL
9473  291   FORMAT('IHB,NCURL=',2I8)
9474        CALL DPWRST('XXX','BUG ')
9475      ENDIF
9476C
9477C               ******************************************************
9478C               **  STEP 2--                                        **
9479C               **  ADD BROWSER TO COMMAND STRING                   **
9480C               ******************************************************
9481C
9482      ISTEPN='52.1'
9483      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WEB ')
9484     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
9485C
9486C     2019/12: FOR MICROSOFT EDGE BROWSER, USE
9487C
9488C                  START  MICROSOFT-EDGE:<url>
9489C
9490C              CHECK FOR "EDGE" AT END OF BROWSER STRING
9491C
9492      ICALL=' '
9493C
9494      DO2000I=MAXBRO,1,-1
9495         NUMBRO=I
9496         IF(IBROWS(I:I).NE.' ')GOTO2009
9497 2000 CONTINUE
9498 2009 CONTINUE
9499C
9500      IFLAGE=0
9501      IF(NUMBRO.GE.4 .AND.
9502     1   (IBROWS(NUMBRO-4:NUMBRO-1).EQ.'EDGE' .OR.
9503     1    IBROWS(NUMBRO-4:NUMBRO-1).EQ.'edge'))THEN
9504        IFLAGE=1
9505        ICALL(1:21)='start microsoft-edge:'
9506        NCSTR=21
9507      ELSEIF(NUMBRO.GT.0)THEN
9508        ICALL(1:NUMBRO)=IBROWS(1:NUMBRO)
9509        NCSTR=NUMBRO+1
9510        ICALL(NCSTR:NCSTR)=' '
9511      ELSE
9512        IF(IHOST1.EQ.'IBM-'.AND.ICOMPI.EQ.'MS-F')THEN
9513          ICALL(1:NCPROF)=PROFIL(1:NCPROF)
9514          NCSTR=NCPROF
9515          ICALL(NCSTR+1:32)='\Internet Explorer\iexplore.exe '
9516          NCSTR=NCSTR+32
9517        ELSEIF(IOPSY2.EQ.'MAC')THEN
9518          ICALL(1:4)='open'
9519          NCSTR=4
9520        ELSEIF(IOPSY1.EQ.'UNIX' .OR. IOPSY1.EQ.'LINU')THEN
9521          ICALL(1:8)='xdg-open'
9522          NCSTR=8
9523        ENDIF
9524      ENDIF
9525C
9526C     CHECK IF BROWSWER SET TO INTERNET EXPLORER
9527C
9528CCCCC IBRWFL='NETS'
9529CCCCC IF(NUMBRO.GE.8)THEN
9530CCCCC   DO2025I=1,NUMBRO-7
9531CCCCC     IF(IBROWS(I:I+7).EQ.'IEXPLORE' .OR.
9532CCCCC1       IBROWS(I:I+7).EQ.'iexplore')THEN
9533CCCCC        IBRWFL='IEXP'
9534CCCCC        GOTO2028
9535CCCCC     ENDIF
9536C2025   CONTINUE
9537C2028   CONTINUE
9538CCCCC ENDIF
9539C
9540C               ******************************************************
9541C               **  STEP 3--                                        **
9542C               **  CHECK FOR URL ON COMMAND LINE.  IF NOT FOUND,   **
9543C               **  CHECK FOR IURL VARIABLE FROM PRIOR SET URL      **
9544C               ******************************************************
9545C
9546      IF(NCURL.GT.0.AND.IHB.EQ.0)GOTO3099
9547C
9548      DO3010I=1,128
9549        ICANS(I:I)=IANSLC(I)
9550 3010 CONTINUE
9551C
9552      IF(NUMARG.LT.1)THEN
9553        NCSTRI=0
9554        GOTO3019
9555      ENDIF
9556      ISTART=1
9557      ISTOP=IWIDTH
9558      IWORD=2
9559      IF(IFLAGW.EQ.1)IWORD=IWORD-1
9560      IF(IHB.EQ.1.AND.NUMARG.GT.1)THEN
9561        IWORD=IWORD+1
9562      ELSEIF(IHB.EQ.1.AND.NUMARG.LE.1)THEN
9563        NCSTRI=0
9564        GOTO3099
9565      ENDIF
9566C
9567      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WEB ')THEN
9568        WRITE(ICOUT,3016)ISTART,ISTOP,IWORD,IFLAGW
9569 3016   FORMAT('BEFORE DPEXWO: ISTART,ISTOP,IWORD,IFLAGW = ',4I8)
9570        CALL DPWRST('XXX','BUG ')
9571      ENDIF
9572C
9573      IFILQ2=IFILQU
9574      IHYPS2=IHYPSW
9575      IFILQU='ON'
9576      IHYPSW='OFF'
9577      ISTRIN=' '
9578      NCSTRI=0
9579      CALL DPEXWO(ICANS,ISTART,ISTOP,IWORD,ICOL1,ICOL2,
9580     1            ISTRIN,NCSTRI,IBUGS2,ISUBRO,IERROR)
9581      IFILQU=IFILQ2
9582      IHYPSW=IHYPS2
9583C
9584C     2019/11: STRIP OFF BEGINNING AND ENDING QUOTES IF FOUND.
9585C
9586      IF(ISTRIN(NCSTRI:NCSTRI).EQ.'"')THEN
9587        ISTRIN(NCSTRI:NCSTRI)=' '
9588        NCSTRI=NCSTRI-1
9589      ENDIF
9590      IF(ISTRIN(1:1).EQ.'"')THEN
9591        ISTRIN(1:NCSTRI-1)=ISTRIN(2:NCSTRI)
9592        NCSTRI=NCSTRI-1
9593      ENDIF
9594C
9595      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WEB ')THEN
9596        WRITE(ICOUT,3017)NCSTRI,ISTRIN(1:NCSTRI)
9597 3017   FORMAT('AFTER DPEXWO: NCSTRI,ISTRIN = ',I8,2X,80A1)
9598        CALL DPWRST('XXX','BUG ')
9599      ENDIF
9600C
9601 3019 CONTINUE
9602      IF(NCSTRI.LE.0)THEN
9603        DO3050I=80,1,-1
9604          NCSTRI=I
9605          IF(IURL(I:I).NE.' ')GOTO3059
9606 3050   CONTINUE
9607 3059   CONTINUE
9608        IF(NCSTRI.GT.0)THEN
9609          ISTRIN(1:NCSTRI)=IURL(1:NCSTRI)
9610        ELSE
9611          NCSTRI=21
9612          ISTRIN(1:NCSTRI)='https://www.nist.gov/'
9613        ENDIF
9614      ENDIF
9615C
9616 3099 CONTINUE
9617C
9618C  IF "SET NETSCAPE OLD" COMMAND WAS ENTERED, THEN USE
9619C  -remote NETSCAPE OPTION.  THIS ONLY APPLIES TO UNIX PLATFORMS.
9620C
9621C  2014/10: COMMENT THIS SECTION OUT FOR NOW AS THIS APPLIES
9622C           TO AN OBSOLETE BROWSER.
9623C
9624CCCCC IF(IHOST1.EQ.'IBM-')THEN
9625CCCCC   IF(IBRWFL.EQ.'NETS')THEN
9626CCCCC     NCSTR=NCSTR+1
9627CCCCC     NCSTR2=NCSTR+3
9628CCCCC     ICALL(NCSTR:NCSTR2)=' -h '
9629CCCCC     NCSTR=NCSTR2
9630CCCCC   ENDIF
9631CCCCC   GOTO5129
9632CCCCC ENDIF
9633C
9634CCCCC IF(INETSW.EQ.'OLD'.AND.IHOST1.NE.'IBM-')THEN
9635CCCCC   NCSTR=NCSTR+1
9636CCCCC   NCSTR2=NCSTR+8
9637CCCCC   ICALL(NCSTR:NCSTR2)=' -remote '
9638CCCCC   NCSTR=NCSTR2+1
9639CCCCC   ICALL(NCSTR:NCSTR)=IQUOTE
9640CCCCC   NCSTR=NCSTR+1
9641CCCCC   NCSTR2=NCSTR+7
9642CCCCC   ICALL(NCSTR:NCSTR2)='openURL('
9643CCCCC   NCSTR=NCSTR2
9644CCCCC ENDIF
9645C
9646      IF(IHB.EQ.1)THEN
9647        NCSTR=NCSTR+1
9648        NCSTR2=NCSTR+NCURL-1
9649        ICALL(NCSTR:NCSTR2)=IHBURL(1:NCURL)
9650        NCSTR=NCSTR2
9651        IF(NCSTRI.GT.0)THEN
9652          NCSTR=NCSTR+1
9653          NCSTR2=NCSTR+NCSTRI-1
9654          ICALL(NCSTR:NCSTR2)=ISTRIN(1:NCSTRI)
9655          NCSTR=NCSTR2
9656        ENDIF
9657      ELSEIF(NCURL.GT.0)THEN
9658        NCSTR=NCSTR+1
9659        NCSTR2=NCSTR+NCURL-1
9660        ICALL(NCSTR:NCSTR2)=ISTRIN(1:NCURL)
9661        NCSTR=NCSTR2
9662      ELSE
9663        NCSTR=NCSTR+1
9664        NCSTR2=NCSTR+NCSTRI-1
9665        ICALL(NCSTR:NCSTR2)=ISTRIN(1:NCSTRI)
9666        NCSTR=NCSTR2
9667      ENDIF
9668C
9669C               ****************************************************
9670C               **  STEP 53--                                     **
9671C               **  USE DPSYS2 TO MAKE A SYSTEM CALL              **
9672C               ****************************************************
9673C
9674      ISTEPN='53'
9675      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WEB ')
9676     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
9677C
9678CCCCC IF(INETSW.EQ.'OLD'.AND.IHOST1.NE.'IBM-')THEN
9679CCCCC   NCSTR=NCSTR+1
9680CCCCC   ICALL(NCSTR:NCSTR)=')'
9681CCCCC   NCSTR=NCSTR+1
9682CCCCC   ICALL(NCSTR:NCSTR)=IQUOTE
9683CCCCC ENDIF
9684      IF(IHOST1.NE.'IBM-')THEN
9685        NCSTR=NCSTR+1
9686        NCSTR2=NCSTR+1
9687        ICALL(NCSTR:NCSTR2)=' &'
9688        NCSTR=NCSTR2
9689      ENDIF
9690C
9691CCCCC IF(INETSW.EQ.'NEW')THEN
9692CCCCC   WRITE(ICOUT,999)
9693CCCCC   CALL DPWRST('XXX','BUG ')
9694CCCCC   WRITE(ICOUT,5411)
9695CCCCC   CALL DPWRST('XXX','BUG ')
9696CCCCC   WRITE(ICOUT,999)
9697CCCCC   CALL DPWRST('XXX','BUG ')
9698CCCCC   IF(IHOST1.NE.'IBM-')THEN
9699CCCCC     WRITE(ICOUT,5412)
9700CCCCC     CALL DPWRST('XXX','BUG ')
9701CCCCC     WRITE(ICOUT,5413)
9702CCCCC     CALL DPWRST('XXX','BUG ')
9703CCCCC     WRITE(ICOUT,5414)
9704CCCCC     CALL DPWRST('XXX','BUG ')
9705CCCCC     WRITE(ICOUT,999)
9706CCCCC     CALL DPWRST('XXX','BUG ')
9707CCCCC     WRITE(ICOUT,5415)
9708CCCCC     CALL DPWRST('XXX','BUG ')
9709CCCCC     WRITE(ICOUT,999)
9710CCCCC     CALL DPWRST('XXX','BUG ')
9711CCCCC   ENDIF
9712CCCCC ENDIF
9713C5411 FORMAT('*****NOTE: IT MAY TAKE THE BROWSER A FEW MOMENTS TO ',
9714CCCCC1      'START UP.')
9715C5412 FORMAT('     IF YOU ARE USING THE NETSCAPE BROWSER, YOU CAN ',
9716CCCCC1       'SPEED UP SUBSEQUENT')
9717C5413 FORMAT('     USE OF WEB HELP BY ENTERING THE FOLLOWING DATAPLOT',
9718CCCCC1       ' COMMAND')
9719C5414 FORMAT('     (LEAVE THE BROWSER OPEN):')
9720C5415 FORMAT('         SET NETSCAPE OLD')
9721      ISSAV1=ISYSPE
9722      ISSAV2=ISYSHI
9723      ICLESV=ICLEWT
9724      ISYSPE='OFF'
9725      ISYSHI='ON'
9726      ICLEWT='OFF'
9727      CALL DPSYS2(ICALL,NCSTR,ISUBRO,IERROR)
9728      ISYSPE=ISSAV1
9729      ISYSHI=ISSAV2
9730      ICLEWT=ICLESV
9731C
9732C               ****************
9733C               **  STEP 90-- **
9734C               **  EXIT.     **
9735C               ****************
9736C
9737 9000 CONTINUE
9738      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WEB ')THEN
9739        WRITE(ICOUT,999)
9740        CALL DPWRST('XXX','BUG ')
9741        WRITE(ICOUT,9011)
9742 9011   FORMAT('***** AT THE END       OF DPWEB--')
9743        CALL DPWRST('XXX','BUG ')
9744        WRITE(ICOUT,9012)IERROR,IERRO2,IFOUND,IFLAGW
9745 9012   FORMAT('IERROR,IERRO2,IFOUND,IFLAGW = ',3(A4,2X),I5)
9746        CALL DPWRST('XXX','BUG ')
9747        WRITE(ICOUT,9097)ICALL(1:128)
9748 9097   FORMAT('ICALL = ',A128)
9749        CALL DPWRST('XXX','BUG ')
9750        WRITE(ICOUT,9099)ICALL(129:256)
9751 9099   FORMAT('ICALL = ',A128)
9752        CALL DPWRST('XXX','BUG ')
9753      ENDIF
9754C
9755      RETURN
9756      END
9757      SUBROUTINE DPWEIB(NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2,
9758     1                  IANGLU,MAXNPP,
9759     1                  IX1TSC,IX2TSC,IY1TSC,IY2TSC,
9760     1                  IX1TSV,IX2TSV,IY1TSV,IY2TSV,
9761     1                  IBUGG2,IBUGG3,IBUGQ,ISUBRO,IFOUND,IERROR)
9762C
9763C     PURPOSE--FORM A WEIBULL PLOT
9764C              (USEFUL FOR RELIABILITY AND LIFE-TESTING).
9765C     EXAMPLE--WEIBULL PLOT Y TAG
9766C              WEIBULL PLOT Y
9767C     NOTE--NORMALLY THIS COMMAND HAS 2 ARGUMENTS--
9768C           ARGUMENT 1 IS THE RESPONSE VARIABLE
9769C           ARGUMENT 2 IS THE CENSOR-TAG VARIABLE
9770C           IF THE WEIBULL PLOT COMMAND HAS ONLY ONE ARGUMENT,
9771C           THEN IT IS ASSUMED THAT ALL OF THE DATA IS TO BE INCLUDED
9772C           (THAT IS, NO CENSORING).
9773C     WRITTEN BY--JAMES J. FILLIBEN
9774C                 STATISTICAL ENGINEERING DIVISION
9775C                 INFORMATION TECHNOLOGY LABORATORY
9776C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
9777C                 GAITHERSBURG, MD 20899-8980
9778C                 PHONE--301-975-2899
9779C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
9780C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
9781C     LANGUAGE--ANSI FORTRAN (1977)
9782C     VERSION NUMBER--87/6
9783C     ORIGINAL VERSION--JUNE      1987.
9784C     UPDATED         --JUNE      1990. TEMPORARY ARRAYS TO GARBAGE COMMON
9785C     UPDATED         --APRIL     1992. DEFINE CUTOFF
9786C     UPDATED         --MAY       1995. ADD LINE TO EQUIVALENCE
9787C     UPDATED         --FEBRUARY  2011. USE DPPARS, DPPAR3
9788C     UPDATED         --FEBRUARY  2011. SUPPORT FOR "HIGHLIGHTED" OPTION
9789C     UPDATED         --JUNE      2011. SUPPORT "BRITTLE FIBER WEIBULL"
9790C                                       PLOT
9791C     UPDATED         --OCTOBER   2013. SUPPORT "FRECHET PLOT"
9792C
9793C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
9794C
9795      CHARACTER*4 ICASPL
9796      CHARACTER*4 IAND1
9797      CHARACTER*4 IAND2
9798C
9799      CHARACTER*4 IX1TSC
9800      CHARACTER*4 IX2TSC
9801      CHARACTER*4 IY1TSC
9802      CHARACTER*4 IY2TSC
9803C
9804      CHARACTER*4 IX1TSV
9805      CHARACTER*4 IX2TSV
9806      CHARACTER*4 IY1TSV
9807      CHARACTER*4 IY2TSV
9808C
9809      CHARACTER*4 IANGLU
9810      CHARACTER*4 IBUGG2
9811      CHARACTER*4 IBUGG3
9812      CHARACTER*4 IBUGQ
9813      CHARACTER*4 ISUBRO
9814      CHARACTER*4 IFOUND
9815      CHARACTER*4 IERROR
9816C
9817      CHARACTER*4 IHIGH
9818      CHARACTER*4 ICASE
9819      CHARACTER*4 IH
9820      CHARACTER*4 IH2
9821      CHARACTER*4 ISUBN1
9822      CHARACTER*4 ISUBN2
9823      CHARACTER*4 ISTEPN
9824C
9825      PARAMETER (MAXSPN=10)
9826      CHARACTER*4 IVARN1(MAXSPN)
9827      CHARACTER*4 IVARN2(MAXSPN)
9828      CHARACTER*4 IVARTY(MAXSPN)
9829      REAL PVAR(MAXSPN)
9830      INTEGER ILIS(MAXSPN)
9831      INTEGER NRIGHT(MAXSPN)
9832      INTEGER ICOLR(MAXSPN)
9833      CHARACTER*40 INAME
9834C
9835C---------------------------------------------------------------------
9836C
9837      INCLUDE 'DPCOPA.INC'
9838      INCLUDE 'DPCOHO.INC'
9839      INCLUDE 'DPCOZZ.INC'
9840      INCLUDE 'DPCOZI.INC'
9841C
9842      DIMENSION Y1(MAXOBV)
9843      DIMENSION Y2(MAXOBV)
9844      DIMENSION YS(MAXOBV)
9845      DIMENSION TAGC2(MAXOBV)
9846      DIMENSION ITAGC2(MAXOBV)
9847      DIMENSION WAR(MAXOBV)
9848      DIMENSION WMR(MAXOBV)
9849      DIMENSION WMRT(MAXOBV)
9850      DIMENSION YST(MAXOBV)
9851      DIMENSION XHIGH(MAXOBV)
9852      DIMENSION XDIST(MAXOBV)
9853      EQUIVALENCE (GARBAG(IGARB1),Y1(1))
9854      EQUIVALENCE (GARBAG(IGARB2),Y2(1))
9855      EQUIVALENCE (GARBAG(IGARB3),YS(1))
9856      EQUIVALENCE (GARBAG(IGARB4),TAGC2(1))
9857      EQUIVALENCE (GARBAG(IGARB5),YST(1))
9858      EQUIVALENCE (GARBAG(IGARB6),WAR(1))
9859      EQUIVALENCE (GARBAG(IGARB7),WMRT(1))
9860      EQUIVALENCE (GARBAG(IGARB8),WMR(1))
9861      EQUIVALENCE (GARBAG(IGARB9),XHIGH(1))
9862      EQUIVALENCE (GARBAG(IGAR10),XDIST(1))
9863      EQUIVALENCE (IGARBG(IIGAR1),ITAGC2(1))
9864C
9865C-----COMMON----------------------------------------------------------
9866C
9867      INCLUDE 'DPCOHK.INC'
9868      INCLUDE 'DPCODA.INC'
9869      INCLUDE 'DPCOP2.INC'
9870C
9871C-----START POINT-----------------------------------------------------
9872C
9873      ISUBN1='DPWE'
9874      ISUBN2='IB  '
9875      IFOUND='NO'
9876      IERROR='NO'
9877C
9878      MAXCP1=MAXCOL+1
9879      MAXCP2=MAXCOL+2
9880      MAXCP3=MAXCOL+3
9881      MAXCP4=MAXCOL+4
9882      MAXCP5=MAXCOL+5
9883      MAXCP6=MAXCOL+6
9884      IVAL=0
9885C
9886      BETA=(-999.0)
9887      ETA=(-999.0)
9888      SDBETA=(-999.0)
9889      SDETA=(-999.0)
9890      BPT1=(-999.0)
9891      BPT5=(-999.0)
9892      B1=(-999.0)
9893      B5=(-999.0)
9894      B10=(-999.0)
9895      B20=(-999.0)
9896      B50=(-999.0)
9897      B80=(-999.0)
9898      B90=(-999.0)
9899      B95=(-999.0)
9900      B99=(-999.0)
9901      B995=(-999.0)
9902      B999=(-999.0)
9903C
9904CCCCC THE FOLLOWING 4 LINES WERE ADDED   APRIL 1992 (ALAN)
9905      ICUTMX=NUMBPW
9906      IF(IHOST1.EQ.'CDC '.OR.IHOST1.EQ.'CYBE')ICUTMX=48
9907      IF(IHOST1.EQ.'205 ')ICUTMX=48
9908      CUTOFF=2**(ICUTMX-3)
9909C
9910      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'WEIB')THEN
9911        WRITE(ICOUT,999)
9912  999   FORMAT(1X)
9913        CALL DPWRST('XXX','BUG ')
9914        WRITE(ICOUT,51)
9915   51   FORMAT('***** AT THE BEGINNING OF DPWEIB--')
9916        CALL DPWRST('XXX','BUG ')
9917        WRITE(ICOUT,53)ICASPL,IAND1,IAND2,MAXN,MAXNPP
9918   53   FORMAT('ICASPL,IAND1,IAND2,MAXN,MAXNPP = ',3(A4,2X),2I8)
9919        CALL DPWRST('XXX','BUG ')
9920        WRITE(ICOUT,54)IANGLU,IBUGG2,IBUGG3,IBUGQ,ISUBRO
9921   54   FORMAT('IANGLU,IBUGG2,IBUGG3,IBUGQ,ISUBRO = ',4(A4,2X),A4)
9922        CALL DPWRST('XXX','BUG ')
9923        WRITE(ICOUT,61)IX1TSC,IX2TSC,IY1TSC,IY2TSC
9924   61   FORMAT('IX1TSC,IX2TSC,IY1TSC,IY2TSC = ',3(A4,2X),A4)
9925        CALL DPWRST('XXX','BUG ')
9926        WRITE(ICOUT,62)IX1TSV,IX2TSV,IY1TSV,IY2TSV
9927   62   FORMAT('IX1TSV,IX2TSV,IY1TSV,IY2TSV = ',3(A4,2X),A4)
9928        CALL DPWRST('XXX','BUG ')
9929      ENDIF
9930C
9931C               ***************************
9932C               **  STEP 11--            **
9933C               **  EXTRACT THE COMMAND  **
9934C               ***************************
9935C
9936      ISTEPN='11'
9937      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'WEIB')
9938     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
9939C
9940      IFOUND='NO'
9941      IHIGH='OFF'
9942      ICASPL='WEIB'
9943      IF(ICOM.EQ.'WEIB')THEN
9944        IF(IHARG(1).EQ.'HIGH' .AND. IHARG(2).EQ.'PLOT')THEN
9945          ILASTC=2
9946          IFOUND='YES'
9947          IHIGH='ON'
9948        ELSEIF(IHARG(1).EQ.'PLOT')THEN
9949          ILASTC=1
9950          IFOUND='YES'
9951        ENDIF
9952      ELSEIF(ICOM.EQ.'FREC')THEN
9953        ICASPL='FREC'
9954        IF(IHARG(1).EQ.'HIGH' .AND. IHARG(2).EQ.'PLOT')THEN
9955          ILASTC=2
9956          IFOUND='YES'
9957          IHIGH='ON'
9958        ELSEIF(IHARG(1).EQ.'PLOT')THEN
9959          ILASTC=1
9960          IFOUND='YES'
9961        ENDIF
9962      ELSEIF(ICOM.EQ.'BRIT' .AND. IHARG(1).EQ.'FIBE' .AND.
9963     1       IHARG(2).EQ.'WEIB')THEN
9964        IF(IHARG(3).EQ.'HIGH' .AND. IHARG(4).EQ.'PLOT')THEN
9965          ILASTC=4
9966          IFOUND='YES'
9967          IHIGH='ON'
9968          ICASPL='BFWE'
9969        ELSEIF(IHARG(3).EQ.'PLOT')THEN
9970          ILASTC=3
9971          IFOUND='YES'
9972          ICASPL='BFWE'
9973        ENDIF
9974      ELSEIF(ICOM.EQ.'HIGH' .OR. ICOM.EQ.'SUBS')THEN
9975        IHIGH='ON'
9976        IF(IHARG(1).EQ.'WEIB' .AND. IHARG(2).EQ.'PLOT')THEN
9977          ILASTC=2
9978          IFOUND='YES'
9979        ELSEIF(IHARG(1).EQ.'FREC' .AND. IHARG(2).EQ.'PLOT')THEN
9980          ILASTC=2
9981          IFOUND='YES'
9982          ICASPL='FREC'
9983        ELSEIF(IHARG(1).EQ.'BRIT' .AND. IHARG(2).EQ.'FIBE' .AND.
9984     1         IHARG(3).EQ.'WEIB' .AND. IHARG(4).EQ.'PLOT')THEN
9985          ILASTC=4
9986          IFOUND='YES'
9987          ICASPL='BFWE'
9988        ENDIF
9989      ENDIF
9990C
9991      IF(IFOUND.EQ.'NO')GOTO9000
9992C
9993      CALL ADJUST(ILASTC,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG)
9994C
9995C               ****************************************
9996C               **  STEP 2--                          **
9997C               **  EXTRACT THE VARIABLE LIST         **
9998C               ****************************************
9999C
10000      ISTEPN='2'
10001      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'WEIB')
10002     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
10003C
10004      INAME='WEIBULL PLOT'
10005      IF(ICASPL.EQ.'FREC')INAME='FRECHET PLOT'
10006      MINNA=1
10007      MAXNA=100
10008      MINN2=1
10009      IFLAGE=1
10010      IFLAGM=1
10011      IFLAGP=0
10012      JMIN=1
10013      JMAX=NUMARG
10014      MINNVA=1
10015      MAXNVA=2
10016      IF(IHIGH.EQ.'ON')THEN
10017        MINNVA=2
10018        MAXNVA=3
10019      ENDIF
10020      IF(ICASPL.EQ.'FREC')MAXNVA=MAXNVA-1
10021C
10022      CALL DPPARS(IHARG,IHARG2,IARGT,ARG,NUMARG,IANS,IWIDTH,
10023     1            IHNAME,IHNAM2,IUSE,NUMNAM,IN,IVALUE,VALUE,
10024     1            JMIN,JMAX,
10025     1            MINN2,MINNA,MAXNA,MAXSPN,IFLAGE,INAME,
10026     1            IVARN1,IVARN2,IVARTY,PVAR,
10027     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,ILOCQ,NUMVAR,
10028     1            MINNVA,MAXNVA,
10029     1            IFLAGM,IFLAGP,
10030     1            IBUGG3,IBUGQ,ISUBRO,IFOUND,IERROR)
10031      IF(IERROR.EQ.'YES')GOTO9000
10032C
10033      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'WEIB')THEN
10034        WRITE(ICOUT,999)
10035        CALL DPWRST('XXX','BUG ')
10036        WRITE(ICOUT,281)
10037  281   FORMAT('***** AFTER CALL DPPARS--')
10038        CALL DPWRST('XXX','BUG ')
10039        WRITE(ICOUT,282)NQ,NUMVAR
10040  282   FORMAT('NQ,NUMVAR = ',2I8)
10041        CALL DPWRST('XXX','BUG ')
10042        IF(NUMVAR.GT.0)THEN
10043          DO285I=1,NUMVAR
10044            WRITE(ICOUT,287)I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),
10045     1                      ICOLR(I)
10046  287       FORMAT('I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),',
10047     1             'ICOLR(I) = ',I8,2X,A4,A4,2X,3I8)
10048            CALL DPWRST('XXX','BUG ')
10049  285     CONTINUE
10050        ENDIF
10051      ENDIF
10052C
10053      DO290I=1,NRIGHT(1)
10054        Y2(I)=1.0
10055        XHIGH(I)=1.0
10056  290 CONTINUE
10057      ICOL=1
10058      CALL DPPAR3(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
10059     1            INAME,IVARN1,IVARN2,IVARTY,
10060     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVAR,
10061     1            MAXCOL,MAXCP1,MAXCP2,MAXCP3,
10062     1            MAXCP4,MAXCP5,MAXCP6,
10063     1            V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
10064     1            Y1,Y2,XHIGH,NS,NLOCA2,NLOCA3,ICASE,
10065     1            IBUGG3,ISUBRO,IFOUND,IERROR)
10066      IF(IERROR.EQ.'YES')GOTO9000
10067C
10068      IF(IHIGH.EQ.'ON' .AND. NUMVAR.EQ.2)THEN
10069        DO299I=1,NS
10070          XHIGH(I)=Y2(I)
10071          Y2(I)=1.0
10072  299   CONTINUE
10073      ENDIF
10074C
10075C               *********************************************
10076C               **  STEP 34--                              **
10077C               **  CHECK TO MAKE SURE THAT THE            **
10078C               **  COMBINATION OF CENSORING AND           **
10079C               **  SUBSETTING DOES NOT RESULT IN          **
10080C               **  TOO FEW DATA POINTS RESULTING          **
10081C               **  (AT LEAST 2)                           **
10082C               **  WITH WHICH TO FORM A WEIBULL PLOT.     **
10083C               *********************************************
10084C
10085      ISTEPN='34'
10086      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'WEIB')
10087     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
10088C
10089      ICOUNT=0
10090      DO3400I=1,NS
10091        IF(Y2(I).LE.-0.000001.OR.Y2(I).GE.0.0001)ICOUNT=ICOUNT+1
10092 3400 CONTINUE
10093C
10094      IF(ICOUNT.LE.MINN2)THEN
10095        WRITE(ICOUT,999)
10096        CALL DPWRST('XXX','BUG ')
10097        WRITE(ICOUT,3451)
10098 3451   FORMAT('***** ERROR IN WEIBULL PLOT--')
10099        CALL DPWRST('XXX','BUG ')
10100        WRITE(ICOUT,3452)
10101 3452   FORMAT('      AFTER THE SPECIFIED CENSORING AND SUBSETTING ',
10102     1         'HAS BEEN DONE,')
10103        CALL DPWRST('XXX','BUG ')
10104        WRITE(ICOUT,3454)IVARN1(1),IVARN2(1)
10105 3454   FORMAT('      THE NUMBER OF OBSERVATIONS REMAINING FROM ',
10106     1         'VARIABLE ',A4,A4)
10107        CALL DPWRST('XXX','BUG ')
10108        WRITE(ICOUT,3455)
10109 3455   FORMAT('      (FOR WHICH A WEIBULL PLOT IS TO BE FORMED)')
10110        CALL DPWRST('XXX','BUG ')
10111        WRITE(ICOUT,3457)MINN2
10112 3457   FORMAT('      MUST BE ',I8,' OR LARGER;')
10113        CALL DPWRST('XXX','BUG ')
10114        WRITE(ICOUT,3458)ICOUNT
10115 3458   FORMAT('      SUCH WAS NOT THE CASE HERE (ICOUNT = ',I8,')')
10116        CALL DPWRST('XXX','BUG ')
10117        WRITE(ICOUT,3459)
10118 3459   FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
10119        CALL DPWRST('XXX','BUG ')
10120        IF(IWIDTH.GE.1)THEN
10121          WRITE(ICOUT,3460)(IANS(I),I=1,MIN(80,IWIDTH))
10122 3460     FORMAT('      ',80A1)
10123          CALL DPWRST('XXX','BUG ')
10124        ENDIF
10125        IERROR='YES'
10126        GOTO9000
10127C
10128      ENDIF
10129C
10130C               ********************************************************
10131C               **  STEP 41--                                          *
10132C               **  FORM THE VERTICAL AND HORIZONTAL AXIS              *
10133C               **  VARIABLES (Y(.) AND X(.), RESPECTIVELY) FOR THE    *
10134C               **  PLOT.  FORM THE CURVE DESIGNATION VARIABLE D(.)  . *
10135C               **  THIS WILL BE BOTH ONES FOR BOTH CASES              *
10136C               **  DEFINE THE NUMBER OF PLOT POINTS    (NPLOTP).      *
10137C               **  DEFINE THE NUMBER OF PLOT VARIABLES (NPLOTV).      *
10138C               ********************************************************
10139C
10140      ISTEPN='41'
10141      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'WEIB')
10142     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
10143C
10144CCCCC JUNE, 1990.  DIMENSIONS FOR YS - YST NOW DONE IN DPWEIB
10145      IF(ICASPL.EQ.'WEIB')THEN
10146        CALL DPWEI2(Y1,Y2,XHIGH,NS,ICASPL,MAXN,IHIGH,
10147     1              IX1TSC,IX2TSC,IY1TSC,IY2TSC,
10148     1              IX1TSV,IX2TSV,IY1TSV,IY2TSV,
10149     1              BETA,ETA,SDBETA,SDETA,
10150     1              BPT1,BPT5,B1,B5,B10,B20,B50,B80,B90,B95,
10151     1              B99,B995,B999,
10152     1              YS,TAGC2,ITAGC2,WAR,WMR,WMRT,YST,XDIST,
10153     1              Y,X,D,NPLOTP,NPLOTV,IBUGG3,ISUBRO,IERROR)
10154      ELSEIF(ICASPL.EQ.'FREC')THEN
10155        CALL DPWEI3(Y1,XHIGH,NS,ICASPL,MAXN,IHIGH,MAXOBV,
10156     1              XDIST,YS,
10157     1              SHAPE,SCALE,SDSHAP,SDSCAL,
10158     1              BPT1,BPT5,B1,B5,B10,B20,B50,B80,B90,B95,
10159     1              B99,B995,B999,
10160     1              Y,X,D,NPLOTP,NPLOTV,IBUGG3,ISUBRO,IERROR)
10161      ENDIF
10162C
10163C               ***************************************
10164C               **  STEP 51--                        **
10165C               **  UPDATE INTERNAL DATAPLOT TABLES  **
10166C               ***************************************
10167C
10168      ISTEPN='51'
10169      IF(IBUGG2.EQ.'ON' .OR. ISUBRO.EQ.'WEIB')
10170     1   CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
10171C
10172      DO5100IPASS=1,17
10173        IF(ICASPL.EQ.'WEIB')THEN
10174          IF(IPASS.EQ.1)THEN
10175            IH='BETA'
10176            IH2='    '
10177          ELSEIF(IPASS.EQ.2)THEN
10178            IH='ETA'
10179            IH2='    '
10180          ELSEIF(IPASS.EQ.3)THEN
10181            IH='SDBE'
10182            IH2='TA  '
10183          ELSEIF(IPASS.EQ.4)THEN
10184            IH='SDET'
10185            IH2='A   '
10186          ENDIF
10187        ELSEIF(ICASPL.EQ.'FREC')THEN
10188          IF(IPASS.EQ.1)THEN
10189            IH='SHAP'
10190            IH2='E   '
10191          ELSEIF(IPASS.EQ.2)THEN
10192            IH='SCAL'
10193            IH2='    '
10194          ELSEIF(IPASS.EQ.3)THEN
10195            IH='SDSH'
10196            IH2='APE '
10197          ELSEIF(IPASS.EQ.4)THEN
10198            IH='SDSC'
10199            IH2='ALE '
10200          ENDIF
10201        ENDIF
10202C
10203        IF(IPASS.EQ.5)THEN
10204          IH='BPT1'
10205          IH2='    '
10206        ELSEIF(IPASS.EQ.6)THEN
10207          IH='BPT5'
10208          IH2='    '
10209        ELSEIF(IPASS.EQ.7)THEN
10210          IH='B1  '
10211          IH2='    '
10212        ELSEIF(IPASS.EQ.8)THEN
10213          IH='B5  '
10214          IH2='    '
10215        ELSEIF(IPASS.EQ.9)THEN
10216          IH='B10 '
10217          IH2='    '
10218        ELSEIF(IPASS.EQ.10)THEN
10219          IH='B20 '
10220          IH2='    '
10221        ELSEIF(IPASS.EQ.11)THEN
10222          IH='B50 '
10223        ELSEIF(IPASS.EQ.11)THEN
10224          IH2='    '
10225        ELSEIF(IPASS.EQ.12)THEN
10226          IH='B80 '
10227          IH2='    '
10228        ELSEIF(IPASS.EQ.13)THEN
10229          IH='B90 '
10230          IH2='    '
10231        ELSEIF(IPASS.EQ.14)THEN
10232          IH='B95 '
10233          IH2='    '
10234        ELSEIF(IPASS.EQ.15)THEN
10235          IH='B99 '
10236          IH2='    '
10237        ELSEIF(IPASS.EQ.16)THEN
10238          IH='B995'
10239          IH2='    '
10240        ELSEIF(IPASS.EQ.17)THEN
10241          IH='B999'
10242          IH2='    '
10243        ENDIF
10244C
10245        DO5150I=1,NUMNAM
10246          I2=I
10247          IF(IH.EQ.IHNAME(I).AND.IH2.EQ.IHNAM2(I).AND.
10248     1       IUSE(I).EQ.'P')THEN
10249            ILOC=I2
10250            GOTO5180
10251          ENDIF
10252 5150   CONTINUE
10253C
10254        IF(NUMNAM.GE.MAXNAM)THEN
10255          WRITE(ICOUT,3451)
10256          CALL DPWRST('XXX','BUG ')
10257          WRITE(ICOUT,5151)MAXNAM
10258 5151     FORMAT('      THE MAXIMUM ALLOWABLE NUMBER OF NAMES (',
10259     1           I8,')')
10260          CALL DPWRST('XXX','BUG ')
10261          WRITE(ICOUT,5153)
10262 5153     FORMAT('      HAS JUST BEEN EXCEEDED.')
10263          CALL DPWRST('XXX','BUG ')
10264          IF(IWIDTH.GE.1)THEN
10265            WRITE(ICOUT,3460)(IANS(I),I=1,MIN(80,IWIDTH))
10266            CALL DPWRST('XXX','BUG ')
10267          ENDIF
10268          IERROR='YES'
10269          GOTO9000
10270        ENDIF
10271C
10272        NUMNAM=NUMNAM+1
10273        ILOC=NUMNAM
10274        IHNAME(ILOC)=IH
10275        IHNAM2(ILOC)=IH2
10276        IUSE(ILOC)='P'
10277C
10278 5180   CONTINUE
10279        IF(ICASPL.EQ.'WEIB')THEN
10280          IF(IPASS.EQ.1)VALUE(ILOC)=BETA
10281          IF(IPASS.EQ.2)VALUE(ILOC)=ETA
10282          IF(IPASS.EQ.3)VALUE(ILOC)=SDBETA
10283          IF(IPASS.EQ.4)VALUE(ILOC)=SDETA
10284        ELSEIF(ICASPL.EQ.'FREC')THEN
10285          IF(IPASS.EQ.1)VALUE(ILOC)=SHAPE
10286          IF(IPASS.EQ.2)VALUE(ILOC)=SCALE
10287          IF(IPASS.EQ.3)VALUE(ILOC)=SDSHAP
10288          IF(IPASS.EQ.4)VALUE(ILOC)=SDSCAL
10289        ENDIF
10290        IF(IPASS.EQ.5)VALUE(ILOC)=BPT1
10291        IF(IPASS.EQ.6)VALUE(ILOC)=BPT5
10292        IF(IPASS.EQ.7)VALUE(ILOC)=B1
10293        IF(IPASS.EQ.8)VALUE(ILOC)=B5
10294        IF(IPASS.EQ.9)VALUE(ILOC)=B10
10295        IF(IPASS.EQ.10)VALUE(ILOC)=B20
10296        IF(IPASS.EQ.11)VALUE(ILOC)=B50
10297        IF(IPASS.EQ.12)VALUE(ILOC)=B80
10298        IF(IPASS.EQ.13)VALUE(ILOC)=B90
10299        IF(IPASS.EQ.14)VALUE(ILOC)=B95
10300        IF(IPASS.EQ.15)VALUE(ILOC)=B99
10301        IF(IPASS.EQ.16)VALUE(ILOC)=B995
10302        IF(IPASS.EQ.17)VALUE(ILOC)=B999
10303        VAL=VALUE(ILOC)
10304        IF((-CUTOFF).LE.VAL.AND.VAL.LE.CUTOFF)IVAL=INT(VAL+0.5)
10305        IF(VAL.GT.CUTOFF)IVAL=INT(CUTOFF)
10306        IF(VAL.LT.(-CUTOFF))IVAL=INT(-CUTOFF)
10307        IVALUE(ILOC)=IVAL
10308C
10309 5100 CONTINUE
10310C
10311C               *****************
10312C               **  STEP 90--  **
10313C               **  EXIT       **
10314C               *****************
10315C
10316 9000 CONTINUE
10317      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'WEIB')THEN
10318        WRITE(ICOUT,999)
10319        CALL DPWRST('XXX','BUG ')
10320        WRITE(ICOUT,9011)
10321 9011   FORMAT('***** AT THE END       OF DPWEIB--')
10322        CALL DPWRST('XXX','BUG ')
10323        WRITE(ICOUT,9012)IFOUND,IERROR
10324 9012   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
10325        CALL DPWRST('XXX','BUG ')
10326        WRITE(ICOUT,9013)NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2
10327 9013   FORMAT('NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2 = ',
10328     1         I8,I8,I8,2X,A4,2X,A4,2X,A4)
10329        CALL DPWRST('XXX','BUG ')
10330        WRITE(ICOUT,9014)ICASPL,MAXN,NUMVAR,ICOUNT
10331 9014   FORMAT('ICASPL,MAXN,NUMVAR,ICOUNT = ',A4,3I8)
10332        CALL DPWRST('XXX','BUG ')
10333        IF(NPLOTP.GE.1)THEN
10334          DO9020I=1,NPLOTP
10335            WRITE(ICOUT,9021)I,Y(I),X(I),D(I)
10336 9021       FORMAT('I,Y(I),X(I),D(I) = ',I8,3F12.5)
10337            CALL DPWRST('XXX','BUG ')
10338 9020     CONTINUE
10339        ENDIF
10340        WRITE(ICOUT,9041)IX1TSC,IX2TSC,IY1TSC,IY2TSC
10341 9041   FORMAT('IX1TSC,IX2TSC,IY1TSC,IY2TSC = ',A4,2X,A4,2X,A4,2X,A4)
10342        CALL DPWRST('XXX','BUG ')
10343        WRITE(ICOUT,9042)IX1TSV,IX2TSV,IY1TSV,IY2TSV
10344 9042   FORMAT('IX1TSV,IX2TSV,IY1TSV,IY2TSV = ',A4,2X,A4,2X,A4,2X,A4)
10345        CALL DPWRST('XXX','BUG ')
10346        WRITE(ICOUT,9043)BETA,ETA,SDBETA,SDETA
10347 9043   FORMAT('BETA,ETA,SDBETA,SDETA = ',4E15.7)
10348        CALL DPWRST('XXX','BUG ')
10349        DO9050I=1,NS
10350          WRITE(ICOUT,9051)I,Y1(I),Y2(I),ISUB(I)
10351 9051     FORMAT('I,Y1(I),Y2(I),ISUB(I) = ',I8,2E15.7,I8)
10352          CALL DPWRST('XXX','BUG ')
10353 9050   CONTINUE
10354      ENDIF
10355C
10356      RETURN
10357      END
10358      SUBROUTINE DPWEI2(Y,TAGC,XHIGH,N,ICASPL,MAXN,IHIGH,
10359     1                  IX1TSC,IX2TSC,IY1TSC,IY2TSC,
10360     1                  IX1TSV,IX2TSV,IY1TSV,IY2TSV,
10361     1                  BETA,ETA,SDBETA,SDETA,
10362     1                  BPT1,BPT5,B1,B5,B10,B20,B50,B80,B90,
10363     1                  B95,B99,B995,B999,
10364     1                  YS,TAGC2,ITAGC2,WAR,WMR,WMRT,YST,XDIST,
10365     1                  Y2,X2,D2,N2,NPLOTV,IBUGG3,ISUBRO,IERROR)
10366CCCCC JUNE, 1990. YS - YST NOW DIMENSIONED IN DPWEIB
10367C
10368C     PURPOSE--GENERATE A PAIR OF COORDINATE VECTORS
10369C              THAT WILL DEFINE
10370C              A WEIBULL PLOT.
10371C              THE PLOT WILL CONSIST OF 6 COMPONENTS--
10372C                  1) THE RAW DATA
10373C                  2) THE FITTED LINE
10374C                  3) THE HORIZONTAL 63.2% LINE
10375C                  4) THE VERTICAL   63.2% LINE
10376C                  5) 95% CONFIDENCE LIMITS
10377C                  6) 99% CONFIDENCE LIMITS
10378C     WRITTEN BY--JAMES J. FILLIBEN
10379C                 STATISTICAL ENGINEERING DIVISION
10380C                 INFORMATION TECHNOLOGY LABORATORY
10381C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
10382C                 GAITHERSBURG, MD 20899-8980
10383C                 PHONE--301-975-2899
10384C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
10385C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
10386C     LANGUAGE--ANSI FORTRAN (1977)
10387C     VERSION NUMBER--87/6
10388C     ORIGINAL VERSION--JUNE      1987.
10389C     UPDATED         --FEBRUARY  1988.  (ERROR TRAP FOR NON-POSITIVE DATA)
10390C     UPDATED         --JUNE      1990.  SOME DIMENSIONS NOW DONE IN DPWEIB
10391C     UPDATED         --APRIL     1992.  YMIN/2/3/4/ TO XMIN/2/3/4/
10392C     UPDATED         --NOVEMBER  1992.  CHARACTER*4 ICASPL
10393C     UPDATED         --FEBRUARY  2011.  SUPPORT FOR HIGHLIGHT OPTION
10394C     UPDATED         --JUNE      2011.  SUPPORT FOR BRITTLE FIBER
10395C                                        WEIBULL
10396C
10397C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
10398C
10399      CHARACTER*4 IX1TSC
10400      CHARACTER*4 IX2TSC
10401      CHARACTER*4 IY1TSC
10402      CHARACTER*4 IY2TSC
10403C
10404      CHARACTER*4 IX1TSV
10405      CHARACTER*4 IX2TSV
10406      CHARACTER*4 IY1TSV
10407      CHARACTER*4 IY2TSV
10408C
10409CCCCC THE FOLLOWING LINE WAS ADDED NOVEMBER 1992
10410      CHARACTER*4 ICASPL
10411      CHARACTER*4 IHIGH
10412      CHARACTER*4 IBUGG3
10413      CHARACTER*4 ISUBRO
10414      CHARACTER*4 IERROR
10415C
10416      CHARACTER*4 ISUBN1
10417      CHARACTER*4 ISUBN2
10418      CHARACTER*4 IWRITE
10419C
10420C---------------------------------------------------------------------
10421C
10422      DIMENSION Y(*)
10423      DIMENSION TAGC(*)
10424      DIMENSION XHIGH(*)
10425C
10426      DIMENSION Y2(*)
10427      DIMENSION X2(*)
10428      DIMENSION D2(*)
10429C
10430CCCCC JUNE, 1990.  FOLLOWING NOW DIMENSIONED IN DPWEIB
10431CCCCC DIMENSION YS(MAXOBV)
10432CCCCC DIMENSION TAGC2(MAXOBV)
10433CCCCC DIMENSION ITAGC2(MAXOBV)
10434CCCCC DIMENSION WAR(MAXOBV)
10435CCCCC DIMENSION WMR(MAXOBV)
10436CCCCC DIMENSION WMRT(MAXOBV)
10437CCCCC DIMENSION YST(MAXOBV)
10438      DIMENSION YS(*)
10439      DIMENSION TAGC2(*)
10440      DIMENSION ITAGC2(*)
10441      DIMENSION WAR(*)
10442      DIMENSION WMR(*)
10443      DIMENSION WMRT(*)
10444      DIMENSION YST(*)
10445      DIMENSION XDIST(*)
10446C
10447C-----COMMON----------------------------------------------------------
10448C
10449      INCLUDE 'DPCOP2.INC'
10450C
10451C-----START POINT-----------------------------------------------------
10452C
10453      ISUBN1='DPWE'
10454      ISUBN2='I2  '
10455C
10456      IERROR='NO'
10457      IWRITE='OFF'
10458C
10459      AN=N
10460C
10461      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'WEI2')THEN
10462        WRITE(ICOUT,999)
10463  999   FORMAT(1X)
10464        CALL DPWRST('XXX','BUG ')
10465        WRITE(ICOUT,51)
10466   51   FORMAT('***** AT THE BEGINNING OF DPWEI2--')
10467        CALL DPWRST('XXX','BUG ')
10468        WRITE(ICOUT,52)IBUGG3,ISUBRO
10469   52   FORMAT('IBUGG3,ISUBRO = ',A4,2X,A4)
10470        CALL DPWRST('XXX','BUG ')
10471        WRITE(ICOUT,53)ICASPL,IHIGH,MAXN,N,NPLOTV
10472   53   FORMAT('ICASPL,IHIGH,MAXN,N,NPLOTV = ',A4,2X,A4,3I8)
10473        CALL DPWRST('XXX','BUG ')
10474        IF(N.GT.0)THEN
10475          DO60I=1,N
10476            WRITE(ICOUT,61)I,Y(I),TAGC(I),XHIGH(I)
10477   61       FORMAT('I,Y(I),TAGC(I),XHIGH(I) = ',I8,3G15.7)
10478            CALL DPWRST('XXX','BUG ')
10479   60     CONTINUE
10480        ENDIF
10481        WRITE(ICOUT,71)IX1TSC,IX2TSC,IY1TSC,IY2TSC
10482   71   FORMAT('IX1TSC,IX2TSC,IY1TSC,IY2TSC = ',A4,2X,A4,2X,A4,2X,A4)
10483        CALL DPWRST('XXX','BUG ')
10484        WRITE(ICOUT,72)IX1TSV,IX2TSV,IY1TSV,IY2TSV
10485   72   FORMAT('IX1TSV,IX2TSV,IY1TSV,IY2TSV = ',A4,2X,A4,2X,A4,2X,A4)
10486        CALL DPWRST('XXX','BUG ')
10487      ENDIF
10488C
10489C               ********************************************
10490C               **  STEP 11--                             **
10491C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
10492C               ********************************************
10493C
10494      IF(N.LT.3)THEN
10495        WRITE(ICOUT,999)
10496        CALL DPWRST('XXX','BUG ')
10497        WRITE(ICOUT,1111)
10498 1111   FORMAT('***** ERROR IN WEIBULL PLOT--')
10499        CALL DPWRST('XXX','BUG ')
10500        WRITE(ICOUT,1112)
10501 1112   FORMAT('      THE NUMBER OF OBSERVATIONS MUST BE AT LEAST 3;')
10502        CALL DPWRST('XXX','BUG ')
10503        WRITE(ICOUT,1114)N
10504 1114   FORMAT('      THE ENTERED NUMBER OF OBSERVATIONS HERE = ',I6)
10505        CALL DPWRST('XXX','BUG ')
10506        IERROR='YES'
10507        GOTO9000
10508      ENDIF
10509C
10510      HOLD=Y(1)
10511      DO1130I=1,N
10512        IF(Y(I).NE.HOLD)GOTO1139
10513 1130 CONTINUE
10514      WRITE(ICOUT,999)
10515      CALL DPWRST('XXX','BUG ')
10516      WRITE(ICOUT,1111)
10517      CALL DPWRST('XXX','BUG ')
10518      WRITE(ICOUT,1132)
10519 1132 FORMAT('      ALL THE INPUT RESPONSE VARIABLE ELEMENTS ARE')
10520      CALL DPWRST('XXX','BUG ')
10521      WRITE(ICOUT,1133)HOLD
10522 1133 FORMAT('      IDENTICALLY EQUAL TO ',G15.7)
10523      CALL DPWRST('XXX','BUG ')
10524      WRITE(ICOUT,999)
10525      CALL DPWRST('XXX','BUG ')
10526      IERROR='YES'
10527      GOTO9000
10528 1139 CONTINUE
10529C
10530      DO1140I=1,N
10531        IF(Y(I).NE.0.0)GOTO1149
10532 1140 CONTINUE
10533      WRITE(ICOUT,999)
10534      CALL DPWRST('XXX','BUG ')
10535      WRITE(ICOUT,1111)
10536      CALL DPWRST('XXX','BUG ')
10537      WRITE(ICOUT,1142)
10538 1142 FORMAT('      ALL INPUT TAG VARIABLE ELEMENTS')
10539      CALL DPWRST('XXX','BUG ')
10540      WRITE(ICOUT,1143)
10541 1143 FORMAT('      ARE IDENTICALLY EQUAL TO 0.0;')
10542      CALL DPWRST('XXX','BUG ')
10543      WRITE(ICOUT,1144)
10544 1144 FORMAT('      THUS THERE ARE NO RESPONSE VARIABLE VALUES ')
10545      CALL DPWRST('XXX','BUG ')
10546      WRITE(ICOUT,1145)
10547 1145 FORMAT('      REMAINING UPON WHICH TO DO A WEIBULL ANALYSIS.')
10548      CALL DPWRST('XXX','BUG ')
10549      WRITE(ICOUT,999)
10550      CALL DPWRST('XXX','BUG ')
10551      IERROR='YES'
10552      GOTO9000
10553 1149 CONTINUE
10554C
10555C               ***********************************************
10556C               **  STEP 21--                                **
10557C               **  SORT THE DATA AND CARRY ALONG THE TAG    **
10558C               ***********************************************
10559C
10560      IF(IHIGH.EQ.'ON')THEN
10561        CALL SORTC(Y,XHIGH,N,YS,TAGC2)
10562        DO2010I=1,N
10563          XHIGH(I)=TAGC2(I)
10564 2010   CONTINUE
10565        CALL DISTIN(XHIGH,N,IWRITE,XDIST,NDIST,IBUGG3,IERROR)
10566        IF(IERROR.EQ.'YES')GOTO9000
10567      ELSE
10568        NDIST=1
10569        DO2013I=1,N
10570          XHIGH(I)=1.0
10571 2013   CONTINUE
10572      ENDIF
10573C
10574      CALL SORTC(Y,TAGC,N,YS,TAGC2)
10575C
10576      DO2100I=1,N
10577       ITAGC2(I)=INT(TAGC2(I)+0.1)
10578 2100 CONTINUE
10579C
10580C
10581C               ***********************************************
10582C               **  STEP 22--                                **
10583C               **  COMPUTE WEIBULL ADUSTED RANKS            **
10584C               ***********************************************
10585C
10586C               -----------------------------------------------
10587C               SET INITIAL VALUE FOR SAVED ADJUSTED RANK.
10588C               SET INITIAL VALUE FOR RANK INCREMENT.
10589C               -----------------------------------------------
10590C
10591      SAVEAR=0.0
10592C
10593      I=0
10594      ANUM=(AN+1.0)-SAVEAR
10595      ADENOM=1+(N-I)
10596      RANINC=ANUM/ADENOM
10597C
10598      NVALID=0
10599      DO2200I=1,N
10600        IF(ITAGC2(I).EQ.1)THEN
10601C
10602C         -----------------------------------------------
10603C         TREAT THE VALID (TO BE INCLUDED) ITEM CASE.
10604C         COMPUTE THE ADJUSTED RANK.
10605C         SAVE THE ADJUSTED RANK.
10606C         DO NOT RECOMPUTE THE RANK INCREMENT.
10607C         -----------------------------------------------
10608C
10609          NVALID=NVALID+1
10610C
10611          IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'WEI2')THEN
10612            WRITE(ICOUT,2211)I,YS(I),TAGC2(I),ITAGC2(I),WAR(I)
10613 2211       FORMAT('I,YS(I),TAGC2(I),ITAGC2(I),WAR(I) = ',I8,2G15.7,
10614     1             I8,G15.7)
10615            CALL DPWRST('XXX','BUG ')
10616          ENDIF
10617C
10618          WAR(I)=SAVEAR+RANINC
10619          SAVEAR=WAR(I)
10620        ELSE
10621C
10622C         -----------------------------------------------
10623C         TREAT THE SUSPENDED (= CENSORED) ITEM CASE
10624C         RECOMPUTE THE RANK INCREMENT.
10625C         DO NOT RECOMPUTE THE SAVED ADJUSTED RANK.
10626C         -----------------------------------------------
10627C
10628          ANUM=(AN+1.0)-SAVEAR
10629          ADENOM=1+(N-I)
10630          RANINC=ANUM/ADENOM
10631        ENDIF
10632 2200 CONTINUE
10633C
10634C               ************************************
10635C               **  STEP 23--                     **
10636C               **  DETERMINE THE NUMBER OF       **
10637C               **  "GOOD"                        **
10638C               **  = NON-CENSORED/NON-SUSPENDED  **
10639C               **  DATA VALUES.                  **
10640C               ************************************
10641C
10642      NSUB=0
10643      DO2300I=1,N
10644        IF(ITAGC2(I).EQ.0)GOTO2300
10645        NSUB=NSUB+1
10646 2300 CONTINUE
10647      ANSUB=NSUB
10648C
10649C               ****************************************
10650C               **  STEP 24--                         **
10651C               **  COMPUTE WEIBULL MEDIAN RANKS      **
10652C               **  (FOR THE GOOD DATA ONLY)          **
10653C               ****************************************
10654C
10655      DO2400I=1,N
10656        WMR(I)=(-999.0)
10657        IF(ITAGC2(I).EQ.0)GOTO2400
10658        WMR(I)=100.0*(WAR(I)-0.3)/(AN+0.4)
10659C
10660        IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'WEI2')THEN
10661          WRITE(ICOUT,2411)I,WAR(I),WMR(I)
10662 2411     FORMAT('I,WAR(I),WMR(I) = ',I8,2E15.7)
10663          CALL DPWRST('XXX','BUG ')
10664        ENDIF
10665 2400 CONTINUE
10666C
10667C               ****************************************
10668C               **  STEP 30--                         **
10669C               **  FIT THE DATA TO ESTIMATE          **
10670C               **  BETA (= SHAPE PARAMETER) AND      **
10671C               **  ETA  (= CHARACTERISTIC LIFE)      **
10672C               ****************************************
10673C
10674C               ******************************************
10675C               **  STEP 31--                           **
10676C               **  TRANSFORM THE WEIBULL MEDIAN RANKS  **
10677C               ******************************************
10678C
10679      DO3100I=1,N
10680        WMRT(I)=(-999.0)
10681        IF(ITAGC2(I).EQ.0)GOTO3100
10682        ARG1=100.0/(100.0-WMR(I))
10683        ARG2=LOG(ARG1)
10684        WMRT(I)=LOG(ARG2)
10685C
10686        IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'WEI2')THEN
10687          WRITE(ICOUT,3111)I,ITAGC2(I),WMR(I),WMRT(I)
10688 3111     FORMAT('I,ITAGC2(I),WMR(I),WMRT(I) = ',2I8,2E15.7)
10689          CALL DPWRST('XXX','BUG ')
10690        ENDIF
10691C
10692 3100 CONTINUE
10693C
10694C               ******************************************
10695C               **  STEP 32--                           **
10696C               **  TRANSFORM THE SORTED DATA           **
10697C               ******************************************
10698C
10699      DO3200I=1,N
10700        YST(I)=(-999.0)
10701        IF(ITAGC2(I).EQ.0)GOTO3200
10702        IF(YS(I).LE.0.0)THEN
10703          WRITE(ICOUT,999)
10704          CALL DPWRST('XXX','BUG ')
10705          WRITE(ICOUT,1111)
10706          CALL DPWRST('XXX','BUG ')
10707          WRITE(ICOUT,3212)
10708 3212     FORMAT('      ZERO OR NEGATIVE DATA IS NOT PERMITTED IN A')
10709          CALL DPWRST('XXX','BUG ')
10710          WRITE(ICOUT,3214)
10711 3214     FORMAT('      WEIBULL PLOT.  THE ILLEGAL VALUE IS ',G15.7)
10712          CALL DPWRST('XXX','BUG ')
10713          WRITE(ICOUT,3215)
10714 3215     FORMAT('      SUGGESTION--ADD A CONSTANT SO THAT ALL DATA')
10715          CALL DPWRST('XXX','BUG ')
10716          WRITE(ICOUT,3216)
10717 3216     FORMAT('      IS POSITIVE, AND THEN REDO THE WEIBULL PLOT.')
10718          CALL DPWRST('XXX','BUG ')
10719          IERROR='YES'
10720          GOTO9000
10721        ENDIF
10722C
10723        YST(I)=LOG(YS(I))
10724C
10725        IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'WEI2')THEN
10726          WRITE(ICOUT,3221)I,ITAGC2(I),YS(I),YST(I)
10727 3221     FORMAT('I,ITAGC2(I),YS(I),YST(I) = ',2I8,2E15.7)
10728          CALL DPWRST('XXX','BUG ')
10729        ENDIF
10730C
10731 3200 CONTINUE
10732C
10733C               ******************************************
10734C               **  STEP 33--                           **
10735C               **  CARRY OUT THE FIT OF                **
10736C               **  TRANSFORMED SORTED DATA VERSUS      **
10737C               **  TRANSFORMED WEIBULL MEDIAN RANKS    **
10738C               ******************************************
10739C
10740      SUMX=0.0
10741      SUMY=0.0
10742      DO3310I=1,N
10743C
10744        IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'WEI2')THEN
10745          WRITE(ICOUT,3311)I,ITAGC2(I),YST(I),WMRT(I)
10746 3311     FORMAT('I,ITAGC2(I),YST(I),WMRT(I) = ',2I8,2G15.7)
10747          CALL DPWRST('XXX','BUG ')
10748        ENDIF
10749C
10750        IF(ITAGC2(I).EQ.0)GOTO3310
10751        SUMX=SUMX+WMRT(I)
10752        SUMY=SUMY+YST(I)
10753 3310 CONTINUE
10754      XBAR=SUMX/ANSUB
10755      YBAR=SUMY/ANSUB
10756C
10757      SUMXX=0.0
10758      SUMYY=0.0
10759      SUMXY=0.0
10760      DO3320I=1,N
10761        IF(ITAGC2(I).EQ.0)GOTO3320
10762        SUMXX=SUMXX+(WMRT(I)-XBAR)*(WMRT(I)-XBAR)
10763        SUMYY=SUMYY+(YST(I)-YBAR)*(YST(I)-YBAR)
10764        SUMXY=SUMXY+(WMRT(I)-XBAR)*(YST(I)-YBAR)
10765 3320 CONTINUE
10766      ASLOPE=0.0
10767      IF(SUMXX.GT.0.0)ASLOPE=SUMXY/SUMXX
10768      AINTER=YBAR-ASLOPE*XBAR
10769C
10770      SUMRR=0.0
10771      SUMX2=0.0
10772      DO3330I=1,N
10773        IF(ITAGC2(I).EQ.0)GOTO3330
10774        RES=YST(I)-(AINTER+ASLOPE*WMRT(I))
10775        SUMRR=SUMRR+RES*RES
10776        SUMX2=SUMX2+WMRT(I)*WMRT(I)
10777 3330 CONTINUE
10778      RESVAR=SUMRR/(AN-2.0)
10779      RESSD=0.0
10780      IF(RESVAR.GT.0.0)RESSD=SQRT(RESVAR)
10781      SDINTE=RESSD*SQRT(SUMX2/(AN*SUMXX))
10782      SDSLOP=RESSD*SQRT(1.0/SUMXX)
10783C
10784C               ****************************************
10785C               **  STEP 34--                         **
10786C               **  FORM ESTIMATES FOR                **
10787C               **  BETA (= SHAPE PARAMETER) AND      **
10788C               **  ETA  (= CHARACTERISTIC LIFE)      **
10789C               ****************************************
10790C
10791      IF(ASLOPE.LE.0.0)THEN
10792        WRITE(ICOUT,999)
10793        CALL DPWRST('XXX','BUG ')
10794        WRITE(ICOUT,1111)
10795        CALL DPWRST('XXX','BUG ')
10796        WRITE(ICOUT,3332)
10797 3332   FORMAT('      THE FITTED SLOPE IS ZERO OR NEGATIVE WHICH WOULD')
10798        CALL DPWRST('XXX','BUG ')
10799        WRITE(ICOUT,3335)
10800 3335   FORMAT('      YIELD AN IMPOSSIBLE VALUE FOR BETA = 1/SLOPE.')
10801        CALL DPWRST('XXX','BUG ')
10802        WRITE(ICOUT,3336)ASLOPE,AINTER
10803 3336   FORMAT('      ASLOPE,AINTER = ',2G15.7)
10804        CALL DPWRST('XXX','BUG ')
10805        WRITE(ICOUT,3337)SUMX,SUMY,SUMXX,SUMYY,SUMXY
10806 3337   FORMAT('      SUMX,SUMY,SUMXX,SUMYY,SUMXY = ',5G15.7)
10807        CALL DPWRST('XXX','BUG ')
10808        IERROR='YES'
10809        GOTO9000
10810      ENDIF
10811C
10812      BETA=1/ASLOPE
10813      ETA=EXP(AINTER)
10814      SDBETA=BETA*BETA*SDSLOP
10815      SDETA=ETA*SDINTE
10816C
10817C               ************************************************
10818C               **  STEP 35--                                 **
10819C               **  FORM ESTIMATES FOR                        **
10820C               **     BPT1= .1%   POINT OF BEST-FIT DIST.    **
10821C               **     BPT5= .5%   POINT OF BEST-FIT DIST.    **
10822C               **     B1  =  1%   POINT OF BEST-FIT DIST.    **
10823C               **     B5  =  5%   POINT OF BEST-FIT DIST.    **
10824C               **     B10 = 10%   POINT OF BEST-FIT DIST.    **
10825C               **     B20 = 20%   POINT OF BEST-FIT DIST.    **
10826C               **     B50 = 50%   POINT OF BEST-FIT DIST.    **
10827C               **     B80 = 80%   POINT OF BEST-FIT DIST.    **
10828C               **     B90 = 90%   POINT OF BEST-FIT DIST.    **
10829C               **     B95 = 95%   POINT OF BEST-FIT DIST.    **
10830C               **     B99 = 99%   POINT OF BEST-FIT DIST.    **
10831C               **     B995= 99.5% POINT OF BEST-FIT DIST.    **
10832C               **     B999= 99.9% POINT OF BEST-FIT DIST.    **
10833C               ************************************************
10834C
10835      P=.001
10836      BPT1=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10837      P=.005
10838      BPT5=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10839      P=.01
10840      B1=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10841      P=.05
10842      B5=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10843      P=.10
10844      B10=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10845      P=.20
10846      B20=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10847      P=.50
10848      B50=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10849      P=.80
10850      B80=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10851      P=.90
10852      B90=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10853      P=.95
10854      B95=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10855      P=.99
10856      B99=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10857      P=.995
10858      B995=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10859      P=.999
10860      B999=ETA*(LOG(1.0/(1.0-P)))**(1.0/BETA)
10861C
10862C               ****************************************
10863C               **  STEP 41--                         **
10864C               **  SAVE OLD SETTINGS FOR             **
10865C               **     HORIZONTAL AXIS PLOT SCALE     **
10866C               **     VERTICAL AXIS PLOT SCALE       **
10867C               **  CHANGE                            **
10868C               **     HORIZONTAL AXIS PLOT SCALE     **
10869C               **     TO LOG                         **
10870C               **  CHANGE                            **
10871C               **     VERTICAL AXIS PLOT SCALE       **
10872C               **     TO WEIBULL                     **
10873C               ****************************************
10874
10875      IX1TSV=IX1TSC
10876      IX2TSV=IX2TSC
10877      IY1TSV=IY1TSC
10878      IY2TSV=IY2TSC
10879C
10880      IX1TSC='LOG'
10881      IX2TSC='LOG'
10882      IY1TSC='WEIB'
10883      IY2TSC='WEIB'
10884C
10885C               ****************************************
10886C               **  STEP 42--                         **
10887C               **  DETERMINE PLOT LIMITS FOR         **
10888C               **  PREDICTED LINE                    **
10889C               ****************************************
10890C
10891      P2=0.1
10892      P=P2/100.0
10893      ARG1=1.0/(1.0-P)
10894      TERM=LOG(ARG1)
10895      ARG2=1.0/BETA
10896      PPF=ETA*TERM**ARG2
10897      XMIN=PPF
10898C
10899      P2=99.9
10900      P=P2/100.0
10901      ARG1=1.0/(1.0-P)
10902      TERM=LOG(ARG1)
10903      ARG2=1.0/BETA
10904      PPF=ETA*TERM**ARG2
10905      XMAX=PPF
10906C
10907      XINC=(XMAX-XMIN)/100.0
10908C
10909      XMIN2=LOG10(XMIN)
10910CCCCC XMIN3=AINT(XMIN2)
10911      IF(XMIN2.GE.0.0)XMIN3=AINT(XMIN2)
10912      IF(XMIN2.LT.0.0)XMIN3=(-AINT(-XMIN2+1.0))
10913      XMIN4=10.0**XMIN3+0.001
10914C
10915      XMAX2=LOG10(XMAX)
10916CCCCC XMAX3=AINT(XMAX2)+1.0
10917      XMAX3=0.0
10918      IF(XMAX2.GE.0.0)XMAX3=AINT(XMAX2)
10919      IF(XMAX2.LT.0.0)XMAX3=(-AINT(-XMAX2+1.0))
10920      XMAX3=XMAX3+1.0
10921      XMAX4=10.0**XMAX3-0.001
10922C
10923      X632=ETA
10924C
10925C               ****************************************
10926C               **  STEP 51--                         **
10927C               **  FORM PLOT COORDINATES             **
10928C               **     RAW (GOOD) DATA                **
10929C               **     PREDICTED LINE                 **
10930C               **     HORIZONTAL 63.2% LINE          **
10931C               **     VERTICAL   63.2% LINE          **
10932C               **     95% CONFIDENCE BAND            **
10933C               **     99% CONFIDENCE BAND            **
10934C               ****************************************
10935C
10936      J=0
10937      DO5110I=1,N
10938        IF(ITAGC2(I).EQ.0)GOTO5110
10939        J=J+1
10940        Y2(J)=WMR(I)
10941        X2(J)=YS(I)
10942        IF(NDIST.EQ.1)THEN
10943          D2(J)=1.0
10944        ELSE
10945          IINDX=1
10946          DO5115K=1,NDIST
10947            IF(XHIGH(I).EQ.XDIST(K))THEN
10948              IINDX=K
10949              GOTO5119
10950            ENDIF
10951 5115     CONTINUE
10952 5119     CONTINUE
10953          D2(J)=REAL(IINDX)
10954        ENDIF
10955 5110 CONTINUE
10956C
10957      X=XMIN-XINC
10958CCCCC MARCH 1996.  CHECK THAT PREDICTED VALUE IS STRICTLY POSITIVE.
10959CCCCC IF NOT, INCREMENT UNTIL GET POSITIVE POINT.
10960      DO5120I=1,10000
10961        X=X+XINC
10962        IF(X.GT.XMAX)GOTO5129
10963        PRED=100.0*(1.0-EXP(-((X/ETA)**BETA)))
10964        IF(PRED.LE.0.0)THEN
10965          ZINC=XINC/500.
10966          XJUNK=X
10967          DO5125LL=1,500
10968            XJUNK=XJUNK+ZINC
10969            PRED=100.0*(1.0-EXP(-((XJUNK/ETA)**BETA)))
10970            IF(PRED.LE.0.0)GOTO5125
10971            J=J+1
10972            Y2(J)=PRED
10973            X2(J)=XJUNK
10974            D2(J)=REAL(NDIST+1)
10975            GOTO5128
10976 5125     CONTINUE
10977 5128     CONTINUE
10978        ELSE
10979          J=J+1
10980          Y2(J)=PRED
10981          X2(J)=X
10982          D2(J)=REAL(NDIST+1)
10983        ENDIF
10984 5120 CONTINUE
10985 5129 CONTINUE
10986C
10987      J=J+1
10988      Y2(J)=63.2
10989      X2(J)=XMIN4
10990      D2(J)=REAL(NDIST+2)
10991      J=J+1
10992      Y2(J)=63.2
10993      X2(J)=XMAX4
10994      D2(J)=REAL(NDIST+2)
10995C
10996      J=J+1
10997      Y2(J)=99.9
10998      X2(J)=X632
10999      D2(J)=REAL(NDIST+3)
11000      J=J+1
11001      Y2(J)=0.1
11002      X2(J)=X632
11003      D2(J)=REAL(NDIST+3)
11004C
11005      N2=J
11006      NPLOTV=3
11007C
11008C               ****************************************
11009C               **  STEP 61--                         **
11010C               **  RESTORE OLD SETTINGS FOR          **
11011C               **     HORIZONTAL AXIS PLOT SCALE     **
11012C               **     VERTICAL AXIS PLOT SCALE       **
11013C               ****************************************
11014C
11015CCCCC IX1TSC=IX1TSV
11016CCCCC IX2TSC=IX2TSV
11017CCCCC IY1TSC=IY1TSV
11018CCCCC IY2TSC=IY2TSV
11019C     (THIS RESTORATION MUST BE DONE IN MAIN)
11020C
11021C
11022C               *****************
11023C               **  STEP 90--  **
11024C               **  EXIT       **
11025C               *****************
11026C
11027 9000 CONTINUE
11028      IF(IBUGG3.EQ.'ON' .OR. ISUBRO.EQ.'WEI2')THEN
11029        WRITE(ICOUT,999)
11030        CALL DPWRST('XXX','BUG ')
11031        WRITE(ICOUT,9011)
11032 9011   FORMAT('***** AT THE END       OF DPWEI2--')
11033        CALL DPWRST('XXX','BUG ')
11034        WRITE(ICOUT,9012)ICASPL,MAXN,N2,IERROR
11035 9012   FORMAT('ICASPL,MAXN,N2,IERROR = ',A4,I8,I8,2X,A4)
11036        CALL DPWRST('XXX','BUG ')
11037        DO9015I=1,N2
11038          WRITE(ICOUT,9016)I,Y2(I),X2(I),D2(I)
11039 9016     FORMAT('I,Y2(I),X2(I),D2(I) = ',I8,2E15.7,F9.2)
11040          CALL DPWRST('XXX','BUG ')
11041 9015   CONTINUE
11042        WRITE(ICOUT,9021)IX1TSC,IX2TSC,IY1TSC,IY2TSC
11043 9021   FORMAT('IX1TSC,IX2TSC,IY1TSC,IY2TSC = ',A4,2X,A4,2X,A4,2X,A4)
11044        CALL DPWRST('XXX','BUG ')
11045        WRITE(ICOUT,9022)IX1TSV,IX2TSV,IY1TSV,IY2TSV
11046 9022   FORMAT('IX1TSV,IX2TSV,IY1TSV,IY2TSV = ',A4,2X,A4,2X,A4,2X,A4)
11047        CALL DPWRST('XXX','BUG ')
11048        WRITE(ICOUT,9031)AINTER,ASLOPE,SDINTE,SDSLOP
11049 9031   FORMAT('AINTER,ASLOPE,SDINTE,SDSLOP = ',4E15.7)
11050        CALL DPWRST('XXX','BUG ')
11051        WRITE(ICOUT,9032)BETA,ETA,SDBETA,SDETA
11052 9032   FORMAT('BETA,ETA,SDBETA,SDETA = ',4E15.7)
11053        CALL DPWRST('XXX','BUG ')
11054        WRITE(ICOUT,9034)BPT1,BPT5,B1,B5
11055 9034   FORMAT('BPT1,BPT5,B1,B5 = ',4E15.7)
11056        CALL DPWRST('XXX','BUG ')
11057        WRITE(ICOUT,9035)B10,B20,B50,B80,B90
11058 9035   FORMAT(' B10,B20,B50,B80,B90 = ',5E15.7)
11059        CALL DPWRST('XXX','BUG ')
11060        WRITE(ICOUT,9036)B95,B99,B995,B999
11061 9036   FORMAT('B95,B99,B995,B999 = ',4E15.7)
11062        CALL DPWRST('XXX','BUG ')
11063        WRITE(ICOUT,9037)RESSD,XINC,ETA,X632
11064 9037   FORMAT('RESSD,XINC,ETA,X62 = ',4G15.7)
11065        CALL DPWRST('XXX','BUG ')
11066        WRITE(ICOUT,9041)XMIN,XMIN2,XMIN3,XMIN4
11067 9041   FORMAT('XMIN,XMIN2,XMIN3,XMIN4 = ',4E15.7)
11068        CALL DPWRST('XXX','BUG ')
11069        WRITE(ICOUT,9043)XMIN,XMIN2,XMIN3,XMIN4
11070 9043   FORMAT('XMIN,XMIN2,XMIN3,XMIN4 = ',4E15.7)
11071        CALL DPWRST('XXX','BUG ')
11072      ENDIF
11073C
11074      RETURN
11075      END
11076      SUBROUTINE DPWEI3(Y,XHIGH,N,ICASPL,MAXN,IHIGH,MAXOBV,
11077     1                  XDIST,XHIGHC,
11078     1                  SHAPE,SCALE,SDSHAP,SDSCAL,
11079     1                  BPT1,BPT5,B1,B5,B10,B20,B50,B80,B90,
11080     1                  B95,B99,B995,B999,
11081     1                  Y2,X2,D2,N2,NPLOTV,IBUGG3,ISUBRO,IERROR)
11082C
11083C     PURPOSE--GENERATE A PAIR OF COORDINATE VECTORS
11084C              THAT WILL DEFINE A FRECHET PLOT.
11085C              THE PLOT WILL CONSIST OF 2 COMPONENTS--
11086C                  1) THE RAW DATA
11087C                  2) THE FITTED LINE
11088C     WRITTEN BY--ALAN HECKERT
11089C                 STATISTICAL ENGINEERING DIVISION
11090C                 INFORMATION TECHNOLOGY LABORATORY
11091C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11092C                 GAITHERSBURG, MD 20899-8980
11093C                 PHONE--301-975-2899
11094C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11095C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11096C     LANGUAGE--ANSI FORTRAN (1977)
11097C     VERSION NUMBER--2013/10
11098C     ORIGINAL VERSION--OCTOBER   2013.
11099C
11100C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
11101C
11102      CHARACTER*4 ICASPL
11103      CHARACTER*4 IHIGH
11104      CHARACTER*4 IBUGG3
11105      CHARACTER*4 ISUBRO
11106      CHARACTER*4 IERROR
11107C
11108      CHARACTER*4 ISUBN1
11109      CHARACTER*4 ISUBN2
11110      CHARACTER*4 IWRITE
11111C
11112C---------------------------------------------------------------------
11113C
11114      DIMENSION Y(*)
11115      DIMENSION XHIGH(*)
11116      DIMENSION XDIST(*)
11117      DIMENSION XHIGHC(*)
11118C
11119      DIMENSION Y2(*)
11120      DIMENSION X2(*)
11121      DIMENSION D2(*)
11122C
11123C-----COMMON----------------------------------------------------------
11124C
11125      INCLUDE 'DPCOP2.INC'
11126C
11127C-----START POINT-----------------------------------------------------
11128C
11129      ISUBN1='DPWE'
11130      ISUBN2='I3  '
11131      IERROR='NO'
11132      IWRITE='OFF'
11133C
11134      AN=N
11135C
11136      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'WEI3')THEN
11137        WRITE(ICOUT,999)
11138  999   FORMAT(1X)
11139        CALL DPWRST('XXX','BUG ')
11140        WRITE(ICOUT,51)
11141   51   FORMAT('***** AT THE BEGINNING OF DPWEI3--')
11142        CALL DPWRST('XXX','BUG ')
11143        WRITE(ICOUT,52)IBUGG3,ISUBRO
11144   52   FORMAT('IBUGG3,ISUBRO = ',A4,2X,A4)
11145        CALL DPWRST('XXX','BUG ')
11146        WRITE(ICOUT,53)ICASPL,IHIGH,MAXN,N,NPLOTV
11147   53   FORMAT('ICASPL,IHIGH,MAXN,N,NPLOTV = ',A4,2X,A4,3I8)
11148        CALL DPWRST('XXX','BUG ')
11149        IF(N.GT.0)THEN
11150          DO60I=1,N
11151            WRITE(ICOUT,61)I,Y(I),XHIGH(I)
11152   61       FORMAT('I,Y(I),XHIGH(I) = ',I8,2G15.7)
11153            CALL DPWRST('XXX','BUG ')
11154   60     CONTINUE
11155        ENDIF
11156      ENDIF
11157C
11158C               ********************************************
11159C               **  STEP 11--                             **
11160C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
11161C               ********************************************
11162C
11163      IF(N.LT.3)THEN
11164        WRITE(ICOUT,999)
11165        CALL DPWRST('XXX','BUG ')
11166        WRITE(ICOUT,1111)
11167 1111   FORMAT('***** ERROR IN FRECHET PLOT--')
11168        CALL DPWRST('XXX','BUG ')
11169        WRITE(ICOUT,1112)
11170 1112   FORMAT('      THE NUMBER OF OBSERVATIONS MUST BE AT LEAST 3;')
11171        CALL DPWRST('XXX','BUG ')
11172        WRITE(ICOUT,1114)N
11173 1114   FORMAT('      THE ENTERED NUMBER OF OBSERVATIONS HERE = ',I6)
11174        CALL DPWRST('XXX','BUG ')
11175        IERROR='YES'
11176        GOTO9000
11177      ENDIF
11178C
11179      HOLD=Y(1)
11180      DO1130I=1,N
11181        IF(Y(I).NE.HOLD)GOTO1139
11182 1130 CONTINUE
11183      WRITE(ICOUT,999)
11184      CALL DPWRST('XXX','BUG ')
11185      WRITE(ICOUT,1111)
11186      CALL DPWRST('XXX','BUG ')
11187      WRITE(ICOUT,1132)
11188 1132 FORMAT('      ALL THE INPUT RESPONSE VARIABLE ELEMENTS ARE')
11189      CALL DPWRST('XXX','BUG ')
11190      WRITE(ICOUT,1133)HOLD
11191 1133 FORMAT('      IDENTICALLY EQUAL TO ',G15.7)
11192      CALL DPWRST('XXX','BUG ')
11193      WRITE(ICOUT,999)
11194      CALL DPWRST('XXX','BUG ')
11195      IERROR='YES'
11196      GOTO9000
11197 1139 CONTINUE
11198C
11199      DO1140I=1,N
11200        IF(Y(I).LE.0.0)THEN
11201          WRITE(ICOUT,999)
11202          CALL DPWRST('XXX','BUG ')
11203          WRITE(ICOUT,1111)
11204          CALL DPWRST('XXX','BUG ')
11205          WRITE(ICOUT,1142)I
11206 1142     FORMAT('      ROW ',I8,' OF THE RESPONSE VARIABLE IS ',
11207     1           'NON-POSITIVE.')
11208          CALL DPWRST('XXX','BUG ')
11209          WRITE(ICOUT,1145)Y(I)
11210 1145     FORMAT('      IT HAS THE VALUE ',G15.7)
11211          CALL DPWRST('XXX','BUG ')
11212          WRITE(ICOUT,999)
11213          CALL DPWRST('XXX','BUG ')
11214          IERROR='YES'
11215          GOTO9000
11216        ENDIF
11217 1140 CONTINUE
11218C
11219C               THE FRECHET PLOT IS FORMED BY:
11220C
11221C                  -LN[-LN[P(i)]] VERSUS LOG(Y(I))
11222C
11223C               WHERE THE Y(I) ARE THE SORTED DATA AND
11224C
11225C                  P(I) = (I - 0.3)/(N + 0.4)
11226C
11227C               ***********************************************
11228C               **  STEP 21--                                **
11229C               **  SORT THE DATA AND CARRY ALONG THE TAG    **
11230C               ***********************************************
11231C
11232      DO2005I=1,N
11233        PI=(REAL(I) - 0.3)/(REAL(N) + 0.4)
11234        Y2(I)=-LOG(-LOG(PI))
11235        D2(I)=1.0
11236 2005 CONTINUE
11237C
11238      IF(IHIGH.EQ.'ON')THEN
11239        CALL SORTC(Y,XHIGH,N,X2,XDIST)
11240        DO2010I=1,N
11241          XHIGH(I)=XDIST(I)
11242          X2(I)=LOG(X2(I))
11243 2010   CONTINUE
11244        CALL DISTIN(XHIGH,N,IWRITE,XDIST,NDIST,IBUGG3,IERROR)
11245        IF(IERROR.EQ.'YES')GOTO9000
11246        CALL CODE(XHIGH,N,IWRITE,XHIGHC,XDIST,MAXOBV,IBUGG3,IERROR)
11247        IF(IERROR.EQ.'YES')GOTO9000
11248        DO2020I=1,N
11249          D2(I)=XHIGHC(I)
11250 2020   CONTINUE
11251      ELSE
11252        CALL SORT(Y,N,X2)
11253        NDIST=1
11254        DO2013I=1,N
11255          XHIGH(I)=1.0
11256          X2(I)=LOG(X2(I))
11257 2013   CONTINUE
11258      ENDIF
11259C
11260C               ******************************************
11261C               **  STEP 33--                           **
11262C               **  CARRY OUT THE FIT                   **
11263C               ******************************************
11264C
11265      AN=REAL(N)
11266      SUMX=0.0
11267      SUMY=0.0
11268      DO3310I=1,N
11269C
11270        IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'WEI3')THEN
11271          WRITE(ICOUT,3311)I,Y2(I),X2(I)
11272 3311     FORMAT('I,Y2(I),X2(I) = ',I8,2G15.7)
11273          CALL DPWRST('XXX','BUG ')
11274        ENDIF
11275C
11276        SUMX=SUMX+X2(I)
11277        SUMY=SUMY+Y2(I)
11278 3310 CONTINUE
11279      XBAR=SUMX/AN
11280      YBAR=SUMY/AN
11281C
11282      SUMXX=0.0
11283      SUMYY=0.0
11284      SUMXY=0.0
11285      DO3320I=1,N
11286        SUMXX=SUMXX+(X2(I)-XBAR)*(X2(I)-XBAR)
11287        SUMYY=SUMYY+(Y2(I)-YBAR)*(Y2(I)-YBAR)
11288        SUMXY=SUMXY+(X2(I)-XBAR)*(Y2(I)-YBAR)
11289 3320 CONTINUE
11290      ASLOPE=0.0
11291      IF(SUMXX.GT.0.0)ASLOPE=SUMXY/SUMXX
11292      AINTER=YBAR-ASLOPE*XBAR
11293C
11294      SUMRR=0.0
11295      SUMX2=0.0
11296      DO3330I=1,N
11297        RES=Y2(I)-(AINTER+ASLOPE*X2(I))
11298        SUMRR=SUMRR+RES*RES
11299        SUMX2=SUMX2+X2(I)*X2(I)
11300 3330 CONTINUE
11301      RESVAR=SUMRR/(AN-2.0)
11302      RESSD=0.0
11303      IF(RESVAR.GT.0.0)RESSD=SQRT(RESVAR)
11304      SDINTE=RESSD*SQRT(SUMX2/(AN*SUMXX))
11305      SDSLOP=RESSD*SQRT(1.0/SUMXX)
11306C
11307C               ****************************************
11308C               **  STEP 34--                         **
11309C               **  FORM ESTIMATES FOR                **
11310C               **  BETA (= SHAPE PARAMETER) AND      **
11311C               **  ETA  (= CHARACTERISTIC LIFE)      **
11312C               ****************************************
11313C
11314      IF(ASLOPE.LE.0.0)THEN
11315        WRITE(ICOUT,999)
11316        CALL DPWRST('XXX','BUG ')
11317        WRITE(ICOUT,1111)
11318        CALL DPWRST('XXX','BUG ')
11319        WRITE(ICOUT,3332)
11320 3332   FORMAT('      THE FITTED SLOPE IS ZERO OR NEGATIVE WHICH WOULD')
11321        CALL DPWRST('XXX','BUG ')
11322        WRITE(ICOUT,3335)
11323 3335   FORMAT('      YIELD AN IMPOSSIBLE VALUE FOR THE SHAPE ',
11324     1         'PARAMETER = SLOPE.')
11325        CALL DPWRST('XXX','BUG ')
11326        WRITE(ICOUT,3336)ASLOPE
11327 3336   FORMAT('      ASLOPE = ',G15.7)
11328        CALL DPWRST('XXX','BUG ')
11329        WRITE(ICOUT,3337)SUMX,SUMY,SUMXX,SUMYY,SUMXY
11330 3337   FORMAT('      SUMX,SUMY,SUMXX,SUMYY,SUMXY = ',5G15.7)
11331        CALL DPWRST('XXX','BUG ')
11332        IERROR='YES'
11333        GOTO9000
11334      ENDIF
11335C
11336      SHAPE=ASLOPE
11337      SCALE=EXP(AINTER/(-ASLOPE))
11338C
11339C     NOT SURE WHAT THE STANDARD DEVIATIONS SHOULD BE FOR THE
11340C     SHAPE/SCALE PARAMETERS, SO DON'T COMPUTE FOR NOW.
11341CCCCC SDSHAP=BETA*BETA*SDSLOP
11342CCCCC SDSCAL=ETA*SDINTE
11343      SDSHAP=CPUMIN
11344      SDSCAL=CPUMIN
11345C
11346C               ************************************************
11347C               **  STEP 35--                                 **
11348C               **  FORM ESTIMATES FOR                        **
11349C               **     BPT1= .1%   POINT OF BEST-FIT DIST.    **
11350C               **     BPT5= .5%   POINT OF BEST-FIT DIST.    **
11351C               **     B1  =  1%   POINT OF BEST-FIT DIST.    **
11352C               **     B5  =  5%   POINT OF BEST-FIT DIST.    **
11353C               **     B10 = 10%   POINT OF BEST-FIT DIST.    **
11354C               **     B20 = 20%   POINT OF BEST-FIT DIST.    **
11355C               **     B50 = 50%   POINT OF BEST-FIT DIST.    **
11356C               **     B80 = 80%   POINT OF BEST-FIT DIST.    **
11357C               **     B90 = 90%   POINT OF BEST-FIT DIST.    **
11358C               **     B95 = 95%   POINT OF BEST-FIT DIST.    **
11359C               **     B99 = 99%   POINT OF BEST-FIT DIST.    **
11360C               **     B995= 99.5% POINT OF BEST-FIT DIST.    **
11361C               **     B999= 99.9% POINT OF BEST-FIT DIST.    **
11362C               ************************************************
11363C
11364      P=.001
11365      BPT1=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11366      P=.005
11367      BPT5=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11368      P=.01
11369      B1=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11370      P=.05
11371      B5=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11372      P=.10
11373      B10=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11374      P=.20
11375      B20=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11376      P=.50
11377      B50=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11378      P=.80
11379      B80=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11380      P=.90
11381      B90=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11382      P=.95
11383      B95=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11384      P=.99
11385      B99=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11386      P=.995
11387      B995=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11388      P=.999
11389      B999=SCALE*(LOG(1.0/P)**(-1.0/SHAPE))
11390C
11391C               ****************************************
11392C               **  STEP 42--                         **
11393C               **  DETERMINE PLOT LIMITS FOR         **
11394C               **  PREDICTED LINE                    **
11395C               ****************************************
11396C
11397      N2=N+1
11398      XMIN=X2(1)
11399      YMIN=AINTER + ASLOPE*XMIN
11400      X2(N2)=XMIN
11401      Y2(N2)=YMIN
11402      D2(N2)=REAL(NDIST+1)
11403      N2=N2+1
11404      XMAX=X2(N)
11405      YMAX=AINTER + ASLOPE*XMAX
11406      X2(N2)=XMAX
11407      Y2(N2)=YMAX
11408      D2(N2)=REAL(NDIST+1)
11409C
11410C               *****************
11411C               **  STEP 90--  **
11412C               **  EXIT       **
11413C               *****************
11414C
11415 9000 CONTINUE
11416      IF(IBUGG3.EQ.'ON' .OR. ISUBRO.EQ.'WEI3')THEN
11417        WRITE(ICOUT,999)
11418        CALL DPWRST('XXX','BUG ')
11419        WRITE(ICOUT,9011)
11420 9011   FORMAT('***** AT THE END       OF DPWEI3--')
11421        CALL DPWRST('XXX','BUG ')
11422        WRITE(ICOUT,9012)ICASPL,MAXN,N2,IERROR
11423 9012   FORMAT('ICASPL,MAXN,N2,IERROR = ',A4,2I8,2X,A4)
11424        CALL DPWRST('XXX','BUG ')
11425        DO9015I=1,N2
11426          WRITE(ICOUT,9016)I,Y2(I),X2(I),D2(I)
11427 9016     FORMAT('I,Y2(I),X2(I),D2(I) = ',I8,3G15.7)
11428          CALL DPWRST('XXX','BUG ')
11429 9015   CONTINUE
11430        WRITE(ICOUT,9031)AINTER,ASLOPE,SDINTE,SDSLOP
11431 9031   FORMAT('AINTER,ASLOPE,SDINTE,SDSLOP = ',4G15.7)
11432        CALL DPWRST('XXX','BUG ')
11433        WRITE(ICOUT,9032)SHAPE,SCALE
11434 9032   FORMAT('SHAPE,SCALE = ',2G15.7)
11435        CALL DPWRST('XXX','BUG ')
11436        WRITE(ICOUT,9034)BPT1,BPT5,B1,B5
11437 9034   FORMAT('BPT1,BPT5,B1,B5 = ',4G15.7)
11438        CALL DPWRST('XXX','BUG ')
11439        WRITE(ICOUT,9035)B10,B20,B50,B80,B90
11440 9035   FORMAT(' B10,B20,B50,B80,B90 = ',5G15.7)
11441        CALL DPWRST('XXX','BUG ')
11442        WRITE(ICOUT,9036)B95,B99,B995,B999
11443 9036   FORMAT('B95,B99,B995,B999 = ',4G15.7)
11444        CALL DPWRST('XXX','BUG ')
11445      ENDIF
11446C
11447      RETURN
11448      END
11449      SUBROUTINE DPWEIG(IHARG,IHARG2,NUMARG,IDEFW1,IDEFW2,
11450     1IWEIG1,IWEIG2,IWEIGH,IFOUND,IERROR)
11451C
11452C     PURPOSE--DEFINE THE USER VARIABLE NAME IN WHICH
11453C              THE WEIGHTS FOR FITTING, PRE-FITTING, ANOVA, EC. RESIDE.
11454C              CHARACTERS 1 TO 4 OF THE SPECIFIED KNOT NAME
11455C              WILL BE PLACED IN THE HOLLERITH VARIABLE IWEIG1;
11456C              CHARACTERS 5 TO 8 OF THE SPECIFIED KNOT NAME
11457C              WILL BE PLACED IN THE HOLLERITH VARIABLE IWEIG2.
11458C     INPUT  ARGUMENTS--IHARG  (A  HOLLERITH VECTOR)
11459C                     --IHARG2 (A  HOLLERITH VECTOR)
11460C                     --NUMARG (AN INTEGER VARIABLE)
11461C                     --IDEFW1 (A  HOLLERITH VARIABLE)
11462C                     --IDEFW2 (A  HOLLERITH VARIABLE)
11463C     OUTPUT ARGUMENTS--IWEIG1 (A  HOLLERITH VARIABLE)
11464C                     --IWEIG2 (A  HOLLERITH VARIABLE)
11465C                     --IWEIGH (A  HOLLERITH VARIABLE)
11466C                     --IFOUND ('YES' OR 'NO' )
11467C                     --IERROR ('YES' OR 'NO' )
11468C     WRITTEN BY--JAMES J. FILLIBEN
11469C                 STATISTICAL ENGINEERING DIVISION
11470C                 INFORMATION TECHNOLOGY LABORATORY
11471C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11472C                 GAITHERSBURG, MD 20899-8980
11473C                 PHONE--301-975-2899
11474C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11475C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11476C     LANGUAGE--ANSI FORTRAN (1977)
11477C     VERSION NUMBER--82/7
11478C     ORIGINAL VERSION--NOVEMBER  1980.
11479C     UPDATED         --MARCH     1982.
11480C     UPDATED         --MAY       1982.
11481C
11482C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
11483C
11484      CHARACTER*4 IHARG
11485      CHARACTER*4 IHARG2
11486      CHARACTER*4 IDEFW1
11487      CHARACTER*4 IDEFW2
11488      CHARACTER*4 IWEIG1
11489      CHARACTER*4 IWEIG2
11490      CHARACTER*4 IWEIGH
11491      CHARACTER*4 IFOUND
11492      CHARACTER*4 IERROR
11493C
11494      CHARACTER*4 IHOLD1
11495      CHARACTER*4 IHOLD2
11496C
11497C---------------------------------------------------------------------
11498C
11499      DIMENSION IHARG(*)
11500      DIMENSION IHARG2(*)
11501C
11502C-----COMMON----------------------------------------------------------
11503C
11504      INCLUDE 'DPCOP2.INC'
11505C
11506C-----START POINT-----------------------------------------------------
11507C
11508      IFOUND='NO'
11509      IERROR='NO'
11510C
11511      GOTO1110
11512C
11513 1110 CONTINUE
11514      IF(NUMARG.LE.0)GOTO1150
11515      IF(IHARG(NUMARG).EQ.'ON')GOTO1150
11516      IF(IHARG(NUMARG).EQ.'OFF')GOTO1150
11517      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150
11518      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150
11519      GOTO1160
11520C
11521 1150 CONTINUE
11522      IHOLD1=IDEFW1
11523      IHOLD2=IDEFW2
11524      IWEIGH='OFF'
11525      GOTO1180
11526C
11527 1160 CONTINUE
11528      IHOLD1=IHARG(NUMARG)
11529      IHOLD2=IHARG2(NUMARG)
11530      IWEIGH='ON'
11531      GOTO1180
11532C
11533 1180 CONTINUE
11534      IFOUND='YES'
11535      IWEIG1=IHOLD1
11536      IWEIG2=IHOLD2
11537C
11538      IF(IFEEDB.EQ.'OFF')GOTO1189
11539      WRITE(ICOUT,999)
11540  999 FORMAT(1X)
11541      CALL DPWRST('XXX','BUG ')
11542      WRITE(ICOUT,1181)IWEIG1,IWEIG2
11543 1181 FORMAT('THE WEIGHTS VARIABLE HAS JUST BEEN DESIGNATED AS ',
11544     1A4,A4)
11545      CALL DPWRST('XXX','BUG ')
11546      IF(IWEIGH.EQ.'OFF')WRITE(ICOUT,1182)
11547 1182 FORMAT('(THAT IS, THE EQUAL-WEIGHTS CASE IS BEING ASSUMED)')
11548      IF(IWEIGH.EQ.'OFF')CALL DPWRST('XXX','BUG ')
11549 1189 CONTINUE
11550      GOTO1199
11551C
11552 1199 CONTINUE
11553      RETURN
11554      END
11555      SUBROUTINE DPWICC(IHARG,IHARG2,IARGT,ARG,NUMARG,
11556     1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,IANS,IWIDTH,
11557     1PWXMIN,PWXMAX,PWYMIN,PWYMAX,IBUGP2,IFOUND,IERROR)
11558C
11559C     PURPOSE--DEFINE THE WINDOW CORNER COORDINATES
11560C              (LOWER LEFT AND UPPER RIGHT)
11561C              WHICH IN TURN WILL DEFINE THE SIZE AND SHAPE
11562C              OF THE PLOT WINDOW.
11563C              THE 2 PAIRS OF COORDINATES ARE CONTAINED IN THE
11564C              4 VARIABLES    PWXMIN,PWYMIN    AND    PWXMAX,PWYMAX
11565C      NOTE--THE PLOT WINDOW INCLUDES THE AREA INSIDE THE FRAME
11566C            AND THE AREA OUTSIDE THE FRAME.
11567C     INPUT  ARGUMENTS--IHARG  (A  HOLLERITH VECTOR)
11568C                     --IARGT  (A  HOLLERITH VECTOR)
11569C                     --ARG    (A  FLOATING POINT VECTOR)
11570C                     --NUMARG
11571C     OUTPUT ARGUMENTS--PWXMIN = X COOR. FOR LOWER LEFT  CORNER
11572C                     --PWXMAX = X COOR. FOR UPPER RIGHT CORNER
11573C                     --PWYMIN = Y COOR. FOR LOWER LEFT  CORNER
11574C                     --PWYMAX = Y COOR. FOR UPPER RIGHT CORNER
11575C                     --IFOUND ('YES' OR 'NO' )
11576C                     --IERROR ('YES' OR 'NO' )
11577C     WRITTEN BY--JAMES J. FILLIBEN
11578C                 STATISTICAL ENGINEERING DIVISION
11579C                 INFORMATION TECHNOLOGY LABORATORY
11580C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11581C                 GAITHERSBURG, MD 20899-8980
11582C                 PHONE--301-975-2899
11583C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11584C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11585C     LANGUAGE--ANSI FORTRAN (1977)
11586C     VERSION NUMBER--82/7
11587C     ORIGINAL VERSION--NOVEMBER  1978.
11588C     UPDATED         --SEPTEMBER 1980.
11589C     UPDATED         --MARCH     1981.
11590C     UPDATED         --MAY       1982.
11591C     UPDATED         --DECEMBER  1996. NO ARGUMENTS EQUAL DEFAULT
11592C
11593C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
11594C
11595      CHARACTER*4 IHARG
11596      CHARACTER*4 IHARG2
11597      CHARACTER*4 IARGT
11598      CHARACTER*4 IHNAME
11599      CHARACTER*4 IHNAM2
11600      CHARACTER*4 IUSE
11601      CHARACTER*4 IANS
11602      CHARACTER*4 IBUGP2
11603      CHARACTER*4 IFOUND
11604      CHARACTER*4 IERROR
11605C
11606      CHARACTER*4 IHWUSE
11607      CHARACTER*4 MESSAG
11608      CHARACTER*4 IHWORD
11609      CHARACTER*4 IHWOR2
11610C
11611      CHARACTER*4 ISUBN1
11612      CHARACTER*4 ISUBN2
11613C
11614C---------------------------------------------------------------------
11615C
11616      DIMENSION IHARG(*)
11617      DIMENSION IHARG2(*)
11618      DIMENSION IARGT(*)
11619      DIMENSION ARG(*)
11620C
11621      DIMENSION IHNAME(*)
11622      DIMENSION IHNAM2(*)
11623      DIMENSION IUSE(*)
11624      DIMENSION IN(*)
11625      DIMENSION IVALUE(*)
11626      DIMENSION VALUE(*)
11627      DIMENSION IANS(*)
11628C
11629C-----COMMON----------------------------------------------------------
11630C
11631      INCLUDE 'DPCOP2.INC'
11632C
11633C-----START POINT-----------------------------------------------------
11634C
11635      ISUBN1='DPWI'
11636      ISUBN2='CC  '
11637      IFOUND='NO'
11638      IERROR='NO'
11639C
11640      IF(IBUGP2.EQ.'OFF')GOTO90
11641      WRITE(ICOUT,999)
11642  999 FORMAT(1X)
11643      CALL DPWRST('XXX','BUG ')
11644      WRITE(ICOUT,51)
11645   51 FORMAT('***** AT THE BEGINNING OF DPWICC--')
11646      CALL DPWRST('XXX','BUG ')
11647      WRITE(ICOUT,52)IFOUND,IERROR
11648   52 FORMAT('IFOUND,IERROR = ',A4,2X,A4)
11649      CALL DPWRST('XXX','BUG ')
11650      WRITE(ICOUT,53)PWXMIN,PWXMAX,PWYMIN,PWYMAX
11651   53 FORMAT('PWXMIN,PWXMAX,PWYMIN,PWYMAX = ',4E15.7)
11652      CALL DPWRST('XXX','BUG ')
11653   90 CONTINUE
11654C
11655C               **************************************************
11656C               **  TREAT THE    WINDOW    COORDINATES    CASE  **
11657C               **************************************************
11658C
11659      IF(NUMARG.LE.0)GOTO1150
11660      GOTO1110
11661C
11662 1110 CONTINUE
11663      IF(IHARG(NUMARG).EQ.'ON')GOTO1150
11664      IF(IHARG(NUMARG).EQ.'OFF')GOTO1150
11665      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150
11666      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150
11667CCCCC DECEMBER 1996.  IF NO ARGUMENTS, IHARG(NUMARG) = 'COOR'
11668      IF(IHARG(NUMARG).EQ.'COOR')GOTO1150
11669      IF(NUMARG.GE.2)GOTO1175
11670      GOTO1120
11671C
11672 1120 CONTINUE
11673      IERROR='YES'
11674      WRITE(ICOUT,1121)
11675 1121 FORMAT('***** ERROR IN DPCORN--')
11676      CALL DPWRST('XXX','BUG ')
11677      WRITE(ICOUT,1122)
11678 1122 FORMAT('      ILLEGAL FORM FOR WINDOW CORNER COORDINATES ',
11679     1'COMMAND.')
11680      CALL DPWRST('XXX','BUG ')
11681      WRITE(ICOUT,1124)
11682 1124 FORMAT('      TEST EXAMPLE TO DEMONSTRATE THE ',
11683     1'PROPER FORM--')
11684      CALL DPWRST('XXX','BUG ')
11685      WRITE(ICOUT,1125)
11686 1125 FORMAT('      SUPPOSE IT IS DESIRED TO POSITION   ')
11687      CALL DPWRST('XXX','BUG ')
11688      WRITE(ICOUT,1126)
11689 1126 FORMAT('      THE LOWER LEFT CORNER OF THE WINDOW')
11690      CALL DPWRST('XXX','BUG ')
11691      WRITE(ICOUT,1127)
11692 1127 FORMAT('      10% ACROSS THE PAGE AND 20% UP THE PAGE, AND')
11693      CALL DPWRST('XXX','BUG ')
11694      WRITE(ICOUT,1128)
11695 1128 FORMAT('      THE UPPER RIGHT CORNER OF THE WINDOW')
11696      CALL DPWRST('XXX','BUG ')
11697      WRITE(ICOUT,1129)
11698 1129 FORMAT('      90% ACROSS THE PAGE AND 80% UP THE PAGE,')
11699      CALL DPWRST('XXX','BUG ')
11700      WRITE(ICOUT,1130)
11701 1130 FORMAT('      THEN THE ALLOWABLE FORM IS--')
11702      CALL DPWRST('XXX','BUG ')
11703      WRITE(ICOUT,1131)
11704 1131 FORMAT('      WINDOW CORNER COORDINATES 10 20 90 80')
11705      CALL DPWRST('XXX','BUG ')
11706      WRITE(ICOUT,1132)
11707 1132 FORMAT('      WINDOW 10 20 90 80')
11708      CALL DPWRST('XXX','BUG ')
11709      GOTO9000
11710C
11711 1150 CONTINUE
11712      PWXMIN=0.
11713      PWYMIN=0.
11714      PWXMAX=100.
11715      PWYMAX=100.
11716      GOTO1180
11717C
11718 1175 CONTINUE
11719      DO1176J=2,NUMARG
11720      IF(IARGT(J).EQ.'NUMB')GOTO1177
11721      GOTO1178
11722 1177 CONTINUE
11723      IF(J.EQ.2)PWXMIN=ARG(J)
11724      IF(J.EQ.3)PWYMIN=ARG(J)
11725      IF(J.EQ.4)PWXMAX=ARG(J)
11726      IF(J.EQ.5)PWYMAX=ARG(J)
11727      GOTO1176
11728 1178 CONTINUE
11729      IHWORD=IHARG(J)
11730      IHWOR2=IHARG2(J)
11731      IHWUSE='P'
11732      MESSAG='YES'
11733      CALL CHECKN(IHWORD,IHWOR2,IHWUSE,
11734     1IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
11735     1ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOC,IERROR)
11736      IF(IERROR.EQ.'YES')GOTO9000
11737      IF(J.EQ.2)PWXMIN=VALUE(ILOC)
11738      IF(J.EQ.3)PWYMIN=VALUE(ILOC)
11739      IF(J.EQ.4)PWXMAX=VALUE(ILOC)
11740      IF(J.EQ.5)PWYMAX=VALUE(ILOC)
11741 1176 CONTINUE
11742      GOTO1180
11743C
11744 1180 CONTINUE
11745      IFOUND='YES'
11746C
11747      IF(IFEEDB.EQ.'OFF')GOTO1189
11748      WRITE(ICOUT,999)
11749      CALL DPWRST('XXX','BUG ')
11750      WRITE(ICOUT,1185)
11751 1185 FORMAT('THE WINDOW CORNER COORDINATES HAVE JUST BEEN SET ',
11752     1'AS FOLLOWS--')
11753      CALL DPWRST('XXX','BUG ')
11754      WRITE(ICOUT,1186)PWXMIN,PWYMIN
11755 1186 FORMAT('    (X,Y) FOR LOWER LEFT  CORNER OF WINDOW = ',2E15.7)
11756      CALL DPWRST('XXX','BUG ')
11757      WRITE(ICOUT,1187)PWXMAX,PWYMAX
11758 1187 FORMAT('    (X,Y) FOR UPPER RIGHT CORNER OF WINDOW = ',2E15.7)
11759      CALL DPWRST('XXX','BUG ')
11760 1189 CONTINUE
11761      GOTO9000
11762C
11763C               *****************
11764C               **  STEP 90--  **
11765C               **  EXIT       **
11766C               *****************
11767C
11768 9000 CONTINUE
11769      IF(IBUGP2.EQ.'OFF')GOTO9090
11770      WRITE(ICOUT,999)
11771      CALL DPWRST('XXX','BUG ')
11772      WRITE(ICOUT,9011)
11773 9011 FORMAT('***** AT THE END       OF DPWICC--')
11774      CALL DPWRST('XXX','BUG ')
11775      WRITE(ICOUT,9012)IFOUND,IERROR
11776 9012 FORMAT('IFOUND,IERROR = ',A4,2X,A4)
11777      CALL DPWRST('XXX','BUG ')
11778      WRITE(ICOUT,9013)PWXMIN,PWXMAX,PWYMIN,PWYMAX
11779 9013 FORMAT('PWXMIN,PWXMAX,PWYMIN,PWYMAX = ',4E15.7)
11780      CALL DPWRST('XXX','BUG ')
11781 9090 CONTINUE
11782C
11783      RETURN
11784      END
11785      SUBROUTINE DPWIDT(IHARG,IARGT,ARG,NUMARG,
11786     1PDEFWI,
11787     1PTEXWI,
11788     1IBUGD2,ISUBRO,IFOUND,IERROR)
11789C
11790C     PURPOSE--DEFINE THE WIDTH FOR TEXT CHARACTERS.
11791C              THE WIDTH FOR TEXT CHARACTERS WILL BE PLACED
11792C              IN THE FLOATING POINT VARIABLE PTEXWI.
11793C     NOTE--THE WIDTH IS IN STANDARDIZED UNITS (0.0 TO 100.0).
11794C     NOTE--THE WIDTH DOES NOT INCLUDE BETWEEN-LINE GAP.
11795C     INPUT  ARGUMENTS--IHARG  (A  CHARACTER VECTOR)
11796C                     --IARGT
11797C                     --ARG
11798C                     --NUMARG
11799C                     --PDEFWI
11800C                     --IBUGD2
11801C     OUTPUT ARGUMENTS--PTEXWI
11802C                     --IFOUND ('YES' OR 'NO' )
11803C                     --IERROR ('YES' OR 'NO' )
11804C     WRITTEN BY--JAMES J. FILLIBEN
11805C                 STATISTICAL ENGINEERING DIVISION
11806C                 INFORMATION TECHNOLOGY LABORATORY
11807C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11808C                 GAITHERSBURG, MD 20899-8980
11809C                 PHONE--301-975-2899
11810C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11811C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11812C     LANGUAGE--ANSI FORTRAN (1977)
11813C     VERSION NUMBER--82/7
11814C     ORIGINAL VERSION--APRIL     1981.
11815C     UPDATED         --MAY       1982.
11816C
11817C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
11818C
11819      CHARACTER*4 IHARG
11820      CHARACTER*4 IARGT
11821      CHARACTER*4 IBUGD2
11822      CHARACTER*4 ISUBRO
11823      CHARACTER*4 IFOUND
11824      CHARACTER*4 IERROR
11825C
11826C---------------------------------------------------------------------
11827C
11828      DIMENSION IHARG(*)
11829      DIMENSION IARGT(*)
11830      DIMENSION ARG(*)
11831C
11832C-----COMMON----------------------------------------------------------
11833C
11834      INCLUDE 'DPCOP2.INC'
11835C
11836C-----START POINT-----------------------------------------------------
11837C
11838      IFOUND='NO'
11839      IERROR='NO'
11840C
11841      IF(IBUGD2.EQ.'OFF')GOTO90
11842      WRITE(ICOUT,999)
11843  999 FORMAT(1X)
11844      CALL DPWRST('XXX','BUG ')
11845      WRITE(ICOUT,51)
11846   51 FORMAT('***** AT THE BEGINNING OF DPWIDT--')
11847      CALL DPWRST('XXX','BUG ')
11848      WRITE(ICOUT,53)PDEFWI
11849   53 FORMAT('PDEFWI = ',E15.7)
11850      CALL DPWRST('XXX','BUG ')
11851      WRITE(ICOUT,54)NUMARG
11852   54 FORMAT('NUMARG = ',I8)
11853      CALL DPWRST('XXX','BUG ')
11854      DO55I=1,NUMARG
11855      WRITE(ICOUT,56)I,IHARG(I),IARGT(I),ARG(I)
11856   56 FORMAT('I,IHARG(I),IARGT(I),ARG(I) = ',I8,2X,A4,2X,A4,E15.7)
11857      CALL DPWRST('XXX','BUG ')
11858   55 CONTINUE
11859   90 CONTINUE
11860C
11861C               *****************************
11862C               **  TREAT THE WIDTH CASE  **
11863C               *****************************
11864C
11865      IF(NUMARG.LE.0)GOTO1150
11866      IF(IHARG(NUMARG).EQ.'ON')GOTO1150
11867      IF(IHARG(NUMARG).EQ.'OFF')GOTO1150
11868      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150
11869      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150
11870      IF(IHARG(NUMARG).EQ.'?')GOTO8100
11871C
11872      IF(NUMARG.GE.1.AND.IARGT(NUMARG).EQ.'NUMB')
11873     1GOTO1160
11874C
11875      IERROR='YES'
11876      WRITE(ICOUT,1121)
11877 1121 FORMAT('***** ERROR IN DPWIDT--')
11878      CALL DPWRST('XXX','BUG ')
11879      WRITE(ICOUT,1122)
11880 1122 FORMAT('      ILLEGAL FORM FOR WIDTH COMMAND.')
11881      CALL DPWRST('XXX','BUG ')
11882      WRITE(ICOUT,1124)
11883 1124 FORMAT('      TEST EXAMPLE TO DEMONSTRATE THE ',
11884     1'PROPER FORM--')
11885      CALL DPWRST('XXX','BUG ')
11886      WRITE(ICOUT,1125)
11887 1125 FORMAT('      SUPPOSE IT IS DESIRED THAT ')
11888      CALL DPWRST('XXX','BUG ')
11889      WRITE(ICOUT,1126)
11890 1126 FORMAT('      THE TEXT CHARACTERS HAVE A WIDTH OF 5')
11891      CALL DPWRST('XXX','BUG ')
11892      WRITE(ICOUT,1127)
11893 1127 FORMAT('      (WHERE THE HORIZONTAL SCREEN UNITS RANGE')
11894      CALL DPWRST('XXX','BUG ')
11895      WRITE(ICOUT,1128)
11896 1128 FORMAT('      FROM 0 TO 100, AND WHERE ')
11897      CALL DPWRST('XXX','BUG ')
11898      WRITE(ICOUT,1129)
11899 1129 FORMAT('      THE BETWEEN-CHARACTER GAP IS NOT INCLUDED),')
11900      CALL DPWRST('XXX','BUG ')
11901      WRITE(ICOUT,1130)
11902 1130 FORMAT('      THEN THE ALLOWABLE FORM IS--')
11903      CALL DPWRST('XXX','BUG ')
11904      WRITE(ICOUT,1131)
11905 1131 FORMAT('           WIDTH 5 ')
11906      CALL DPWRST('XXX','BUG ')
11907      GOTO9000
11908C
11909 1150 CONTINUE
11910      PTEXWI=PDEFWI
11911      GOTO1180
11912C
11913 1160 CONTINUE
11914      PTEXWI=ARG(NUMARG)
11915      GOTO1180
11916C
11917 1180 CONTINUE
11918      IFOUND='YES'
11919C
11920      IF(IFEEDB.EQ.'OFF')GOTO1189
11921      WRITE(ICOUT,999)
11922      CALL DPWRST('XXX','BUG ')
11923      WRITE(ICOUT,1181)
11924 1181 FORMAT('THE WIDTH (FOR TEXT CHARACTERS)  ')
11925      CALL DPWRST('XXX','BUG ')
11926      WRITE(ICOUT,1182)PTEXWI
11927 1182 FORMAT('HAS JUST BEEN SET TO ',E15.7)
11928      CALL DPWRST('XXX','BUG ')
11929 1189 CONTINUE
11930      GOTO9000
11931C
11932C               ********************************************
11933C               **  STEP 81--                             **
11934C               **  TREAT THE    ?    CASE--              **
11935C               **  DUMP OUT CURRENT AND DEFAULT VALUES.  **
11936C               ********************************************
11937C
11938 8100 CONTINUE
11939      IFOUND='YES'
11940      WRITE(ICOUT,999)
11941      CALL DPWRST('XXX','BUG ')
11942      WRITE(ICOUT,8111)PTEXWI
11943 8111 FORMAT('THE CURRENT (TEXT) WIDTH  IS ',E15.7)
11944      CALL DPWRST('XXX','BUG ')
11945      WRITE(ICOUT,8112)PDEFWI
11946 8112 FORMAT('THE DEFAULT (TEXT) WIDTH  IS ',E15.7)
11947      CALL DPWRST('XXX','BUG ')
11948      GOTO9000
11949C
11950C               *****************
11951C               **  STEP 90--  **
11952C               **  EXIT       **
11953C               *****************
11954C
11955 9000 CONTINUE
11956      IF(IBUGD2.EQ.'OFF')GOTO9090
11957      WRITE(ICOUT,999)
11958      CALL DPWRST('XXX','BUG ')
11959      WRITE(ICOUT,9011)
11960 9011 FORMAT('***** AT THE END       OF DPWIDT--')
11961      CALL DPWRST('XXX','BUG ')
11962      WRITE(ICOUT,9012)IBUGD2,ISUBRO,IFOUND,IERROR
11963 9012 FORMAT('IBUGD2,ISUBRO,IFOUND,IERROR = ',A4,2X,A4,2X,A4)
11964      CALL DPWRST('XXX','BUG ')
11965      WRITE(ICOUT,9013)PTEXWI
11966 9013 FORMAT('PTEXWI = ',E15.7)
11967      CALL DPWRST('XXX','BUG ')
11968 9090 CONTINUE
11969C
11970      RETURN
11971      END
11972      SUBROUTINE DPWILC(XTEMP1,XTEMP2,MAXNXT,
11973     1                  ICAPSW,IFORSW,
11974     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
11975C
11976C     PURPOSE--CARRY OUT A 1-SAMPLE OR 2-SAMPLE WILCOXON SIGNED RANK TEST
11977C     EXAMPLE--WILCOXON SIGNED RANK TEST Y D0
11978C              WILCOXON SIGNED RANK TEST D0 Y
11979C              WILCOXON SIGNED RANK TEST Y1 Y2
11980C              WILCOXON SIGNED RANK TEST Y1 Y2 Y3 Y4 D0
11981C              WILCOXON SIGNED RANK TEST Y1 Y2 Y3 Y4 Y5
11982C     WRITTEN BY--ALAN HECKERT
11983C                 STATISTICAL ENGINEERING DIVISION
11984C                 INFORMATION TECHNOLOGY LABORATORY
11985C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11986C                 GAITHERSBURG, MD 20899-8980
11987C                 PHONE--301-975-2899
11988C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11989C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11990C     LANGUAGE--ANSI FORTRAN (1977)
11991C     VERSION NUMBER--99/6
11992C     ORIGINAL VERSION--JUNE      1999.
11993C     UPDATED         --JANUARY   2007.  CALL LIST TO RANK
11994C     UPDATED         --MAY       2011.  USE DPPARS AND DPPAR3
11995C
11996C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
11997C
11998      CHARACTER*4 ICAPSW
11999      CHARACTER*4 IFORSW
12000      CHARACTER*4 IBUGA2
12001      CHARACTER*4 IBUGA3
12002      CHARACTER*4 IBUGQ
12003      CHARACTER*4 ISUBRO
12004      CHARACTER*4 IFOUND
12005      CHARACTER*4 IERROR
12006C
12007      CHARACTER*4 ICASAN
12008      CHARACTER*4 ICASA2
12009      CHARACTER*4 ICASA3
12010      CHARACTER*4 ICTMP1
12011      CHARACTER*4 ICTMP2
12012      CHARACTER*4 ICTMP3
12013      CHARACTER*4 ICTMP4
12014      CHARACTER*4 ISUBN1
12015      CHARACTER*4 ISUBN2
12016      CHARACTER*4 ISTEPN
12017C
12018      CHARACTER*4 ICASE
12019      CHARACTER*4 IVARID
12020      CHARACTER*4 IVARI2
12021      CHARACTER*4 IVARI3
12022      CHARACTER*4 IVARI4
12023      CHARACTER*40 INAME
12024      PARAMETER (MAXSPN=30)
12025      CHARACTER*4 IVARN1(MAXSPN)
12026      CHARACTER*4 IVARN2(MAXSPN)
12027      CHARACTER*4 IVARTY(MAXSPN)
12028      REAL PVAR(MAXSPN)
12029      INTEGER ILIS(MAXSPN)
12030      INTEGER NRIGHT(MAXSPN)
12031      INTEGER ICOLR(MAXSPN)
12032C
12033      CHARACTER*4 IFLAGU
12034      LOGICAL IFRST
12035      LOGICAL ILAST
12036C
12037C---------------------------------------------------------------------
12038C
12039      DIMENSION XTEMP1(*)
12040      DIMENSION XTEMP2(*)
12041C
12042C-----COMMON----------------------------------------------------------
12043C
12044      INCLUDE 'DPCOPA.INC'
12045      INCLUDE 'DPCOHK.INC'
12046      INCLUDE 'DPCOSU.INC'
12047      INCLUDE 'DPCODA.INC'
12048      INCLUDE 'DPCOHO.INC'
12049      INCLUDE 'DPCOST.INC'
12050C
12051      DIMENSION XTEMP3(MAXOBV)
12052      INCLUDE 'DPCOZZ.INC'
12053      EQUIVALENCE (GARBAG(IGARB1),XTEMP3(1))
12054C
12055C-----COMMON VARIABLES (GENERAL)--------------------------------------
12056C
12057      INCLUDE 'DPCOP2.INC'
12058C
12059C-----START POINT-----------------------------------------------------
12060C
12061      ISUBN1='DPWI'
12062      ISUBN2='LC  '
12063      IFOUND='NO'
12064      IERROR='NO'
12065C
12066      MAXCP1=MAXCOL+1
12067      MAXCP2=MAXCOL+2
12068      MAXCP3=MAXCOL+3
12069      MAXCP4=MAXCOL+4
12070      MAXCP5=MAXCOL+5
12071      MAXCP6=MAXCOL+6
12072C
12073C               ************************************************
12074C               **  TREAT THE WILCOXON SIGNED RANK TEST CASE  **
12075C               ************************************************
12076C
12077      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WILC')THEN
12078        WRITE(ICOUT,999)
12079  999   FORMAT(1X)
12080        CALL DPWRST('XXX','BUG ')
12081        WRITE(ICOUT,51)
12082   51   FORMAT('***** AT THE BEGINNING OF DPWILC--')
12083        CALL DPWRST('XXX','BUG ')
12084        WRITE(ICOUT,52)IBUGA2,IBUGA3,IBUGQ,ISUBRO,MAXNXT
12085   52   FORMAT('IBUGA2,IBUGA3,IBUGQ,ISUBRO = ',4(A4,2X),I8)
12086        CALL DPWRST('XXX','BUG ')
12087      ENDIF
12088C
12089C               *********************************************************
12090C               **  STEP 1--                                           **
12091C               **  EXTRACT THE COMMAND                                **
12092C               *********************************************************
12093C
12094      ISTEPN='1'
12095      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WILC')
12096     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12097C
12098      ILASTZ=9999
12099      ICASAN='WILC'
12100      ICASA2='UNKN'
12101      ICASA3='TWOT'
12102C
12103C     LOOK FOR:
12104C
12105C          SIGNED RANK TEST/WILCOXON SIGNED RANK TEST
12106C          ONE SAMPLE (OR 1 SAMPLE)
12107C          TWO SAMPLE (OR 2 SAMPLE)
12108C          LOWER TAILED
12109C          UPPER TAILED
12110C
12111      DO100I=0,NUMARG-1
12112C
12113        IF(I.EQ.0)THEN
12114          ICTMP1=ICOM
12115        ELSE
12116          ICTMP1=IHARG(I)
12117        ENDIF
12118        ICTMP2=IHARG(I+1)
12119        ICTMP3=IHARG(I+2)
12120        ICTMP4=IHARG(I+3)
12121C
12122        IF(ICTMP1.EQ.'=')THEN
12123          IFOUND='NO'
12124          GOTO9000
12125        ELSEIF(ICTMP1.EQ.'WILC' .AND. ICTMP2.EQ.'SIGN' .AND.
12126     1         ICTMP3.EQ.'RANK' .AND. ICTMP4.EQ.'TEST')THEN
12127          IFOUND='YES'
12128          ICASAN='WILC'
12129          ILASTZ=I+3
12130        ELSEIF(ICTMP1.EQ.'WILC' .AND. ICTMP2.EQ.'SIGN' .AND.
12131     1         ICTMP3.EQ.'RANK')THEN
12132          IFOUND='YES'
12133          ICASAN='WILC'
12134          ILASTZ=I+2
12135        ELSEIF(ICTMP1.EQ.'WILC' .AND. ICTMP2.EQ.'SIGN' .AND.
12136     1         ICTMP3.EQ.'TEST')THEN
12137          IFOUND='YES'
12138          ICASAN='WILC'
12139          ILASTZ=I+2
12140        ELSEIF(ICTMP1.EQ.'WILC' .AND. ICTMP2.EQ.'TEST')THEN
12141          IFOUND='YES'
12142          ICASAN='WILC'
12143          ILASTZ=I+1
12144        ELSEIF(ICTMP1.EQ.'WILC')THEN
12145          IFOUND='YES'
12146          ICASAN='WILC'
12147          ILASTZ=I
12148        ELSEIF(ICTMP1.EQ.'SIGN' .AND. ICTMP2.EQ.'RANK' .AND.
12149     1         ICTMP3.EQ.'TEST')THEN
12150          IFOUND='YES'
12151          ICASAN='WILC'
12152          ILASTZ=I+2
12153        ELSEIF(ICTMP1.EQ.'SIGN' .AND. ICTMP2.EQ.'RANK' .AND.
12154     1         ICTMP3.NE.'TEST')THEN
12155          IFOUND='YES'
12156          ICASAN='WILC'
12157          ILASTZ=I+1
12158        ELSEIF(ICTMP1.EQ.'ONE' .AND. ICTMP2.EQ.'SAMP')THEN
12159          ICASA2='ONES'
12160          ILASTZ=MAX(ILASTZ,I+1)
12161        ELSEIF(ICTMP1.EQ.'1' .AND. ICTMP2.EQ.'SAMP')THEN
12162          ICASA2='ONES'
12163          ILASTZ=MAX(ILASTZ,I+1)
12164        ELSEIF(ICTMP1.EQ.'TWO' .AND. ICTMP2.EQ.'SAMP')THEN
12165          ICASA2='TWOS'
12166          ILASTZ=MAX(ILASTZ,I+1)
12167        ELSEIF(ICTMP1.EQ.'2' .AND. ICTMP2.EQ.'SAMP')THEN
12168          ICASA2='TWOS'
12169          ILASTZ=MAX(ILASTZ,I+1)
12170        ELSEIF(ICTMP1.EQ.'LOWE' .AND. ICTMP2.EQ.'TAIL')THEN
12171          ICASA3='LOWE'
12172          ILASTZ=MAX(ILASTZ,I+1)
12173        ELSEIF(ICTMP1.EQ.'UPPE' .AND. ICTMP2.EQ.'TAIL')THEN
12174          ICASA3='UPPE'
12175          ILASTZ=MAX(ILASTZ,I+1)
12176        ENDIF
12177  100 CONTINUE
12178C
12179      IF(IFOUND.EQ.'NO')GOTO9000
12180C
12181      ISHIFT=ILASTZ
12182      CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
12183     1            IBUGA2,IERROR)
12184C
12185      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WILC')THEN
12186        WRITE(ICOUT,91)ICASAN,ICASA2,ISHIFT
12187   91   FORMAT('DPWILC: ICASAN,ICASA2,ISHIFT = ',
12188     1         2(A4,2X),I5)
12189        CALL DPWRST('XXX','BUG ')
12190      ENDIF
12191C
12192C               ****************************************
12193C               **  STEP 2--                          **
12194C               **  EXTRACT THE VARIABLE LIST         **
12195C               ****************************************
12196C
12197      ISTEPN='2'
12198      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WILC')
12199     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12200C
12201      INAME='WILCOXON SIGNED RANK TEST'
12202      MINNA=1
12203      MAXNA=100
12204      MINN2=5
12205      IFLAGE=1
12206      IFLAGM=1
12207      MINNVA=2
12208      MAXNVA=MAXSPN
12209      IFLAGP=29
12210      JMIN=1
12211      JMAX=NUMARG
12212C
12213      CALL DPPARS(IHARG,IHARG2,IARGT,ARG,NUMARG,IANS,IWIDTH,
12214     1            IHNAME,IHNAM2,IUSE,NUMNAM,IN,IVALUE,VALUE,
12215     1            JMIN,JMAX,
12216     1            MINN2,MINNA,MAXNA,MAXSPN,IFLAGE,INAME,
12217     1            IVARN1,IVARN2,IVARTY,PVAR,
12218     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,ILOCQ,NUMVAR,
12219     1            MINNVA,MAXNVA,
12220     1            IFLAGM,IFLAGP,
12221     1            IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
12222      IF(IERROR.EQ.'YES')GOTO9000
12223C
12224      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WILC')THEN
12225        WRITE(ICOUT,999)
12226        CALL DPWRST('XXX','BUG ')
12227        WRITE(ICOUT,281)
12228  281   FORMAT('***** AFTER CALL DPPARS--')
12229        CALL DPWRST('XXX','BUG ')
12230        WRITE(ICOUT,282)NQ,NUMVAR
12231  282   FORMAT('NQ,NUMVAR = ',2I8)
12232        CALL DPWRST('XXX','BUG ')
12233        IF(NUMVAR.GT.0)THEN
12234          DO285I=1,NUMVAR
12235            WRITE(ICOUT,287)I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),
12236     1                      ICOLR(I)
12237  287       FORMAT('I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),',
12238     1             'ICOLR(I) = ',I8,2X,A4,A4,2X,3I8)
12239            CALL DPWRST('XXX','BUG ')
12240  285     CONTINUE
12241        ENDIF
12242      ENDIF
12243C
12244C     IF FIRST OR LAST ARGUMENT IS A PARAMETER, EXTRACT D0.
12245C
12246      IF(IVARTY(1).EQ.'PARA')THEN
12247        ISTART=2
12248        ISTOP=NUMVAR
12249        D0=PVAR(1)
12250      ELSEIF(IVARTY(NUMVAR).EQ.'PARA')THEN
12251        ISTART=1
12252        ISTOP=NUMVAR-1
12253        D0=PVAR(NUMVAR)
12254      ELSE
12255        ISTART=1
12256        ISTOP=NUMVAR
12257        D0=0.0
12258      ENDIF
12259C
12260      NTEMP=ISTOP-ISTART+1
12261      IF(ICASA2.EQ.'UNKN')THEN
12262        IF(NTEMP.EQ.1)ICASA2='ONES'
12263        IF(NTEMP.EQ.2)ICASA2='TWOS'
12264      ENDIF
12265C
12266      IF(ICASA2.EQ.'TWOS' .AND. NTEMP.LT.2)THEN
12267        WRITE(ICOUT,999)
12268        CALL DPWRST('XXX','BUG ')
12269        WRITE(ICOUT,999)
12270        CALL DPWRST('XXX','BUG ')
12271        WRITE(ICOUT,301)
12272  301   FORMAT('***** ERROR IN WILCOXON SIGNED RANK TEST--')
12273        CALL DPWRST('XXX','BUG ')
12274        WRITE(ICOUT,303)
12275  303   FORMAT('      FOR THE TWO-SAMPLE CASE, THERE MUST BE AT LEAST')
12276        CALL DPWRST('XXX','BUG ')
12277        WRITE(ICOUT,305)
12278  305   FORMAT('      TWO VARIABLES SPECIFIED.')
12279        CALL DPWRST('XXX','BUG ')
12280        IERROR='YES'
12281        GOTO9000
12282      ENDIF
12283C
12284C               ******************************************************
12285C               **  STEP 3A--                                       **
12286C               **  CASE 1: TWO RESPONSE VARIABLES, NO REPLICATION  **
12287C               **          HANDLE MULTIPLE RESPONSE VARIABLES      **
12288C               **          DIFFERENTLY FOR ONE SAMPLE AND TWO      **
12289C               **          SAMPLE TESTS.                           **
12290C               ******************************************************
12291C
12292      ISTEPN='3A'
12293      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WILC')
12294     1  CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12295C
12296      NUMVA2=1
12297      DO5210I=ISTART,ISTOP
12298        ICOL=I
12299        CALL DPPAR3(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
12300     1              INAME,IVARN1,IVARN2,IVARTY,
12301     1              ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVA2,
12302     1              MAXCOL,MAXCP1,MAXCP2,MAXCP3,
12303     1              MAXCP4,MAXCP5,MAXCP6,
12304     1              V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
12305     1              Y,Y,Y,NS1,NLOCA2,NLOCA3,ICASE,
12306     1              IBUGA3,ISUBRO,IFOUND,IERROR)
12307        IF(IERROR.EQ.'YES')GOTO9000
12308C
12309        IF(ICASA2.EQ.'ONES')THEN
12310          ISTRT2=1
12311          ISTOP2=1
12312        ELSE
12313          ISTRT2=I+1
12314          ISTOP2=ISTOP
12315        ENDIF
12316C
12317        DO5220J=ISTRT2,ISTOP2
12318C
12319          IF(ICASA2.EQ.'TWOS')THEN
12320            ICOL=J
12321            CALL DPPAR3(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
12322     1                  INAME,IVARN1,IVARN2,IVARTY,
12323     1                  ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVA2,
12324     1                  MAXCOL,MAXCP1,MAXCP2,MAXCP3,
12325     1                  MAXCP4,MAXCP5,MAXCP6,
12326     1                  V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
12327     1                  X,X,X,NS2,NLOCA2,NLOCA3,ICASE,
12328     1                  IBUGA3,ISUBRO,IFOUND,IERROR)
12329            IF(IERROR.EQ.'YES')GOTO9000
12330          ENDIF
12331C
12332C               *******************************************
12333C               **  STEP 52--                            **
12334C               **  PERFORM A WILCOXON SIGNED RANK TEST  **
12335C               *******************************************
12336C
12337          ISTEPN='52'
12338          IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WILC')THEN
12339            CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12340            WRITE(ICOUT,999)
12341            CALL DPWRST('XXX','BUG ')
12342            WRITE(ICOUT,5211)
12343 5211       FORMAT('***** FROM DPWILC, BEFORE CALL DPWIL2--')
12344            CALL DPWRST('XXX','BUG ')
12345            WRITE(ICOUT,5212)I,J,NS1,NS2,MAXN,D0
12346 5212       FORMAT('I,J,NS1,NS2,MAXN,D0 = ',5I8,G15.7)
12347            CALL DPWRST('XXX','BUG ')
12348            DO5215II=1,MAX(NS1,NS2)
12349              WRITE(ICOUT,5216)II,Y(II),X(II)
12350 5216         FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
12351              CALL DPWRST('XXX','BUG ')
12352 5215       CONTINUE
12353          ENDIF
12354C
12355          IVARID=IVARN1(I)
12356          IVARI2=IVARN2(I)
12357          IVARI3=IVARN1(J)
12358          IVARI4=IVARN2(J)
12359          CALL DPWIL2(Y,X,NS1,D0,ICASA2,ICASA3,
12360     1                XTEMP1,XTEMP2,XTEMP3,MAXNXT,
12361     1                ICAPSW,ICAPTY,IFORSW,
12362     1                IVARID,IVARI2,IVARI3,IVARI4,
12363     1                STATVA,STATV2,STATCD,
12364     1                PVAL2T,PVALLT,PVALUT,
12365     1                CTL005,CTL010,CTL025,CTL050,CTL100,
12366     1                CTL200,CTL500,
12367     1                CTU995,CTU990,CT975,CTU950,CTU900,
12368     1                CTU800,CTU500,
12369     1                CVL005,CVL010,CVL025,CVL050,CVL100,
12370     1                CVL200,CVL500,
12371     1                CVU995,CVU990,CV975,CVU950,CVU900,
12372     1                CVU800,CVU500,
12373     1                IBUGA3,ISUBRO,IERROR)
12374          IF(IERROR.EQ.'YES')GOTO9000
12375C
12376C               ***************************************
12377C               **  STEP 8C--                        **
12378C               **  UPDATE INTERNAL DATAPLOT TABLES  **
12379C               ***************************************
12380C
12381          ISTEPN='8C'
12382          IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WILC')
12383     1      CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12384C
12385          IF(ICASA2.EQ.'TWOS')THEN
12386            IF(NUMVAR.GT.2)THEN
12387              IFLAGU='FILE'
12388            ELSE
12389              IFLAGU='ON'
12390            ENDIF
12391            IFRST=.FALSE.
12392            ILAST=.FALSE.
12393            IF(I.EQ.1 .AND. J.EQ.2)IFRST=.TRUE.
12394            IF(I.EQ.NUMVAR .AND. J.EQ.NUMVAR)ILAST=.TRUE.
12395          ELSE
12396            IF(ISTOP-ISTART.GT.0)THEN
12397              IFLAGU='FILE'
12398            ELSE
12399              IFLAGU='ON'
12400            ENDIF
12401            IFRST=.FALSE.
12402            ILAST=.FALSE.
12403            IF(I.EQ.ISTART)IFRST=.TRUE.
12404            IF(I.EQ.ISTOP)ILAST=.TRUE.
12405          ENDIF
12406          CALL DPWIL5(ICASA2,ICASA3,
12407     1                STATVA,STATV2,STATCD,
12408     1                PVAL2T,PVALLT,PVALUT,
12409     1                CTL005,CTL010,CTL025,CTL050,CTL100,
12410     1                CTL200,CTL500,
12411     1                CTU995,CTU990,CT975,CTU950,CTU900,
12412     1                CTU800,CTU500,
12413     1                CVL005,CVL010,CVL025,CVL050,CVL100,
12414     1                CVL200,CVL500,
12415     1                CVU995,CVU990,CV975,CVU950,CVU900,
12416     1                CVU800,CVU500,
12417     1                IFLAGU,IFRST,ILAST,
12418     1                IBUGA2,IBUGA3,ISUBRO,IERROR)
12419C
12420 5220   CONTINUE
12421 5210 CONTINUE
12422C
12423C               *****************
12424C               **  STEP 90--  **
12425C               **  EXIT       **
12426C               *****************
12427C
12428 9000 CONTINUE
12429      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WILC')THEN
12430        WRITE(ICOUT,999)
12431        CALL DPWRST('XXX','BUG ')
12432        WRITE(ICOUT,9011)
12433 9011   FORMAT('***** AT THE END       OF DPWILC--')
12434        CALL DPWRST('XXX','BUG ')
12435        WRITE(ICOUT,9016)IFOUND,IERROR
12436 9016   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
12437        CALL DPWRST('XXX','BUG ')
12438      ENDIF
12439C
12440      RETURN
12441      END
12442      SUBROUTINE DPWIL2(Y1,Y2,N1,D0,ICASAN,ICASA2,
12443     1                  TEMP1,TEMP2,TEMP3,MAXNXT,
12444     1                  ICAPSW,ICAPTY,IFORSW,
12445     1                  IVARID,IVARI2,IVARI3,IVARI4,
12446     1                  STATVA,STATV2,STATCD,
12447     1                  PVAL2T,PVALLT,PVALUT,
12448     1                  CTL005,CTL010,CTL025,CTL050,CTL100,
12449     1                  CTL200,CTL500,
12450     1                  CTU995,CTU990,CTU975,CTU950,CTU900,
12451     1                  CTU800,CTU500,
12452     1                  CVL005,CVL010,CVL025,CVL050,CVL100,
12453     1                  CVL200,CVL500,
12454     1                  CVU995,CVU990,CVU975,CVU950,CVU900,
12455     1                  CVU800,CVU500,
12456     1                  IBUGA3,ISUBRO,IERROR)
12457C
12458C     PURPOSE--THIS ROUTINE CARRIES OUT A 2-SAMPLE PAIRED SIGNED RANK
12459C              TEST
12460C     EXAMPLE--SIGNED RANK TEST Y1 Y2
12461C              SIGNED RANK TEST Y1 Y2 D0
12462C     SAMPLE 1 IS IN INPUT VECTOR Y1
12463C              (WITH N1 OBSERVATIONS).
12464C     SAMPLE 2 IS IN INPUT VECTOR Y2
12465C              (WITH N1 OBSERVATIONS).
12466C     WRITTEN BY--ALAN HECKERT
12467C                 STATISTICAL ENGINEERING DIVISION
12468C                 INFORMATION TECHNOLOGY LABORATORY
12469C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
12470C                 GAITHERSBURG, MD 20899-8980
12471C                 PHONE--301-975-2899
12472C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
12473C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
12474C     LANGUAGE--ANSI FORTRAN (1977)
12475C     VERSION NUMBER--99/6
12476C     ORIGINAL VERSION--JUNE      1999.
12477C     UPDATED         --AUGUST    2002.
12478C     UPDATED         --JANUARY   2007. CALL LIST TO RANK
12479C     UPDATED         --MAY       2011. SWITCH FROM WALPOLE/MEYERS
12480C                                       FORMULATION TO CONOVER
12481C                                       IMPLEMENTATION.
12482C     UPDATED         --MAY       2011. USE DPDTA1, DPDTA5 TO PRINT
12483C                                        OUTPUT.  REFORMAT OUTPUT
12484C                                        SOMEWHAT AS WELL.
12485C
12486C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
12487C
12488      CHARACTER*4 IVARID
12489      CHARACTER*4 IVARI2
12490      CHARACTER*4 IVARI3
12491      CHARACTER*4 IVARI4
12492      CHARACTER*4 ICAPSW
12493      CHARACTER*4 ICAPTY
12494      CHARACTER*4 IFORSW
12495      CHARACTER*4 ICASAN
12496      CHARACTER*4 ICASA2
12497      CHARACTER*4 IBUGA3
12498      CHARACTER*4 ISUBRO
12499      CHARACTER*4 IERROR
12500C
12501      CHARACTER*4 IWRITE
12502C
12503      CHARACTER*4 ISUBN1
12504      CHARACTER*4 ISUBN2
12505      CHARACTER*4 ISTEPN
12506C
12507      DOUBLE PRECISION TPLUS
12508      DOUBLE PRECISION TMINUS
12509      DOUBLE PRECISION RSUM
12510      DOUBLE PRECISION RSUMSQ
12511C
12512C---------------------------------------------------------------------
12513C
12514      DIMENSION Y1(*)
12515      DIMENSION Y2(*)
12516      DIMENSION TEMP1(*)
12517      DIMENSION TEMP2(*)
12518      DIMENSION TEMP3(*)
12519C
12520      DIMENSION CV005(47)
12521      DIMENSION CV010(47)
12522      DIMENSION CV025(47)
12523      DIMENSION CV050(47)
12524      DIMENSION CV100(47)
12525      DIMENSION CV200(47)
12526      DIMENSION CV500(47)
12527C
12528      PARAMETER (NUMALP=7)
12529      REAL ALPHA(NUMALP)
12530      PARAMETER (NUMAL2=5)
12531      REAL ALPHA2(NUMAL2)
12532C
12533      PARAMETER(NUMCLI=5)
12534      PARAMETER(MAXLIN=3)
12535      PARAMETER (MAXROW=30)
12536      CHARACTER*60 ITITLE
12537      CHARACTER*60 ITITLZ
12538      CHARACTER*60 ITITL9
12539      CHARACTER*60 ITEXT(MAXROW)
12540      CHARACTER*4  ALIGN(NUMCLI)
12541      CHARACTER*4  VALIGN(NUMCLI)
12542      REAL         AVALUE(MAXROW)
12543      INTEGER      NCTEXT(MAXROW)
12544      INTEGER      IDIGIT(MAXROW)
12545      INTEGER      NTOT(MAXROW)
12546      CHARACTER*60 ITITL2(MAXLIN,NUMCLI)
12547      CHARACTER*15 IVALUE(MAXROW,NUMCLI)
12548      CHARACTER*4  ITYPCO(NUMCLI)
12549      INTEGER      NCTIT2(MAXLIN,NUMCLI)
12550      INTEGER      NCVALU(MAXROW,NUMCLI)
12551      INTEGER      IWHTML(NUMCLI)
12552      INTEGER      IWRTF(NUMCLI)
12553      REAL         AMAT(MAXROW,NUMCLI)
12554      LOGICAL IFRST
12555      LOGICAL ILAST
12556      LOGICAL IFLAGS
12557      LOGICAL IFLAGE
12558C
12559C-----COMMON----------------------------------------------------------
12560C
12561      INCLUDE 'DPCOP2.INC'
12562C
12563      DATA ALPHA /0.50, 0.80, 0.90, 0.95, 0.975, 0.99, 0.995/
12564      DATA ALPHA2/0.60, 0.80, 0.90, 0.95, 0.99/
12565C
12566      DATA (CV005(I),I=1,47) /
12567     1                    0.0,  0.0,  0.0,  0.0,  1.0,  2.0,  4.0,
12568     1  6.0,  8.0, 10.0, 13.0, 16.0, 20.0, 24.0, 28.0, 33.0, 38.0,
12569     1 44.0, 49.0, 55.0, 62.0, 69.0, 76.0, 84.0, 92.0,101.0,110.0,
12570     1119.0,129.0,139.0,149.0,160.0,172.0,184.0,196.0,208.0,221.0,
12571     1235.0,248.0,263.0,277.0,292.0,308.0,324.0,340.0,357.0,374.0/
12572C
12573      DATA (CV010(I),I=1,47) /
12574     1                    0.0,  0.0,  0.0,  1.0,  2.0,  4.0,  6.0,
12575     1  8.0, 10.0, 13.0, 16.0, 20.0, 24.0, 28.0, 33.0, 38.0, 44.0,
12576     1 50.0, 56.0, 63.0, 70.0, 77.0, 85.0, 94.0,102.0,111.0,121.0,
12577     1131.0,141.0,152.0,163.0,175.0,187.0,199.0,212.0,225.0,239.0,
12578     1253.0,267.0,282.0,297.0,313.0,329.0,346.0,363.0,381.0,398.0/
12579C
12580      DATA (CV025(I),I=1,47) /
12581     1                    0.0,  0.0,  1.0,  3.0,  4.0,  6.0,  9.0,
12582     1 11.0, 14.0, 18.0, 22.0, 26.0, 30.0, 35.0, 41.0, 47.0, 53.0,
12583     1 59.0, 67.0, 74.0, 82.0, 90.0, 99.0,108.0,117.0,127.0,138.0,
12584     1148.0,160.0,171.0,183.0,196.0,209.0,222.0,236.0,250.0,265.0,
12585     1280.0,295.0,311.0,328.0,344.0,362.0,379.0,397.0,416.0,435.0/
12586C
12587      DATA (CV050(I),I=1,47) /
12588     1                    0.0,  1.0,  3.0,  4.0,  6.0,  9.0, 11.0,
12589     1 14.0, 18.0, 22.0, 26.0, 31.0, 36.0, 42.0, 48.0, 54.0, 61.0,
12590     1 68.0, 76.0, 84.0, 92.0,101.0,111.0,120.0,131.0,141.0,152.0,
12591     1164.0,176.0,188.0,201.0,214.0,228.0,242.0,257.0,272.0,287.0,
12592     1303.0,320.0,337.0,354.0,372.0,390.0,408.0,428.0,447.0,467.0/
12593C
12594      DATA (CV100(I),I=1,47) /
12595     1                    1.0,  3.0,  4.0,  6.0,  9.0, 11.0, 15.0,
12596     1 18.0, 22.0, 27.0, 32.0, 37.0, 43.0, 49.0, 56.0, 63.0, 70.0,
12597     1 78.0, 87.0, 95.0,105.0,114.0,125.0,135.0,146.0,158.0,170.0,
12598     1182.0,195.0,208.0,222.0,236.0,251.0,266.0,282.0,298.0,314.0,
12599     1331.0,349.0,366.0,385.0,403.0,423.0,442.0,463.0,483.0,504.0/
12600C
12601      DATA (CV200(I),I=1,47) /
12602     1                    3.0,  4.0,  6.0,  9.0, 12.0, 15.0, 19.0,
12603     1 23.0, 28.0, 33.0, 39.0, 45.0, 51.0, 58.0, 66.0, 74.0, 83.0,
12604     1 91.0,100.0,110.0,120.0,131.0,142.0,154.0,166.0,178.0,191.0,
12605     1205.0,219.0,233.0,248.0,263.0,279.0,295.0,312.0,329.0,347.0,
12606     1365.0,384.0,403.0,422.0,442.0,463.0,484.0,505.0,527.0,550.0/
12607C
12608      DATA (CV500(I),I=1,47) /
12609     1                    5.0,  7.5, 10.5, 14.0, 18.0, 22.5, 27.5,
12610     1 33.0, 39.0, 45.5, 52.5, 60.0, 68.0, 76.5, 85.5, 95.0,105.0,
12611     1115.5,126.5,138.0,150.0,162.5,175.5,189.0,203.0,217.5,232.5,
12612     1248.0,264.0,280.5,297.5,315.0,333.0,351.5,370.5,390.0,410.0,
12613     1430.5,451.5,473.0,495.0,517.5,540.5,564.0,588.0,612.5,637.5/
12614C
12615C-----START POINT-----------------------------------------------------
12616C
12617      ISUBN1='DPWI'
12618      ISUBN2='L2  '
12619C
12620      IERROR='NO'
12621      IWRITE='OFF'
12622C
12623      NUMDIG=7
12624      IF(IFORSW.EQ.'1')NUMDIG=1
12625      IF(IFORSW.EQ.'2')NUMDIG=2
12626      IF(IFORSW.EQ.'3')NUMDIG=3
12627      IF(IFORSW.EQ.'4')NUMDIG=4
12628      IF(IFORSW.EQ.'5')NUMDIG=5
12629      IF(IFORSW.EQ.'6')NUMDIG=6
12630      IF(IFORSW.EQ.'7')NUMDIG=7
12631      IF(IFORSW.EQ.'8')NUMDIG=8
12632      IF(IFORSW.EQ.'9')NUMDIG=9
12633      IF(IFORSW.EQ.'0')NUMDIG=0
12634      IF(IFORSW.EQ.'E')NUMDIG=-2
12635      IF(IFORSW.EQ.'-2')NUMDIG=-2
12636      IF(IFORSW.EQ.'-3')NUMDIG=-3
12637      IF(IFORSW.EQ.'-4')NUMDIG=-4
12638      IF(IFORSW.EQ.'-5')NUMDIG=-5
12639      IF(IFORSW.EQ.'-6')NUMDIG=-6
12640      IF(IFORSW.EQ.'-7')NUMDIG=-7
12641      IF(IFORSW.EQ.'-8')NUMDIG=-8
12642      IF(IFORSW.EQ.'-9')NUMDIG=-9
12643C
12644      CTL005=CPUMIN
12645      CTL010=CPUMIN
12646      CTL025=CPUMIN
12647      CTL050=CPUMIN
12648      CTL100=CPUMIN
12649      CTL200=CPUMIN
12650      CTL500=CPUMIN
12651      CTU500=CPUMIN
12652      CTU800=CPUMIN
12653      CTU900=CPUMIN
12654      CTU950=CPUMIN
12655      CTU975=CPUMIN
12656      CTU990=CPUMIN
12657      CTU995=CPUMIN
12658C
12659      CVL005=CPUMIN
12660      CVL010=CPUMIN
12661      CVL025=CPUMIN
12662      CVL050=CPUMIN
12663      CVL100=CPUMIN
12664      CVL200=CPUMIN
12665      CVL500=CPUMIN
12666      CVU500=CPUMIN
12667      CVU800=CPUMIN
12668      CVU900=CPUMIN
12669      CVU950=CPUMIN
12670      CVU975=CPUMIN
12671      CVU990=CPUMIN
12672      CVU995=CPUMIN
12673C
12674      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'WIL2')THEN
12675        WRITE(ICOUT,999)
12676  999   FORMAT(1X)
12677        CALL DPWRST('XXX','WRIT')
12678        WRITE(ICOUT,51)
12679   51   FORMAT('**** AT THE BEGINNING OF DPWIL2--')
12680        CALL DPWRST('XXX','WRIT')
12681        WRITE(ICOUT,52)IBUGA3,ISUBRO,ICASAN,ICASA2
12682   52   FORMAT('IBUGA3,ISUBRO,ICASAN,ICASA2 = ',3(A4,2X),A4)
12683        CALL DPWRST('XXX','WRIT')
12684        WRITE(ICOUT,53)IVARID,IVARI2,IVARI3,IVARI4
12685   53   FORMAT('IVARID,IVARI2,IVARI3,IVARI4 = ',3(A4,2X),A4)
12686        CALL DPWRST('XXX','WRIT')
12687        WRITE(ICOUT,55)N1,NUMDIG,D0
12688   55   FORMAT('N1,NUMDIG,D0 = ',2I8,G15.7)
12689        CALL DPWRST('XXX','WRIT')
12690        IF(N1.GE.1)THEN
12691          DO56I=1,N1
12692            WRITE(ICOUT,57)I,Y1(I),Y2(I)
12693   57       FORMAT('I,Y1(I),Y2(I) = ',I8,2G15.7)
12694            CALL DPWRST('XXX','WRIT')
12695   56     CONTINUE
12696        ENDIF
12697      ENDIF
12698C
12699C               ************************************
12700C               **   STEP 1--                     **
12701C               **   CALL DPWIL3 TO COMPUTE THE   **
12702C               **   BASIC TEST STATISTIC (FOR    **
12703C               **   EITHER 1-SAMPLE OR 2-SAMPLE  **
12704C               **   CASE).                       **
12705C               ************************************
12706C
12707      ISTEPN='1'
12708      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL2')
12709     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12710C
12711      CALL DPWIL3(Y1,Y2,N1,D0,ICASAN,ICASA2,
12712     1            TEMP1,TEMP2,TEMP3,MAXNXT,
12713     1            STATVA,STATV2,STATCD,
12714     1            PVAL2T,PVALLT,PVALUT,
12715     1            NTEMP,NPLUS,NMINUS,NTIES,
12716     1            TPLUS,TMINUS,RSUM,RSUMSQ,
12717     1            IBUGA3,ISUBRO,IERROR)
12718C
12719C               ***************************************
12720C               **  STEP 21--                        **
12721C               **  COMPUTE THE CRITICAL VALUES FOR  **
12722C               **  VARIOUS VALUES OF ALPHA          **
12723C               **************************************
12724C
12725      ISTEPN='21'
12726      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL2')
12727     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12728C
12729C     CRITICAL POINTS FOR LARGE SAMPLE NORMAL APPROXIMATION
12730C
12731      CALL NORPPF(.005,CTL005)
12732      CALL NORPPF(.010,CTL010)
12733      CALL NORPPF(.025,CTL025)
12734      CALL NORPPF(.050,CTL050)
12735      CALL NORPPF(.100,CTL100)
12736      CALL NORPPF(.200,CTL200)
12737      CALL NORPPF(.500,CTL500)
12738      CALL NORPPF(.500,CTU500)
12739      CALL NORPPF(.800,CTU800)
12740      CALL NORPPF(.900,CTU900)
12741      CALL NORPPF(.950,CTU950)
12742      CALL NORPPF(.975,CTU975)
12743      CALL NORPPF(.990,CTU990)
12744      CALL NORPPF(.995,CTU995)
12745C
12746C     NOW GENERATE CRITICAL VALUES FROM TABLES IF
12747C     THE NUMBER OF UNTIED VALUES IS <= 50 AND THE
12748C     PERCENTAGE OF TIES IS < 10%.
12749C
12750      ITAB=0
12751      IF(NTEMP.GE.4 .AND. NTEMP.LE.50)THEN
12752        ITAB=1
12753        ACUT=REAL(NTEMP)*0.10
12754        NCUT=INT(ACUT+0.5)
12755        IF(NTIES.GT.NCUT)ITAB=0
12756      ENDIF
12757C
12758      IF(ITAB.EQ.1)THEN
12759        IINDX=NTEMP-3
12760        CVL005=CV005(IINDX)
12761        CVL010=CV010(IINDX)
12762        CVL025=CV025(IINDX)
12763        CVL050=CV050(IINDX)
12764        CVL100=CV100(IINDX)
12765        CVL200=CV200(IINDX)
12766        CVL500=CV500(IINDX)
12767        CONST=REAL(NTEMP)*REAL(NTEMP+1)/2.0
12768        CVU500=CVL050
12769        CVU800=CONST-CVL200
12770        CVU900=CONST-CVL100
12771        CVU950=CONST-CVL050
12772        CVU975=CONST-CVL025
12773        CVU990=CONST-CVL010
12774        CVU995=CONST-CVL005
12775      ENDIF
12776C
12777C               *************************************************
12778C               **   STEP 22--                                 **
12779C               **   WRITE OUT EVERYTHING                      **
12780C               **   FOR A WILCOXON SIGNED RANK TEST           **
12781C               *************************************************
12782C
12783      ISTEPN='22'
12784      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL2')
12785     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12786C
12787      IF(IPRINT.EQ.'OFF')GOTO9000
12788C
12789      IF(ICASAN.EQ.'ONES')THEN
12790        IF(ICASA2.EQ.'LOWE')THEN
12791          ITITLE='One Sample Lower-Tailed Wilcoxon Signed Rank Test'
12792          NCTITL=49
12793        ELSEIF(ICASA2.EQ.'UPPE')THEN
12794          ITITLE='One Sample Upper-Tailed Wilcoxon Signed Rank Test'
12795          NCTITL=49
12796        ELSE
12797          ITITLE='One Sample Two-Sided Wilcoxon Signed Rank Test'
12798          NCTITL=46
12799        ENDIF
12800      ELSE
12801        IF(ICASA2.EQ.'LOWE')THEN
12802          ITITLE='Two Sample Lower-Tailed Wilcoxon Signed Rank Test'
12803          NCTITL=49
12804        ELSEIF(ICASA2.EQ.'UPPE')THEN
12805          ITITLE='Two Sample Upper-Tailed Wilcoxon Signed Rank Test'
12806          NCTITL=49
12807        ELSE
12808          ITITLE='Two Sample Two-Sided Wilcoxon Signed Rank Test'
12809          NCTITL=46
12810        ENDIF
12811      ENDIF
12812      ITITLZ='(Conover Formulation)'
12813      NCTITZ=21
12814C
12815      ICNT=1
12816      ITEXT(ICNT)=' '
12817      NCTEXT(ICNT)=0
12818      AVALUE(ICNT)=0.0
12819      IDIGIT(ICNT)=-1
12820C
12821      IF(ICASAN.EQ.'ONES')THEN
12822        ICNT=ICNT+1
12823        ITEXT(ICNT)='Response Variable: '
12824        WRITE(ITEXT(ICNT)(20:23),'(A4)')IVARID(1:4)
12825        WRITE(ITEXT(ICNT)(24:27),'(A4)')IVARI2(1:4)
12826        NCTEXT(ICNT)=27
12827        AVALUE(ICNT)=0.0
12828        IDIGIT(ICNT)=-1
12829      ELSE
12830        ICNT=ICNT+1
12831        ITEXT(ICNT)='First Response Variable: '
12832        WRITE(ITEXT(ICNT)(26:29),'(A4)')IVARID(1:4)
12833        WRITE(ITEXT(ICNT)(30:33),'(A4)')IVARI2(1:4)
12834        NCTEXT(ICNT)=33
12835        AVALUE(ICNT)=0.0
12836        IDIGIT(ICNT)=-1
12837        ICNT=ICNT+1
12838        ITEXT(ICNT)='Second Response Variable: '
12839        WRITE(ITEXT(ICNT)(27:30),'(A4)')IVARI3(1:4)
12840        WRITE(ITEXT(ICNT)(31:34),'(A4)')IVARI4(1:4)
12841        NCTEXT(ICNT)=34
12842        AVALUE(ICNT)=0.0
12843        IDIGIT(ICNT)=-1
12844      ENDIF
12845C
12846      ICNT=ICNT+1
12847      ITEXT(ICNT)=' '
12848      NCTEXT(ICNT)=1
12849      AVALUE(ICNT)=0.0
12850      IDIGIT(ICNT)=-1
12851C
12852      IF(ICASAN.EQ.'ONES')THEN
12853        ICNT=ICNT+1
12854        ITEXT(ICNT)='H0: Mean Equal'
12855        NCTEXT(ICNT)=14
12856        AVALUE(ICNT)=D0
12857        IDIGIT(ICNT)=NUMDIG
12858        ICNT=ICNT+1
12859        ITEXT(ICNT)='Ha: Mean Not Equal'
12860        NCTEXT(ICNT)=18
12861        AVALUE(ICNT)=D0
12862        IDIGIT(ICNT)=NUMDIG
12863      ELSE
12864        ICNT=ICNT+1
12865        ITEXT(ICNT)='H0: Mu1 - Mu2 Equal'
12866        NCTEXT(ICNT)=19
12867        AVALUE(ICNT)=D0
12868        IDIGIT(ICNT)=NUMDIG
12869        ICNT=ICNT+1
12870        ITEXT(ICNT)='Ha: Mu1 - Mu2 Not Equal'
12871        NCTEXT(ICNT)=23
12872        AVALUE(ICNT)=D0
12873        IDIGIT(ICNT)=NUMDIG
12874      ENDIF
12875C
12876      ICNT=ICNT+1
12877      ITEXT(ICNT)=' '
12878      NCTEXT(ICNT)=1
12879      AVALUE(ICNT)=0.0
12880      IDIGIT(ICNT)=-1
12881      ICNT=ICNT+1
12882      ITEXT(ICNT)='Summary Statistics:'
12883      NCTEXT(ICNT)=19
12884      AVALUE(ICNT)=0.0
12885      IDIGIT(ICNT)=-1
12886      ICNT=ICNT+1
12887      ITEXT(ICNT)='Number of Observations:'
12888      NCTEXT(ICNT)=23
12889      AVALUE(ICNT)=REAL(N1)
12890      IDIGIT(ICNT)=0
12891      ICNT=ICNT+1
12892      ITEXT(ICNT)='Number of Zero Differences (Omitted):'
12893      NCTEXT(ICNT)=37
12894      AVALUE(ICNT)=REAL(N1 - NTEMP)
12895      IDIGIT(ICNT)=0
12896      ICNT=ICNT+1
12897      ITEXT(ICNT)='Number of Positive Differences:'
12898      NCTEXT(ICNT)=31
12899      AVALUE(ICNT)=REAL(NPLUS)
12900      IDIGIT(ICNT)=0
12901      ICNT=ICNT+1
12902      ITEXT(ICNT)='Number of Negative Differences:'
12903      NCTEXT(ICNT)=31
12904      AVALUE(ICNT)=REAL(NMINUS)
12905      IDIGIT(ICNT)=0
12906      ICNT=ICNT+1
12907      ITEXT(ICNT)='Number of Tied Ranks:'
12908      NCTEXT(ICNT)=21
12909      AVALUE(ICNT)=REAL(NTIES)
12910      IDIGIT(ICNT)=0
12911      ICNT=ICNT+1
12912      ITEXT(ICNT)='Sum of Positive Ranks:'
12913      NCTEXT(ICNT)=22
12914      AVALUE(ICNT)=TPLUS
12915      IDIGIT(ICNT)=NUMDIG
12916      ICNT=ICNT+1
12917      ITEXT(ICNT)='Sum of Negative Ranks:'
12918      NCTEXT(ICNT)=22
12919      AVALUE(ICNT)=TMINUS
12920      IDIGIT(ICNT)=NUMDIG
12921      ICNT=ICNT+1
12922      ITEXT(ICNT)=' '
12923      NCTEXT(ICNT)=1
12924      AVALUE(ICNT)=0.0
12925      IDIGIT(ICNT)=-1
12926C
12927      IF(ITAB.EQ.1)THEN
12928        ICNT=ICNT+1
12929        ITEXT(ICNT)='Test (Small Sample Exact):'
12930        NCTEXT(ICNT)=26
12931        AVALUE(ICNT)=0.0
12932        IDIGIT(ICNT)=-1
12933        ICNT=ICNT+1
12934        ITEXT(ICNT)='Test Statistic Value:'
12935        NCTEXT(ICNT)=23
12936        AVALUE(ICNT)=STATVA
12937        IDIGIT(ICNT)=NUMDIG
12938        ICNT=ICNT+1
12939        ITEXT(ICNT)=' '
12940        NCTEXT(ICNT)=1
12941        AVALUE(ICNT)=0.0
12942        IDIGIT(ICNT)=-1
12943      ENDIF
12944C
12945      ICNT=ICNT+1
12946      ITEXT(ICNT)='Test (Large Sample Approximation):'
12947      NCTEXT(ICNT)=34
12948      AVALUE(ICNT)=0.0
12949      IDIGIT(ICNT)=-1
12950      ICNT=ICNT+1
12951      ITEXT(ICNT)='Test Statistic Value:'
12952      NCTEXT(ICNT)=23
12953      AVALUE(ICNT)=STATV2
12954      IDIGIT(ICNT)=NUMDIG
12955      ICNT=ICNT+1
12956      ITEXT(ICNT)='CDF Value:'
12957      NCTEXT(ICNT)=10
12958      AVALUE(ICNT)=STATCD
12959      IDIGIT(ICNT)=NUMDIG
12960      ICNT=ICNT+1
12961      ITEXT(ICNT)='P-Value (2-tailed test):'
12962      NCTEXT(ICNT)=24
12963      AVALUE(ICNT)=PVAL2T
12964      IDIGIT(ICNT)=NUMDIG
12965      ICNT=ICNT+1
12966      ITEXT(ICNT)='P-Value (lower-tailed test):'
12967      NCTEXT(ICNT)=28
12968      AVALUE(ICNT)=PVALLT
12969      IDIGIT(ICNT)=NUMDIG
12970      ICNT=ICNT+1
12971      ITEXT(ICNT)='P-Value (upper-tailed test):'
12972      NCTEXT(ICNT)=28
12973      AVALUE(ICNT)=PVALUT
12974      IDIGIT(ICNT)=NUMDIG
12975C
12976      NUMROW=ICNT
12977      DO2110I=1,NUMROW
12978        NTOT(I)=15
12979 2110 CONTINUE
12980C
12981      IFRST=.TRUE.
12982      ILAST=.TRUE.
12983C
12984      ISTEPN='21A'
12985      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL2')
12986     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12987C
12988      CALL DPDTA1(ITITLE,NCTITL,ITITLZ,NCTITZ,ITEXT,NCTEXT,
12989     1            AVALUE,IDIGIT,
12990     1            NTOT,NUMROW,
12991     1            ICAPSW,ICAPTY,ILAST,IFRST,
12992     1            ISUBRO,IBUGA3,IERROR)
12993C
12994      ISTEPN='21B'
12995      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL2')
12996     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12997C
12998      ITITLE='Two-Tailed Test: Normal Approximation'
12999      NCTITL=37
13000      IF(ICASAN.EQ.'ONES')THEN
13001        ITITL9='H0: u = d0; Ha: u <> d0'
13002        NCTIT9=23
13003      ELSE
13004        ITITL9='H0: u1 - u2 = d0; Ha: u1 - u2 <> d0'
13005        NCTIT9=35
13006      ENDIF
13007C
13008      DO2130J=1,NUMCLI
13009        DO2140I=1,MAXLIN
13010          ITITL2(I,J)=' '
13011          NCTIT2(I,J)=0
13012 2140   CONTINUE
13013 2130 CONTINUE
13014C
13015      ITITL2(2,1)='Significance'
13016      NCTIT2(2,1)=12
13017      ITITL2(3,1)='Level'
13018      NCTIT2(3,1)=5
13019C
13020      ITITL2(2,2)='Test '
13021      NCTIT2(2,2)=4
13022      ITITL2(3,2)='Statistic'
13023      NCTIT2(3,2)=9
13024C
13025      ITITL2(2,3)='Critical'
13026      NCTIT2(2,3)=8
13027      ITITL2(3,3)='Value (+/-)'
13028      NCTIT2(3,3)=11
13029C
13030      ITITL2(1,4)='Null'
13031      NCTIT2(1,4)=4
13032      ITITL2(2,4)='Hypothesis'
13033      NCTIT2(2,4)=10
13034      ITITL2(3,4)='Conclusion'
13035      NCTIT2(3,4)=10
13036C
13037      NMAX=0
13038      NUMCOL=4
13039      DO2150I=1,NUMCOL
13040        VALIGN(I)='b'
13041        ALIGN(I)='r'
13042        NTOT(I)=15
13043        NMAX=NMAX+NTOT(I)
13044        ITYPCO(I)='NUME'
13045        IDIGIT(I)=NUMDIG
13046        IF(I.EQ.1 .OR. I.EQ.4)THEN
13047          ITYPCO(I)='ALPH'
13048        ENDIF
13049 2150 CONTINUE
13050C
13051      IWHTML(1)=125
13052      IWHTML(2)=175
13053      IWHTML(3)=175
13054      IWHTML(4)=175
13055      IINC=1800
13056      IINC2=1400
13057      IWRTF(1)=IINC
13058      IWRTF(2)=IWRTF(1)+IINC
13059      IWRTF(3)=IWRTF(2)+IINC
13060      IWRTF(4)=IWRTF(3)+IINC
13061C
13062      DO2160J=1,NUMAL2
13063C
13064        AMAT(J,2)=STATV2
13065        ALPHT=(1.0 - ALPHA2(J))/2.0
13066        ALPHT=1.0 - ALPHT
13067        CALL NORPPF(ALPHT,CUTTMP)
13068        AMAT(J,3)=CUTTMP
13069        IVALUE(J,4)(1:6)='REJECT'
13070        IF(ABS(STATV2).LT.AMAT(J,3))THEN
13071          IVALUE(J,4)(1:6)='ACCEPT'
13072        ENDIF
13073        NCVALU(J,4)=6
13074C
13075        ALPHAT=100.0*ALPHA2(J)
13076        WRITE(IVALUE(J,1)(1:4),'(F4.1)')ALPHAT
13077        IVALUE(J,1)(5:5)='%'
13078        NCVALU(J,1)=5
13079 2160 CONTINUE
13080C
13081      ICNT=NUMAL2
13082      NUMLIN=3
13083      NUMCOL=4
13084      IFRST=.TRUE.
13085      ILAST=.TRUE.
13086      IFLAGS=.TRUE.
13087      IFLAGE=.TRUE.
13088C
13089      IF(ICASA2.EQ.'TWOT')THEN
13090        CALL DPDTA5(ITITLE,NCTITL,
13091     1              ITITL9,NCTIT9,ITITL2,NCTIT2,
13092     1              MAXLIN,NUMLIN,NUMCLI,NUMCOL,
13093     1              IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
13094     1              IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
13095     1              ICAPSW,ICAPTY,IFRST,ILAST,
13096     1              IFLAGS,IFLAGE,
13097     1              ISUBRO,IBUGA3,IERROR)
13098      ENDIF
13099C
13100      IF(ICASA2.EQ.'LOWE')THEN
13101        ITITLE='Lower-Tailed Test: Normal Approximation'
13102        NCTITL=39
13103        IF(ICASAN.EQ.'ONES')THEN
13104          ITITL9='H0: u = d0; Ha: u < d0'
13105          NCTIT9=22
13106        ELSE
13107          ITITL9='H0: u1 - u2 = d0; Ha: u1 - u2 < d0'
13108          NCTIT9=34
13109        ENDIF
13110C
13111        ITITL2(2,3)='Critical'
13112        NCTIT2(2,3)=8
13113        ITITL2(3,3)='Value (<)'
13114        NCTIT2(3,3)=9
13115C
13116        NMAX=0
13117        NUMCOL=4
13118        DO2250I=1,NUMCOL
13119          NTOT(I)=15
13120          NMAX=NMAX+NTOT(I)
13121 2250   CONTINUE
13122C
13123        DO2260J=1,NUMALP
13124          AMAT(J,2)=STATV2
13125          ALPHAT=1.0 - ALPHA(J)
13126          CALL NORPPF(ALPHAT,ATEMP)
13127          AMAT(J,3)=ATEMP
13128          IVALUE(J,4)(1:6)='REJECT'
13129          IF(STATV2.GE.AMAT(J,3))THEN
13130            IVALUE(J,4)(1:6)='ACCEPT'
13131          ENDIF
13132          NCVALU(J,4)=6
13133          ALPHAT=100.0*ALPHA(J)
13134          WRITE(IVALUE(J,1)(1:4),'(F4.1)')ALPHAT
13135          IVALUE(J,1)(5:5)='%'
13136          NCVALU(J,1)=5
13137 2260   CONTINUE
13138C
13139        ICNT=NUMALP
13140        NUMLIN=3
13141        IFRST=.TRUE.
13142        ILAST=.TRUE.
13143        IFLAGS=.TRUE.
13144        IFLAGE=.TRUE.
13145        CALL DPDTA5(ITITLE,NCTITL,
13146     1              ITITL9,NCTIT9,ITITL2,NCTIT2,
13147     1              MAXLIN,NUMLIN,NUMCLI,NUMCOL,
13148     1              IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
13149     1              IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
13150     1              ICAPSW,ICAPTY,IFRST,ILAST,
13151     1              IFLAGS,IFLAGE,
13152     1              ISUBRO,IBUGA3,IERROR)
13153      ENDIF
13154C
13155      IF(ICASA2.EQ.'UPPE')THEN
13156        ITITLE='Upper-Tailed Test: Normal Approximation'
13157        NCTITL=39
13158        IF(ICASAN.EQ.'ONES')THEN
13159          ITITL9='H0: u = d0; Ha: u > d0'
13160          NCTIT9=22
13161        ELSE
13162          ITITL9='H0: u1 - u2 = d0; Ha: u1 - u2 > d0'
13163          NCTIT9=35
13164        ENDIF
13165C
13166        ITITL2(2,3)='Critical'
13167        NCTIT2(2,3)=8
13168        ITITL2(3,3)='Value (>)'
13169        NCTIT2(3,3)=9
13170C
13171        NMAX=0
13172        NUMCOL=4
13173        DO2350I=1,NUMCOL
13174          NTOT(I)=15
13175          NMAX=NMAX+NTOT(I)
13176 2350 CONTINUE
13177C
13178        DO2360J=1,NUMALP
13179          AMAT(J,2)=STATV2
13180          ALPHAT=ALPHA(J)
13181          CALL NORPPF(ALPHAT,ATEMP)
13182          AMAT(J,3)=ATEMP
13183          IVALUE(J,4)(1:6)='REJECT'
13184          IF(STATV2.LE.AMAT(J,3))THEN
13185            IVALUE(J,4)(1:6)='ACCEPT'
13186          ENDIF
13187          NCVALU(J,4)=6
13188          ALPHAT=100.0*ALPHA(J)
13189          WRITE(IVALUE(J,1)(1:4),'(F4.1)')ALPHAT
13190          IVALUE(J,1)(5:5)='%'
13191          NCVALU(J,1)=5
13192 2360 CONTINUE
13193C
13194        ICNT=NUMALP
13195        NUMLIN=3
13196        IFRST=.TRUE.
13197        ILAST=.TRUE.
13198        IFLAGS=.TRUE.
13199        IFLAGE=.TRUE.
13200        CALL DPDTA5(ITITLE,NCTITL,
13201     1            ITITL9,NCTIT9,ITITL2,NCTIT2,
13202     1            MAXLIN,NUMLIN,NUMCLI,NUMCOL,
13203     1            IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
13204     1            IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
13205     1            ICAPSW,ICAPTY,IFRST,ILAST,
13206     1            IFLAGS,IFLAGE,
13207     1            ISUBRO,IBUGA3,IERROR)
13208C
13209      ENDIF
13210C
13211C     NOW PERFORM THE "EXACT" TEST IF:
13212C
13213C         1) SAMPLE SIZE <= 50
13214C         2) LESS THAN 10% OF RANKS ARE TIES
13215C
13216      ISTEPN='31A'
13217      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL2')
13218     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
13219C
13220      IF(ITAB.NE.1)GOTO9000
13221C
13222      ITITLE='Two-Tailed Test: Exact Small Sample (Assumes No Ties)'
13223      NCTITL=53
13224      IF(ICASAN.EQ.'ONES')THEN
13225        ITITL9='H0: u = d0; Ha: u <> d0'
13226        NCTIT9=23
13227      ELSE
13228        ITITL9='H0: u1 - u2 = d0; Ha: u1 - u2 <> d0'
13229        NCTIT9=35
13230      ENDIF
13231C
13232      DO3130J=1,5
13233        DO3140I=1,3
13234          ITITL2(I,J)=' '
13235          NCTIT2(I,J)=0
13236 3140   CONTINUE
13237 3130 CONTINUE
13238C
13239      ITITL2(2,1)='Significance'
13240      NCTIT2(2,1)=12
13241      ITITL2(3,1)='Level'
13242      NCTIT2(3,1)=5
13243C
13244      ITITL2(2,2)='Test '
13245      NCTIT2(2,2)=4
13246      ITITL2(3,2)='Statistic'
13247      NCTIT2(3,2)=9
13248C
13249      ITITL2(1,3)='Lower'
13250      NCTIT2(1,3)=5
13251      ITITL2(2,3)='Critical'
13252      NCTIT2(2,3)=8
13253      ITITL2(3,3)='Value (<)'
13254      NCTIT2(3,3)=9
13255C
13256      ITITL2(1,4)='Upper'
13257      NCTIT2(1,4)=5
13258      ITITL2(2,4)='Critical'
13259      NCTIT2(2,4)=8
13260      ITITL2(3,4)='Value (>)'
13261      NCTIT2(3,4)=9
13262C
13263      ITITL2(1,5)='Null'
13264      NCTIT2(1,5)=4
13265      ITITL2(2,5)='Hypothesis'
13266      NCTIT2(2,5)=10
13267      ITITL2(3,5)='Conclusion'
13268      NCTIT2(3,5)=10
13269C
13270      NMAX=0
13271      NUMCOL=5
13272      DO3150I=1,NUMCOL
13273        VALIGN(I)='b'
13274        ALIGN(I)='r'
13275        NTOT(I)=15
13276        NMAX=NMAX+NTOT(I)
13277        ITYPCO(I)='NUME'
13278        IDIGIT(I)=NUMDIG
13279        IF(I.EQ.1 .OR. I.EQ.5)THEN
13280          ITYPCO(I)='ALPH'
13281        ENDIF
13282 3150 CONTINUE
13283C
13284      IWHTML(1)=125
13285      IWHTML(2)=175
13286      IWHTML(3)=175
13287      IWHTML(4)=175
13288      IWHTML(5)=175
13289      IINC=1800
13290      IINC2=1400
13291      IWRTF(1)=IINC
13292      IWRTF(2)=IWRTF(1)+IINC
13293      IWRTF(3)=IWRTF(2)+IINC
13294      IWRTF(4)=IWRTF(3)+IINC
13295      IWRTF(5)=IWRTF(4)+IINC
13296C
13297      DO3160J=1,NUMAL2
13298C
13299        AMAT(J,2)=STATVA
13300        IF(J.EQ.1)THEN
13301          AMAT(J,3)=CVL200
13302          AMAT(J,4)=CVU800
13303        ELSEIF(J.EQ.2)THEN
13304          AMAT(J,3)=CVL100
13305          AMAT(J,4)=CVU900
13306        ELSEIF(J.EQ.3)THEN
13307          AMAT(J,3)=CVL050
13308          AMAT(J,4)=CVU950
13309        ELSEIF(J.EQ.4)THEN
13310          AMAT(J,3)=CVL025
13311          AMAT(J,4)=CVU975
13312        ELSEIF(J.EQ.5)THEN
13313          AMAT(J,3)=CVL005
13314          AMAT(J,4)=CVU995
13315        ENDIF
13316        IVALUE(J,5)(1:6)='ACCEPT'
13317        IF(STATVA.LT.AMAT(J,3))THEN
13318          IVALUE(J,5)(1:6)='REJECT'
13319        ELSEIF(STATVA.GT.AMAT(J,4))THEN
13320          IVALUE(J,5)(1:6)='REJECT'
13321        ENDIF
13322        NCVALU(J,5)=6
13323C
13324        ALPHAT=100.0*ALPHA2(J)
13325        WRITE(IVALUE(J,1)(1:4),'(F4.1)')ALPHAT
13326        IVALUE(J,1)(5:5)='%'
13327        NCVALU(J,1)=5
13328 3160 CONTINUE
13329C
13330      ICNT=NUMAL2
13331      NUMLIN=3
13332      IFRST=.TRUE.
13333      ILAST=.TRUE.
13334      IFLAGS=.TRUE.
13335      IFLAGE=.TRUE.
13336C
13337      IF(ICASA2.EQ.'TWOT')THEN
13338        CALL DPDTA5(ITITLE,NCTITL,
13339     1              ITITL9,NCTIT9,ITITL2,NCTIT2,
13340     1              MAXLIN,NUMLIN,NUMCLI,NUMCOL,
13341     1              IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
13342     1              IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
13343     1              ICAPSW,ICAPTY,IFRST,ILAST,
13344     1              IFLAGS,IFLAGE,
13345     1              ISUBRO,IBUGA3,IERROR)
13346      ENDIF
13347C
13348      IF(ICASA2.EQ.'LOWE')THEN
13349        ITITLE='Lower-Tailed Test: Exact Small Sample (Assumes No Ties)'
13350        NCTITL=55
13351        IF(ICASAN.EQ.'ONES')THEN
13352          ITITL9='H0: u = d0; Ha: u < d0'
13353          NCTIT9=22
13354        ELSE
13355          ITITL9='H0: u1 - u2 = d0; Ha: u1 - u2 < d0'
13356          NCTIT9=34
13357        ENDIF
13358C
13359        ITITL2(1,3)='Lower'
13360        NCTIT2(1,3)=5
13361        ITITL2(2,3)='Critical'
13362        NCTIT2(2,3)=8
13363        ITITL2(3,3)='Value (<)'
13364        NCTIT2(3,3)=9
13365C
13366        ITITL2(1,4)='Null'
13367        NCTIT2(1,4)=4
13368        ITITL2(2,4)='Hypothesis'
13369        NCTIT2(2,4)=10
13370        ITITL2(3,4)='Conclusion'
13371        NCTIT2(3,4)=10
13372C
13373        ITITL2(1,5)=' '
13374        NCTIT2(1,5)=0
13375        ITITL2(2,5)=' '
13376        NCTIT2(2,5)=0
13377        ITITL2(3,5)=' '
13378        NCTIT2(3,5)=0
13379C
13380        NMAX=0
13381        NUMCOL=4
13382        DO3250I=1,NUMCOL
13383          VALIGN(I)='b'
13384          ALIGN(I)='r'
13385          NTOT(I)=15
13386          NMAX=NMAX+NTOT(I)
13387          ITYPCO(I)='NUME'
13388          IDIGIT(I)=NUMDIG
13389          IF(I.EQ.1 .OR. I.EQ.4)THEN
13390            ITYPCO(I)='ALPH'
13391          ENDIF
13392 3250   CONTINUE
13393C
13394        DO3260J=1,NUMALP
13395C
13396          AMAT(J,2)=STATVA
13397          IF(J.EQ.1)THEN
13398            AMAT(J,3)=CVL500
13399          ELSEIF(J.EQ.2)THEN
13400            AMAT(J,3)=CVL200
13401          ELSEIF(J.EQ.3)THEN
13402            AMAT(J,3)=CVL100
13403          ELSEIF(J.EQ.4)THEN
13404            AMAT(J,3)=CVL050
13405          ELSEIF(J.EQ.5)THEN
13406            AMAT(J,3)=CVL025
13407          ELSEIF(J.EQ.6)THEN
13408            AMAT(J,3)=CVL010
13409          ELSEIF(J.EQ.7)THEN
13410            AMAT(J,3)=CVL005
13411          ENDIF
13412          IVALUE(J,4)(1:6)='ACCEPT'
13413          IF(STATVA.LT.AMAT(J,3))THEN
13414            IVALUE(J,4)(1:6)='REJECT'
13415          ENDIF
13416          NCVALU(J,4)=6
13417C
13418          ALPHAT=100.0*ALPHA(J)
13419          WRITE(IVALUE(J,1)(1:4),'(F4.1)')ALPHAT
13420          IVALUE(J,1)(5:5)='%'
13421          NCVALU(J,1)=5
13422 3260   CONTINUE
13423C
13424        ICNT=NUMALP
13425        NUMLIN=3
13426        IFRST=.TRUE.
13427        ILAST=.TRUE.
13428        IFLAGS=.TRUE.
13429        IFLAGE=.TRUE.
13430C
13431        CALL DPDTA5(ITITLE,NCTITL,
13432     1              ITITL9,NCTIT9,ITITL2,NCTIT2,
13433     1              MAXLIN,NUMLIN,NUMCLI,NUMCOL,
13434     1              IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
13435     1              IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
13436     1              ICAPSW,ICAPTY,IFRST,ILAST,
13437     1              IFLAGS,IFLAGE,
13438     1              ISUBRO,IBUGA3,IERROR)
13439      ENDIF
13440C
13441      IF(ICASA2.EQ.'UPPE')THEN
13442        ITITLE='Upper-Tailed Test: Exact Small Sample (Assumes No Ties)'
13443        NCTITL=55
13444        IF(ICASAN.EQ.'ONES')THEN
13445          ITITL9='H0: u = d0; Ha: u > d0'
13446          NCTIT9=22
13447        ELSE
13448          ITITL9='H0: u1 - u2 = d0; Ha: u1 - u2 > d0'
13449          NCTIT9=34
13450        ENDIF
13451C
13452        ITITL2(1,3)='Upper'
13453        NCTIT2(1,3)=5
13454        ITITL2(2,3)='Critical'
13455        NCTIT2(2,3)=8
13456        ITITL2(3,3)='Value (>)'
13457        NCTIT2(3,3)=9
13458C
13459        ITITL2(1,4)='Null'
13460        NCTIT2(1,4)=4
13461        ITITL2(2,4)='Hypothesis'
13462        NCTIT2(2,4)=10
13463        ITITL2(3,4)='Conclusion'
13464        NCTIT2(3,4)=10
13465C
13466        ITITL2(1,5)=' '
13467        NCTIT2(1,5)=0
13468        ITITL2(2,5)=' '
13469        NCTIT2(2,5)=0
13470        ITITL2(3,5)=' '
13471        NCTIT2(3,5)=0
13472C
13473        NMAX=0
13474        NUMCOL=4
13475        DO3350I=1,NUMCOL
13476          VALIGN(I)='b'
13477          ALIGN(I)='r'
13478          NTOT(I)=15
13479          NMAX=NMAX+NTOT(I)
13480          ITYPCO(I)='NUME'
13481          IDIGIT(I)=NUMDIG
13482          IF(I.EQ.1 .OR. I.EQ.4)THEN
13483            ITYPCO(I)='ALPH'
13484          ENDIF
13485 3350   CONTINUE
13486C
13487        DO3360J=1,NUMALP
13488C
13489          AMAT(J,2)=STATVA
13490          IF(J.EQ.1)THEN
13491            AMAT(J,3)=CVU500
13492          ELSEIF(J.EQ.2)THEN
13493            AMAT(J,3)=CVU800
13494          ELSEIF(J.EQ.3)THEN
13495            AMAT(J,3)=CVU900
13496          ELSEIF(J.EQ.4)THEN
13497            AMAT(J,3)=CVU950
13498          ELSEIF(J.EQ.5)THEN
13499            AMAT(J,3)=CVU975
13500          ELSEIF(J.EQ.6)THEN
13501            AMAT(J,3)=CVU990
13502          ELSEIF(J.EQ.7)THEN
13503            AMAT(J,3)=CVU995
13504          ENDIF
13505          IVALUE(J,4)(1:6)='ACCEPT'
13506          IF(STATVA.GT.AMAT(J,3))THEN
13507            IVALUE(J,4)(1:6)='REJECT'
13508          ENDIF
13509          NCVALU(J,4)=6
13510C
13511          ALPHAT=100.0*ALPHA(J)
13512          WRITE(IVALUE(J,1)(1:4),'(F4.1)')ALPHAT
13513          IVALUE(J,1)(5:5)='%'
13514          NCVALU(J,1)=5
13515 3360   CONTINUE
13516C
13517        ICNT=NUMALP
13518        NUMLIN=3
13519        IFRST=.TRUE.
13520        ILAST=.TRUE.
13521        IFLAGS=.TRUE.
13522        IFLAGE=.TRUE.
13523C
13524        CALL DPDTA5(ITITLE,NCTITL,
13525     1              ITITL9,NCTIT9,ITITL2,NCTIT2,
13526     1              MAXLIN,NUMLIN,NUMCLI,NUMCOL,
13527     1              IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
13528     1              IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
13529     1              ICAPSW,ICAPTY,IFRST,ILAST,
13530     1              IFLAGS,IFLAGE,
13531     1              ISUBRO,IBUGA3,IERROR)
13532      ENDIF
13533C
13534C               *****************
13535C               **  STEP 90--  **
13536C               **  EXIT       **
13537C               *****************
13538C
13539 9000 CONTINUE
13540      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'WIL2')THEN
13541        WRITE(ICOUT,999)
13542        CALL DPWRST('XXX','WRIT')
13543        WRITE(ICOUT,9011)
13544 9011   FORMAT('***** AT THE END       OF DPWIL2--')
13545        CALL DPWRST('XXX','WRIT')
13546        WRITE(ICOUT,9013)STATVA,STATV2,STATCD,PVAL2T,PVALLT,PVALUT
13547 9013   FORMAT('STATVA,STATV2,STATCD,PVAL2T,PVALLT,PVALUT = ',6G15.7)
13548        CALL DPWRST('XXX','WRIT')
13549      ENDIF
13550C
13551      RETURN
13552      END
13553      SUBROUTINE DPWIL3(Y1,Y2,N1,D0,ICASAN,ICASA2,
13554     1                  TEMP1,TEMP2,TEMP3,MAXNXT,
13555     1                  STATVA,STATV2,STATCD,
13556     1                  PVAL2T,PVALLT,PVALUT,
13557     1                  NTEMP,NPLUS,NMINUS,NTIES,
13558     1                  TPLUS,TMINUS,RSUM,RSUMSQ,
13559     1                  IBUGA3,ISUBRO,IERROR)
13560C
13561C     PURPOSE--THIS ROUTINE COMPUTES THE WILCOXON SIGNED RANKED TEST
13562C              STATISTIC AND ASSOCIATED CDF AND P-VALUES.
13563C
13564C              THIS PART IS EXTRACTED FROM DPWIL2 IN ORDER TO
13565C              ALLOW IT TO BE COMPUTED FROM THE "STATISTICS" ROUTINES
13566C              (E.G., STATISTIC PLOT, BOOTSTRAP).
13567C
13568C              ALSO, PREVIOUS VERSIONS USED A FORM OF THE TEST
13569C              GIVEN BY WALPOLE AND MEYERS.  THIS VERSION SWITCHES
13570C              TO THE ONE USED BY CONOVER.  THE CONOVER VERSION IS
13571C              THE MORE COMMONLY USED AND ALSO PROVIDES MORE EXTENSIVE
13572C              TABLED VALUES FOR SMALL SAMPLES.
13573C
13574C              THE CDF AND P-VALUES ARE THE NORMAL APPROXIMATIONS
13575C              (THE TABLED CRITICAL VALUES ARE GENERATED IN DPWIL2).
13576C
13577C     EXAMPLE--SIGNED RANK TEST Y1 Y2
13578C              SIGNED RANK TEST Y1 Y2 D0
13579C              SIGNED RANK TEST Y1 D0
13580C     SAMPLE 1 IS IN INPUT VECTOR Y1 (WITH N1 OBSERVATIONS)
13581C     SAMPLE 2 IS IN INPUT VECTOR Y2 (WITH N1 OBSERVATIONS).
13582C     REFERENCE--CONOVER (1999), "PRACTICAL NONPARAMETRIC STATISTICS",
13583C                THIRD EDITION, WILEY, PP. 352 - 360.
13584C              --WALPOLE AND MEYERS (19xx), "ENGINEERING STATISTICS",
13585C                XX, PP. XX.
13586C     WRITTEN BY--ALAN HECKERT
13587C                 STATISTICAL ENGINEERING DIVISION
13588C                 INFORMATION TECHNOLOGY LABORATORY
13589C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13590C                 GAITHERSBURG, MD 20899-8980
13591C                 PHONE--301-975-2855
13592C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13593C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13594C     LANGUAGE--ANSI FORTRAN (1977)
13595C     VERSION NUMBER--2011/5
13596C     ORIGINAL VERSION--MAY       2011. EXTRACTED FROM DPWIL2
13597C
13598C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
13599C
13600      CHARACTER*4 ICASAN
13601      CHARACTER*4 ICASA2
13602      CHARACTER*4 IBUGA3
13603      CHARACTER*4 ISUBRO
13604      CHARACTER*4 IERROR
13605C
13606      CHARACTER*4 IWRITE
13607      CHARACTER*4 ISUBN1
13608      CHARACTER*4 ISUBN2
13609      CHARACTER*4 ISTEPN
13610C
13611      DOUBLE PRECISION TPLUS
13612      DOUBLE PRECISION TMINUS
13613      DOUBLE PRECISION RSUM
13614      DOUBLE PRECISION RSUMSQ
13615C
13616C---------------------------------------------------------------------
13617C
13618      DIMENSION Y1(*)
13619      DIMENSION Y2(*)
13620      DIMENSION TEMP1(*)
13621      DIMENSION TEMP2(*)
13622      DIMENSION TEMP3(*)
13623C
13624C-----COMMON----------------------------------------------------------
13625C
13626      INCLUDE 'DPCOP2.INC'
13627C
13628C-----START POINT-----------------------------------------------------
13629C
13630      ISUBN1='DPWI'
13631      ISUBN2='L3  '
13632      IERROR='NO'
13633      IWRITE='OFF'
13634C
13635      STATVA=CPUMIN
13636      STATV2=CPUMIN
13637      STATCD=CPUMIN
13638      PVAL2T=CPUMIN
13639      PVALLT=CPUMIN
13640      PVALUT=CPUMIN
13641C
13642      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL3')THEN
13643        WRITE(ICOUT,999)
13644  999   FORMAT(1X)
13645        CALL DPWRST('XXX','WRIT')
13646        WRITE(ICOUT,51)
13647   51   FORMAT('**** AT THE BEGINNING OF DPWIL3--')
13648        CALL DPWRST('XXX','WRIT')
13649        WRITE(ICOUT,52)IBUGA3,ISUBRO,ICASA2,N1,D0
13650   52   FORMAT('IBUGA3,ISUBRO,ICASA2,N1,D0 = ',3(A4,2X),I8,G15.7)
13651        CALL DPWRST('XXX','WRIT')
13652        DO56I=1,N1
13653          WRITE(ICOUT,57)I,Y1(I),Y2(I)
13654   57     FORMAT('I,Y1(I),Y2(I) = ',I8,2G15.7)
13655          CALL DPWRST('XXX','WRIT')
13656   56   CONTINUE
13657      ENDIF
13658C
13659C               ********************************************
13660C               **  STEP 01--                             **
13661C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
13662C               ********************************************
13663C
13664      ISTEPN='01'
13665      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL3')
13666     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
13667C
13668      IF(N1.LE.1)THEN
13669        WRITE(ICOUT,999)
13670        CALL DPWRST('XXX','BUG ')
13671        WRITE(ICOUT,101)
13672  101   FORMAT('***** ERROR IN WILCOXON PAIRED SIGNED RANK TEST--')
13673        CALL DPWRST('XXX','BUG ')
13674        WRITE(ICOUT,112)
13675  112   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS FOR THE ',
13676     1         'RESPONSE')
13677        CALL DPWRST('XXX','BUG ')
13678        WRITE(ICOUT,113)
13679  113   FORMAT('      VARIABLES MUST BE 2 OR LARGER.')
13680        CALL DPWRST('XXX','BUG ')
13681        WRITE(ICOUT,116)
13682  116   FORMAT('      SUCH WAS NOT THE CASE HERE.')
13683        CALL DPWRST('XXX','BUG ')
13684        WRITE(ICOUT,117)N1
13685  117   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS HERE = ',I8,
13686     1         '.')
13687        CALL DPWRST('XXX','BUG ')
13688        IERROR='YES'
13689        GOTO9000
13690      ENDIF
13691C
13692      HOLD=Y1(1)
13693      DO135I=2,N1
13694        IF(Y1(I).NE.HOLD)GOTO139
13695  135 CONTINUE
13696      WRITE(ICOUT,999)
13697      CALL DPWRST('XXX','WRIT')
13698      WRITE(ICOUT,101)
13699      CALL DPWRST('XXX','WRIT')
13700      WRITE(ICOUT,131)HOLD
13701  131 FORMAT('      THE FIRST RESPONSE VARIABLE HAS ALL ELEMENTS = ',
13702     1       G15.7)
13703      CALL DPWRST('XXX','WRIT')
13704      IERROR='YES'
13705      GOTO9000
13706  139 CONTINUE
13707C
13708      IF(ICASAN.EQ.'TWOS')THEN
13709        HOLD=Y2(1)
13710        DO145I=2,N1
13711          IF(Y2(I).NE.HOLD)GOTO149
13712  145   CONTINUE
13713        WRITE(ICOUT,999)
13714        CALL DPWRST('XXX','WRIT')
13715        WRITE(ICOUT,101)
13716        CALL DPWRST('XXX','WRIT')
13717        WRITE(ICOUT,141)HOLD
13718  141   FORMAT('      THE SECOND RESPONSE VARIABLE HAS ALL ELEMENTS = ',
13719     1         G15.7)
13720        CALL DPWRST('XXX','WRIT')
13721        IERROR='YES'
13722        GOTO9000
13723  149   CONTINUE
13724      ENDIF
13725C
13726C               ************************************
13727C               **   STEP 11--                    **
13728C               **   BRANCH DEPENDING ON WHETHER  **
13729C               **   1-SAMPLE SIGNED RANK TEST OR **
13730C               **   2-SAMPLE SIGNED RANK TEST.   **
13731C               ************************************
13732C
13733      ISTEPN='11'
13734      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL3')
13735     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
13736C
13737C     NOTE: OMIT ANY VALUES WHERE DIFFERENCE EQUAL D0.
13738C
13739      ICNT=0
13740      IF(ICASAN.EQ.'ONES')THEN
13741        DO1110I=1,N1
13742          DIFF=ABS(Y1(I) - D0)
13743          IF(DIFF.NE.0.0)THEN
13744            ICNT=ICNT+1
13745            TEMP1(ICNT)=DIFF
13746            Y1(ICNT)=Y1(I)
13747          ENDIF
13748 1110   CONTINUE
13749      ELSE
13750        DO1120I=1,N1
13751          DIFF=ABS(Y1(I) - Y2(I) - D0)
13752          IF(DIFF.NE.0.0)THEN
13753            ICNT=ICNT+1
13754            TEMP1(ICNT)=DIFF
13755            Y1(ICNT)=Y1(I)
13756            Y2(ICNT)=Y2(I)
13757          ENDIF
13758 1120   CONTINUE
13759      ENDIF
13760      NTEMP=ICNT
13761C
13762      ISTEPN='11B'
13763      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL3')
13764     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
13765C
13766      CALL RANK(TEMP1,NTEMP,IWRITE,TEMP2,TEMP3,MAXNXT,IBUGA3,IERROR)
13767C
13768C     CHECK FOR NUMBER OF TIED RANKS.  BASICALLY, IF THE RANK IS
13769C     A NON-INTEGER VALUE, THIS IMPLIES THAT IT IS A TIED RANK.
13770C     DATAPLOT WILL ONLY PRINT THE EXACT TABLE IF THE SAMPLE SIZE
13771C     IS <= 50 AND LESS THAN 10% OF THE RANKS ARE TIES.
13772C
13773      NTIES=0
13774      NPLUS=0
13775      NMINUS=0
13776      TPLUS=0.0D0
13777      TMINUS=0.0D0
13778      RSUM=0.0D0
13779      RSUMSQ=0.0D0
13780      D0TEMP=D0
13781C
13782      IF(ICASAN.EQ.'ONES')THEN
13783        DO1130I=1,NTEMP
13784          ARANK=TEMP2(I)
13785          ITEMP=INT(ARANK)
13786          ATEMP=ARANK - REAL(ITEMP)
13787          IF(ABS(ATEMP).GE.0.1)NTIES=NTIES+1
13788          RSUMSQ=RSUMSQ + DBLE(ARANK)**2
13789          IF(Y1(I).GT.D0TEMP)THEN
13790            TPLUS=TPLUS + DBLE(ARANK)
13791            NPLUS=NPLUS + 1
13792          ELSE
13793            TMINUS=TMINUS + DBLE(ARANK)
13794            NMINUS=NMINUS + 1
13795          ENDIF
13796 1130   CONTINUE
13797      ELSE
13798        DO1140I=1,NTEMP
13799          ARANK=TEMP2(I)
13800          ITEMP=INT(ARANK)
13801          ATEMP=ARANK - REAL(ITEMP)
13802          IF(ABS(ATEMP).GE.0.1)NTIES=NTIES+1
13803          RSUMSQ=RSUMSQ + DBLE(ARANK)**2
13804          IF(Y1(I) - Y2(I).GT.D0TEMP)THEN
13805            TPLUS=TPLUS + DBLE(ARANK)
13806            NPLUS=NPLUS + 1
13807          ELSE
13808            TMINUS=TMINUS + DBLE(ARANK)
13809            NMINUS=NMINUS + 1
13810          ENDIF
13811 1140   CONTINUE
13812      ENDIF
13813C
13814      ISTEPN='11C'
13815      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL3')
13816     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
13817C
13818      RSUM=TPLUS - TMINUS
13819      STATVA=TPLUS
13820      STATV2=RSUM/DSQRT(RSUMSQ)
13821      CALL NORCDF(STATV2,STATCD)
13822C
13823C     NOW COMPUTE CDF, P-VALUES
13824C
13825      Z=(RSUM+1.0D0)/DSQRT(RSUMSQ)
13826      CALL NORCDF(Z,PVALLT)
13827C
13828      Z=(RSUM-1.0D0)/DSQRT(RSUMSQ)
13829      CALL NORCDF(Z,PVALUT)
13830      PVALUT= 1.0 - PVALUT
13831C
13832      PVAL=MIN(PVALLT,PVALUT)
13833      PVAL2T=2.0*PVAL
13834C
13835C               *****************
13836C               **  STEP 90--  **
13837C               **  EXIT       **
13838C               *****************
13839C
13840 9000 CONTINUE
13841      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WIL3')THEN
13842        WRITE(ICOUT,999)
13843        CALL DPWRST('XXX','WRIT')
13844        WRITE(ICOUT,9011)
13845 9011   FORMAT('***** AT THE END       OF DPWIL3--')
13846        CALL DPWRST('XXX','WRIT')
13847        WRITE(ICOUT,9013)STATVA,STATV2,STATCD
13848 9013   FORMAT('STATVA,STATV2,STATCD = ',3G15.7)
13849        CALL DPWRST('XXX','WRIT')
13850        WRITE(ICOUT,9014)PVALLT,PVALUT,PVAL2T
13851 9014   FORMAT('PVALLT,PVALUT,PVAL2T = ',3G15.7)
13852        CALL DPWRST('XXX','WRIT')
13853        WRITE(ICOUT,9015)NTIES,NPLUS,NMINUS
13854 9015   FORMAT('NTIES,NPLUS,NMINUS = ',3I8)
13855        CALL DPWRST('XXX','WRIT')
13856        WRITE(ICOUT,9017)TPLUS,TMINUS,RSUM,RSUMSQ
13857 9017   FORMAT('TPLUS,TMINUS,RSUM,RSUMSQ = ',4G15.7)
13858        CALL DPWRST('XXX','WRIT')
13859      ENDIF
13860C
13861      RETURN
13862      END
13863      SUBROUTINE DPWIL5(ICASAN,ICASA2,
13864     1                  STATVA,STATV2,STATCD,
13865     1                  PVAL2T,PVALLT,PVALUT,
13866     1                  CTL005,CTL010,CTL025,CTL050,CTL100,
13867     1                  CTL200,CTL500,
13868     1                  CTU995,CTU990,CTU975,CTU950,CTU900,
13869     1                  CTU800,CTU500,
13870     1                  CVL005,CVL010,CVL025,CVL050,CVL100,
13871     1                  CVL200,CVL500,
13872     1                  CVU995,CVU990,CVU975,CVU950,CVU900,
13873     1                  CVU800,CVU500,
13874     1                  IFLAGU,IFRST,ILAST,
13875     1                  IBUGA2,IBUGA3,ISUBRO,IERROR)
13876C
13877C     PURPOSE--UTILITY ROUTINE USED BY DPWILC TO UPDATE VARIOUS
13878C              INTERNAL PARAMETERS AFTER A WILCOXON SIGNED RANK TEST.
13879C
13880C     WRITTEN BY--ALAN HECKERT
13881C                 STATISTICAL ENGINEERING DIVISION
13882C                 INFORMATION TECHNOLOGY LABORAOTRY
13883C                 NATIONAL INSTITUTE OF STANDARDS OF TECHNOLOGY
13884C                 GAITHERSBURG, MD 20899-8980
13885C                 PHONE--301-975-2899
13886C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13887C           OF THE NATIONAL INSTITUTE OF STANDARDS OF TECHNOLOGY.
13888C     LANGUAGE--ANSI FORTRAN (1977)
13889C     VERSION NUMBER--2011/5
13890C     ORIGINAL VERSION--MAY       2011.
13891C
13892C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
13893C
13894      CHARACTER*4 ICASAN
13895      CHARACTER*4 ICASA2
13896      CHARACTER*4 IFLAGU
13897      CHARACTER*4 IBUGA2
13898      CHARACTER*4 IBUGA3
13899      CHARACTER*4 ISUBRO
13900      CHARACTER*4 IERROR
13901C
13902      LOGICAL IFRST
13903      LOGICAL ILAST
13904C
13905      CHARACTER*4 IH
13906      CHARACTER*4 IH2
13907      CHARACTER*4 ISUBN0
13908C
13909      CHARACTER*4 ISUBN1
13910      CHARACTER*4 ISUBN2
13911      CHARACTER*4 ISTEPN
13912C
13913C---------------------------------------------------------------------
13914C
13915      INCLUDE 'DPCOPA.INC'
13916      INCLUDE 'DPCOHK.INC'
13917      INCLUDE 'DPCOHO.INC'
13918C
13919      CHARACTER*4 IOP
13920      SAVE IOUNI1
13921      SAVE IOUNI2
13922C
13923C-----COMMON----------------------------------------------------------
13924C
13925      INCLUDE 'DPCOP2.INC'
13926C
13927C-----START POINT-----------------------------------------------------
13928C
13929      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WIL5')THEN
13930        ISTEPN='1'
13931        CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
13932        WRITE(ICOUT,999)
13933  999   FORMAT(1X)
13934        CALL DPWRST('XXX','BUG ')
13935        WRITE(ICOUT,51)
13936   51   FORMAT('***** AT THE BEGINNING OF DPWIL5--')
13937        CALL DPWRST('XXX','BUG ')
13938        WRITE(ICOUT,53)STATVA,STATV2,STATCD,PVAL2T,PVALLT,PVALUT
13939   53   FORMAT('STATVA,STATV2,STATCD,PVAL2T,PVALLT,PVALUT = ',6G15.7)
13940        CALL DPWRST('XXX','BUG ')
13941        WRITE(ICOUT,55)ICASAN,ICASA2
13942   55   FORMAT('ICASAN,ICASA2 = ',A4,2X,A4)
13943        CALL DPWRST('XXX','BUG ')
13944      ENDIF
13945C
13946      IF(IFLAGU.EQ.'FILE')THEN
13947C
13948        IF(IFRST)THEN
13949          IOP='OPEN'
13950          IFLAG1=1
13951          IFLAG2=1
13952          IFLAG3=0
13953          IFLAG4=0
13954          IFLAG5=0
13955          CALL DPAUFI(IOP,IFLAG1,IFLAG2,IFLAG3,IFLAG4,IFLAG5,
13956     1                IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
13957     1                IBUGA3,ISUBRO,IERROR)
13958          IF(IERROR.EQ.'YES')GOTO9000
13959C
13960          WRITE(IOUNI1,295)
13961  295     FORMAT(10X,'STATVAL',8X,'STATCDF',
13962     1            9X,'PVAL2T',9X,'PVALLT',9X,'PVALUT',
13963     1            7X,'CUTLOW50',7X,'CUTLOW20',7X,'CUTLOW10',
13964     1            7X,'CUTLOW05',7X,'CUTLO025',7X,'CUTLOW01',
13965     1            7X,'CUTLO005',
13966     1            7X,'CUTUPP50',7X,'CUTUPP80',7X,'CUTUPP90',
13967     1            7X,'CUTUPP95',7X,'CUTUP975',7X,'CUTUPP99',
13968     1            7X,'CUTUP995')
13969          WRITE(IOUNI2,296)
13970  296     FORMAT(10X,'STATVAL',
13971     1            8X,'CVLOW50',8X,'CVLOW20',8X,'CVLOW10',
13972     1            8X,'CVLOW05',7X,'CVLOW025',8X,'CVLOW01',
13973     1            7X,'CVLOW005',
13974     1            8X,'CVUPP50',8X,'CVUPP80',8X,'CVUPP90',
13975     1            8X,'CVUPP95',7X,'CVUPP975',8X,'CVUPP99',
13976     1            7X,'CVUPP995')
13977        ENDIF
13978        WRITE(IOUNI1,298)STATV2,STATCD,PVAL2T,PVALLT,PVALUT,
13979     1                   CTL500,CTL200,CTL100,CTL050,CTL025,
13980     1                   CTL010,CTL005,
13981     1                   CTU500,CTU800,CTU900,CTU950,CTU975,CTU990,
13982     1                   CTU995
13983  298   FORMAT(19E15.7)
13984        WRITE(IOUNI2,299)STATVA,
13985     1                   CVL500,CVL200,CVL100,CVL050,CVL025,
13986     1                   CVL010,CVL005,
13987     1                   CVU500,CVU800,CVU900,CVU950,CVU975,
13988     1                   CVU990,CVU995
13989  299   FORMAT(15E15.7)
13990      ELSEIF(IFLAGU.EQ.'ON')THEN
13991        IH='STAT'
13992        IH2='VALE'
13993        VALUE0=STATVA
13994        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
13995     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
13996     1              IANS,IWIDTH,IBUGA3,IERROR)
13997C
13998        IH='STAT'
13999        IH2='VALN'
14000        VALUE0=STATV2
14001        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14002     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14003     1              IANS,IWIDTH,IBUGA3,IERROR)
14004C
14005        IH='STAT'
14006        IH2='CDF '
14007        VALUE0=STATCD
14008        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14009     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14010     1              IANS,IWIDTH,IBUGA3,IERROR)
14011C
14012        IH='PVAL'
14013        IH2='UE  '
14014        VALUE0=PVAL2T
14015        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14016     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14017     1              IANS,IWIDTH,IBUGA3,IERROR)
14018C
14019        IH='PVAL'
14020        IH2='UELT'
14021        VALUE0=PVALLT
14022        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14023     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14024     1              IANS,IWIDTH,IBUGA3,IERROR)
14025C
14026        IH='PVAL'
14027        IH2='UEUT'
14028        VALUE0=PVALUT
14029        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14030     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14031     1              IANS,IWIDTH,IBUGA3,IERROR)
14032C
14033        IH='CUTU'
14034        IH2='PP50'
14035        VALUE0=CTU500
14036        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14037     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14038     1              IANS,IWIDTH,IBUGA3,IERROR)
14039C
14040        IH='CUTL'
14041        IH2='OW50'
14042        VALUE0=CTL500
14043        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14044     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14045     1              IANS,IWIDTH,IBUGA3,IERROR)
14046C
14047        IH='CVUP'
14048        IH2='P50'
14049        VALUE0=CVU500
14050        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14051     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14052     1              IANS,IWIDTH,IBUGA3,IERROR)
14053C
14054        IH='CVLO'
14055        IH2='W50'
14056        VALUE0=CVL500
14057        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14058     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14059     1              IANS,IWIDTH,IBUGA3,IERROR)
14060C
14061        IH='CUTU'
14062        IH2='PP80'
14063        VALUE0=CTU800
14064        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14065     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14066     1              IANS,IWIDTH,IBUGA3,IERROR)
14067C
14068        IH='CUTL'
14069        IH2='OW20'
14070        VALUE0=CTL200
14071        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14072     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14073     1              IANS,IWIDTH,IBUGA3,IERROR)
14074C
14075        IH='CVUP'
14076        IH2='P80'
14077        VALUE0=CVU800
14078        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14079     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14080     1              IANS,IWIDTH,IBUGA3,IERROR)
14081C
14082        IH='CVLO'
14083        IH2='W20'
14084        VALUE0=CVL200
14085        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14086     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14087     1              IANS,IWIDTH,IBUGA3,IERROR)
14088C
14089        IH='CUTU'
14090        IH2='PP90'
14091        VALUE0=CTU900
14092        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14093     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14094     1              IANS,IWIDTH,IBUGA3,IERROR)
14095C
14096        IH='CUTL'
14097        IH2='OW10'
14098        VALUE0=CTL100
14099        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14100     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14101     1              IANS,IWIDTH,IBUGA3,IERROR)
14102C
14103        IH='CVUP'
14104        IH2='P90'
14105        VALUE0=CVU900
14106        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14107     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14108     1              IANS,IWIDTH,IBUGA3,IERROR)
14109C
14110        IH='CVLO'
14111        IH2='W10'
14112        VALUE0=CVL100
14113        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14114     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14115     1              IANS,IWIDTH,IBUGA3,IERROR)
14116C
14117        IH='CUTU'
14118        IH2='PP95'
14119        VALUE0=CTU950
14120        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14121     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14122     1              IANS,IWIDTH,IBUGA3,IERROR)
14123C
14124        IH='CUTL'
14125        IH2='OW95'
14126        VALUE0=CTL050
14127        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14128     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14129     1              IANS,IWIDTH,IBUGA3,IERROR)
14130C
14131        IH='CVUP'
14132        IH2='P95'
14133        VALUE0=CVU950
14134        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14135     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14136     1              IANS,IWIDTH,IBUGA3,IERROR)
14137C
14138        IH='CVLO'
14139        IH2='W05'
14140        VALUE0=CVL050
14141        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14142     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14143     1              IANS,IWIDTH,IBUGA3,IERROR)
14144C
14145        IH='CUTU'
14146        IH2='P975'
14147        VALUE0=CTU975
14148        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14149     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14150     1              IANS,IWIDTH,IBUGA3,IERROR)
14151C
14152        IH='CUTL'
14153        IH2='O025'
14154        VALUE0=CTL025
14155        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14156     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14157     1              IANS,IWIDTH,IBUGA3,IERROR)
14158C
14159        IH='CVUP'
14160        IH2='P975'
14161        VALUE0=CVU975
14162        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14163     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14164     1              IANS,IWIDTH,IBUGA3,IERROR)
14165C
14166        IH='CVLO'
14167        IH2='W975'
14168        VALUE0=CVL025
14169        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14170     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14171     1              IANS,IWIDTH,IBUGA3,IERROR)
14172C
14173        IH='CUTU'
14174        IH2='PP99'
14175        VALUE0=CTU990
14176        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14177     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14178     1              IANS,IWIDTH,IBUGA3,IERROR)
14179C
14180        IH='CUTL'
14181        IH2='OW01'
14182        VALUE0=CTL010
14183        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14184     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14185     1              IANS,IWIDTH,IBUGA3,IERROR)
14186C
14187        IH='CVUP'
14188        IH2='P99'
14189        VALUE0=CVU990
14190        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14191     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14192     1              IANS,IWIDTH,IBUGA3,IERROR)
14193C
14194        IH='CVLO'
14195        IH2='W01'
14196        VALUE0=CVL010
14197        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14198     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14199     1              IANS,IWIDTH,IBUGA3,IERROR)
14200C
14201        IH='CUTU'
14202        IH2='P995'
14203        VALUE0=CTU995
14204        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14205     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14206     1              IANS,IWIDTH,IBUGA3,IERROR)
14207C
14208        IH='CUTL'
14209        IH2='O005'
14210        VALUE0=CTL005
14211        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14212     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14213     1              IANS,IWIDTH,IBUGA3,IERROR)
14214C
14215        IH='CVUP'
14216        IH2='P995'
14217        VALUE0=CVU995
14218        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14219     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14220     1              IANS,IWIDTH,IBUGA3,IERROR)
14221C
14222        IH='CVLO'
14223        IH2='W995'
14224        VALUE0=CVL005
14225        CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
14226     1              IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
14227     1              IANS,IWIDTH,IBUGA3,IERROR)
14228C
14229      ENDIF
14230C
14231      IF(IFLAGU.EQ.'FILE')THEN
14232        IF(ILAST)THEN
14233          IOP='CLOS'
14234          IFLAG1=1
14235          IFLAG2=1
14236          IFLAG3=0
14237          IFLAG4=0
14238          IFLAG5=0
14239          CALL DPAUFI(IOP,IFLAG1,IFLAG2,IFLAG3,IFLAG4,IFLAG5,
14240     1                IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
14241     1                IBUGA3,ISUBRO,IERROR)
14242C
14243          IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WIL5')THEN
14244            ISTEPN='3A'
14245            CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
14246            WRITE(ICOUT,999)
14247            CALL DPWRST('XXX','BUG ')
14248            WRITE(ICOUT,301)IERROR
14249  301       FORMAT('AFTER CALL DPCLFI, IERROR = ',A4)
14250            CALL DPWRST('XXX','BUG ')
14251          ENDIF
14252C
14253          IF(IERROR.EQ.'YES')GOTO9000
14254        ENDIF
14255      ENDIF
14256C
14257C               *****************
14258C               **  STEP 90--  **
14259C               **  EXIT       **
14260C               *****************
14261C
14262 9000 CONTINUE
14263C
14264      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WIL5')THEN
14265        WRITE(ICOUT,999)
14266        CALL DPWRST('XXX','BUG ')
14267        WRITE(ICOUT,9011)
14268 9011   FORMAT('***** AT THE END OF DPWIL5--')
14269        CALL DPWRST('XXX','BUG ')
14270      ENDIF
14271C
14272      RETURN
14273      END
14274      SUBROUTINE DPWRFI(IOTERM,IOFILE,IPR2,IOUNIT,IFMFLG,
14275     1                  IFILE,ISTAT,IFORM,IACCES,IPROT,ICURST,
14276     1                  ICWRIF,NCWRIF,IFWORD,IFQUOT,ICASWR,ICASW2,
14277     1                  IWRIRW,IWRIHE,NCWRIH,IEXCEL,
14278     1                  IBUGS2,ISUBRO,IFOUND,IERROR)
14279C
14280C     PURPOSE--UTILITY ROUTINE FOR DPWRIT:
14281C              1) DETERMINE IF WRITE TO FILE OR TERMINAL
14282C              2) FOR FILE, EXTRACT THE FILE NAME AND
14283C                 OPEN THE FILE
14284C              3) SET THE APPROPRIATE UNIT NUMBERS
14285C     WRITTEN BY--JAMES J. FILLIBEN
14286C                 STATISTICAL ENGINEERING DIVISION
14287C                 INFORMATION TECHNOLOGY LABORATORY
14288C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
14289C                 GAITHERSBURG, MD 20899-8980
14290C                 PHONE--301-975-2899
14291C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
14292C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
14293C     LANGUAGE--ANSI FORTRAN (1977)
14294C     VERSION NUMBER--2009/3
14295C     ORIGINAL VERSION--MARCH     2009. EXTRACT AS DISTINCT
14296C                                       SUBROUTINE
14297C     UPDATED  VERSION--JULY      2016. SUPPORT FOR HEADER FILE
14298C     UPDATED  VERSION--DECEMBER  2018. SUPPORT FOR WRITE1/WRITE2/
14299C                                       WRITE3
14300C     UPDATED  VERSION--FEBRUARY  2020. FOR WRITE EXCEL OPTION, FIRST
14301C                                       WRITE VAARIABLES TO "dpst1f.dat"
14302C
14303C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
14304C
14305      CHARACTER*80 ICWRIF
14306      CHARACTER*80 IWRIHE
14307C
14308      CHARACTER*4 ICASWR
14309      CHARACTER*4 ICASW2
14310      CHARACTER*4 IWRIRW
14311      CHARACTER*4 IEXCEL
14312      CHARACTER*4 IBUGS2
14313      CHARACTER*4 ISUBRO
14314      CHARACTER*4 IFOUND
14315      CHARACTER*4 IERROR
14316C
14317      INCLUDE 'DPCOPA.INC'
14318C
14319      CHARACTER*4 ISUBN1
14320      CHARACTER*4 ISUBN2
14321      CHARACTER*4 ISTEPN
14322C
14323      CHARACTER*4 IOFILE
14324      CHARACTER*4 IOTERM
14325      CHARACTER*4 IFMFLG
14326C
14327CCCCC CHARACTER*80 IFILE
14328      CHARACTER (LEN=MAXFNC) :: IFILE
14329      CHARACTER*12 ISTAT
14330      CHARACTER*12 IFORM
14331      CHARACTER*12 IACCES
14332      CHARACTER*12 IPROT
14333      CHARACTER*12 ICURST
14334C
14335CCCCC CHARACTER*80 IFILE2
14336      CHARACTER (LEN=MAXFNC) :: IFILE2
14337      CHARACTER*12 ISTAT2
14338      CHARACTER*12 IFORM2
14339      CHARACTER*12 IACCE2
14340      CHARACTER*12 IPROT2
14341      CHARACTER*12 ICURS2
14342      CHARACTER*4 IERRF2
14343      CHARACTER*4 IENDF2
14344      CHARACTER*4 IREWI2
14345      CHARACTER*240 IATEMP
14346C
14347      CHARACTER*4 IREWIN
14348      CHARACTER*4 ISUBN0
14349      CHARACTER*4 IERRFI
14350C
14351CCCCC CHARACTER*200 ICANS
14352      CHARACTER (LEN=MAXSTR) :: ICANS
14353C
14354C---------------------------------------------------------------------
14355C
14356C-----COMMON----------------------------------------------------------
14357C
14358      INCLUDE 'DPCOHK.INC'
14359      INCLUDE 'DPCODA.INC'
14360      INCLUDE 'DPCOF2.INC'
14361      INCLUDE 'DPCOP2.INC'
14362C
14363C-----START POINT-----------------------------------------------------
14364C
14365      ISUBN1='DPWR'
14366      ISUBN2='FI  '
14367      IFOUND='YES'
14368      IERROR='NO'
14369      IOFILE='-999'
14370      IOTERM='-999'
14371C
14372      IFQUOT=0
14373      ILAST=0
14374C
14375      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRFI')THEN
14376        WRITE(ICOUT,999)
14377  999   FORMAT(1X,1X)
14378        CALL DPWRST('XXX','BUG ')
14379        WRITE(ICOUT,51)
14380   51   FORMAT('***** AT THE BEGINNING OF DPWRFI--')
14381        CALL DPWRST('XXX','BUG ')
14382        WRITE(ICOUT,54)IBUGS2,ISUBRO,IERROR,ICASW2,IEXCEL
14383   54   FORMAT('IBUGS2,ISUBRO,IERROR,ICASW2,IEXCEL = ',4(A4,2X),A4)
14384        CALL DPWRST('XXX','BUG ')
14385        IF(IWIDTH.GE.1)THEN
14386          WRITE(ICOUT,65)(IANSLC(I),I=1,IWIDTH)
14387   65     FORMAT('(IANSLC(I),I=1,IWIDTH) = ',80A1)
14388          CALL DPWRST('XXX','BUG ')
14389        ENDIF
14390        IF(ICASW2.EQ.'0')THEN
14391          WRITE(ICOUT,71)IWRINU,NCWRIF
14392   71     FORMAT('IWRINU,NCWRIF = ',2I8)
14393          CALL DPWRST('XXX','BUG ')
14394          WRITE(ICOUT,72)IWRINA
14395   72     FORMAT('IWRINA = ',A80)
14396          CALL DPWRST('XXX','BUG ')
14397          WRITE(ICOUT,73)IWRIST,IWRIFO,IWRIAC,IWRIFO,IWRICS
14398   73     FORMAT('IWRIST,IWRIFO,IWRIAC,IWRIFO,IWRICS = ',5(A12,2X))
14399          CALL DPWRST('XXX','BUG ')
14400        ELSEIF(ICASW2.EQ.'1')THEN
14401          WRITE(ICOUT,74)IWRIN1,NCWRIF
14402   74     FORMAT('IWRIN1,NCWRIF = ',2I8)
14403          CALL DPWRST('XXX','BUG ')
14404          WRITE(ICOUT,75)IWRNA1
14405   75     FORMAT('IWRNA1 = ',A80)
14406          CALL DPWRST('XXX','BUG ')
14407          WRITE(ICOUT,76)IWRIS1,IWRIF1,IWRIA1,IWRIF1,IWRIC1
14408   76     FORMAT('IWRIS1,IWRIF1,IWRIA1,IWRIF1,IWRIC1 = ',5(A12,2X))
14409          CALL DPWRST('XXX','BUG ')
14410        ELSEIF(ICASW2.EQ.'2')THEN
14411          WRITE(ICOUT,77)IWRIN2,NCWRIF
14412   77     FORMAT('IWRIN2,NCWRIF = ',2I8)
14413          CALL DPWRST('XXX','BUG ')
14414          WRITE(ICOUT,78)IWRNA2
14415   78     FORMAT('IWRNA2 = ',A80)
14416          CALL DPWRST('XXX','BUG ')
14417          WRITE(ICOUT,79)IWRIS2,IWRIF2,IWRIA2,IWRIF2,IWRIC2
14418   79     FORMAT('IWRIS2,IWRIF2,IWRIA2,IWRIF2,IWRIC2 = ',5(A12,2X))
14419          CALL DPWRST('XXX','BUG ')
14420        ELSEIF(ICASW2.EQ.'3')THEN
14421          WRITE(ICOUT,80)IWRIN3,NCWRIF
14422   80     FORMAT('IWRIN3,NCWRIF = ',2I8)
14423          CALL DPWRST('XXX','BUG ')
14424          WRITE(ICOUT,81)IWRNA3
14425   81     FORMAT('IWRNA2 = ',A80)
14426          CALL DPWRST('XXX','BUG ')
14427          WRITE(ICOUT,82)IWRIS3,IWRIF3,IWRIA3,IWRIF3,IWRIC3
14428   82     FORMAT('IWRIS3,IWRIF3,IWRIA3,IWRIF3,IWRIC3 = ',5(A12,2X))
14429          CALL DPWRST('XXX','BUG ')
14430        ENDIF
14431C
14432        IF(NCWRIF.GE.1)THEN
14433          WRITE(ICOUT,85)(ICWRIF(I:I),I=1,NCWRIF)
14434   85     FORMAT('(ICWRIF(I:I),I=1,NCWRIF) = ',80A1)
14435          CALL DPWRST('XXX','BUG ')
14436        ENDIF
14437      ENDIF
14438C
14439C               ******************************************************
14440C               **  STEP 1--                                        **
14441C               **  DETERMINE THE TYPE OF WRITE CASE--              **
14442C               **       1) TO TERMINAL;                            **
14443C               **       2) TO FILE;                                **
14444C               **  NOTE--IOTERM WILL = 'YES' ONLY IN EXPLICIT      **
14445C               **        TERMINAL CASE.                            **
14446C               **  NOTE--IOFILE WILL = 'YES' ONLY IN FILE CASE.    **
14447C               ******************************************************
14448C
14449      ISTEPN='1'
14450      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRFI')
14451     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
14452C
14453      IWORD=2
14454      IF(ICASWR.EQ.'ON')IWORD=3
14455      IF(IEXCEL.EQ.'ON')IWORD=3
14456      CALL DPFILE(IANSLC,IWIDTH,IWORD,
14457     1IOFILE,IBUGS2,ISUBRO,IERROR)
14458C
14459      IOTERM='NO'
14460      IF(IOFILE.EQ.'YES')THEN
14461        IF(IHARG(1).EQ.'TERM'.AND.IHARG2(1).EQ.'INAL')THEN
14462          IOFILE='NO'
14463          IOTERM='YES'
14464        ENDIF
14465      ENDIF
14466C
14467      IF(IEXCEL.EQ.'ON')THEN
14468        IF(IOFILE.EQ.'NO')THEN
14469          WRITE(ICOUT,999)
14470          CALL DPWRST('XXX','BUG ')
14471          WRITE(ICOUT,1341)
14472          CALL DPWRST('XXX','BUG ')
14473          WRITE(ICOUT,211)
14474  211     FORMAT('      NO FILE NAME SPECIFIED ON WRITE EXCEL ',
14475     1           'COMMAND.')
14476          CALL DPWRST('XXX','BUG ')
14477          IERROR='YES'
14478          GOTO9000
14479        ENDIF
14480      ENDIF
14481C
14482C               *************************************
14483C               **  STEP 2--                       **
14484C               **  IF HAVE THE FILE OUTPUT CASE-- **
14485C               **  COPY OVER VARIABLES            **
14486C               *************************************
14487C
14488      ISTEPN='2'
14489      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRFI')
14490     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
14491C
14492C     2018/12: SUPPORT "WRITE1", "WRITE2", "WRITE3" CASES.  THESE
14493C              SUPPORT WRITING TO THREE ADDITIONAL UNITS.
14494C
14495C              THE STANDARD WRITE COMMAND OPENS THE FILE, DOES
14496C              THE WRITE, AND THEN CLOSES THE FILE.  YOU CAN
14497C              USE THE SET WRITE REWIND OFF TO SUPPRESS THE
14498C              CLOSING OF THE FILE.
14499C
14500C              THE NEW WRITE UNITS ESSENTIALLY WORK IN AN APPEND
14501C              MODE.  THAT IS, THE FILE IS ONLY OPENED IF THE
14502C              CURRENT STATUS IS CLOSED.  ALSO, THE CLOSE AFTER
14503C              THE WRITE IS SUPPRESSED.
14504C
14505C              THE PURPOSE OF THESE FILES IS TO ALLOW YOU TO
14506C              WRITE CERTAIN TYPES OF OUTPUT TO FILE WHILE
14507C              ALLOWING THE STANDARD WRITE COMMAND TO OPERATE
14508C              NORMALLY.  FOR EXAMPLE, IF YOU ARE DOING AN ANALYSIS
14509C              WITH MULTIPLE PARTS, YOU MAY WANT TO SELECTIVELY
14510C              WRITE CERTAIN RESULTS FROM EACH PART TO A SINGLE
14511C              FILE.
14512C
14513      IF(IOFILE.EQ.'YES')THEN
14514C
14515        IF(ICASW2.EQ.'1')THEN
14516          IOUNIT=IWRIN1
14517          IFILE=IWRNA1
14518          ISTAT=IWRIS1
14519          IFORM=IWRIF1
14520          IACCES=IWRIA1
14521          IPROT=IWRIP1
14522          ICURST=IWRIC1
14523        ELSEIF(ICASW2.EQ.'2')THEN
14524          IOUNIT=IWRIN2
14525          IFILE=IWRNA2
14526          ISTAT=IWRIS2
14527          IFORM=IWRIF2
14528          IACCES=IWRIA2
14529          IPROT=IWRIP2
14530          ICURST=IWRIC2
14531        ELSEIF(ICASW2.EQ.'3')THEN
14532          IOUNIT=IWRIN3
14533          IFILE=IWRNA3
14534          ISTAT=IWRIS3
14535          IFORM=IWRIF3
14536          IACCES=IWRIA3
14537          IPROT=IWRIP3
14538          ICURST=IWRIC3
14539        ELSE
14540          IOUNIT=IWRINU
14541          IFILE=IWRINA
14542          ISTAT=IWRIST
14543          IFORM=IWRIFO
14544          IACCES=IWRIAC
14545          IPROT=IWRIPR
14546          ICURST=IWRICS
14547        ENDIF
14548C
14549        ISUBN0='WRFI'
14550        IERRFI='NO'
14551C
14552        IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRFI')THEN
14553          WRITE(ICOUT,1183)IOUNIT
14554 1183     FORMAT('IOUNIT = ',I8)
14555          CALL DPWRST('XXX','BUG ')
14556          WRITE(ICOUT,1184)IFILE
14557 1184     FORMAT('IFILE = ',A80)
14558          CALL DPWRST('XXX','BUG ')
14559          WRITE(ICOUT,1185)ISTAT,IFORM,IACCES,IPROT,ICURST
14560 1185     FORMAT('ISTAT,IFORM,IACCES,IPROT,ICURST = ',
14561     1           A12,2X,A12,2X,A12,2X,A12,2X,A12)
14562          CALL DPWRST('XXX','BUG ')
14563          WRITE(ICOUT,1186)ISUBN0,IERRFI
14564 1186     FORMAT('ISUBN0,IERRFI = ',A4,2X,A4)
14565          CALL DPWRST('XXX','BUG ')
14566        ENDIF
14567C
14568C               ***********************************************
14569C               **  STEP 3--                                 **
14570C               **  IF HAVE THE FILE OUTPUT CASE--           **
14571C               **  CHECK TO SEE IF THE WRITE FILE MAY EXIST **
14572C               ***********************************************
14573C
14574        ISTEPN='3'
14575        IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRFI')
14576     1    CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
14577C
14578        IF(ISTAT.EQ.'NONE')THEN
14579          IERROR='YES'
14580          WRITE(ICOUT,999)
14581          CALL DPWRST('XXX','BUG ')
14582          WRITE(ICOUT,1211)
14583 1211     FORMAT('***** IMPLEMENTATION ERROR IN WRITE--')
14584          CALL DPWRST('XXX','BUG ')
14585          WRITE(ICOUT,1212)
14586 1212     FORMAT('      THE DESIRED WRITING CANNOT BE CARRIED OUT')
14587          CALL DPWRST('XXX','BUG ')
14588          WRITE(ICOUT,1214)
14589 1214     FORMAT('      BECAUSE THE INTERNAL VARIABLE    IWRIST ')
14590          CALL DPWRST('XXX','BUG ')
14591          WRITE(ICOUT,1215)
14592 1215     FORMAT('      WHICH ALLOWS SUCH WRITING HAS BEEN SET TO ',
14593     1           '   NONE.')
14594          CALL DPWRST('XXX','BUG ')
14595          WRITE(ICOUT,1217)ISTAT,IWRIST
14596 1217     FORMAT('ISTAT,IWRIST = ',A12,2X,A12)
14597          CALL DPWRST('XXX','BUG ')
14598          WRITE(ICOUT,1218)
14599 1218     FORMAT('      ALL WRITING MUST BE DONE DIRECTLY TO THE ',
14600     1           'TERMINAL')
14601          CALL DPWRST('XXX','BUG ')
14602          GOTO9000
14603        ENDIF
14604C
14605C               *************************************
14606C               **  STEP 4--                       **
14607C               **  IF HAVE THE FILE INPUT CASE--  **
14608C               **  EXTRACT THE FILE NAME          **
14609C               *************************************
14610C
14611        ISTEPN='4'
14612        IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRFI')
14613     1    CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
14614C
14615        DO1310I=1,200
14616          ICANS(I:I)=IANSLC(I)
14617 1310   CONTINUE
14618C
14619        ISTART=1
14620        ISTOP=IWIDTH
14621        IWORD=2
14622        IF(ICASWR.EQ.'ON')IWORD=3
14623        IF(IEXCEL.EQ.'ON')IWORD=3
14624        CALL DPEXWO(ICANS,ISTART,ISTOP,IWORD,
14625     1              ICOL1,ICOL2,IFILE,NCFILE,
14626     1              IBUGS2,ISUBRO,IERROR)
14627C
14628        IF(NCFILE.LT.1)THEN
14629          IERROR='YES'
14630          WRITE(ICOUT,999)
14631          CALL DPWRST('XXX','BUG ')
14632          WRITE(ICOUT,1341)
14633 1341     FORMAT('***** ERROR IN WRITE COMMAND--')
14634          CALL DPWRST('XXX','BUG ')
14635          WRITE(ICOUT,1342)
14636 1342     FORMAT('      A USER FILE NAME IS REQUIRED IN THE WRITE ',
14637     1           'COMMAND')
14638          CALL DPWRST('XXX','BUG ')
14639          WRITE(ICOUT,1344)
14640 1344     FORMAT('      (FOR EXAMPLE,    WRITE CALIB.DAT X Y Z)')
14641          CALL DPWRST('XXX','BUG ')
14642          WRITE(ICOUT,1345)
14643 1345     FORMAT('      BUT NONE WAS GIVEN HERE.')
14644          CALL DPWRST('XXX','BUG ')
14645          WRITE(ICOUT,1346)
14646 1346     FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
14647          CALL DPWRST('XXX','BUG ')
14648          IF(IWIDTH.GE.1)THEN
14649            WRITE(ICOUT,1347)(IANSLC(I),I=1,MIN(100,IWIDTH))
14650 1347       FORMAT('      ',100A1)
14651            CALL DPWRST('XXX','BUG ')
14652          ELSE
14653            WRITE(ICOUT,999)
14654            CALL DPWRST('XXX','BUG ')
14655          ENDIF
14656          GOTO9000
14657        ENDIF
14658C
14659        IFWORD=0
14660        IFQUOT=0
14661        IF(IFILE(1:1).EQ.'"')THEN
14662          IFQUOT=1
14663          DO1351I=MAXFNC,1,-1
14664            IF(IFILE(I:I).NE.' ')THEN
14665              ILAST=I
14666              GOTO1354
14667            ENDIF
14668 1351     CONTINUE
14669 1354     CONTINUE
14670          ICOUNT=0
14671          ISPAC=0
14672          DO1356I=1,ILAST
14673            IF((IFILE(I:I).EQ.' '.OR.IFILE(I:I).EQ.'-') .AND.
14674     1         ISPAC.EQ.0)THEN
14675              ISPAC=1
14676              ICOUNT=ICOUNT+1
14677            ELSEIF((IFILE(I:I).NE.' '.AND.IFILE(I:I).NE.'-') .AND.
14678     1        ISPAC.EQ.1)THEN
14679              ISPAC=0
14680            ENDIF
14681 1356     CONTINUE
14682          IFWORD=ICOUNT
14683        ENDIF
14684C
14685        IF(IEXCEL.EQ.'ON')GOTO9000
14686C
14687C               *************************************
14688C               **  STEP 5--                       **
14689C               **  IF HAVE THE FILE INPUT CASE--  **
14690C               **  OPEN THE FILE                  **
14691C               *************************************
14692C
14693        ISTEPN='5'
14694        IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRFI')THEN
14695          CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
14696          WRITE(ICOUT,1184)IFILE
14697          CALL DPWRST('XXX','BUG ')
14698          WRITE(ICOUT,1391)IWRICS
14699 1391     FORMAT('IWRICS: ',A12)
14700          CALL DPWRST('XXX','BUG ')
14701          WRITE(ICOUT,1393)ICURST
14702 1393     FORMAT('ICURST: ',A12)
14703          CALL DPWRST('XXX','BUG ')
14704        ENDIF
14705C
14706        IREWIN='ON'
14707        IF(ICASW2.EQ.'1' .OR. ICASW2.EQ.'2' .OR. ICASW2.EQ.'3')THEN
14708          IREWIN='OFF'
14709        ELSEIF(IWRIRW.EQ.'OFF')THEN
14710          IREWIN='OFF'
14711        ENDIF
14712        IFMFLG='OFF'
14713        IF(NCWRIF.GE.1)THEN
14714          IF(ICWRIF(1:5).EQ.'(UNFO'.OR.ICWRIF(1:5).EQ.'(BINA')THEN
14715            IFORM='UNFORMATTED'
14716            IFMFLG='ON'
14717          ENDIF
14718        ENDIF
14719C
14720        IF(ICURST(1:4).EQ.'CLOS')
14721     1    CALL DPOPFI(IOUNIT,IFILE,ISTAT,IFORM,IACCES,IPROT,ICURST,
14722     1                IREWIN,ISUBN0,IERRFI,IBUGS2,ISUBRO,IERROR)
14723        IF(ICURST(1:4).EQ.'CLOS')THEN
14724          WRITE(ICOUT,999)
14725          CALL DPWRST('XXX','BUG ')
14726          WRITE(ICOUT,1341)
14727          CALL DPWRST('XXX','BUG ')
14728          WRITE(ICOUT,1396)
14729 1396     FORMAT('      UNABLE TO OPEN THE WRITE FILE.')
14730          CALL DPWRST('XXX','BUG ')
14731          WRITE(ICOUT,1397)IFILE
14732 1397     FORMAT('      FILE NAME: ',A80)
14733          CALL DPWRST('XXX','BUG ')
14734          IERROR='YES'
14735          GOTO9000
14736        ENDIF
14737C
14738        IF(ICASW2.EQ.'1')THEN
14739          IWRIC1='OPEN'
14740        ELSEIF(ICASW2.EQ.'2')THEN
14741          IWRIC2='OPEN'
14742        ELSEIF(ICASW2.EQ.'3')THEN
14743          IWRIC3='OPEN'
14744        ENDIF
14745C
14746        IF(IERRFI.EQ.'YES')THEN
14747          IERROR='YES'
14748          GOTO9000
14749        ENDIF
14750C
14751C               *************************************
14752C               **  STEP 5B-                       **
14753C               **  IF HAVE HEADER FILE, OPEN THE  **
14754C               **  HEADER AND COPY CONTENTS TO    **
14755C               **  WRITE FILE.                    **
14756C               *************************************
14757C
14758        ISTEPN='5B'
14759        IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRFI')
14760     1    CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
14761C
14762        IF(NCWRIH.GE.1 .AND. IWRIHE.NE.'NULL')THEN
14763          IOUNI2=IST1NU
14764          IFILE2=IWRIHE
14765          ISTAT2='OLD'
14766          IFORM2='FORMATTED'
14767          IACCE2='SEQUENTIAL'
14768          IPROT2='READONLY'
14769          ICURS2='CLOSED'
14770          ISUBN0='CAPT'
14771          IERRF2='NO'
14772C
14773          IREWI2='ON'
14774          CALL DPOPFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,ICURS2,
14775     1                IREWI2,ISUBN0,IERRF2,IBUGS2,ISUBRO,IERROR)
14776          IF(IERRF2.EQ.'YES')GOTO3099
14777C
14778C         NOW LOOP THROUGH FILE (ASSUME MAXIMUM OF 1,000 LINES).
14779C
14780          DO3091I=1,1000
14781            IATEMP=' '
14782            READ(IOUNI2,3092,END=3099,ERR=3099)IATEMP
14783 3092       FORMAT(A240)
14784            ILAST=1
14785            DO3096J=240,1,-1
14786              IF(IATEMP(J:J).NE.' ')THEN
14787                ILAST=J
14788                GOTO3098
14789              ENDIF
14790 3096       CONTINUE
14791 3098       CONTINUE
14792            WRITE(IWRINU,3094,IOSTAT=IOS,ERR=3080)
14793     1           (IATEMP(J:J),J=1,ILAST)
14794 3094       FORMAT(240A1)
14795            GOTO 3091
14796C
14797 3080       CONTINUE
14798            WRITE(ICOUT,3081)IWRINU
14799 3081       FORMAT('****** ERROR TRYING TO WRITE TO UNIT ',I8)
14800            CALL DPWRST('XXX','BUG ')
14801            WRITE(ICOUT,3082)IOS
14802 3082       FORMAT('       STATUS NUMBER = ',I8)
14803            CALL DPWRST('XXX','BUG ')
14804            WRITE(ICOUT,3083)
14805 3083       FORMAT('       LIKELY CAUSE: TRYING TO WRITE TO A FILE ',
14806     1             'THAT DOES NOT HAVE WRITE PERMISSION.')
14807            CALL DPWRST('XXX','BUG ')
14808            IERROR='YES'
14809            GOTO 9000
14810C
14811 3091     CONTINUE
14812 3099     CONTINUE
14813C
14814          IENDF2='OFF'
14815          IREWI2='ON'
14816          CALL DPCLFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,ICURS2,
14817     1                IENDF2,IREWI2,ISUBN0,IERRF2,IBUGS2,ISUBRO,IERROR)
14818CCCCC     IF(IERRF2.EQ.'YES')GOTO9000
14819C
14820        ENDIF
14821C
14822      ENDIF
14823C
14824C               ******************************************
14825C               **  STEP 6--                            **
14826C               **  FOR THE 2 CASES--                   **
14827C               **      1) TERMINAL OUTPUT;             **
14828C               **      2) FILE OUTPUT;                 **
14829C               **  DEFINE THE OUTPUT WRITE UNIT NUMBER,**
14830C               **  AND OTHER VARIABLES NEEDED          **
14831C               **  FOR UPCOMING WRITES.                **
14832C               ******************************************
14833C
14834      ISTEPN='6'
14835      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRFI')
14836     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
14837C
14838      IPR2=IPR
14839      IF(IOFILE.EQ.'YES')THEN
14840        IF(ICASW2.EQ.'1')THEN
14841          IPR2=IWRIN1
14842        ELSEIF(ICASW2.EQ.'2')THEN
14843          IPR2=IWRIN2
14844        ELSEIF(ICASW2.EQ.'3')THEN
14845          IPR2=IWRIN3
14846        ELSE
14847          IPR2=IWRINU
14848        ENDIF
14849      ENDIF
14850      IF(IOTERM.EQ.'YES')IPR2=IPR
14851C
14852      IOUNIT=IPR2
14853C
14854C               *****************
14855C               **  STEP 90--  **
14856C               **  EXIT       **
14857C               *****************
14858C
14859 9000 CONTINUE
14860      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRFI')THEN
14861        WRITE(ICOUT,999)
14862        CALL DPWRST('XXX','BUG ')
14863        WRITE(ICOUT,9011)
14864 9011   FORMAT('***** AT THE END       OF DPWRIT--')
14865        CALL DPWRST('XXX','BUG ')
14866        WRITE(ICOUT,9015)IFOUND,IERROR
14867 9015   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
14868        CALL DPWRST('XXX','BUG ')
14869        WRITE(ICOUT,9017)IPR,IPR2,IOUNIT,IOFILE,IOTERM
14870 9017   FORMAT('IPR,IPR2,IOUNIT,IOFILE,IOTERM = ',3I8,2(2X,A4))
14871        CALL DPWRST('XXX','BUG ')
14872        WRITE(ICOUT,9022)IFILE
14873 9022   FORMAT('IFILE  = ',A80)
14874        CALL DPWRST('XXX','BUG ')
14875        WRITE(ICOUT,9023)ISTAT,IFORM,IACCES,IPROT,ICURST
14876 9023   FORMAT('ISTAT,IFORM,IACES,IPROT,ICURST  = ',5(A12,1X))
14877        CALL DPWRST('XXX','BUG ')
14878        WRITE(ICOUT,9028)IENDFI,IREWIN,ISUBN0,IERRFI
14879 9028   FORMAT('IENDFI,IREWIN,ISUBN0,IERRFI = ',4(A4,1X))
14880        CALL DPWRST('XXX','BUG ')
14881      ENDIF
14882C
14883      RETURN
14884      END
14885      SUBROUTINE DPWRIT(IMACRO,IMACNU,IMACCS,
14886     1                  IFORSW,ICWRIF,NCWRIF,
14887     1                  IWRIRW,
14888     1                  IFORWI,IFORWR,MAXNWI,
14889     1                  IBUGS2,IBUGQ,ISUBRO,IFOUND,IERROR)
14890C
14891C     PURPOSE--WRITE OUT VALUES OF SPECIFIC VARIABLES, OR PARAMETERS
14892C              OR MODELS TO AN OUTPUT MASS STORAGE FILE
14893C              OR (IF NO FILE GIVEN) TO THE DEFAULT OUTPUT UNIT
14894C              (WHICH WILL BE THE TERMINAL).
14895C     ASSUMPTION--THE OUTPUT FILE ALREADY EXISTS; (THAT IS, DATAPLOT
14896C                 WILL AUTOMATICALLY OPEN THE FILE VIA (ON THE
14897C                 UNIVAC 1108), BY AN @ASG,AX ...) BUT WILL NOT
14898C                 AUTOMATICALLY CREATE THE FILE VIA (ON THE UNIVAC 1108),
14899C                 BY AN @ASG,UP ...))
14900C     ASSUMPTION--THE COMPUTER SYSTEM IS SUCH THAT EQUATING THE FILE
14901C                 NAME TO THE FORTRAN NUMERIC DESIGNATION OF 32 (OR
14902C                 HOWEVER THE VARIABLE    IWRINU    IS DEFINED IN INITFO)
14903C                 IS PERMISSABLE.
14904C     NOTE--OUTPUT FOR THE WRITE COMMAND MAY POTENTIALLY GO TO 3
14905C           DIFFERENT DESTINATIONS--
14906C                1) THE TERMINAL ITSELF;
14907C                2) A FILE;
14908C           DIFFERENT SYSTEMS ALLOW DIFFERENT COMBINATIONS OF THE ABOVE.
14909C           ALL SYSTEMS WILL ALLOW OUTPUT TO THE TERMINAL ITSELF;
14910C           MOST SYSTEMS WILL ALLOW OUTPUT TO A FILE;
14911C           TO DESIGNATE WHETHER THE LAST 2 OPTIONS
14912C           ARE ALLOWABLE AT A GIVEN INSTALLATION,
14913C           THE ANALYST SETS (IN SUBROUTINE    INITFO    AT IMPLEMENTATION TIME)
14914C     WRITTEN BY--JAMES J. FILLIBEN
14915C                 STATISTICAL ENGINEERING DIVISION
14916C                 INFORMATION TECHNOLOGY LABORATORY
14917C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
14918C                 GAITHERSBURG, MD 20899-8980
14919C                 PHONE--301-975-2899
14920C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
14921C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
14922C     LANGUAGE--ANSI FORTRAN (1977)
14923C     VERSION NUMBER--86/1
14924C     ORIGINAL VERSION--MAY       1978.
14925C     UPDATED         --NOVEMBER  1978.
14926C     UPDATED         --DECEMBER  1978.
14927C     UPDATED         --MARCH     1979.
14928C     UPDATED         --NOVEMBER  1980.
14929C     UPDATED         --JANUARY   1981.
14930C     UPDATED         --MARCH     1981.
14931C     UPDATED         --JUNE      1981.
14932C     UPDATED         --SEPTEMBER 1981.
14933C     UPDATED         --OCTOBER   1981.
14934C     UPDATED         --NOVEMBER  1981.
14935C     UPDATED         --JANUARY   1982.
14936C     UPDATED         --MARCH     1982.
14937C     UPDATED         --MAY       1982.
14938C     UPDATED         --DECEMBER  1985.
14939C     UPDATED         --SEPTEMBER 1987. WRITE MATRICES
14940C     UPDATED         --OCTOBER   1987. FORMATTED OUTPUT
14941C     UPDATED         --JANUARY   1988. FORMATTED OUTPUT (PARAM.)
14942C     UPDATED         --DECEMBER  1988. 9,10, 11, AND 12 DEC. PLACES
14943C     UPDATED         --DECEMBER  1988. FORMATTED WRITE
14944C     UPDATED         --DECEMBER  1988. WRITE UP TO 20 PARAMETERS
14945C     UPDATED         --AUGUST    1992. SHIFT COLUMN HEADERS
14946C     UPDATED         --NOVEMBER  1995. 1) SIMPLIFY CODE
14947C                                       2) ALLOW MORE THAN 10 VARIABLES
14948C                                       3) UNFORMATTED WRITE
14949C     UPDATED         --JULY      1996. FORMAT STATEMENTS FOR PC
14950C     UPDATED         --JULY      1996. BUG FIX (FOR WRITE LINES > 80 CHARACTERS)
14951C     UPDATED         --SEPTEMBER 1997. PC REQUIRES "1X" IN FORMAT STATEMENTS
14952C     UPDATED         --OCTOBER   1997. ADD "WRITE VARIABLES ALL" OPTION
14953C     UPDATED         --DECEMBER  1997. MAXCOL TO 100
14954C     UPDATED         --JULY      2003. BUG: FILE NAME < 80
14955C                                       CHARACTERS, BUT COMMAND LINE
14956C                                       > 80 CHARACTERS
14957C     UPDATED         --SEPTEMBER 2003. ADD "ERR" CLAUSE FOR FORMATTED
14958C                                       WRITE
14959C     UPDATED         --SEPTEMBER 2003. ADD "WRITE HTML" OPTION
14960C     UPDATED         --SEPTEMBER 2003. ADD "WRITE LATEX" OPTION
14961C     UPDATED         --JUNE      2006. FOR STRING, MAKE LEADING
14962C                                       SPACE USER-SETTABLE
14963C     UPDATED         --APRIL     2009. REWRITE TO SIMPLIFY AND IMPROVE
14964C                                       CLARITY.  SPLIT OFF SOME OF
14965C                                       THE CODE INTO "DPWRFI" AND
14966C                                       "DPWRI2".  REDO THE
14967C                                       HTML/LATEX/RTF OUTPUT.
14968C     UPDATED         --JULY      2009. IF RUNNING GUI, SET TABLE
14969C     UPDATED         --JULY      2009. SUPPORT FOR:
14970C                                       SET HTML TABLE FONT
14971C                                       SET HTML CELL WIDTH
14972C     UPDATED         --MAY       2012. DON'T PRINT BLANK LINE AT END
14973C                                       WHEN WRITING TO A FILE
14974C     UPDATED         --NOVEMBER  2014. WRITE STRING/PARAMETER TO
14975C                                       CLIPBOARD
14976C     UPDATED         --DECEMBER  2014. WRITE VARIABLES TO CLIPBOARD
14977C     UPDATED         --JULY      2016. SUPPORT FOR INCORPORATING A
14978C                                       HEADER FILE
14979C     UPDATED         --AUGUST    2016. TRAP ERRORS ON WRITE
14980C     UPDATED         --JUNE      2018. WRITE GROUP LABELS
14981C     UPDATED         --JUNE      2018. WRITE ROW LABELS, CHARACTER DATA
14982C     UPDATED         --SEPTEMBER 2018. WRITE ROW CASE
14983C     UPDATED         --DECEMBER  2018. WRITE1/WRITE2/WRITE3
14984C     UPDATED         --JULY      2019. TWEAK SCRATCH STORAGE
14985C     UPDATED         --OCTOBER   2019. ADD "HEAD" AND "TAIL" OPTIONS
14986C     UPDATED         --FEBRUARY  2020. SUPPORT "CSV" OPTION
14987C     UPDATED         --FEBRUARY  2020. WRITE EXCEL OPTION
14988C     UPDATED         --FEBRUARY  2020. FOR "WRITE CLIPBOARD", CHECK
14989C                                       IF CLIPBOARD ARGUMENT IS
14990C                                       ACTUALLY A FILE NAME.
14991C
14992C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
14993C
14994      CHARACTER*4 IMACRO
14995      CHARACTER*12 IMACCS
14996C
14997      CHARACTER*4 IFORSW
14998      CHARACTER*4 IHTMFL
14999C
15000      CHARACTER*80 ICWRIF
15001      CHARACTER*40 IFORMT
15002      CHARACTER*80 IFMTTA
15003      CHARACTER*1  IQUOTE
15004      CHARACTER*1  IBASLC
15005C
15006      CHARACTER*4 IWRIRW
15007C
15008      CHARACTER*4 IBUGS2
15009      CHARACTER*4 IBUGQ
15010      CHARACTER*4 ISUBRO
15011      CHARACTER*4 IFOUND
15012      CHARACTER*4 IERROR
15013C
15014      INCLUDE 'DPCOPA.INC'
15015      INCLUDE 'DPCOZZ.INC'
15016      INCLUDE 'DPCOZI.INC'
15017      INCLUDE 'DPCOZC.INC'
15018C
15019C
15020CCCCC SET MAXIMUM NUMBER OF VARIABLES TO PRINT.  SET TO 1,024 SINCE
15021CCCCC IMAGES OFTEN HAVE 2**N COLUMNS (I.E., WE CAN PRINT THE PIXEL
15022CCCCC VALUES FOR A 1024x1024 IMAGE).
15023C
15024CCCCC 2018/09: FOR "WRITE ROW", INCREASE MAXIMUM NUMBER OF
15025CCCCC          VARIABLES
15026C
15027CCCCC PARAMETER (MAXV3=1024)
15028      PARAMETER (MAXV3=20000)
15029      PARAMETER (MAXGL=20)
15030C
15031      CHARACTER*4 JVNAM1(MAXV3)
15032      CHARACTER*4 JPNAM1(MAXV3)
15033      CHARACTER*4 JMNAM1(MAXV3)
15034      CHARACTER*4 JFNAM1(MAXV3)
15035      CHARACTER*4 JUNAM1(MAXV3)
15036      CHARACTER*4 JENAM1(MAXV3)
15037      CHARACTER*4 JGLNA1(MAXV3)
15038      CHARACTER*4 JVNAM2(MAXV3)
15039      CHARACTER*4 JPNAM2(MAXV3)
15040      CHARACTER*4 JMNAM2(MAXV3)
15041      CHARACTER*4 JFNAM2(MAXV3)
15042      CHARACTER*4 JUNAM2(MAXV3)
15043      CHARACTER*4 JENAM2(MAXV3)
15044      CHARACTER*4 JGLNA2(MAXV3)
15045      CHARACTER*4 JVTYPE(MAXV3)
15046      CHARACTER*4 JVTYP2(MAXV3)
15047      CHARACTER*4 JMNAM3(MAXV3)
15048      CHARACTER*4 JMNAM4(MAXV3)
15049      CHARACTER*25 IZCLIS(MAXV3)
15050C
15051      EQUIVALENCE (CGARBG(1),JVNAM1(1))
15052      EQUIVALENCE (CGARBG(4*MAXV3 + 1),JVNAM2(1))
15053      EQUIVALENCE (CGARBG(2*(4*MAXV3) + 1),JPNAM1(1))
15054      EQUIVALENCE (CGARBG(3*(4*MAXV3) + 1),JPNAM2(1))
15055      EQUIVALENCE (CGARBG(4*(4*MAXV3) + 1),JMNAM1(1))
15056      EQUIVALENCE (CGARBG(5*(4*MAXV3) + 1),JMNAM2(1))
15057      EQUIVALENCE (CGARBG(6*(4*MAXV3) + 1),JFNAM1(1))
15058      EQUIVALENCE (CGARBG(7*(4*MAXV3) + 1),JFNAM2(1))
15059      EQUIVALENCE (CGARBG(8*(4*MAXV3) + 1),JUNAM1(1))
15060      EQUIVALENCE (CGARBG(9*(4*MAXV3) + 1),JUNAM2(1))
15061      EQUIVALENCE (CGARBG(10*(4*MAXV3) + 1),JENAM1(1))
15062      EQUIVALENCE (CGARBG(11*(4*MAXV3) + 1),JENAM2(1))
15063      EQUIVALENCE (CGARBG(12*(4*MAXV3) + 1),JGLNA1(1))
15064      EQUIVALENCE (CGARBG(13*(4*MAXV3) + 1),JGLNA2(1))
15065      EQUIVALENCE (CGARBG(14*(4*MAXV3) + 1),JVTYPE(1))
15066      EQUIVALENCE (CGARBG(15*(4*MAXV3) + 1),JVTYP2(1))
15067      EQUIVALENCE (CGARBG(16*(4*MAXV3) + 1),JMNAM3(1))
15068      EQUIVALENCE (CGARBG(17*(4*MAXV3) + 1),JMNAM4(1))
15069      EQUIVALENCE (CGARBG(18*(4*MAXV3) + 1),IZCLIS(1))
15070C
15071      CHARACTER*4 ICASEQ
15072      CHARACTER*4 IH1
15073      CHARACTER*4 IH2
15074      CHARACTER*8 IH
15075      CHARACTER*4 ISUBN1
15076      CHARACTER*4 ISUBN2
15077      CHARACTER*4 ISTEPN
15078      CHARACTER*4 IOFILE
15079      CHARACTER*4 IOTERM
15080C
15081CCCCC CHARACTER*80 IFILE
15082      CHARACTER (LEN=MAXFNC) :: IFILE
15083      CHARACTER*12 ISTAT
15084      CHARACTER*12 IFORM
15085      CHARACTER*12 IACCES
15086      CHARACTER*12 IPROT
15087      CHARACTER*12 ICURST
15088      CHARACTER*4 IENDFI
15089      CHARACTER*4 IREWIN
15090      CHARACTER*4 ISUBN0
15091      CHARACTER*4 IERRFI
15092C
15093CCCCC CHARACTER*80 IFILE2
15094      CHARACTER (LEN=MAXFNC) :: IFILE2
15095      CHARACTER*12 ISTAT2
15096      CHARACTER*12 IFORM2
15097      CHARACTER*12 IACCE2
15098      CHARACTER*12 IPROT2
15099      CHARACTER*12 ICURS2
15100      CHARACTER*4  IREWI2
15101      CHARACTER*4  IERRF2
15102C
15103      CHARACTER*4 ICASWR
15104      CHARACTER*4 ICASW2
15105      CHARACTER*4 IHMAT1
15106      CHARACTER*4 IHMAT2
15107      CHARACTER*4 IFMFLG
15108      CHARACTER*4 IEXCEL
15109      CHARACTER*4 ICSVSV
15110      CHARACTER*4 IOP
15111      CHARACTER*4 ITYPEZ
15112      CHARACTER*80 ISNAME
15113      CHARACTER*80 ISARGL
15114C
15115      CHARACTER*2400 ISTRCC
15116C
15117C---------------------------------------------------------------------
15118C
15119      INTEGER IFORWI(*)
15120      INTEGER IFORWR(*)
15121C
15122      DIMENSION NCHEAD(MAXV3)
15123      DIMENSION NIV(MAXV3)
15124      DIMENSION NIM(MAXV3)
15125      DIMENSION IVCOL2(MAXV3)
15126      DIMENSION IFSTA2(MAXV3)
15127      DIMENSION IFSTO2(MAXV3)
15128      DIMENSION IMVAL1(MAXV3)
15129      DIMENSION IMVAL2(MAXV3)
15130      DIMENSION IZLIST(MAXV3)
15131C
15132      EQUIVALENCE (IGARBG(1),NCHEAD(1))
15133      EQUIVALENCE (IGARBG(MAXV3+1),NIV(1))
15134      EQUIVALENCE (IGARBG(2*MAXV3+1),NIM(1))
15135      EQUIVALENCE (IGARBG(3*MAXV3+1),IVCOL2(1))
15136      EQUIVALENCE (IGARBG(4*MAXV3+1),IFSTA2(1))
15137      EQUIVALENCE (IGARBG(5*MAXV3+1),IFSTO2(1))
15138      EQUIVALENCE (IGARBG(6*MAXV3+1),IMVAL1(1))
15139      EQUIVALENCE (IGARBG(7*MAXV3+1),IMVAL2(1))
15140      EQUIVALENCE (IGARBG(8*MAXV3+1),IZLIST(1))
15141C
15142      DIMENSION PVAL(MAXV3)
15143      DIMENSION ZLIST(MAXV3)
15144C
15145C-----COMMON----------------------------------------------------------
15146C
15147      INCLUDE 'DPCOHK.INC'
15148      INCLUDE 'DPCODA.INC'
15149      INCLUDE 'DPCOFO.INC'
15150      INCLUDE 'DPCOF2.INC'
15151C
15152      DIMENSION XSCRT(MAXOBW)
15153      EQUIVALENCE (GARBAG(IGARB1),XSCRT(1))
15154      EQUIVALENCE (GARBAG(IGARB1+MAXOBW),ZLIST(1))
15155      EQUIVALENCE (GARBAG(IGARB1+MAXOBW+MAXV3),PVAL(1))
15156C
15157      INCLUDE 'DPCOST.INC'
15158C
15159      PARAMETER (MAXHED=1024)
15160      INTEGER IWID99(MAXHED)
15161      INTEGER IDIGIT(MAXHED)
15162      INTEGER IDIGI2(MAXHED)
15163      INTEGER NTOT(MAXHED)
15164      CHARACTER*8 ALIGN(MAXHED)
15165      CHARACTER*8 VALIGN(MAXHED)
15166      COMMON/HTML4/IWID99,IDIGI2,ALIGN,VALIGN
15167      CHARACTER*60 IVAL99(MAXHED)
15168      INTEGER      NCTEMP(MAXHED)
15169C
15170      CHARACTER*132 ITEMPC
15171      CHARACTER*24 IFRMT
15172C
15173      CHARACTER*4 IRTFMD
15174      COMMON/COMRTF/IRTFMD
15175C
15176      CHARACTER*40 IHTMFZ
15177      COMMON/HTMC1/IHTMFZ,NCFON1
15178C
15179      LOGICAL IFLAG1
15180      LOGICAL IFLAG2
15181      LOGICAL IFLAG3
15182      LOGICAL IFLAGA
15183      LOGICAL IFLAGB
15184      LOGICAL IBOLD
15185C
15186C-----COMMON VARIABLES (GENERAL)--------------------------------------
15187C
15188      INCLUDE 'DPCOP2.INC'
15189C
15190C-----START POINT-----------------------------------------------------
15191C
15192      ISUBN1='DPWR'
15193      ISUBN2='IT  '
15194      IFOUND='YES'
15195      IERROR='NO'
15196      ICASWR='OFF'
15197      ICASW2='0'
15198      IEXCEL='OFF'
15199      ICSVSV=ICSVWR
15200C
15201      IFLAGH=0
15202      IFLAGT=0
15203      NTEMP=0
15204      NROW=0
15205      ICOLVJ=0
15206      IPRSV2=IPR
15207      IPRSV=IPR
15208C
15209C     CHECK FOR WRITE1, WRITE2, WRITE3
15210C     CHECK FOR PRINT1, PRINT2, PRINT3
15211C     CHECK FOR HEAD, TAILS
15212C
15213      IF(ICOM.EQ.'WRIT')THEN
15214        IF(ICOM2.EQ.'E1  ')ICASW2='1'
15215        IF(ICOM2.EQ.'E2  ')ICASW2='2'
15216        IF(ICOM2.EQ.'E3  ')ICASW2='3'
15217      ELSEIF(ICOM.EQ.'PRIN')THEN
15218        IF(ICOM2.EQ.'T1  ')ICASW2='1'
15219        IF(ICOM2.EQ.'T2  ')ICASW2='2'
15220        IF(ICOM2.EQ.'T3  ')ICASW2='3'
15221      ELSEIF(ICOM.EQ.'HEAD')THEN
15222        IFLAGH=1
15223      ELSEIF(ICOM.EQ.'TAIL')THEN
15224        IFLAGT=1
15225      ENDIF
15226C
15227      MAXCP1=MAXCOL+1
15228      MAXCP2=MAXCOL+2
15229      MAXCP3=MAXCOL+3
15230      MAXCP4=MAXCOL+4
15231      MAXCP5=MAXCOL+5
15232      MAXCP6=MAXCOL+6
15233C
15234      ICASWR='-999'
15235      IOFILE='-999'
15236      IOTERM='-999'
15237C
15238      IF(IFORSW.EQ.'E'.OR.IFORSW.EQ.'EXP'.OR.IFORSW.EQ.'EXPO')THEN
15239        NUMDIG=99
15240      ELSEIF(IFORSW.EQ.'0')THEN
15241        NUMDIG=0
15242      ELSEIF(IFORSW.EQ.'1')THEN
15243        NUMDIG=1
15244      ELSEIF(IFORSW.EQ.'2')THEN
15245        NUMDIG=2
15246      ELSEIF(IFORSW.EQ.'3')THEN
15247        NUMDIG=3
15248      ELSEIF(IFORSW.EQ.'4')THEN
15249        NUMDIG=4
15250      ELSEIF(IFORSW.EQ.'5')THEN
15251        NUMDIG=5
15252      ELSEIF(IFORSW.EQ.'6')THEN
15253        NUMDIG=6
15254      ELSEIF(IFORSW.EQ.'7')THEN
15255        NUMDIG=7
15256      ELSEIF(IFORSW.EQ.'8')THEN
15257        NUMDIG=8
15258      ELSEIF(IFORSW.EQ.'9')THEN
15259        NUMDIG=9
15260      ELSEIF(IFORSW.EQ.'10')THEN
15261        NUMDIG=10
15262      ELSEIF(IFORSW.EQ.'11')THEN
15263        NUMDIG=11
15264      ELSEIF(IFORSW.EQ.'12')THEN
15265        NUMDIG=12
15266      ELSE
15267        NUMDIG=-99
15268      ENDIF
15269      IFORMT=' '
15270      IFMTTA=' '
15271      IFMFLG='OFF'
15272      CALL DPCONA(39,IQUOTE)
15273      CALL DPCONA(92,IBASLC)
15274C
15275      HALF=0.5
15276C
15277      DO40I=1,MAXV3
15278        ZLIST(I)=0.0
15279        JVNAM1(I)='    '
15280        JPNAM1(I)='    '
15281        JMNAM1(I)='    '
15282        JFNAM1(I)='    '
15283        JUNAM1(I)='    '
15284        JENAM1(I)='    '
15285        JVNAM2(I)='    '
15286        JPNAM2(I)='    '
15287        JMNAM2(I)='    '
15288        JFNAM2(I)='    '
15289        JUNAM2(I)='    '
15290        JENAM2(I)='    '
15291        JVTYPE(I)='NUME'
15292   40 CONTINUE
15293C
15294      MAXV2=MAXV3
15295      MAXP2=MAXV3
15296      MAXM2=MAXV3
15297      MAXF2=MAXV3
15298      MAXU2=MAXV3
15299      MAXE2=MAXV3
15300C
15301C               ****************************
15302C               **  TREAT THE WRITE CASE  **
15303C               ****************************
15304C
15305      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')THEN
15306        WRITE(ICOUT,999)
15307  999   FORMAT(1X,1X)
15308        CALL DPWRST('XXX','BUG ')
15309        WRITE(ICOUT,51)
15310   51   FORMAT('***** AT THE BEGINNING OF DPWRIT--')
15311        CALL DPWRST('XXX','BUG ')
15312        WRITE(ICOUT,54)IBUGS2,IBUGQ,IBUGS2,ISUBRO,IERROR
15313   54   FORMAT('IBUGS2,IBUGQ,IBUGS2,ISUBRO,IERROR = ',5(A4,2X))
15314        CALL DPWRST('XXX','BUG ')
15315        WRITE(ICOUT,56)IMACRO,IMACNU,IMACCS
15316   56   FORMAT('IMACRO,IMACNU,IMACCS = ',A4,I8,2X,A12)
15317        CALL DPWRST('XXX','BUG ')
15318        WRITE(ICOUT,57)IFORSW,IWRIRW,ICSVWR,IWIDTH
15319   57   FORMAT('IFORSW,IWRIRW,ICSVWR,IWIDTH = ',3(A4,2X),I8)
15320        CALL DPWRST('XXX','BUG ')
15321      ENDIF
15322C
15323      IF(IHARG(1).EQ.'ROW ' .AND. IHARG2(1).EQ.'    ')THEN
15324        ICASWR='ON '
15325        IHTMFL='OFF'
15326        ISHIFT=1
15327        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
15328     1              IBUGS2,IERROR)
15329        IPRSV=IPR
15330      ELSEIF((IHARG(1).EQ.'HTM '.AND.IHARG2(1).EQ.'    ') .OR.
15331     1   (IHARG(1).EQ.'HTML'.AND.IHARG2(1).EQ.'    '))THEN
15332        IHTMFL='HTML'
15333        ISHIFT=1
15334        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
15335     1              IBUGS2,IERROR)
15336        IF(IERROR.EQ.'YES')GOTO9000
15337      ELSEIF(IHARG(1).EQ.'LATE'.AND.IHARG2(1).EQ.'X   ')THEN
15338        IHTMFL='LATE'
15339        ISHIFT=1
15340        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
15341     1              IBUGS2,IERROR)
15342      ELSEIF(IHARG(1).EQ.'RTF '.AND.IHARG2(1).EQ.'    ')THEN
15343        IHTMFL='RTF '
15344        ISHIFT=1
15345        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
15346     1              IBUGS2,IERROR)
15347      ELSEIF(IHARG(1).EQ.'EXCE'.AND.IHARG2(1).EQ.'L   ')THEN
15348        IEXCEL='ON'
15349        ISHIFT=1
15350        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
15351     1              IBUGS2,IERROR)
15352      ELSE
15353        IHTMFL='OFF'
15354      ENDIF
15355C
15356C               *******************************************************
15357C               **  STEP 1.1--                                       **
15358C               **  CHECK FOR THE PROPER NUMBER OF INPUT ARGUMENTS.  **
15359C               *******************************************************
15360C
15361      ISTEPN='1.1'
15362      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')
15363     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
15364C
15365      IF(NUMARG.LT.1)THEN
15366        IERROR='YES'
15367        GOTO8800
15368      ENDIF
15369C
15370C               ******************************************************
15371C               **  STEP 2--                                        **
15372C               **  CHECK FOR TERMINAL OR FILE INPUT AND OPEN       **
15373C               **  FILE FOR FILE CASE.                             **
15374C               ******************************************************
15375C
15376      ISTEPN='2'
15377      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')
15378     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
15379C
15380C     2014/11: CHECK FOR "WRITE CLIPBOARD"
15381C
15382      IF(IHARG(1).EQ.'CLIP' .AND. IHARG2(1).EQ.'BOAR')THEN
15383C
15384C       CHECK IF ARGUMENT IS A FILE NAME STARTING WITH "CLIPBOARD.
15385C
15386        IWORD=2
15387        IOFILE='NO'
15388        CALL DPFILE(IANSLC,IWIDTH,IWORD,IOFILE,IBUGS2,ISUBRO,IERROR)
15389        IF(IOFILE.EQ.'NO')THEN
15390          ISHIFT=1
15391          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
15392     1                IBUGS2,IERROR)
15393          IOTERM='CLIP'
15394          IOFILE='CLIP'
15395          DO61I=1,NUMARG
15396            IHARLC(I)=IHARLC(I+1)
15397            IHARL2(I)=IHARL2(I+1)
15398   61     CONTINUE
15399        ELSE
15400          CALL DPWRFI(IOTERM,IOFILE,IPR2,IOUNIT,IFMFLG,
15401     1                IFILE,ISTAT,IFORM,IACCES,IPROT,ICURST,
15402     1                ICWRIF,NCWRIF,IFWORD,IFQUOT,ICASWR,ICASW2,
15403     1                IWRIRW,IWRIHE,NCWRIH,IEXCEL,
15404     1                IBUGS2,ISUBRO,IFOUND,IERROR)
15405          IF(IERROR.EQ.'YES')GOTO 8800
15406        ENDIF
15407C
15408      ELSE
15409        CALL DPWRFI(IOTERM,IOFILE,IPR2,IOUNIT,IFMFLG,
15410     1              IFILE,ISTAT,IFORM,IACCES,IPROT,ICURST,
15411     1              ICWRIF,NCWRIF,IFWORD,IFQUOT,ICASWR,ICASW2,
15412     1              IWRIRW,IWRIHE,NCWRIH,IEXCEL,
15413     1              IBUGS2,ISUBRO,IFOUND,IERROR)
15414        IF(IERROR.EQ.'YES')GOTO 8800
15415      ENDIF
15416C
15417C     2018/06: CHECK TO SEE IF DPZCHF.DAT EXISTS
15418C
15419      IOUNI2=IZCHNU
15420      IFILE2=IZCHNA
15421      ISTAT2=IZCHST
15422      IFORM2=IZCHFO
15423      IACCE2=IZCHAC
15424      IPROT2=IZCHPR
15425      ICURS2=IZCHCS
15426      IFLAGC=1
15427C
15428      ISUBN0='WRIT'
15429      IERRF2='NO'
15430      IFLAGC=1
15431      CALL DPOPFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,
15432     1            ICURS2,
15433     1            IREWI2,ISUBN0,IERRF2,IBUGS2,ISUBRO,IERROR)
15434      IF(IERRF2.EQ.'YES')THEN
15435        IFLAGC=0
15436      ELSE
15437        REWIND(IOUNI2)
15438        READ(IOUNI2,'(I8)',END=871,ERR=871)NCVAR
15439        IFLAGC=1
15440        GOTO879
15441C
15442  871   CONTINUE
15443        IFLAGC=0
15444  879   CONTINUE
15445      ENDIF
15446C
15447C               *************************************************
15448C               **  STEP 3--                                   **
15449C               **  CALL DPWRI2 TO DO THE FOLLOWING:           **
15450C               **  1) WRITE STRING (IF REQUESTED)             **
15451C               **  2) PARSE SUBSET/FOR CLAUSES (IF ANY)       **
15452C               **  3) PARSE NAMES ON COMMAND LINE AND         **
15453C               **     DETERMINE TYPE OF EACH NAME             **
15454C               **  4) CHECK FOR A VALID NUMBER OF NAMES FOR   **
15455C               **     EACH TYPE                               **
15456C               **  5) PRINT FUNCTIONS AND PARAMETERS          **
15457C               *************************************************
15458C
15459      ISTEPN='3'
15460      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')
15461     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
15462C
15463      CALL DPWRI2(IPR2,IOUNIT,IOUNI2,IFLAGC,
15464     1            IFORSW,NUMDIG,ICWRIF,NCWRIF,IWRIRW,IFORFM,
15465     1            IOFILE,
15466     1            MAXV2,MAXP2,MAXM2,MAXF2,MAXU2,MAXE2,MAXGL,
15467     1            JVNAM1,JPNAM1,JMNAM1,JFNAM1,JUNAM1,JENAM1,
15468     1            JVNAM2,JPNAM2,JMNAM2,JFNAM2,JUNAM2,JENAM2,
15469     1            JGLNA1,JGLNA2,JVTYPE,
15470     1            NIV,NIM,IVCOL2,PVAL,IFSTA2,IFSTO2,IMVAL1,IMVAL2,
15471     1            IZLIST,
15472     1            NUMALL,NUMV,NUMP,NUMM,NUMF,NUMU,NUME,NUMGL,
15473     1            IV,IP,IM,IF,IU,IE,IGL,
15474     1            IDONE,IFLAGH,IFLAGT,
15475     1            ICASEQ,IFWORD,IFQUOT,
15476     1            IBUGS2,ISUBRO,IFOUND,IERROR)
15477C
15478      IF(IOTERM.EQ.'CLIP'.AND.NUMV.EQ.0)GOTO9000
15479      IF(IDONE.EQ.1)GOTO8800
15480      IF(IERROR.EQ.'YES')GOTO 8800
15481C
15482      IF(IEXCEL.EQ.'ON')THEN
15483        IOP='OPEN'
15484        IFLG11=1
15485        IFLG21=0
15486        IFLG31=0
15487        IFLAG4=0
15488        IFLAG5=1
15489        CALL DPAUFI(IOP,IFLG11,IFLG21,IFLG31,IFLAG4,IFLAG5,
15490     1              IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
15491     1              IBUGS2,ISUBRO,IERROR)
15492        IF(IERROR.EQ.'YES')GOTO9000
15493        WRITE(IOUNI5,'(A80)')IFILE
15494        WRITE(IOUNI5,'(A8)')IEXCSH
15495      ENDIF
15496C
15497C     DETERMINE IF ANY VARIABLE NAMES FROM DPZCHF.DAT
15498C     (DON'T INCLUCE ROWLABELS IN THIS LIST).
15499C
15500      IF(IFLAGC.EQ.1)THEN
15501        IFLAGC=0
15502        DO881KK=1,NUMV
15503          IF(JVTYPE(KK).EQ.'CHAR')THEN
15504            IFLAGC=1
15505            GOTO883
15506          ENDIF
15507  881   CONTINUE
15508  883   CONTINUE
15509      ENDIF
15510C
15511C               ******************************************************
15512C               **  STEP 4.1--                                      **
15513C               **  FIRST, BRANCH TO THE APPROPRIATE SUBCASE        **
15514C               **  (DEPENDING ON WHETHER UNQUALIFIED, SUBSET OR    **
15515C               **  FOR); THE DETERMINE THE LENGTH OF THE LONGEST   **
15516C               **  VARIABLE TO BE PRINTED OUT; THEN PRINT OUT THE  **
15517C               **  VARIABLES THAT WERE SPECIFIED.                  **
15518C               ******************************************************
15519C
15520      ISTEPN='4.1'
15521      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')
15522     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
15523C
15524      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')THEN
15525        WRITE(ICOUT,6011)NUMV,NIV(1),NIV(2),NIV(3)
15526 6011   FORMAT('NUMV,NIV(1),NIV(2),NIV(3) = ',4I8)
15527        CALL DPWRST('XXX','BUG ')
15528        WRITE(ICOUT,6012)IVCOL2(1),IVCOL2(2),IVCOL2(3)
15529 6012   FORMAT('IVCOL2(1),IVCOL2(2),IVCOL2(3) = ',3I8)
15530        CALL DPWRST('XXX','BUG ')
15531        WRITE(ICOUT,6013)ICASEQ,ICASWR,IPR,IPR2,IFLAGH,IFLAGT
15532 6013   FORMAT('ICASEQ,ICASWR,IPR,IPR2,IFLAGH,IFLAGT = ',2(A4,2X),4I8)
15533        CALL DPWRST('XXX','BUG ')
15534        WRITE(ICOUT,6014)JVNAM1(1),JVNAM2(1)
15535 6014   FORMAT('JVNAM1(1),JVNAM2(1) = ',2A4)
15536        CALL DPWRST('XXX','BUG ')
15537      ENDIF
15538C
15539C     CASE 1: WRITE LIST OF VARIABLES.
15540C
15541C             SINCE WE ARE FUNNELING THROUGH DPTABx, DPHTMx, ETC.,
15542C             WE NEED TO SET "IPR" TO "IPR2" (AND BE SURE TO
15543C             CHANGE BACK).
15544C
15545      IPRSV=IPR
15546      IF(IOTERM.EQ.'CLIP')THEN
15547        IPR=IPRSV
15548      ELSE
15549        IPR=IPR2
15550      ENDIF
15551C
15552      IF(NUMV.LE.0)GOTO6490
15553C
15554      IVAL1=0
15555      MAXNPR=NIV(1)
15556      DO6100IV=1,NUMV
15557        IF(NIV(IV).GT.MAXNPR)MAXNPR=NIV(IV)
15558        IF(JVTYPE(IV).EQ.'NUME')IVAL1=1
15559 6100 CONTINUE
15560      IF(MAXNPR.EQ.0 .AND. IVAL1.EQ.0)MAXNPR=MAXOBV
15561C
15562      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')THEN
15563        WRITE(ICOUT,6111)MAXNPR,NS,ILOCS,ICASEQ
15564 6111   FORMAT('MAXNPR,NS,ILOCS,ICASEQ = ',3I8,2X,A4)
15565        CALL DPWRST('XXX','BUG ')
15566      ENDIF
15567C
15568      IF(ICASEQ.EQ.'SUBS')THEN
15569        NIOLD=MAXNPR
15570        CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERROR)
15571        NQ=NIOLD
15572      ELSEIF(IFLAGH.EQ.1)THEN
15573        DO6311II=1,IHEALI
15574          ISUB(II)=1
15575 6311   CONTINUE
15576        IF(IHEALI.LT.MAXNPR)THEN
15577          DO6312II=IHEALI+1,MAXNPR
15578            ISUB(II)=0
15579 6312     CONTINUE
15580        ENDIF
15581        NQ=IHEALI
15582      ELSEIF(IFLAGT.EQ.1)THEN
15583        DO6313II=1,MAXNPR
15584          ISUB(II)=0
15585 6313   CONTINUE
15586        NMAX=-1
15587        DO66411LL=1,NUMV
15588C
15589          ICOLVJ=IVALUE(LL)
15590          IF(JVTYPE(LL).EQ.'NUME')THEN
15591            NMAXT=IN(ICOLVJ)
15592            IF(NMAXT.GT.NMAX)NMAX=NMAXT
15593          ELSEIF(JVTYPE(LL).EQ.'ROWL')THEN
15594            NMAXT=NMAX
15595            DO66413JJ=MAXOBV,1,-1
15596              IF(IROWLB(JJ).NE.' ')THEN
15597                NMAXT=JJ
15598                GOTO66415
15599              ENDIF
1560066413       CONTINUE
1560166415       CONTINUE
15602            IF(NMAXT.GT.NMAX)NMAX=NMAXT
15603          ELSEIF(JVTYPE(LL).EQ.'CHAR')THEN
15604C
15605C           IGNORE CHARACTER VARIABLES FOR NOW.
15606C
15607          ENDIF
1560866411   CONTINUE
15609        NQ=MAXNPR
15610        IF(NMAX.GE.1)NQ=NMAX
15611        ILASTT=NQ
15612        IFRSTT=NQ-ITAILI+1
15613        IF(IFRSTT.LT.1)IFRSTT=1
15614        DO66420II=IFRSTT,ILASTT
15615          ISUB(II)=1
1561666420   CONTINUE
15617      ELSEIF(ICASEQ.EQ.'FOR')THEN
15618          NIOLD=MAXNPR
15619          CALL DPFOR(NIOLD,NFOR,IROW1,IROWN,NLOCAL,ILOCS,NS,
15620     1               IBUGQ,IERROR)
15621          NQ=NFOR
15622      ELSE
15623        DO6315I=1,MAXNPR
15624          ISUB(I)=1
15625 6315   CONTINUE
15626        NQ=MAXNPR
15627      ENDIF
15628C
15629      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')THEN
15630        WRITE(ICOUT,6113)NIOLD,NS,NQ
15631 6113   FORMAT('NIOLD,NS,NQ = ',3I8)
15632        CALL DPWRST('XXX','BUG ')
15633        DO6115II=1,MIN(MAXNPR,1000)
15634          WRITE(ICOUT,6118)II,ISUB(II)
15635 6118     FORMAT('II,ISUB(II) = ',2I8)
15636          CALL DPWRST('XXX','BUG ')
15637 6115   CONTINUE
15638      ENDIF
15639C
15640C     2018/09: SUPPORT "WRITE ROW" CASE.  THIS OPTION IS
15641C              PROVIDED PRIMARILY TO REWRITE DATA FILES THAT
15642C              ARE GIVEN IN "ROW ORDER" IN A FORM THAT CAN
15643C              UTILIZE "SET READ FORMAT" OPTION.  FOR THIS
15644C              REASON, THIS CAPABILITY IS LIMITED TO NUMERIC
15645C              DATA ONLY.
15646C
15647      IF(ICASWR.EQ.'ON' .AND. IEXCEL.EQ.'OFF')THEN
15648        ICNT2=0
15649        DO66400LL=1,NUMV
15650          IF(JVTYPE(LL).NE.'NUME')GOTO66400
15651C
15652          IH1=JVNAM1(LL)
15653          IH2=JVNAM2(LL)
15654          DO66403KK=1,NUMNAM
15655            IF(IH1.EQ.IHNAME(KK) .AND. IH2.EQ.IHNAM2(KK))THEN
15656              IF(IUSE(KK).EQ.'V')THEN
15657                ICOLVJ=IVALUE(KK)
15658                NROW=IN(KK)
15659                GOTO66409
15660              ELSE
15661                GOTO66400
15662              ENDIF
15663            ENDIF
1566466403     CONTINUE
1566566409     CONTINUE
15666C
15667          ICNT=0
15668          DO66410II=1,NROW
15669            IF(ISUB(II).EQ.0)GOTO66410
15670            ICNT=ICNT+1
15671            IJ=MAXN*(ICOLVJ-1)+II
15672            IF(ICOLVJ.LE.MAXCOL)ZLIST(ICNT)=V(IJ)
15673            IF(ICOLVJ.EQ.MAXCP1)ZLIST(ICNT)=PRED(II)
15674            IF(ICOLVJ.EQ.MAXCP2)ZLIST(ICNT)=RES(II)
15675            IF(ICOLVJ.EQ.MAXCP3)ZLIST(ICNT)=YPLOT(II)
15676            IF(ICOLVJ.EQ.MAXCP4)ZLIST(ICNT)=XPLOT(II)
15677            IF(ICOLVJ.EQ.MAXCP5)ZLIST(ICNT)=X2PLOT(II)
15678            IF(ICOLVJ.EQ.MAXCP6)ZLIST(ICNT)=TAGPLO(II)
1567966410     CONTINUE
15680C
15681          IF(NCWRIF.GE.1 .AND. IFMFLG.EQ.'OFF')THEN
15682            WRITE(IPR,ICWRIF,ERR=66491)(ZLIST(KK),KK=1,ICNT)
15683          ELSE
15684            IFORMT=' '
15685            IFORMT='(    E15.7)'
15686            WRITE(IFORMT(2:5),'(I4)')ICNT
15687            WRITE(IPR,IFORMT,ERR=66491)(ZLIST(KK),KK=1,ICNT)
15688          ENDIF
15689          ICNT2=ICNT2 + 1
15690          GOTO66400
15691C
1569266491     CONTINUE
15693          IPRSV2=IPR
15694          IPR=IPRSV
15695          WRITE(ICOUT,999)
15696          CALL DPWRST('XXX','BUG ')
15697          WRITE(ICOUT,66493)
1569866493     FORMAT('***** ERROR IN   WRITE ROW')
15699          CALL DPWRST('XXX','BUG ')
15700          WRITE(ICOUT,66495)JVNAM1(LL),JVNAM2(LL)
1570166495     FORMAT('      VARIABLE ',2A4,' NOT WRITTEN.')
15702          CALL DPWRST('XXX','BUG ')
15703          IERROR='YES'
15704          IPR=IPRSV2
15705C
1570666400   CONTINUE
15707C
15708        IF(IFEEDB.EQ.'ON')THEN
15709          IPRSV2=IPR
15710          IPR=IPRSV
15711          WRITE(ICOUT,999)
15712          CALL DPWRST('XXX','BUG ')
15713          WRITE(ICOUT,66498)ICNT2
1571466498     FORMAT(I6,' VARIABLES WRITTEN IN ROW FORMAT.')
15715          CALL DPWRST('XXX','BUG ')
15716          WRITE(ICOUT,999)
15717          CALL DPWRST('XXX','BUG ')
15718          IPR=IPRSV2
15719        ENDIF
15720        GOTO8800
15721      ENDIF
15722C
15723C     STEP 1: PRINT TABLE HEADER.
15724C
15725C             DO NOT PRINT HEADER IF OUTPUT TO AN EXTERNAL FILE,
15726C             FORMATTED WRITE SPECIFIED, OR NUMBER OF VARIABLES > 7.
15727C
15728C             2020/02: FOR "WRITE EXCEL", PRINT TABLE HEADERS WITH
15729C                      SEPARATING COMMAS.
15730C
15731      IFLAG=1
15732      MAXTMP=MAXV3
15733      IF(IHTMFL.EQ.'HTML')MAXTMP=15
15734      IF(IHTMFL.EQ.'LATE')MAXTMP=7
15735      IF(IHTMFL.EQ.'RTF')MAXTMP=7
15736      IF(IOFILE.EQ.'YES' .OR. NCWRIF.GE.1 .OR.NUMV.GT.MAXTMP)IFLAG=0
15737      IF(IOFILE.EQ.'CLIP')IFLAG=0
15738      IF(IEXCEL.EQ.'ON')IFLAG=2
15739C
15740      ISTEPN='4.2'
15741      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')
15742     1  CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
15743C
15744      CALL DPCONA(92,IBASLC)
15745C
15746      NHEAD=NUMV
15747      NMAX=1
15748C
15749      DO4000I=1,NUMV
15750        IF(IHTMFL.EQ.'HTML')THEN
15751          IWID99(I)=150
15752          IF(ITABWD.GT.0)THEN
15753            IWID99(I)=ITABWD
15754          ELSEIF(IHTMCW.GT.0)THEN
15755            IWID99(I)=IHTMCW
15756          ENDIF
15757          VALIGN(I)='BOTTOM'
15758          ALIGN(I)='RIGHT'
15759          IF(JVTYPE(I).NE.'NUME')ALIGN(I)='LEFT'
15760        ELSEIF(IHTMFL.EQ.'LATE')THEN
15761          IWID99(I)=0
15762          VALIGN(I)='b'
15763          ALIGN(I)='r'
15764          IF(JVTYPE(I).NE.'NUME')ALIGN(I)='l'
15765        ELSEIF(IHTMFL.EQ.'RTF')THEN
15766          IF(I.EQ.1)THEN
15767            IWID99(I)=1650
15768          ELSE
15769            IWID99(I)=IWID99(I-1) + 1650
15770          ENDIF
15771          VALIGN(I)='b'
15772          ALIGN(I)='r'
15773          IF(JVTYPE(I).NE.'NUME')ALIGN(I)='l'
15774        ELSE
15775          IWID99(I)=0
15776          VALIGN(I)='b'
15777          ALIGN(I)='r'
15778          IF(JVTYPE(I).NE.'NUME')ALIGN(I)='l'
15779        ENDIF
15780        IF(JVTYPE(I).EQ.'NUME')THEN
15781          IDIGIT(I)=-7
15782          NTOT(I)=15
15783          IINDX=MOD(I,MAXNWI)
15784          IF(IINDX.EQ.0)IINDX=200
15785          IF(IFORWI(IINDX).NE.-99)NTOT(I)=IFORWI(I)
15786          IF(IFORWR(IINDX).NE.-99)THEN
15787            IDIGIT(I)=IFORWR(I)
15788          ELSEIF(NUMDIG.NE.-99)THEN
15789            IDIGIT(I)=NUMDIG
15790            IF(IDIGIT(I).EQ.99)THEN
15791              IDIGIT(I)=-7
15792            ENDIF
15793          ENDIF
15794        ELSE
15795          IDIGIT(I)=0
15796          NTOT(I)=25
15797        ENDIF
15798 4000 CONTINUE
15799C
15800C     HEADER LINE.  PRINT VARIABLE NAME OR VARIABLE LABEL.  THE
15801C     TABLE TITLE, IF ANY, IS IN ITABTI.  ITABBR SPECIFIES THE
15802C     TYPE OF BORDER (FOR NOW, BASICALLY ONLY SUPPORT "RULE" OR
15803C     "NONE").
15804C
15805      IF(IFLAG.EQ.1)THEN
15806C
15807        ISTEPN='4.3'
15808        IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')
15809     1    CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
15810C
15811        JNUM=0
15812        JCHAR=0
15813C
15814        DO4020J=1,NUMV
15815          IVAL99(J)=' '
15816          NCTEMP(J)=1
15817          ICOLZZ=IVCOL2(J)
15818          IF(ITABHD.EQ.'ON')THEN
15819            IVAL99(J)=' '
15820            NTEMP=0
15821            IF(JVTYPE(J).EQ.'NUME')THEN
15822              IF(IVARLB(ICOLZZ).EQ.' ')THEN
15823                IVAL99(J)(1:4)=JVNAM1(J)
15824                IVAL99(J)(5:8)=JVNAM2(J)
15825                NTEMP=8
15826              ELSE
15827                IVAL99(J)=IVARLB(ICOLZZ)
15828                NTEMP=40
15829              ENDIF
15830            ELSE
15831              IVAL99(J)(2:5)=JVNAM1(J)
15832              IVAL99(J)(6:9)=JVNAM2(J)
15833              NTEMP=9
15834            ENDIF
15835          ENDIF
15836          IF(NTEMP.GT.0)THEN
15837            DO4025JJ=NTEMP,1,-1
15838              IF(IVAL99(J)(JJ:JJ).NE.' ')THEN
15839                NCTEMP(J)=JJ
15840                GOTO4029
15841              ENDIF
15842 4025       CONTINUE
15843 4029       CONTINUE
15844          ENDIF
15845 4020   CONTINUE
15846C
15847        ITEMPC=' '
15848        NCHEA2=0
15849        IF(IHTMFL.EQ.'HTML')THEN
15850          IFLAG1=.TRUE.
15851          IFLAG2=.TRUE.
15852          NCFON1=NCHTM1
15853          IHTMFZ=IHTMFT
15854          CALL DPHTM1(ITABTI,NCTABT,IFLAG1,IFLAG2)
15855          IF(ITABBR.EQ.'ON' .OR. ITABBR.EQ.'RULE')THEN
15856            IFLAG1=.TRUE.
15857            IFLAG2=.TRUE.
15858          ELSE
15859            IFLAG1=.FALSE.
15860            IFLAG2=.FALSE.
15861          ENDIF
15862          IF(ITABHD.EQ.'ON')THEN
15863            CALL DPHTM4(IVAL99,NCTEMP,NUMV,IFLAG1,IFLAG2)
15864          ENDIF
15865C
15866        ELSEIF(IHTMFL.EQ.'LATE')THEN
15867C
15868C         WRITE IN LATEX FORMAT:
15869C
15870C           1) DPLAT6  - END VERBATIM MODE
15871C           2) DPLAT1  - START NEW TABLE, PRINT TITLE
15872C           3) DPLAT4  - PRINT HEADER LINE
15873C
15874          IFLAG1=.FALSE.
15875          IFLAG2=.FALSE.
15876          IFLAG3=.TRUE.
15877          CALL DPLAT6(IFLAG1,IFLAG2,IFLAG3)
15878          IFLAG1=.TRUE.
15879          IFLAG2=.TRUE.
15880          CALL DPLAT1(ITABTI,NCTABT,ITEMPC,NCHEA2,IFLAG1)
15881          IF(ITABBR.EQ.'ON' .OR. ITABBR.EQ.'RULE')THEN
15882            IFLAG1=.TRUE.
15883            IFLAG2=.TRUE.
15884          ELSE
15885            IFLAG1=.FALSE.
15886            IFLAG2=.FALSE.
15887          ENDIF
15888          IFLAG3=.TRUE.
15889CCCCC     IF(ITABHD.EQ.'ON')THEN
15890            CALL DPLAT4(IVAL99,NCTEMP,NUMV,IFLAG1,IFLAG2,IFLAG3)
15891CCCCC     ENDIF
15892C
15893        ELSEIF(IHTMFL.EQ.'RTF')THEN
15894C
15895          IF(NUMV.GT.5)THEN
15896            IPTSZ=14
15897            WRITE(ICOUT,8199)IBASLC,IPTSZ
15898 8199       FORMAT(A1,'fs',I2)
15899            CALL DPWRST(ICOUT,'WRIT')
15900          ENDIF
15901C
15902 8091     FORMAT(A1,'f',I1)
15903          IF(IRTFFP.EQ.'Times New Roman')THEN
15904            ITEMP=0
15905          ELSEIF(IRTFFP.EQ.'Lucida Sans')THEN
15906            ITEMP=6
15907          ELSEIF(IRTFFP.EQ.'Arial')THEN
15908            ITEMP=2
15909          ELSEIF(IRTFFP.EQ.'Bookman')THEN
15910            ITEMP=3
15911          ELSEIF(IRTFFP.EQ.'Georgia')THEN
15912            ITEMP=4
15913          ELSEIF(IRTFFP.EQ.'Tahoma')THEN
15914            ITEMP=5
15915          ELSEIF(IRTFFP.EQ.'Verdana')THEN
15916            ITEMP=7
15917          ELSE
15918            ITEMP=0
15919          ENDIF
15920C
15921          IRTFMD='OFF'
15922C
15923          CALL DPRTF1(ITABTI,NCTABT,ITEMPC,NCHEA2)
15924C
15925          IF(ITABBR.EQ.'ON' .OR. ITABBR.EQ.'RULE')THEN
15926            IFLAG1=.TRUE.
15927            IFLAG2=.TRUE.
15928          ELSE
15929            IFLAG1=.FALSE.
15930            IFLAG2=.FALSE.
15931          ENDIF
15932CCCCC     IF(ITABHD.EQ.'ON')THEN
15933            CALL DPRTF4(IVAL99,NCTEMP,NUMV,IFLAG1,IFLAG2)
15934CCCCC     ENDIF
15935        ELSE
15936C
15937CCCCC     JULY 2009: GUI IS EXPECTING HEADER LINE IN FORMAT
15938CCCCC                VARIABLE NAMES--Y        X
15939CCCCC                FOLLOWED BY A SINGLE BLANK LINE.  SO IF
15940CCCCC                GUI IS BEING RUN (IGUIFL='ON'), THEN PRINT
15941CCCCC                HEADER LINE IN THIS FORMAT.
15942C
15943          IF(IGUIFL.EQ.'ON')THEN
15944            IFORMT='(1X, VARIABLES-- ,  (2A4,7X))'
15945            IFORMT(5:5)=IQUOTE
15946            IFORMT(17:17)=IQUOTE
15947            WRITE(IFORMT(19:20),'(I2)')NUMV
15948            WRITE(IPR,IFORMT)(JVNAM1(I),JVNAM2(I),I=1,NUMV)
15949            WRITE(IPR,999)
15950            IFORMT=' '
15951            GOTO4149
15952          ENDIF
15953C
15954          NMAX=0
15955          DO4141KK=1,NUMV
15956            NTOT(KK)=15
15957            IF(JVTYPE(KK).NE.'NUME')NTOT(KK)=25
15958            IF(IFORWI(KK).GT.0)NTOT(KK)=IFORWI(KK)
15959            NMAX=NMAX+NTOT(KK)
15960            IF(NCTEMP(KK).GT.NTOT(KK))NCTEMP(KK)=NTOT(KK)
15961            IF(ALIGN(KK).EQ.'l' .AND. NCTEMP(KK).LT.NTOT(KK))THEN
15962              DO4146JJ=NCTEMP(KK)+1,NTOT(KK)
15963                IVAL99(KK)(JJ:JJ)=' '
15964 4146         CONTINUE
15965              NCTEMP(KK)=NTOT(KK)
15966            ELSEIF(ALIGN(KK).EQ.'c'.AND.NCTEMP(KK).LT.NTOT(KK))THEN
15967              IVAL99(KK)(NCTEMP(KK):NTOT(KK))=' '
15968              IDIFF=(NTOT(KK)-NCTEMP(KK))/2
15969              IF(IDIFF.GT.0)THEN
15970                DO4147JJ=NTOT(KK),IDIFF+1,-1
15971                  IVAL99(KK)(JJ:JJ)=IVAL99(KK)(JJ-IDIFF:JJ-IDIFF)
15972 4147           CONTINUE
15973                IVAL99(KK)(1:IDIFF)=' '
15974              ENDIF
15975              NCTEMP(KK)=NTOT(KK)
15976            ELSEIF(ALIGN(KK).EQ.'r'.AND.NCTEMP(KK).LT.NTOT(KK))THEN
15977              IDIFF=NTOT(KK)-NCTEMP(KK)
15978              DO4148JJ=NTOT(KK),IDIFF+1,-1
15979                IVAL99(KK)(JJ:JJ)=IVAL99(KK)(JJ-IDIFF:JJ-IDIFF)
15980 4148         CONTINUE
15981              IVAL99(KK)(1:IDIFF)=' '
15982              NCTEMP(KK)=NTOT(KK)
15983            ENDIF
15984 4141     CONTINUE
15985C
15986          IFLAG1=.TRUE.
15987          CALL DPTAB1(ITABTI,NCTABT,ITEMPC,NCHEA2,IFLAG1)
15988          IF(ITABBR.EQ.'ON' .OR. ITABBR.EQ.'RULE')THEN
15989            IFLAG1=.TRUE.
15990            IFLAG2=.TRUE.
15991          ELSE
15992            IFLAG1=.FALSE.
15993            IFLAG2=.FALSE.
15994          ENDIF
15995          IF(ITABHD.EQ.'ON')THEN
15996            CALL DPTAB4(IVAL99,NCTEMP,NUMV,IFLAG1,IFLAG2,NMAX)
15997          ENDIF
15998          CALL DPFLSH(IPR,IBUGS2,ISUBRO,IFOUND,IERROR)
15999          IFOUND='YES'
16000C
16001 4149     CONTINUE
16002C
16003        ENDIF
16004C
16005      ELSEIF(IFLAG.EQ.2)THEN
16006C
16007C       FOR EXCEL, WRITE COMMA SEPARATED LABELS TO "dpst1f.dat"
16008C
16009        IFRMT=' '
16010        IFRMT='(    (2A4, ,  ),2A4)'
16011        WRITE(IFRMT(2:5),'(I4)')NUMV-1
16012        WRITE(IFRMT(11:11),'(A1)')"'"
16013        WRITE(IFRMT(14:14),'(A1)')"'"
16014        WRITE(IOUNI1,IFRMT)(JVNAM1(J),JVNAM2(J),J=1,NUMV)
16015      ENDIF
16016C
16017C     NOW PRINT OUT THE ROWS OF THE VARIABLES.  DO NOT GENERATE
16018C     HTML/LATEX/RTF FORMATTED OUTPUT IF WRITING TO A FILE,
16019C     IF USING A "SET WRITE FORMAT" OR IF THE NUMBER OF VARIABLES > 7.
16020C
16021      ISTEPN='4.4'
16022      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')
16023     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
16024C
16025      ITEMPC=' '
16026      NCTEM2=0
16027      J=0
16028      ILINE=0
16029      MAXLTA=40
16030      NUMROW=MAXNPR
16031      DO6380I=MAXNPR,1,-1
16032        IF(ISUB(I).EQ.1)THEN
16033          NUMROW=I
16034          GOTO6389
16035        ENDIF
16036 6380 CONTINUE
16037 6389 CONTINUE
16038C
16039      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')THEN
16040        WRITE(ICOUT,6393)MAXNPR,NUMROW
16041 6393   FORMAT('AT 6389: MAXNPR,NUMROW = ',2I8)
16042        CALL DPWRST('XXX','BUG ')
16043      ENDIF
16044C
16045C     POSITION dpzchf.dat TO START OF DATA ROWS
16046C
16047      IF(IFLAGC.EQ.1)THEN
16048        REWIND(IOUNI2)
16049        READ(IOUNI2,'(I8)',END=8800,ERR=8800)NCVAR
16050        DO6390I=1,NCVAR
16051          READ(IOUNI2,'(A8)',END=8800,ERR=8800)IH
16052 6390   CONTINUE
16053      ELSE
16054         NCVAR=0
16055      ENDIF
16056C
16057      DO6400I=1,NUMROW
16058C
16059        II=I
16060C
16061        IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')THEN
16062          WRITE(ICOUT,6401)II,ISUB(II),JNUM,JCHAR
16063 6401     FORMAT('II,ISUB(II),JNUM,JCHAR = ',4I8)
16064          CALL DPWRST('XXX','BUG ')
16065        ENDIF
16066C
16067        IF(ISUB(II).EQ.1)THEN
16068          J=J+1
16069C
16070          IFLAG1=.FALSE.
16071          IF(II.EQ.NUMROW)IFLAG1=.TRUE.
16072C
16073C         EXTRACT THE DATA FOR A SINGLE ROW
16074C
16075          JNUM=0
16076          JCHAR=0
16077          IF(IFLAGC.EQ.1)THEN
16078            IFORMT=' '
16079            IFORMT='(    A)'
16080            WRITE(IFORMT(2:5),'(I4)')NCVAR
16081            READ(IOUNI2,IFORMT,END=8800,ERR=8800)ISTRCC
16082          ENDIF
16083C
16084          DO6410LL=1,NUMV
16085C
16086            IZCLIS(LL)=' '
16087            NCHEAD(LL)=0
16088            ZLIST(LL)=CPUMIN
16089            IF(JVTYPE(LL).EQ.'NUME')THEN
16090              JNUM=JNUM+1
16091            ELSE
16092              JCHAR=JCHAR+1
16093            ENDIF
16094C
16095            IF(JVTYPE(LL).EQ.'NUME')THEN
16096              IV=LL
16097              ICOLVJ=IVCOL2(IV)
16098              IJ=MAXN*(ICOLVJ-1)+II
16099              IF(ICOLVJ.LE.MAXCOL)ZLIST(LL)=V(IJ)
16100              IF(ICOLVJ.EQ.MAXCP1)ZLIST(LL)=PRED(II)
16101              IF(ICOLVJ.EQ.MAXCP2)ZLIST(LL)=RES(II)
16102              IF(ICOLVJ.EQ.MAXCP3)ZLIST(LL)=YPLOT(II)
16103              IF(ICOLVJ.EQ.MAXCP4)ZLIST(LL)=XPLOT(II)
16104              IF(ICOLVJ.EQ.MAXCP5)ZLIST(LL)=X2PLOT(II)
16105              IF(ICOLVJ.EQ.MAXCP6)ZLIST(LL)=TAGPLO(II)
16106              JVTYP2(LL)='NUME'
16107            ELSEIF(JVTYPE(LL).EQ.'ROWL')THEN
16108              IZCLIS(LL)(1:1)=' '
16109              IZCLIS(LL)(2:25)=IROWLB(II)(1:24)
16110              JVTYP2(LL)='ALPH'
16111              NCHEAD(LL)=25
16112              DO6608KK=25,1,-1
16113                IF(IZCLIS(LL)(KK:KK).NE.' ')THEN
16114                  NCHEAD(LL)=KK
16115                  GOTO6609
16116                ENDIF
16117 6608         CONTINUE
16118 6609         CONTINUE
16119            ELSEIF(JVTYPE(LL).EQ.'CHAR')THEN
16120              JVTYP2(LL)='ALPH'
16121              IZCLIS(LL)=' '
16122              NSTRT=(IVCOL2(LL)-1)*25 + 1
16123              NSTOP=NSTRT+23
16124              IZCLIS(LL)(2:25)=ISTRCC(NSTRT:NSTOP)
16125              NCHEAD(LL)=25
16126              DO6618KK=25,1,-1
16127                IF(IZCLIS(LL)(KK:KK).NE.' ')THEN
16128                  NCHEAD(LL)=KK
16129                  GOTO6619
16130                ENDIF
16131 6618         CONTINUE
16132 6619         CONTINUE
16133            ENDIF
16134 6410     CONTINUE
16135C
16136C         HANDLE CASE WHERE A WRITE FORMAT HAS BEEN SPECIFIED
16137C         (FOR THIS CASE, DO NOT USE THE HTML/LATEX/RTF FORMATTING
16138C         CODE)
16139C
16140          IF(IOTERM.EQ.'CLIP')THEN
16141            DO6411LL=1,NUMV
16142              IPTR=(II-1)*NUMV+LL
16143              XSCRT(IPTR)=ZLIST(LL)
16144 6411       CONTINUE
16145            GOTO6400
16146          ELSEIF(NCWRIF.GE.1)THEN
16147            IF(IFMFLG.EQ.'ON')THEN
16148              DO6412LL=1,NUMV
16149                IPTR=(II-1)*NUMV+LL
16150                XSCRT(IPTR)=ZLIST(LL)
16151 6412         CONTINUE
16152              GOTO6400
16153            ELSE
16154              WRITE(IPR2,ICWRIF,ERR=6491)(ZLIST(LL),LL=1,NUMV)
16155              GOTO6400
16156C
16157 6491         CONTINUE
16158              WRITE(ICOUT,999)
16159              CALL DPWRST('XXX','BUG ')
16160              WRITE(ICOUT,6493)
16161 6493         FORMAT('***** ERROR TRYING TO WRITE DATA TO AN ',
16162     1               'EXTERNAL FILE')
16163              CALL DPWRST('XXX','BUG ')
16164              WRITE(ICOUT,6495)
16165 6495         FORMAT('      WHEN USING THE SET WRITE FORMAT OPTION.')
16166              CALL DPWRST('XXX','BUG ')
16167              IERROR='YES'
16168              GOTO8800
16169C
16170            ENDIF
16171          ENDIF
16172C
16173          DO6420LL=1,NUMV
16174            IF(ZLIST(LL).EQ.CPUMIN)THEN
16175              IDIGI2(LL)=-99
16176            ELSE
16177              IDIGI2(LL)=IDIGIT(LL)
16178            ENDIF
16179 6420     CONTINUE
16180C
16181          IF(IHTMFL.EQ.'HTML')THEN
16182            IBOLD=.FALSE.
16183            IF(J.EQ.1)THEN
16184              DO6451LL=NUMV,1,-1
16185                ALIGN(LL+1)=ALIGN(LL)
16186                VALIGN(LL+1)=VALIGN(LL)
16187                IWID99(LL+1)=IWID99(LL)
16188 6451         CONTINUE
16189            ENDIF
16190            IF(JCHAR.LE.0)THEN
16191              CALL DPHTM5(ITEMPC,NCTEM2,ZLIST,NUMV,IBOLD)
16192            ELSE
16193              IFLAGA=.FALSE.
16194              IFLAGB=.FALSE.
16195              CALL DPHTMY(IZCLIS,NCHEAD,ZLIST,NUMV,JVTYP2,
16196     1                    IFLAGA,IFLAGB)
16197            ENDIF
16198C
16199C           FOR LATEX, WE CANNOT EXTEND TABLES BEYOND A SINGLE
16200C           PAGE, SO PUT A CHECK IN.
16201C
16202          ELSEIF(IHTMFL.EQ.'LATE')THEN
16203            IF(JCHAR.LE.0)THEN
16204              CALL DPLAT5(ITEMPC,NCTEM2,ZLIST,NUMV,IFLAG1)
16205            ELSE
16206              IFLAGA=.FALSE.
16207              IFLAGB=.FALSE.
16208              CALL DPLATW(IZCLIS,NCHEAD,ZLIST,NUMV,JVTYP2,
16209     1                    IFLAGA,IFLAGB)
16210            ENDIF
16211            ILINE=ILINE+1
16212            IF(ILINE.EQ.MAXLTA .AND. J.NE.NUMROW)THEN
16213              ILINE=0
16214              IFLAG1=.TRUE.
16215              IFLAG2=.FALSE.
16216              IFLAG3=.TRUE.
16217              CALL DPLATZ(IFLAG1,IFLAG2,IFLAG3,NHEAD)
16218              IFLAG1=.FALSE.
16219              IFLAG2=.FALSE.
16220              IFLAG3=.TRUE.
16221              CALL DPLATY(NHEAD)
16222            ENDIF
16223          ELSEIF(IHTMFL.EQ.'RTF')THEN
16224            IF(JCHAR.LE.0)THEN
16225              IFLAG1=.FALSE.
16226              CALL DPRTF5(ITEMPC,NCTEM2,ZLIST,NUMV,IFLAG1)
16227            ELSE
16228              CALL DPRTFY(IZCLIS,NCHEAD,ZLIST,NUMV,JVTYP2,
16229     1                    IFLAGA,IFLAGB)
16230            ENDIF
16231          ELSE
16232            IF(IEXCEL.EQ.'ON')THEN
16233              ICSVWR='ON'
16234            ELSE
16235              IOUNI1=-99
16236            ENDIF
16237            IF(JCHAR.LE.0)THEN
16238              IFLAG1=.FALSE.
16239              CALL DPTAB5(ITEMPC,NCTEM2,ZLIST,NUMV,IFLAG1,NMAX,NTOT,
16240     1                    ICSVWR)
16241            ELSE
16242              IFLAGA=.FALSE.
16243              IFLAGB=.FALSE.
16244              CALL DPTABY(IZCLIS,NCHEAD,ZLIST,NUMV,JVTYP2,
16245     1                    IFLAGA,IFLAGB,NMAX,NTOT,ICSVWR,IOUNI1,
16246     1                    IBUGS2,IERROR)
16247            ENDIF
16248          ENDIF
16249        ELSE
16250          IF(IFLAGC.EQ.1)THEN
16251            READ(IOUNI2,'(A1)',END=8800,ERR=8800)ISTRCC
16252          ENDIF
16253        ENDIF
16254 6400 CONTINUE
16255C
16256      IF(IEXCEL.EQ.'ON')THEN
16257        IOP='CLOS'
16258        CALL DPAUFI(IOP,IFLG11,IFLG21,IFLG31,IFLAG4,IFLAG5,
16259     1              IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
16260     1              IBUGS2,ISUBRO,IERROR)
16261        IF(IERROR.EQ.'YES')GOTO9000
16262      ENDIF
16263C
16264      IF(IOTERM.EQ.'CLIP')THEN
16265        NPTS=MAXNPR*NUMV
16266        CALL DPCLI5(XSCRT,NUMV,MAXNPR,NPTS,IBUGS2,ISUBRO,IERROR)
16267        GOTO9000
16268      ELSEIF(IFMFLG.EQ.'ON')THEN
16269        NPTS=MAXNPR*NUMV
16270        WRITE(IPR2,ERR=6591)(XSCRT(I),I=1,NPTS)
16271        GOTO6490
16272C
16273 6591   CONTINUE
16274        WRITE(ICOUT,999)
16275        CALL DPWRST('XXX','BUG ')
16276        WRITE(ICOUT,6593)
16277 6593   FORMAT('***** ERROR TRYING TO WRITE DATA TO AN ',
16278     1         'EXTERNAL FILE')
16279        CALL DPWRST('XXX','BUG ')
16280        WRITE(ICOUT,6595)
16281 6595   FORMAT('      WHEN USING THE SET WRITE FORMAT UNFORMATTED ',
16282     1         'OPTION.')
16283        CALL DPWRST('XXX','BUG ')
16284        IERROR='YES'
16285        GOTO8800
16286C
16287      ENDIF
16288C
16289C     NOW TERMINATE THE TABLE
16290C
16291      IF(IHTMFL.EQ.'HTML')THEN
16292        IFLAG1=.TRUE.
16293        IFLAG2=.TRUE.
16294        CALL DPHTM2(IFLAG1,IFLAG2,NHEAD)
16295      ELSEIF(IHTMFL.EQ.'LATE')THEN
16296        IFLAG1=.TRUE.
16297        IFLAG2=.TRUE.
16298        IFLAG3=.TRUE.
16299        CALL DPLATZ(IFLAG1,IFLAG2,IFLAG3,NHEAD)
16300      ELSEIF(IHTMFL.EQ.'RTF')THEN
16301C
16302        IF(NUMV.GT.5)THEN
16303          IPTSZ=IRTFPS
16304          WRITE(ICOUT,8199)IBASLC,IPTSZ
16305          CALL DPWRST(ICOUT,'WRIT')
16306        ENDIF
16307C
16308        IF(IRTFFF.EQ.'Courier New')THEN
16309          ITEMP=1
16310        ELSEIF(IRTFFF.EQ.'Lucida Console')THEN
16311          ITEMP=8
16312        ENDIF
16313        WRITE(ICOUT,8091)IBASLC,ITEMP
16314        CALL DPWRST(ICOUT,'WRIT')
16315        CALL DPRTF6(NHEAD)
16316        CALL DPRTF6(NHEAD)
16317        IRTFMD='VERB'
16318      ELSE
16319C
16320C       NOTE 2012/5: ONLY PRINT THE BLANK LINE IF WRITING TO THE SCREEN
16321C
16322        IF(IOFILE.EQ.'NO')THEN
16323          WRITE(ICOUT,999)
16324          CALL DPWRST('XXX','WRIT')
16325        ENDIF
16326      ENDIF
16327C
16328 6490 CONTINUE
16329C
16330      IPR=IPRSV
16331C
16332C     2020/02: NOW USE "write_excel.py" SCRIPT TO CREATE THE EXCEL
16333C              FILE (NOTE THAT EXCEL DOES NOT NEED TO BE INSTALLED ON
16334C              YOUR LOCAL PLATFORM).  HOWEVER, PYTHON 3.x MUST ALREADY BE
16335C              INSTALLED AND THE pandas AND xlsxwriter PACKAGES MUST
16336C              ALSO BE INSTALLED.
16337C
16338      IF(IEXCEL.EQ.'ON')THEN
16339        ITYPEZ='PYTH'
16340        ISNAME='write_excel.py'
16341        IWIDZZ=14
16342        ISARGL=' '
16343        NCARG=0
16344        CALL DPEXR2(ITYPEZ,ISNAME,IWIDZZ,ISARGL,NCARG,
16345     1              IBUGS2,ISUBRO,IFOUND,IERROR)
16346        IFOUND='YES'
16347        IF(IERROR.EQ.'NO' .AND. IFEEDB.EQ.'ON')THEN
16348          WRITE(ICOUT,999)
16349          CALL DPWRST('XXX','BUG ')
16350          WRITE(ICOUT,6603)
16351 6603     FORMAT('VARIABLES WRITTEN TO THE EXCEL FILE')
16352          CALL DPWRST('XXX','BUG ')
16353          WRITE(ICOUT,6605)IFILE
16354 6605     FORMAT(A80)
16355          CALL DPWRST('XXX','BUG ')
16356        ENDIF
16357        GOTO9000
16358      ENDIF
16359C
16360C               ********************************************************
16361C               **  STEP 4.2--                                        **
16362C               **  PRINT OUT MATRICES.  FIRST, BRANCH TO THE         **
16363C               **  APPROPRIATE SUBCASE (DEPENDING ON WHETHER         **
16364C               **  UNQUALIFIED, SUBSET OR FOR);  THEN DETERMINE THE  **
16365C               **  LENGTH OF THE LONGEST VARIABLE TO BE PRINTED OUT; **
16366C               **  THEN PRINT OUT THE VARIABLES THAT WERE SPECIFIED. **
16367C               ********************************************************
16368C
16369      ISTEPN='4.2'
16370      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')
16371     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
16372C
16373      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')THEN
16374        WRITE(ICOUT,7011)NUMM,NIM(1),NIM(2),NIM(3)
16375 7011   FORMAT('NUMM,NIM(1),NIM(2),NIM(3) = ',4I8)
16376        CALL DPWRST('XXX','BUG ')
16377        WRITE(ICOUT,7012)IMVAL1(1),IMVAL1(2),IMVAL1(3)
16378        CALL DPWRST('XXX','BUG ')
16379        WRITE(ICOUT,7012)IMVAL1(1),IMVAL2(1),IMVAL1(2),IMVAL2(2)
16380 7012   FORMAT('IMVAL1(1),IMVAL2(1),IMVAL1(2),IMVAL2(2) = ',4I8)
16381        CALL DPWRST('XXX','BUG ')
16382        WRITE(ICOUT,7013)ICASEQ,IPR,IPR2
16383 7013   FORMAT('ICASEQ,IPR,IPR2 = ',A4,2X,I8,I8)
16384        CALL DPWRST('XXX','BUG ')
16385        WRITE(ICOUT,7014)JMNAM1(1),JMNAM2(1)
16386 7014   FORMAT('JMNAM1(1),JMNAM2(1) = ',A4,A4)
16387        CALL DPWRST('XXX','BUG ')
16388      ENDIF
16389C
16390      IF(NUMM.GE.1)THEN
16391        DO7100IM=1,NUMM
16392C
16393          NR1=NIM(IM)
16394          NC1=IMVAL2(IM)-IMVAL1(IM)+1
16395C
16396          IF(IOFILE.EQ.'NO' .AND. NCWRIF.LT.1)THEN
16397            WRITE(ICOUT,999)
16398            CALL DPWRST('XXX','BUG ')
16399            WRITE(ICOUT,7111)JMNAM1(IM),JMNAM2(IM),NR1
16400 7111       FORMAT('        MATRIX ',A4,A4,'--     ',I8,' ROWS')
16401            CALL DPWRST('XXX','BUG ')
16402            WRITE(ICOUT,7112)NC1
16403 7112       FORMAT('               ',4X,4X,'--     ',I8,' COLUMNS')
16404            CALL DPWRST('XXX','BUG ')
16405          ENDIF
16406C
16407          MAXNPR=NR1
16408          IF(ICASEQ.EQ.'SUBS')THEN
16409            NIOLD=MAXNPR
16410            CALL DPSUBS(NIOLD,ILOCS,NS,IBUGQ,IERROR)
16411            NQ=NIOLD
16412          ELSEIF(ICASEQ.EQ.'FOR')THEN
16413            NIOLD=MAXNPR
16414            CALL DPFOR(NIOLD,NFOR,IROW1,IROWN,
16415     1                 NLOCAL,ILOCS,NS,IBUGQ,IERROR)
16416            NQ=NFOR
16417          ELSE
16418            DO7315I=1,MAXNPR
16419              ISUB(I)=1
16420 7315       CONTINUE
16421            NQ=MAXNPR
16422          ENDIF
16423C
16424          IHMAT1=JMNAM1(IM)
16425          IHMAT2=JMNAM2(IM)
16426          DO7351I=1,NC1
16427            CALL DPAPN2(IHMAT1,IHMAT2,I,
16428     1                  JMNAM3(I),JMNAM4(I),IBUGS2,ISUBRO,IERROR)
16429 7351     CONTINUE
16430C
16431          IF(IOFILE.EQ.'NO'.AND.NCWRIF.LT.1)THEN
16432            WRITE(IPR2,999)
16433            IF(NC1.LE.5)THEN
16434              WRITE(IPR2,7041)(JMNAM3(I),JMNAM4(I),I=1,NC1)
16435 7041         FORMAT(1X,'VARIABLES--',4(2A4,7X),2A4)
16436            ELSE
16437              WRITE(IPR2,7042)(JMNAM3(I),JMNAM4(I),I=1,NC1)
16438 7042         FORMAT(1X,'VARIABLES--',9(2A4,4X),2A4)
16439            ENDIF
16440            WRITE(IPR2,999)
16441          ENDIF
16442C
16443          J=0
16444          DO7500I=1,MAXNPR
16445C
16446            IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')THEN
16447              WRITE(ICOUT,7501)I,ISUB(I)
16448 7501         FORMAT('I,ISUB(I) = ',2I8)
16449              CALL DPWRST('XXX','BUG ')
16450            ENDIF
16451C
16452            IF(ISUB(I).EQ.0)GOTO7500
16453            J=J+1
16454C
16455            DO7510LL=1,NC1
16456              JM=LL
16457              ICOLVJ=IMVAL1(IM)+JM-1
16458              IJ=MAXN*(ICOLVJ-1)+I
16459              IF(ICOLVJ.LE.MAXCOL)ZLIST(LL)=V(IJ)
16460              IF(ICOLVJ.EQ.MAXCP1)ZLIST(LL)=PRED(I)
16461              IF(ICOLVJ.EQ.MAXCP2)ZLIST(LL)=RES(I)
16462              IF(ICOLVJ.EQ.MAXCP3)ZLIST(LL)=YPLOT(I)
16463              IF(ICOLVJ.EQ.MAXCP4)ZLIST(LL)=XPLOT(I)
16464              IF(ICOLVJ.EQ.MAXCP5)ZLIST(LL)=X2PLOT(I)
16465              IF(ICOLVJ.EQ.MAXCP6)ZLIST(LL)=TAGPLO(I)
16466 7510       CONTINUE
16467            IF(NCWRIF.GE.1)THEN
16468              IF(IFMFLG.EQ.'ON')THEN
16469                DO7512LL=1,NC1
16470                  IPTR=(I-1)*NC1+LL
16471                  XSCRT(IPTR)=ZLIST(LL)
16472 7512           CONTINUE
16473              ELSE
16474                IF(ICWRIF(1:5).EQ.'(UNFO'.OR.ICWRIF(1:5).EQ.'(BINA')THEN
16475                  IF(NC1.LE.5)THEN
16476                    WRITE(IPR2,7569,IOSTAT=IOS,ERR=8700)
16477     1                    (ZLIST(LL),LL=1,NC1)
16478                  ELSE
16479                    WRITE(IPR2,7589,IOSTAT=IOS,ERR=8700)
16480     1                   (ZLIST(LL),LL=1,NC1)
16481                  ENDIF
16482                ELSE
16483                  WRITE(IPR2,ICWRIF,IOSTAT=IOS,ERR=8700)
16484     1                  (ZLIST(LL),LL=1,NC1)
16485                ENDIF
16486              ENDIF
16487            ELSEIF(IFORSW.EQ.'E'.OR.IFORSW(1:3).EQ.'EXP')THEN
16488              IF(NC1.LE.5)THEN
16489                WRITE(IPR2,7569,IOSTAT=IOS,ERR=8700)(ZLIST(LL),LL=1,NC1)
16490              ELSE
16491                WRITE(IPR2,7589,IOSTAT=IOS,ERR=8700)(ZLIST(LL),LL=1,NC1)
16492              ENDIF
16493            ELSEIF(IFORSW.EQ.'0')THEN
16494              IF(NC1.LE.5)THEN
16495                WRITE(IPR2,7550,IOSTAT=IOS,ERR=8700)
16496     1               (INT(ZLIST(LL)+SIGN(HALF,ZLIST(LL))),LL=1,NC1)
16497 7550           FORMAT(1X,I10,5X,I10,5X,I10,5X,I10,5X,I10,5X)
16498              ELSE
16499                WRITE(IPR2,7570,IOSTAT=IOS,ERR=8700)
16500     1               (INT(ZLIST(LL)+SIGN(HALF,ZLIST(LL))),LL=1,NC1)
16501 7570           FORMAT(1X,I10,2X,I10,2X,I10,2X,I10,2X,I10,2X,
16502     1                 I10,2X,I10,2X,I10,2X,I10,2X,I10,2X)
16503              ENDIF
16504            ELSEIF(NUMDIG.GE.1.AND.NUMDIG.LE.12)THEN
16505              IFORMT='(  F15.  )'
16506              WRITE(IFORMT(2:3),'(I2)')NC1
16507              WRITE(IFORMT(8:9),'(I2)')NUMDIG
16508              WRITE(IPR2,IFORMT,IOSTAT=IOS,ERR=8700)(ZLIST(LL),LL=1,NC1)
16509            ELSE
16510              IF(NC1.LE.5)THEN
16511                WRITE(IPR2,7569,IOSTAT=IOS,ERR=8700)(ZLIST(LL),LL=1,NC1)
16512 7569           FORMAT(1X,5E15.7)
16513              ELSE
16514                WRITE(IPR2,7589,IOSTAT=IOS,ERR=8700)(ZLIST(LL),LL=1,NC1)
16515 7589           FORMAT(1X,10E12.4)
16516              ENDIF
16517            ENDIF
16518C
16519 7500     CONTINUE
16520C
16521          IF(IFMFLG.EQ.'ON')THEN
16522            NPTS=MAXNPR*NC1
16523            WRITE(IPR2,IOSTAT=IOS,ERR=8700)(XSCRT(I),I=1,NPTS)
16524          ENDIF
16525C
16526 7100   CONTINUE
16527      ENDIF
16528C
16529C               **************************************************
16530C               **  STEP 8A--                                   **
16531C               **  PRINT OUT THE LIST OF UNDEFINED NAMES.      **
16532C               **************************************************
16533C
16534      ISTEPN='8A'
16535      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')
16536     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
16537C
16538      IF(NUMU.GE.1)THEN
16539        WRITE(IPR2,999,IOSTAT=IOS,ERR=8700)
16540        WRITE(IPR2,8111,IOSTAT=IOS,ERR=8700)
16541 8111   FORMAT(1X,'UNDEFINED NAMES--')
16542        WRITE(IPR2,999,IOSTAT=IOS,ERR=8700)
16543        DO8120I=1,NUMU
16544          WRITE(IPR2,8121,IOSTAT=IOS,ERR=8700)JUNAM1(I),JUNAM2(I)
16545 8121     FORMAT(1X,2A4)
16546 8120   CONTINUE
16547        WRITE(IPR2,999,IOSTAT=IOS,ERR=8700)
16548      ENDIF
16549      GOTO8800
16550C
16551C     2016/08: ERROR MESSAGE IF ERROR ON WRITE STATEMENT
16552C
16553 8700 CONTINUE
16554      WRITE(ICOUT,8701)IPR2
16555 8701 FORMAT('****** ERROR TRYING TO WRITE TO UNIT ',I8)
16556      CALL DPWRST('XXX','BUG ')
16557      WRITE(ICOUT,8702)IOS
16558 8702 FORMAT('       STATUS NUMBER = ',I8)
16559      CALL DPWRST('XXX','BUG ')
16560      WRITE(ICOUT,8703)
16561 8703 FORMAT('       LIKELY CAUSE: TRYING TO WRITE TO A FILE ',
16562     1       'THAT DOES NOT HAVE WRITE PERMISSION.')
16563      CALL DPWRST('XXX','BUG ')
16564      IERROR='YES'
16565      GOTO8800
16566C
16567C
16568C               ***************************************
16569C               **  STEP 88--                        **
16570C               **  FOR THE FILE CASE,               **
16571C               **  CLOSE THE FILE.                  **
16572C               ***************************************
16573C
16574 8800 CONTINUE
16575      ISTEPN='88'
16576      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')
16577     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
16578C
16579      IF(IOFILE.EQ.'YES'.AND.ICURST.EQ.'OPEN'.AND.
16580     1   ICASW2.EQ.'0')THEN
16581        IENDFI='ON'
16582        IREWIN='ON'
16583        IF(IWRIRW.EQ.'ON')THEN
16584          CALL DPCLFI(IOUNIT,IFILE,ISTAT,IFORM,IACCES,IPROT,ICURST,
16585     1       IENDFI,IREWIN,ISUBN0,IERRFI,IBUGS2,ISUBRO,IERROR)
16586          IWRICS='CLOSED'
16587        ENDIF
16588      ENDIF
16589C
16590C               *****************
16591C               **  STEP 90--  **
16592C               **  EXIT       **
16593C               *****************
16594C
16595 9000 CONTINUE
16596C
16597      ICSVWR=ICSVSV
16598      IENDFI='OFF'
16599      IREWIN='ON'
16600      CALL DPCLFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,ICURS2,
16601     1            IENDFI,IREWIN,ISUBN0,IERRFI,IBUGS2,ISUBRO,IERROR)
16602      IZCHCS='CLOSED'
16603C
16604      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRIT')THEN
16605        WRITE(ICOUT,999)
16606        CALL DPWRST('XXX','BUG ')
16607        WRITE(ICOUT,9011)
16608 9011   FORMAT('***** AT THE END       OF DPWRIT--')
16609        CALL DPWRST('XXX','BUG ')
16610        WRITE(ICOUT,9015)IFOUND,IERROR
16611 9015   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
16612        CALL DPWRST('XXX','BUG ')
16613        WRITE(ICOUT,9016)IMACRO,IMACNU,IMACCS
16614 9016   FORMAT('IMACRO,IMACNU,IMACCS = ',A4,I8,2X,A12)
16615        CALL DPWRST('XXX','BUG ')
16616        WRITE(ICOUT,9017)IPR,IPR2,IOUNIT
16617 9017   FORMAT('IPR,IPR2,IOUNIT = ',3I8)
16618        CALL DPWRST('XXX','BUG ')
16619        WRITE(ICOUT,9018)IOFILE,IOTERM,IFORSW
16620 9018   FORMAT('IOFILE,IOTERM,IFORSW = ',A4,2X,A4,2X,A4)
16621        CALL DPWRST('XXX','BUG ')
16622        WRITE(ICOUT,9022)IFILE
16623 9022   FORMAT('IFILE  = ',A80)
16624        CALL DPWRST('XXX','BUG ')
16625        WRITE(ICOUT,9023)ISTAT,IFORM,IACCES,IPROT,ICURST
16626 9023   FORMAT('ISTAT,IFORM,IACES,IPROT,ICURST  = ',5(A12,1X))
16627        CALL DPWRST('XXX','BUG ')
16628        WRITE(ICOUT,9028)IENDFI,IREWIN,ISUBN0,IERRFI
16629 9028   FORMAT('IENDFI,IREWIN,ISUBN0,IERRFI = ',4(A4,1X))
16630        CALL DPWRST('XXX','BUG ')
16631        WRITE(ICOUT,9061)NCWRIF
16632 9061   FORMAT('NCWRIF = ',I8)
16633        CALL DPWRST('XXX','BUG ')
16634        IF(NCWRIF.GE.1)THEN
16635          WRITE(ICOUT,9062)(ICWRIF(I:I),I=1,NCWRIF)
16636 9062     FORMAT('(ICWRIF(I:I),I=1,NCWRIF) = ',80A1)
16637          CALL DPWRST('XXX','BUG ')
16638        ENDIF
16639        WRITE(ICOUT,9071)IWRIRW
16640 9071   FORMAT('IWRIRW = ',A4)
16641        CALL DPWRST('XXX','BUG ')
16642      ENDIF
16643C
16644      RETURN
16645      END
16646      SUBROUTINE DPWRI2(IPR2,IOUNIT,IOUNI2,IFLAGC,
16647     1                  IFORSW,NUMDIG,ICWRIF,NCWRIF,IWRIRW,IFORFM,
16648     1                  IOFILE,
16649     1                  MAXV2,MAXP2,MAXM2,MAXF2,MAXU2,MAXE2,MAXGL,
16650     1                  JVNAM1,JPNAM1,JMNAM1,JFNAM1,JUNAM1,JENAM1,
16651     1                  JVNAM2,JPNAM2,JMNAM2,JFNAM2,JUNAM2,JENAM2,
16652     1                  JGLNA1,JGLNA2,JVTYPE,
16653     1                  NIV,NIM,IVCOL2,PVAL,
16654     1                  IFSTA2,IFSTO2,IMVAL1,IMVAL2,
16655     1                  IZLIST,
16656     1                  NUMALL,NUMV,NUMP,NUMM,NUMF,NUMU,NUME,NUMGL,
16657     1                  IV,IP,IM,IF,IU,IE,IGL,
16658     1                  IDONE,IFLAGH,IFLAGT,
16659     1                  ICASEQ,IFWORD,IFQUOT,
16660     1                  IBUGS2,ISUBRO,IFOUND,IERROR)
16661C
16662C     PURPOSE-UTILITY ROUTINE FOR DPWRIT
16663C
16664C             1) PRINT LITERAL STRINGS
16665C             2) CHECK FOR <SUBSET/EXCEPT/FOR> CLAUSE
16666C             3) PRINT PARAMETERS
16667C
16668C     WRITTEN BY--JAMES J. FILLIBEN
16669C                 STATISTICAL ENGINEERING DIVISION
16670C                 INFORMATION TECHNOLOGY LABORATORY
16671C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
16672C                 GAITHERSBURG, MD 20899-8980
16673C                 PHONE--301-975-2899
16674C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
16675C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
16676C     LANGUAGE--ANSI FORTRAN (1977)
16677C     VERSION NUMBER--2009/4
16678C     ORIGINAL VERSION--APRIL     2009. EXTRACT AS SEPARATE SUBROUTINE
16679C     UPDATED         --AUGUST    2016. TRAP ERRORS ON WRITE
16680C     UPDATED         --JUNE      2018. SUPPORT: PRINT GROUP LABELS
16681C     UPDATED         --JUNE      2018. SUPPORT FOR ROW LABELS AND
16682C                                       CHARACTER VARIABLES
16683C     UPDATED         --OCTOBER   2019. SUPPORT FOR "HEAD" AND "TAIL"
16684C
16685C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
16686C
16687      CHARACTER*4 IFORSW
16688      CHARACTER*4 IFORFM
16689      CHARACTER*4 IWRIRW
16690C
16691      CHARACTER*80 ICWRIF
16692      CHARACTER*40 IFORMT
16693      CHARACTER*1  IQUOTE
16694C
16695      CHARACTER*4 IBUGS2
16696      CHARACTER*4 ISUBRO
16697      CHARACTER*4 IFOUND
16698      CHARACTER*4 IERROR
16699C
16700      CHARACTER*4 IFMFLG
16701      CHARACTER*4 ICASEQ
16702      CHARACTER*4 IH1
16703      CHARACTER*4 IH2
16704      CHARACTER*4 IH3
16705      CHARACTER*4 IH4
16706      CHARACTER*8 IH
16707      CHARACTER*4 JVNAM1
16708      CHARACTER*4 JPNAM1
16709      CHARACTER*4 JMNAM1
16710      CHARACTER*4 JFNAM1
16711      CHARACTER*4 JUNAM1
16712      CHARACTER*4 JENAM1
16713      CHARACTER*4 JGLNA1
16714      CHARACTER*4 JVNAM2
16715      CHARACTER*4 JPNAM2
16716      CHARACTER*4 JMNAM2
16717      CHARACTER*4 JFNAM2
16718      CHARACTER*4 JUNAM2
16719      CHARACTER*4 JENAM2
16720      CHARACTER*4 JGLNA2
16721      CHARACTER*4 JVTYPE
16722C
16723      CHARACTER*4 ISUBN1
16724      CHARACTER*4 ISUBN2
16725      CHARACTER*4 ISTEPN
16726      CHARACTER*4 IOFILE
16727      CHARACTER*4 IC4
16728      CHARACTER*1 IC1
16729      CHARACTER*4 ICASWR
16730      CHARACTER*4 IANSI
16731      CHARACTER*4 IANSIR
16732      CHARACTER*4 ICASTO
16733C
16734      CHARACTER*4096 ISTR
16735C
16736CCCCC CHARACTER*80 IFILE
16737CCCCC CHARACTER*12 ISTAT
16738CCCCC CHARACTER*12 IFORM
16739CCCCC CHARACTER*12 IACCES
16740CCCCC CHARACTER*12 IPROT
16741CCCCC CHARACTER*12 ICURST
16742CCCCC CHARACTER*4 IENDFI
16743CCCCC CHARACTER*4 IREWIN
16744CCCCC CHARACTER*4 IERRFI
16745C
16746C---------------------------------------------------------------------
16747C
16748      DIMENSION JVNAM1(*)
16749      DIMENSION JPNAM1(*)
16750      DIMENSION JMNAM1(*)
16751      DIMENSION JFNAM1(*)
16752      DIMENSION JUNAM1(*)
16753      DIMENSION JENAM1(*)
16754      DIMENSION JGLNA1(*)
16755C
16756      DIMENSION JVNAM2(*)
16757      DIMENSION JPNAM2(*)
16758      DIMENSION JMNAM2(*)
16759      DIMENSION JFNAM2(*)
16760      DIMENSION JUNAM2(*)
16761      DIMENSION JENAM2(*)
16762      DIMENSION JGLNA2(*)
16763      DIMENSION JVTYPE(*)
16764C
16765      DIMENSION NIV(*)
16766      DIMENSION NIM(*)
16767      DIMENSION IVCOL2(*)
16768      DIMENSION PVAL(*)
16769      DIMENSION IFSTA2(*)
16770      DIMENSION IFSTO2(*)
16771      DIMENSION IMVAL1(*)
16772      DIMENSION IMVAL2(*)
16773      DIMENSION IZLIST(*)
16774C
16775C-----COMMON----------------------------------------------------------
16776C
16777      INCLUDE 'DPCOPA.INC'
16778      INCLUDE 'DPCOHK.INC'
16779      INCLUDE 'DPCODA.INC'
16780      INCLUDE 'DPCOP2.INC'
16781C
16782C-----START POINT-----------------------------------------------------
16783C
16784      ISUBN1='DPWR'
16785      ISUBN2='I2  '
16786      IDONE=0
16787      IDONE=0
16788      HALF=0.5
16789      CALL DPCONA(39,IQUOTE)
16790C
16791      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')THEN
16792        WRITE(ICOUT,999)
16793  999   FORMAT(1X,1X)
16794        CALL DPWRST('XXX','BUG ')
16795        WRITE(ICOUT,51)
16796   51   FORMAT('***** AT THE BEGINNING OF DPWRI2--')
16797        CALL DPWRST('XXX','BUG ')
16798        WRITE(ICOUT,53)IFLAGT,IOUNIT,IOFILE,IHARLC(1),IWRIRW
16799   53   FORMAT('IFLAGT,IOUNIT,IOFILE,IHARLC(1),IWRIRW = ',
16800     1         2I5,3(2X,A4))
16801        CALL DPWRST('XXX','BUG ')
16802      ENDIF
16803C
16804C               ********************************************************
16805C               **  STEP 1--                                          **
16806C               **  CHECK TO SEE IF OUTPUTTING A CHARACTER STRING.    **
16807C               **  FOR EXAMPLE, WRITE "CALIBRATION ANALYSIS"         **
16808C               **  IF SO, THEN TREAT THIS SPECIAL CASE IMMEDIATELY.  **
16809C               ********************************************************
16810C
16811      ISTEPN='1'
16812      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')
16813     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
16814C
16815      ICASWR='NOST'
16816      IC4=IHARLC(1)
16817      IF(IOFILE.EQ.'YES')IC4=IHARLC(2+IFWORD)
16818      IC1=IC4(1:1)
16819      IF(IC1.EQ.'''')ICASWR='STRI'
16820      IF(IC1.EQ.'"')ICASWR='STRI'
16821C
16822      IF(ICASWR.EQ.'STRI')THEN
16823C
16824        IF(IFMFLG.EQ.'ON')THEN
16825          WRITE(ICOUT,999)
16826          CALL DPWRST('XXX','BUG ')
16827          WRITE(ICOUT,111)
16828  111     FORMAT('***** ERROR IN WRITE COMMAND--')
16829          CALL DPWRST('XXX','BUG ')
16830          WRITE(ICOUT,112)
16831  112     FORMAT('      WRITING A STRING TO AN UNFORMATTED FILE IS ',
16832     1           'NOT PERMITTED.')
16833          CALL DPWRST('XXX','BUG ')
16834          WRITE(ICOUT,113)
16835  113     FORMAT('      ENTER THE COMMAND:  SET WRITE FORMAT WITH NO')
16836          CALL DPWRST('XXX','BUG ')
16837          WRITE(ICOUT,114)
16838  114     FORMAT('      ARGUMENTS TO RESTORE THE WRITE FILE AS A ',
16839     1           'FORMATTED FILE.')
16840          CALL DPWRST('XXX','BUG ')
16841          IERROR='YES'
16842          IDONE=1
16843          GOTO9000
16844        ENDIF
16845C
16846        NQUOT=0
16847        ILOCQ1=0
16848        ILOCQ2=0
16849        DO130I=1,IWIDTH
16850          ILOCQ1=I
16851          IANSI=IANSLC(I)
16852          IF(IFQUOT.EQ.1)THEN
16853            IF(IANSI(1:1).EQ.'"' .OR. IANSI(1:1).EQ.IC1)NQUOT=NQUOT+1
16854            IF(IANSI(1:1).EQ.IC1 .AND. NQUOT.GE.3)GOTO139
16855          ELSE
16856            IF(IANSI(1:1).EQ.IC1)GOTO139
16857          ENDIF
16858  130   CONTINUE
16859  139   CONTINUE
16860C
16861        IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')THEN
16862          WRITE(ICOUT,131)IFQUOT,NQUOT,ILOCQ1
16863  131     FORMAT('AT 139: IFQUOT,NQUOT,ILOCQ1 = ',3I8)
16864          CALL DPWRST('XXX','BUG ')
16865        ENDIF
16866C
16867        IF(ILOCQ1.GT.0)THEN
16868          DO140I=1,IWIDTH
16869            IREV=IWIDTH-I+1
16870            ILOCQ2=IREV
16871            IANSIR=IANSLC(IREV)
16872            IF(IANSIR(1:1).EQ.IC1)GOTO149
16873  140     CONTINUE
16874  149     CONTINUE
16875C
16876          IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')THEN
16877            WRITE(ICOUT,141)ILOCQ2,IPR2
16878  141       FORMAT('AT 149: ILOCQ2,IPR2 = ',2I8)
16879            CALL DPWRST('XXX','BUG ')
16880          ENDIF
16881C
16882          IF(ILOCQ2.GT.0)THEN
16883            ISTART=ILOCQ1+1
16884            ISTOP=ILOCQ2-1
16885            IF(ISTART.GT.ISTOP)THEN
16886              WRITE(IPR2,999,IOSTAT=IOS,ERR=8800)
16887            ELSEIF(ISTART.LE.ISTOP)THEN
16888              IF(IOFILE.EQ.'CLIP')THEN
16889                ICNT=0
16890                DO156II=ISTART,ISTOP
16891                  ICNT=ICNT+1
16892                  ISTR(ICNT:ICNT)=IANSLC(II)(1:1)
16893  156           CONTINUE
16894                IOP=1
16895                ICLOSE=1
16896                CALL DPCLI4(ISTR,ICNT,IOP,ICLOSE,IBUGS2,ISUBRO,IERROR)
16897              ELSE
16898                IF(IFORFM.EQ.'ON')THEN
16899                  WRITE(IPR2,151,IOSTAT=IOS,ERR=8800)
16900     1                  (IANSLC(I),I=ISTART,ISTOP)
16901  151             FORMAT(1X,240A1)
16902                ELSE
16903                  WRITE(IPR2,152,IOSTAT=IOS,ERR=8800)
16904     1                  (IANSLC(I),I=ISTART,ISTOP)
16905  152             FORMAT(240A1)
16906                ENDIF
16907              ENDIF
16908            ENDIF
16909          ENDIF
16910        ENDIF
16911C
16912        IDONE=1
16913        GOTO9000
16914      ENDIF
16915C
16916C               *****************************************
16917C               **  STEP 2--                           **
16918C               **  CHECK TO SEE THE TYPE CASE--       **
16919C               **    1) UNQUALIFIED (THAT IS, FULL);  **
16920C               **    2) SUBSET; OR                    **
16921C               **    3) FOR.                          **
16922C               *****************************************
16923C
16924      ISTEPN='2'
16925      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')
16926     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
16927C
16928      ICASEQ='FULL'
16929C
16930      IF(IFLAGH.EQ.1)THEN
16931        ICASEQ='FOR'
16932      ELSEIF(IFLAGH.EQ.1)THEN
16933        ICASEQ='FOR'
16934      ENDIF
16935C
16936      ILOCQ=NUMARG+1
16937      IF(NUMARG.GE.1)THEN
16938        DO200J=1,NUMARG
16939          J1=J
16940          IF(IHARG(J).EQ.'SUBS'.AND.IHARG2(J).EQ.'ET  ')THEN
16941            ICASEQ='SUBS'
16942            ILOCQ=J1
16943            GOTO290
16944          ELSEIF(IHARG(J).EQ.'EXCE'.AND.IHARG2(J).EQ.'PT  ')THEN
16945            ICASEQ='SUBS'
16946            ILOCQ=J1
16947            GOTO290
16948          ELSEIF(IHARG(J).EQ.'FOR '.AND.IHARG2(J).EQ.'    ')THEN
16949            ICASEQ='FOR'
16950            ILOCQ=J1
16951            GOTO290
16952          ENDIF
16953  200   CONTINUE
16954  290   CONTINUE
16955      ENDIF
16956C
16957      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')THEN
16958        WRITE(ICOUT,291)NUMARG,ILOCQ
16959  291   FORMAT('NUMARG,ILOCQ = ',2I8)
16960        CALL DPWRST('XXX','BUG ')
16961      ENDIF
16962C
16963C               ******************************************************
16964C               **  STEP 3--                                        **
16965C               **  DETERMINE THE TYPE AND NUMBER OF ITEMS          **
16966C               **  TO BE PRINTED.                                  **
16967C               **  NUMALL = TOTAL NUMBER OF PRINT ITEMS            **
16968C               **           (AS DETERMINED BY INCLUDING ONLY ALL   **
16969C               **           BEFORE SUBS' OR 'FOR')                 **
16970C               **  NUMV   = NUMBER OF VARIABLES TO BE PRINTED;     **
16971C               **  NUMP   = NUMBER OF PARAMETERS TO BE PRINTED;    **
16972C               **  NUMM   = NUMBER OF MODELS TO BE PRINTED         **
16973C               **           (SHOULD = 0 OR 1)                      **
16974C               **  NUMF   = NUMBER OF FUNCTIONS TO BE PRINTED      **
16975C               **  NUMU   = NUMBER OF UNKNOWNS TO BE PRINTED;      **
16976C               **  NUME   = TOTAL NUMBER OF PRINT ITEMS            **
16977C               **           (SHOULD = NUMALL);                     **
16978C               ******************************************************
16979C
16980      ISTEPN='3'
16981      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')
16982     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
16983C
16984      NUMALL=ILOCQ-1
16985C
16986      IV=0
16987      IP=0
16988      IM=0
16989      IF=0
16990      IU=0
16991      IE=0
16992      IGL=0
16993      JMIN=1
16994      IF(IOFILE.EQ.'YES')JMIN=2+IFWORD
16995      JMAX=ILOCQ-1
16996C
16997C     2018/06: CHECK TO SEE IF DPZCHF.DAT EXISTS
16998C
16999      IF(JMIN.LE.JMAX)THEN
17000        IF((IHARG(JMIN).EQ.'VARI'.AND.IHARG(JMIN+1).EQ.'ALL').OR.
17001     1     (IHARG(JMIN).EQ.'ALL'.AND.IHARG(JMIN+1).EQ.'VARI'))THEN
17002          IF(NUMCOL.LE.0)THEN
17003            IDONE=1
17004            GOTO9000
17005          ENDIF
17006          NZLIST=0
17007          DO310I=1,NUMCOL
17008            DO311J=1,NUMNAM
17009              IF(I.EQ.IVALUE(J).AND.IUSE(J).EQ.'V')THEN
17010C
17011                IJUNK=IVALUE(J)
17012                IF(NZLIST.GE.1)THEN
17013                  DO312LL=1,NZLIST
17014                    IF(IJUNK.EQ.IZLIST(LL))GOTO310
17015  312             CONTINUE
17016                  NZLIST=NZLIST+1
17017                  IZLIST(NZLIST)=IJUNK
17018                ELSE
17019                  NZLIST=1
17020                  IZLIST(NZLIST)=IJUNK
17021                ENDIF
17022C
17023                IV=IV+1
17024                IF(IV.LE.MAXV2)THEN
17025                  JVNAM1(IV)=IHNAME(J)
17026                  JVNAM2(IV)=IHNAM2(J)
17027                  NIV(IV)=IN(J)
17028                  IVCOL2(IV)=IVALUE(J)
17029                ENDIF
17030                IE=IE+1
17031                IF(IE.LE.MAXE2)THEN
17032                  JENAM1(IE)=IHNAME(J)
17033                  JENAM2(IE)=IHNAM2(J)
17034                ENDIF
17035              ENDIF
17036  311       CONTINUE
17037  310     CONTINUE
17038          GOTO390
17039        ENDIF
17040C
17041        IISKIP=0
17042        DO320J=JMIN,JMAX
17043C
17044          IF(IISKIP.EQ.1)THEN
17045            IISKIP=0
17046            GOTO320
17047          ENDIF
17048C
17049          IH1=IHARG(J)
17050          IH2=IHARG2(J)
17051          IF(J.LT.JMAX)THEN
17052            IH3=IHARG(J+1)
17053            IH4=IHARG2(J+1)
17054          ELSE
17055            IH3=' '
17056            IH4=' '
17057          ENDIF
17058C
17059C         *****************************************************
17060C         ** THE FOLLOWING CODE ALLOWS THE    TO    KEYWORD  **
17061C         ** TO BE ACTIVATED, AS IN                          **
17062C         **        WRITE FILE.EXT Y1 TO Y10                 **
17063C         *****************************************************
17064C
17065C         JULY 2009: THE CASE "Y1 TO Y1" SHOULD JUST SKIP THE
17066C                    "TO Y1" PART.
17067          ICASTO='OFF'
17068          ISKIP=0
17069  325     CONTINUE
17070          IF (IH1.EQ.'TO  ' .OR. ICASTO.EQ.'ON')THEN
17071            IF(ISKIP.EQ.0)THEN
17072              ICASTO='ON'
17073              JM1=J-1
17074              JP1=J+1
17075              CALL DPEXTL(IHARG(JM1),IHARG2(JM1),IHARG(JP1),IHARG2(JP1),
17076     1                    KNUMB,IVAL1,IVAL2,IBUGS2,ISUBRO,IERROR)
17077C
17078              IF(IVAL1.EQ.IVAL2)THEN
17079                IISKIP=1
17080                GOTO320
17081              ENDIF
17082C
17083              IVA1P1=IVAL1+1
17084              IVA2M1=IVAL2-1
17085              IF(IVA1P1.GT.IVA2M1)GOTO320
17086              IVAL=IVAL1
17087            ENDIF
17088            IVAL=IVAL+1
17089            IF(IVAL.GE.IVAL2)GOTO320
17090C
17091            CALL DPAPNU(IHARG(JM1),IHARG2(JM1),KNUMB,IVAL,
17092     1                  IH1,IH2,IBUGS2,ISUBRO,IERROR)
17093          ENDIF
17094C
17095C         SUPPORT:  PRINT PARAMETERS
17096C
17097          IF((IH1.EQ.'PARA'.AND.IH2.EQ.'METE') .OR.
17098     1       (IH1.EQ.'SCAL'.AND.IH2.EQ.'ARS ') .OR.
17099     1       (IH1.EQ.'CONS'.AND.IH2.EQ.'TANT')) THEN
17100            DO335I=1,NUMNAM
17101              I2=I
17102              IF(IUSE(I).EQ.'P')THEN
17103                IH1=IHNAME(I2)
17104                IH2=IHNAM2(I2)
17105                IP=IP+1
17106                IF(IP.GT.MAXP2)GOTO335
17107                JPNAM1(IP)=IH1
17108                JPNAM2(IP)=IH2
17109                PVAL(IP)=VALUE(I2)
17110                IE=IE+1
17111                IF(IE.GT.MAXE2)GOTO335
17112                JENAM1(IE)=IH1
17113                JENAM2(IE)=IH2
17114              ENDIF
17115  335       CONTINUE
17116            GOTO320
17117C
17118C         SUPPORT:  PRINT GROUP LABELS
17119C
17120          ELSEIF(IH1.EQ.'GROU' .AND. IH2.EQ.'P   ' .AND.
17121     1           IH3.EQ.'LABE' .AND. IH4(1:1).EQ.'L')THEN
17122            WRITE(ICOUT,999)
17123            CALL DPWRST('XXX','WRIT')
17124C
17125            ICNT=0
17126            DO790II=1,MAXGRP
17127              IF(IGRPVN(II).EQ.' ')GOTO790
17128              ICNT=ICNT+1
17129              WRITE(ICOUT,999)
17130              CALL DPWRST('XXX','WRIT')
17131              WRITE(ICOUT,791)II,IGRPVN(II)
17132  791         FORMAT('GROUP LABEL ',I5,' NAME: ',A8)
17133              CALL DPWRST('XXX','WRIT')
17134              DO792JJ=1,MAXGLA
17135                IF(IGRPLA(JJ,II).EQ.' ')GOTO793
17136                WRITE(ICOUT,794)JJ,IGRPLA(JJ,II)
17137  794           FORMAT('     LEVEL ',I5,': ',A40)
17138                CALL DPWRST('XXX','WRIT')
17139  792         CONTINUE
17140  793         CONTINUE
17141  790       CONTINUE
17142C
17143            IF(ICNT.EQ.0)THEN
17144              WRITE(ICOUT,999)
17145              CALL DPWRST('XXX','WRIT')
17146              WRITE(ICOUT,799)
17147  799         FORMAT('NO GROUP LABELS CURRENTLY DEFINED.')
17148              CALL DPWRST('XXX','WRIT')
17149            ENDIF
17150            IISKIP=1
17151            GOTO320
17152C
17153          ENDIF
17154C
17155          DO340I=1,NUMNAM
17156            I2=I
17157            IF(IH1.EQ.IHNAME(I).AND.IH2.EQ.IHNAM2(I))THEN
17158              IF(IUSE(I).EQ.'V')THEN
17159                IV=IV+1
17160                IF(IV.GT.MAXV2)GOTO348
17161                JVNAM1(IV)=IH1
17162                JVNAM2(IV)=IH2
17163                JVTYPE(IV)='NUME'
17164                NIV(IV)=IN(I2)
17165                IVCOL2(IV)=IVALUE(I2)
17166                GOTO348
17167              ELSEIF(IUSE(I).EQ.'P')THEN
17168                IP=IP+1
17169                IF(IP.GT.MAXP2)GOTO348
17170                JPNAM1(IP)=IH1
17171                JPNAM2(IP)=IH2
17172                PVAL(IP)=VALUE(I2)
17173                GOTO348
17174              ELSEIF(IUSE(I).EQ.'M')THEN
17175                IM=IM+1
17176                IF(IM.GT.MAXM2)GOTO348
17177                JMNAM1(IM)=IH1
17178                JMNAM2(IM)=IH2
17179                IMVAL1(IM)=IVALUE(I2)
17180                IMVAL2(IM)=IVALU2(I2)
17181                NIM(IM)=IN(I2)
17182                GOTO348
17183              ELSEIF(IUSE(I).EQ.'F')THEN
17184                IF=IF+1
17185                IF(IF.GT.MAXF2)GOTO348
17186                JFNAM1(IF)=IH1
17187                JFNAM2(IF)=IH2
17188                IFSTA2(IF)=IVSTAR(I2)
17189                IFSTO2(IF)=IVSTOP(I2)
17190                GOTO348
17191              ELSE
17192                IU=IU+1
17193                IF(IU.GT.MAXU2)GOTO348
17194                JUNAM1(IU)=IH1
17195                JUNAM2(IU)=IH2
17196                GOTO348
17197              ENDIF
17198            ELSEIF(IH1.EQ.'ROWL'.AND.IH2.EQ.'ABEL')THEN
17199              IV=IV+1
17200              IF(IV.GT.MAXV2)GOTO348
17201              JVNAM1(IV)=IH1
17202              JVNAM2(IV)=IH2
17203              JVTYPE(IV)='ROWL'
17204              NIV(IV)=0
17205              DO22310KK=1,MAXOBV
17206                IF(IROWLB(KK).EQ.' ')THEN
17207                  NIV(IV)=KK-1
17208                  GOTO22319
17209                ENDIF
1721022310         CONTINUE
17211              NIV(IV)=MAXOBV
1721222319         CONTINUE
17213              IVCOL2(IV)=-1
17214              GOTO348
17215            ELSE
17216C
17217C             2018/06: SEARCH FOR
17218C
17219C                      A) GROUP LABEL NAMES
17220C                      B) CHARACTER VARIABLE NAMES
17221C
17222              DO350KK=1,MAXGRP
17223                IF(IH1.EQ.IGRPVN(KK)(1:4) .AND.
17224     1             IH2.EQ.IGRPVN(KK)(5:8))THEN
17225                  IGL=IGL+1
17226                  IF(IGL.GT.MAXGL)GOTO348
17227                  JGLNA1(IGL)=IH1
17228                  JGLNA2(IGL)=IH2
17229                  GOTO348
17230                ENDIF
17231  350         CONTINUE
17232C
17233C             2018/06: IF NAME NOT FOUND IN GROUP LABELS, CHECK FOR
17234C                      CHARACTER VARIABLES
17235C
17236C             2018/07: IF CHARACTER VARIABLE FOUND, CHECK FOR A NUMERIC
17237C                      VARIABLE OF SAME NAME (IN WHICH CASE, IGNORE AND
17238C                      PRINT THE NUMERIC VARIABLE)
17239C
17240              IF(IFLAGC.EQ.1)THEN
17241                REWIND(IOUNI2)
17242                READ(IOUNI2,'(I8)',END=348,ERR=348)NCVAR
17243                REWIND(IOUNI2)
17244                READ(IOUNI2,'(I1)',END=348,ERR=348)IJUNK
17245                DO355KK=1,NCVAR
17246                  READ(IOUNI2,'(A8)',END=348,ERR=348)IH
17247                  IF(IH1.EQ.IH(1:4) .AND. IH2.EQ.IH(5:8))THEN
17248C
17249                    DO358LL=1,NUMNAM
17250                      IF(IH1.EQ.IHNAME(LL) .AND. IH2.EQ.IHNAM2(LL))THEN
17251                        GOTO355
17252                      ENDIF
17253  358               CONTINUE
17254C
17255                    IV=IV+1
17256                    IF(IV.GT.MAXV2)GOTO348
17257                    JVNAM1(IV)=IH1
17258                    JVNAM2(IV)=IH2
17259                    JVTYPE(IV)='CHAR'
17260                    NIV(IV)=0
17261                    IVCOL2(IV)=KK
17262                    GOTO348
17263                  ENDIF
17264  355           CONTINUE
17265              ENDIF
17266            ENDIF
17267  340     CONTINUE
17268C
17269          IU=IU+1
17270          IF(IU.GT.MAXU2)GOTO348
17271          JUNAM1(IU)=IH1
17272          JUNAM2(IU)=IH2
17273C
17274  348     CONTINUE
17275          IE=IE+1
17276          IF(IE.GT.MAXE2)GOTO320
17277          JENAM1(IE)=IH1
17278          JENAM2(IE)=IH2
17279C
17280          IF(ICASTO.EQ.'ON')THEN
17281            ISKIP=1
17282            GOTO325
17283          ENDIF
17284C
17285  320   CONTINUE
17286C
17287      ENDIF
17288C
17289  390 CONTINUE
17290      NUMV=IV
17291      NUMP=IP
17292      NUMM=IM
17293      NUMF=IF
17294      NUMU=IU
17295      NUME=IE
17296      NUMGL=IGL
17297C
17298      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')THEN
17299        WRITE(ICOUT,391)NUMALL,NUMV,NUMP,NUMM,NUMF,NUMU,NUME
17300  391   FORMAT('NUMALL,NUMV,NUMP,NUMM,NUMF,NUMU,NUME = ',7I6)
17301        CALL DPWRST('XXX','BUG ')
17302        WRITE(ICOUT,999)
17303        CALL DPWRST('XXX','BUG ')
17304        WRITE(ICOUT,392)
17305  392   FORMAT('I,JVNAM1(I),JVNAM2(I),JPNAM1(I),JPNAM2(I),',
17306     1         'JMNAM1(I),JMNAM2(I),JFNAM1(I),JFNAM2(I),',
17307     1         'JUNAM1(I),JUNAM2(I)')
17308        CALL DPWRST('XXX','BUG ')
17309        DO395I=1,15
17310          WRITE(ICOUT,396)I,JVNAM1(I),JVNAM2(I),JPNAM1(I),JPNAM2(I),
17311     1                     JMNAM1(I),JMNAM2(I),JFNAM1(I),JFNAM2(I),
17312     1                     JUNAM1(I),JUNAM2(I)
17313  396     FORMAT(I8,5X,2A4,1X,2A4,1X,2A4,1X,2A4,1X,2A4)
17314          CALL DPWRST('XXX','BUG ')
17315  395   CONTINUE
17316      ENDIF
17317C
17318C               ***************************************************
17319C               **  STEP 4--                                     **
17320C               **  CHECK FOR A VALID NUMBER                     **
17321C               **  (0 TO 500) OF VARIABLES TO BE PRINTED        **
17322C               **  (NOTE--THIS DOES NOT INCLUDE PARAMETERS      **
17323C               **  OR MODELS IN THE ABOVE COUNT--               **
17324C               **  ONLY VARIABLES.)                             **
17325C               **  CHECK FOR A VALID NUMBER                     **
17326C               **  (0 TO 500) OF CONSTANTS TO BE PRINTED.       **
17327C               **  CHECK FOR A VALID NUMBER                     **
17328C               **  (0 TO 500) OF MODELS TO BE PRINTED.          **
17329C               **  CHECK FOR A VALID NUMBER                     **
17330C               **  (0 TO 500) OF FUNCTIONS TO BE PRINTED.       **
17331C               **  CHECK FOR A VALID NUMBER                     **
17332C               **  (0 TO 500) OF UNKNOWNS TO BE PRINTED.        **
17333C               ***************************************************
17334C
17335      IF(NUMV.LT.0 .OR. NUMV.GT.MAXV2)THEN
17336        WRITE(ICOUT,411)
17337  411   FORMAT('***** ERROR IN WRITE COMMAND--')
17338        CALL DPWRST('XXX','BUG ')
17339        WRITE(ICOUT,412)
17340  412   FORMAT('      FOR A WRITE, THE NUMBER OF VARIABLES (NOT ',
17341     1         'COUNTING PARAMETERS')
17342        CALL DPWRST('XXX','BUG ')
17343        WRITE(ICOUT,413)MAXV2
17344  413   FORMAT('      OR MODELS) MUST BE AT MOST ',I8,'.')
17345        CALL DPWRST('XXX','BUG ')
17346        WRITE(ICOUT,414)
17347  414   FORMAT('      SUCH WAS NOT THE CASE HERE;  THE SPECIFIED')
17348        CALL DPWRST('XXX','BUG ')
17349        WRITE(ICOUT,415)NUMV
17350  415   FORMAT('      NUMBER OF VARIABLES TO BE PRINTED WAS ',I8,'.')
17351        CALL DPWRST('XXX','BUG ')
17352        WRITE(ICOUT,416)MAXV2
17353  416   FORMAT('      NOTE--ONLY THE FIRST ',I8,' VARIABLES WILL BE ',
17354     1         'PRINTED.')
17355        CALL DPWRST('XXX','BUG ')
17356        WRITE(ICOUT,417)
17357  417   FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
17358        CALL DPWRST('XXX','BUG ')
17359        IF(IWIDTH.GE.1)THEN
17360          WRITE(ICOUT,418)(IANSLC(I),I=1,MIN(80,IWIDTH))
17361  418     FORMAT(80A1)
17362          CALL DPWRST('XXX','BUG ')
17363        ENDIF
17364      ENDIF
17365C
17366      IF(NUMP.LT.0 .OR. NUMP.GT.MAXP2)THEN
17367        WRITE(ICOUT,411)
17368        CALL DPWRST('XXX','BUG ')
17369        WRITE(ICOUT,422)
17370  422   FORMAT('      FOR A WRITE, THE NUMBER OF PARAMETERS')
17371        CALL DPWRST('XXX','BUG ')
17372        WRITE(ICOUT,423)MAXP2
17373  423   FORMAT('      (CONSTANTS) MUST BE AT MOST ',I8,'.')
17374        CALL DPWRST('XXX','BUG ')
17375        WRITE(ICOUT,424)
17376  424   FORMAT('      SUCH WAS NOT THE CASE HERE;  THE SPECIFIED ',
17377     1         'NUMBER')
17378        CALL DPWRST('XXX','BUG ')
17379        WRITE(ICOUT,425)NUMP
17380  425   FORMAT('      OF PARAMETERS TO BE PRINTED WAS ',I8,'.')
17381        CALL DPWRST('XXX','BUG ')
17382        WRITE(ICOUT,426)MAXP2
17383  426   FORMAT('      NOTE--ONLY THE FIRST ',I8,' PARAMETERS WILL ',
17384     1         'BE PRINTED.')
17385        CALL DPWRST('XXX','BUG ')
17386        IF(IWIDTH.GE.1)THEN
17387          WRITE(ICOUT,418)(IANSLC(I),I=1,MIN(80,IWIDTH))
17388          CALL DPWRST('XXX','BUG ')
17389        ENDIF
17390      ENDIF
17391C
17392      IF(NUMM.LT.0 .OR. NUMM.GT.MAXM2)THEN
17393        WRITE(ICOUT,411)
17394        CALL DPWRST('XXX','BUG ')
17395        WRITE(ICOUT,432)
17396  432   FORMAT('      FOR A WRITE, THE NUMBER OF MODELS MUST BE AT')
17397        CALL DPWRST('XXX','BUG ')
17398        WRITE(ICOUT,433)MAXM2
17399  433   FORMAT('      MOST ',I8,'.  SUCH WAS NOT THE CASE HERE;')
17400        CALL DPWRST('XXX','BUG ')
17401        WRITE(ICOUT,434)NUMM
17402  434   FORMAT('      THE SPECIFIED NUMBER OF MODELS TO BE PRINTED ',
17403     1         'WAS ',I8,'.')
17404        CALL DPWRST('XXX','BUG ')
17405        WRITE(ICOUT,435)MAXM2
17406  435   FORMAT('      NOTE--ONLY THE FIRST ',I8,' MODELS WILL BE ',
17407     1         'PRINTED.')
17408        CALL DPWRST('XXX','BUG ')
17409        IF(IWIDTH.GE.1)THEN
17410          WRITE(ICOUT,418)(IANSLC(I),I=1,MIN(80,IWIDTH))
17411          CALL DPWRST('XXX','BUG ')
17412        ENDIF
17413      ENDIF
17414C
17415      IF(NUMF.LT.0 .OR. NUMF.GT.MAXF2)THEN
17416        WRITE(ICOUT,411)
17417        CALL DPWRST('XXX','BUG ')
17418        WRITE(ICOUT,442)
17419  442   FORMAT('      FOR A PRINT, THE NUMBER OF FUNCTIONS MUST BE AT')
17420        CALL DPWRST('XXX','BUG ')
17421        WRITE(ICOUT,443)MAXF2
17422  443   FORMAT('      MOST ',I8,'.  SUCH WAS NOT THE CASE HERE;')
17423        CALL DPWRST('XXX','BUG ')
17424        WRITE(ICOUT,444)NUMF
17425  444   FORMAT('      THE SPECIFIED NUMBER OF FUNCTIONS TO BE ',
17426     1         'PRINTED WAS ',I8,'.')
17427        CALL DPWRST('XXX','BUG ')
17428        WRITE(ICOUT,445)MAXF2
17429  445   FORMAT('      NOTE--ONLY THE FIRST ',I8,' FUNCTIONS WILL BE ',
17430     1         'PRINTED.')
17431        CALL DPWRST('XXX','BUG ')
17432        IF(IWIDTH.GE.1)THEN
17433          WRITE(ICOUT,418)(IANSLC(I),I=1,MIN(80,IWIDTH))
17434          CALL DPWRST('XXX','BUG ')
17435        ENDIF
17436      ENDIF
17437C
17438      IF(NUMU.LT.0 .OR. NUMU.GT.MAXU2)THEN
17439        WRITE(ICOUT,411)
17440        CALL DPWRST('XXX','BUG ')
17441        WRITE(ICOUT,452)
17442  452   FORMAT('      FOR A PRINT, THE NUMBER OF UNKNOWNS MUST BE AT')
17443        CALL DPWRST('XXX','BUG ')
17444        WRITE(ICOUT,453)MAXU2
17445  453   FORMAT('      MOST ',I8,'.  SUCH WAS NOT THE CASE HERE;')
17446        CALL DPWRST('XXX','BUG ')
17447        WRITE(ICOUT,454)NUMU
17448  454   FORMAT('      THE SPECIFIED NUMBER OF UNKNOWNS TO BE PRINTED ',
17449     1         'WAS ',I8,'.')
17450        CALL DPWRST('XXX','BUG ')
17451        WRITE(ICOUT,455)MAXU2
17452  455   FORMAT('      NOTE--ONLY THE FIRST ',I8,' UNKNOWNS WILL BE ',
17453     1         'PRINTED.')
17454        CALL DPWRST('XXX','BUG ')
17455        IF(IWIDTH.GE.1)THEN
17456          WRITE(ICOUT,418)(IANSLC(I),I=1,MIN(80,IWIDTH))
17457          CALL DPWRST('XXX','BUG ')
17458        ENDIF
17459      ENDIF
17460C
17461      IF(NUMGL.LT.0 .OR. NUMGL.GT.MAXGL)THEN
17462        WRITE(ICOUT,411)
17463        CALL DPWRST('XXX','BUG ')
17464        WRITE(ICOUT,462)
17465  462   FORMAT('      FOR A WRITE, THE NUMBER OF GROUP LABELS')
17466        CALL DPWRST('XXX','BUG ')
17467        WRITE(ICOUT,463)MAXGL
17468  463   FORMAT('      MUST BE AT MOST ',I8,'.')
17469        CALL DPWRST('XXX','BUG ')
17470        WRITE(ICOUT,464)
17471  464   FORMAT('      SUCH WAS NOT THE CASE HERE;  THE SPECIFIED ',
17472     1         'NUMBER')
17473        CALL DPWRST('XXX','BUG ')
17474        WRITE(ICOUT,465)NUMGL
17475  465   FORMAT('      OF GROUP LABELS TO BE PRINTED WAS ',I8,'.')
17476        CALL DPWRST('XXX','BUG ')
17477        WRITE(ICOUT,466)MAXGL
17478  466   FORMAT('      NOTE--ONLY THE FIRST ',I8,' GROUP LABELS WILL ',
17479     1         'BE PRINTED.')
17480        CALL DPWRST('XXX','BUG ')
17481        IF(IWIDTH.GE.1)THEN
17482          WRITE(ICOUT,418)(IANSLC(I),I=1,MIN(80,IWIDTH))
17483          CALL DPWRST('XXX','BUG ')
17484        ENDIF
17485      ENDIF
17486C
17487C               ******************************************
17488C               **  STEP 5A--                           **
17489C               **  PRINT OUT FUNCTIONS IF CALLED FOR.  **
17490C               ******************************************
17491C
17492      ISTEPN='5A'
17493      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')
17494     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
17495C
17496      ISTR=' '
17497      ICNT=0
17498      MAXCNT=2048
17499C
17500      IF(NUMF.GT.0)THEN
17501        IF(IOFILE.EQ.'NO' .AND. NCWRIF.LT.1)THEN
17502          WRITE(IPR2,999,IOSTAT=IOS,ERR=8800)
17503          WRITE(IPR2,501,IOSTAT=IOS,ERR=8800)
17504  501     FORMAT(1X,'FUNCTIONS--')
17505          WRITE(IPR2,999,IOSTAT=IOS,ERR=8800)
17506        ENDIF
17507        IF(IFMFLG.EQ.'ON')THEN
17508          WRITE(ICOUT,999)
17509          CALL DPWRST('XXX','BUG ')
17510          WRITE(ICOUT,411)
17511          CALL DPWRST('XXX','BUG ')
17512          WRITE(ICOUT,512)
17513  512     FORMAT('      IT IS ILLEGAL TO WRITE A FUNCTION TO AN ',
17514     1           'UNFORMATTED FILE.')
17515          CALL DPWRST('XXX','BUG ')
17516          WRITE(ICOUT,514)
17517  514     FORMAT('      ENTER THE COMMAND:  SET WRITE FORMAT WITH NO')
17518          CALL DPWRST('XXX','BUG ')
17519          WRITE(ICOUT,516)
17520  516     FORMAT('      ARGUMENTS TO RESTORE THE WRITE FILE AS A ',
17521     1           'FORMATTED FILE.')
17522          CALL DPWRST('XXX','BUG ')
17523          IERROR='YES'
17524          IDONE=1
17525          GOTO9000
17526        ENDIF
17527C
17528        DO521I=1,NUMF
17529          JMIN=IFSTA2(I)
17530          JMAX=IFSTO2(I)
17531          IF(JMAX-JMIN.GT.115)JMAX=JMIN+115
17532          IF(IOFILE.EQ.'CLIP')THEN
17533            DO522II=JMIN,JMAX
17534              IF(ICNT.LT.MAXCNT)THEN
17535                ICNT=ICNT+1
17536                ISTR(ICNT:ICNT)=IFUNC(II)(1:1)
17537              ENDIF
17538  522       CONTINUE
17539            IF(I.LT.NUMF)THEN
17540              IF(ICNT.LT.MAXCNT-2)THEN
17541                ICNT=ICNT+1
17542                ISTR(ICNT:ICNT)=CHAR(13)
17543                ICNT=ICNT+1
17544                ISTR(ICNT:ICNT)=CHAR(10)
17545              ENDIF
17546            ELSE
17547              IF(ICNT.LT.MAXCNT-2 .AND. NUMP.GE.1)THEN
17548                ICNT=ICNT+1
17549                ISTR(ICNT:ICNT)=CHAR(13)
17550                ICNT=ICNT+1
17551                ISTR(ICNT:ICNT)=CHAR(10)
17552              ENDIF
17553            ENDIF
17554          ELSE
17555C
17556C           2015/08: IGNORE "SET WRITE FORMAT" FOR STRINGS
17557C
17558            IF(NCWRIF.LE.0)THEN
17559              WRITE(IPR2,523,IOSTAT=IOS,ERR=8800)JFNAM1(I),JFNAM2(I),
17560     1              (IFUNC(J),J=JMIN,JMAX)
17561  523         FORMAT(1X,4X,2A4,'--',115A1)
17562            ELSE
17563CCCCC         WRITE(IPR2,ICWRIF)(IFUNC(J),J=JMIN,JMAX)
17564              WRITE(IPR2,523,IOSTAT=IOS,ERR=8800)JFNAM1(I),JFNAM2(I),
17565     1              (IFUNC(J),J=JMIN,JMAX)
17566            ENDIF
17567          ENDIF
17568  521   CONTINUE
17569      ENDIF
17570C
17571C               ******************************************************
17572C               **  STEP 6--                                        **
17573C               **  PRINT OUT THE PARAMETERS AND CONSTANTS THAT     **
17574C               **  WERE SPECIFIED.                                 **
17575C               ******************************************************
17576C
17577      ISTEPN='6'
17578      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')
17579     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
17580C
17581      IF(NUMP.GE.1)THEN
17582C
17583        IF(NCWRIF.GE.1 .AND. IOFILE.NE.'CLIP')THEN
17584          IF(IFMFLG.EQ.'ON')THEN
17585            WRITE(ICOUT,999)
17586            CALL DPWRST('XXX','BUG ')
17587            WRITE(ICOUT,411)
17588            CALL DPWRST('XXX','BUG ')
17589            WRITE(ICOUT,601)
17590  601       FORMAT('      IT IS ILLEGAL TO WRITE A PARAMETER TO AN ',
17591     1             'UNFORMATTED FILE.')
17592            CALL DPWRST('XXX','BUG ')
17593            WRITE(ICOUT,603)
17594  603       FORMAT('      ENTER THE COMMAND:  SET WRITE FORMAT ')
17595            CALL DPWRST('XXX','BUG ')
17596            WRITE(ICOUT,604)
17597  604       FORMAT('      WITH NO ARGUMENTS TO RESTORE THE WRITE FILE ',
17598     1             'AS A FORMATTED FILE.')
17599            CALL DPWRST('XXX','BUG ')
17600            IDONE=1
17601            IERROR='YES'
17602            GOTO9000
17603          ENDIF
17604C
17605          IF(NUMP.GE.1.AND.NUMP.LE.20)THEN
17606            WRITE(IPR2,ICWRIF,IOSTAT=IOS,ERR=8800) (PVAL(LL),LL=1,NUMP)
17607          ENDIF
17608        ELSE
17609C
17610          IF(IOFILE.EQ.'NO')THEN
17611            WRITE(IPR2,999,IOSTAT=IOS,ERR=8800)
17612            WRITE(IPR2,611,IOSTAT=IOS,ERR=8800)
17613  611       FORMAT(1X,'PARAMETERS AND CONSTANTS--')
17614            WRITE(IPR2,999,IOSTAT=IOS,ERR=8800)
17615          ENDIF
17616C
17617          DO620I=1,NUMP
17618            Z1=PVAL(I)
17619            IF(IOFILE.EQ.'CLIP' .AND. ICNT.LT.MAXCNT-17)THEN
17620              ICNT1=ICNT+1
17621              ICNT2=ICNT+15
17622              WRITE(ISTR(ICNT1:ICNT2),'(E15.7)')Z1
17623              ICNT=ICNT+15
17624              IF(I.NE.NUMP)THEN
17625                ICNT=ICNT+1
17626                ISTR(ICNT:ICNT)=CHAR(13)
17627                ICNT=ICNT+1
17628                ISTR(ICNT:ICNT)=CHAR(10)
17629              ENDIF
17630            ELSEIF(IFORSW.EQ.'E'.OR.IFORSW.EQ.'EXP'.OR.
17631     1             IFORSW.EQ.'EXPO')THEN
17632              WRITE(IPR2,621,IOSTAT=IOS,ERR=8800)JPNAM1(I),JPNAM2(I),Z1
17633  621         FORMAT(1X,4X,2A4,'--',E15.7)
17634            ELSEIF(IFORSW.EQ.'0')THEN
17635              IZ1=INT(Z1+SIGN(HALF,Z1) + 0.1)
17636              WRITE(IPR2,622,IOSTAT=IOS,ERR=8800)JPNAM1(I),JPNAM2(I),IZ1
17637  622         FORMAT(1X,4X,2A4,'--',I10)
17638            ELSEIF(NUMDIG.GE.1.AND.NUMDIG.LE.12)THEN
17639              IFORMT='(4X,2A4, -- ,F15.  )'
17640              IFORMT(9:9)=IQUOTE
17641              IFORMT(12:12)=IQUOTE
17642              WRITE(IFORMT(18:19),'(I2)')NUMDIG
17643              WRITE(IPR2,IFORMT,IOSTAT=IOS,ERR=8800)JPNAM1(I),
17644     1              JPNAM2(I),Z1
17645            ELSE
17646              WRITE(IPR2,621,IOSTAT=IOS,ERR=8800)JPNAM1(I),JPNAM2(I),Z1
17647            ENDIF
17648  620     CONTINUE
17649C
17650        ENDIF
17651C
17652      ENDIF
17653C
17654C               ******************************************************
17655C               **  STEP 6.3--                                      **
17656C               **  PRINT OUT THE GROUP LABELS THAT WERE SPECIFIED. **
17657C               ******************************************************
17658C
17659      ISTEPN='6.3'
17660      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')
17661     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
17662C
17663      IF(NUMGL.GE.1)THEN
17664        WRITE(ICOUT,999)
17665        CALL DPWRST('XXX','WRIT')
17666C
17667        IF(IFMFLG.EQ.'ON')THEN
17668          WRITE(ICOUT,999)
17669          CALL DPWRST('XXX','BUG ')
17670          WRITE(ICOUT,411)
17671          CALL DPWRST('XXX','BUG ')
17672          WRITE(ICOUT,631)
17673  631     FORMAT('      IT IS ILLEGAL TO WRITE GROUP LABELS TO AN ',
17674     1           'UNFORMATTED FILE.')
17675          CALL DPWRST('XXX','BUG ')
17676          WRITE(ICOUT,603)
17677          CALL DPWRST('XXX','BUG ')
17678          WRITE(ICOUT,604)
17679          CALL DPWRST('XXX','BUG ')
17680          IDONE=1
17681          IERROR='YES'
17682          GOTO9000
17683        ENDIF
17684C
17685        WRITE(ICOUT,632)
17686  632   FORMAT('GROUP LABELS--')
17687        CALL DPWRST('XXX','BUG ')
17688C
17689        DO633KK=1,NUMGL
17690          IH1=JGLNA1(KK)
17691          IH2=JGLNA2(KK)
17692          DO634II=1,MAXGRP
17693            IF(IH1.EQ.IGRPVN(II)(1:4) .AND. IH2.EQ.IGRPVN(II)(5:8))THEN
17694              WRITE(ICOUT,999)
17695              CALL DPWRST('XXX','WRIT')
17696              WRITE(ICOUT,638)II,IGRPVN(II)
17697  638         FORMAT('GROUP LABEL ',I5,' NAME: ',A8)
17698              CALL DPWRST('XXX','WRIT')
17699              DO635JJ=1,MAXGLA
17700                IF(IGRPLA(JJ,II).EQ.' ')GOTO637
17701                WRITE(ICOUT,636)JJ,IGRPLA(JJ,II)
17702  636           FORMAT('     LEVEL ',I5,': ',A40)
17703                CALL DPWRST('XXX','WRIT')
17704  635         CONTINUE
17705  637         CONTINUE
17706            ENDIF
17707  634     CONTINUE
17708  633   CONTINUE
17709C
17710      ENDIF
17711C
17712C
17713C     SEND STRINGS AND PARAMETERS TO CLIPBOARD
17714C
17715      IF(IOFILE.EQ.'CLIP' .AND. ICNT.GT.0)THEN
17716        IOP=1
17717        ICLOSE=1
17718        CALL DPCLI4(ISTR,ICNT,IOP,ICLOSE,IBUGS2,ISUBRO,IERROR)
17719      ENDIF
17720C
17721C     2016/08: ERROR MESSAGE IF ERROR ON WRITE STATEMENT
17722C
17723      GOTO9000
17724 8800 CONTINUE
17725      WRITE(ICOUT,8801)IPR2
17726 8801 FORMAT('****** ERROR TRYING TO WRITE TO UNIT ',I8)
17727      CALL DPWRST('XXX','BUG ')
17728      WRITE(ICOUT,8802)IOS
17729 8802 FORMAT('       STATUS NUMBER = ',I8)
17730      CALL DPWRST('XXX','BUG ')
17731      WRITE(ICOUT,8803)
17732 8803 FORMAT('       LIKELY CAUSE: TRYING TO WRITE TO A FILE ',
17733     1       'THAT DOES NOT HAVE WRITE PERMISSION.')
17734      CALL DPWRST('XXX','BUG ')
17735      IERROR='YES'
17736      GOTO9000
17737C
17738C               *****************
17739C               **  STEP 90--  **
17740C               **  EXIT       **
17741C               *****************
17742C
17743 9000 CONTINUE
17744      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'WRI2')THEN
17745        WRITE(ICOUT,999)
17746        CALL DPWRST('XXX','BUG ')
17747        WRITE(ICOUT,9011)
17748 9011   FORMAT('***** AT THE END       OF DPWRI2--')
17749        CALL DPWRST('XXX','BUG ')
17750        WRITE(ICOUT,9015)IFOUND,IERROR,IDONE
17751 9015   FORMAT('IFOUND,IERROR,IDONE = ',A4,2X,A4,2X,I4)
17752        CALL DPWRST('XXX','BUG ')
17753      ENDIF
17754C
17755      RETURN
17756      END
17757      SUBROUTINE DPWRLA(PXMIN,PYMIN,PXMAX,PYMAX,
17758     1ITITTE,NCTITL,ITITCV,PTITRV,
17759     1IX1LTE,NCX1LA,IX1LCV,PX1LRV,
17760     1IX2LTE,NCX2LA,IX2LCV,PX2LRV,
17761     1IX3LTE,NCX3LA,IX3LCV,PX3LRV,
17762     1IY1LTE,NCY1LA,IY1LCV,PY1LRV,
17763     1IY2LTE,NCY2LA,IY2LCV,PY2LRV,
17764     1ISYMBL,ISPAC,
17765     1IMPSW2,AMPSCH,AMPSCW,
17766     1IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
17767     1IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,ISEQSW,NUMSEQ)
17768C
17769C     PURPOSE--WRITE OUT LABELS, AND THE TITLE
17770C              ON A PLOT.
17771C
17772C     WRITTEN BY--JAMES J. FILLIBEN
17773C                 STATISTICAL ENGINEERING DIVISION
17774C                 INFORMATION TECHNOLOGY LABORATORY
17775C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
17776C                 GAITHERSBURG, MD 20899-8980
17777C                 PHONE--301-975-2899
17778C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
17779C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
17780C     LANGUAGE--ANSI FORTRAN (1977)
17781C     VERSION NUMBER--83.6
17782C     ORIGINAL VERSION (AS A SEPARATE SUBROUTINE)--MAY       1983.
17783C     UPDATED         --FEBRUARY   1989. VERTICAL JUST. OF Y...LABEL (ALAN)
17784C     UPDATED         --FEBRUARY   1989. VERTICAL SIZE OF Y...LABEL (ALAN)
17785C     UPDATED         --OCTOBER    1999. JUSTIFICATION AND OFFSET FOR LABELS
17786C     UPDATED         --NOVEMBER   1999. DIRECTION AND ANGLE FOR LABELS
17787C     UPDATED         --OCTOBER    2018. LABEL COORDINATES
17788C
17789C-----NON-COMMON VARIABLES (GRAPHICS)-------------------------------------------
17790C
17791      CHARACTER*4 ITITTE
17792      CHARACTER*4 ITITFO
17793      CHARACTER*4 ITITCA
17794      CHARACTER*4 ITITFI
17795      CHARACTER*4 ITITCO
17796C
17797      CHARACTER*4 IX1LTE
17798      CHARACTER*4 IX1LFO
17799      CHARACTER*4 IX1LCA
17800      CHARACTER*4 IX1LFI
17801      CHARACTER*4 IX1LCO
17802      CHARACTER*4 IX1LJU
17803      CHARACTER*4 IX1LDI
17804C
17805      CHARACTER*4 IX2LTE
17806      CHARACTER*4 IX2LFO
17807      CHARACTER*4 IX2LCA
17808      CHARACTER*4 IX2LFI
17809      CHARACTER*4 IX2LCO
17810      CHARACTER*4 IX2LJU
17811      CHARACTER*4 IX2LDI
17812C
17813      CHARACTER*4 IX3LTE
17814      CHARACTER*4 IX3LFO
17815      CHARACTER*4 IX3LCA
17816      CHARACTER*4 IX3LFI
17817      CHARACTER*4 IX3LCO
17818      CHARACTER*4 IX3LJU
17819      CHARACTER*4 IX3LDI
17820C
17821      CHARACTER*4 IY1LTE
17822      CHARACTER*4 IY1LFO
17823      CHARACTER*4 IY1LCA
17824      CHARACTER*4 IY1LFI
17825      CHARACTER*4 IY1LCO
17826      CHARACTER*4 IY1LJU
17827      CHARACTER*4 IY1LDI
17828C
17829      CHARACTER*4 IY2LTE
17830      CHARACTER*4 IY2LFO
17831      CHARACTER*4 IY2LCA
17832      CHARACTER*4 IY2LFI
17833      CHARACTER*4 IY2LCO
17834      CHARACTER*4 IY2LJU
17835      CHARACTER*4 IY2LDI
17836C
17837      CHARACTER*4 IFONT
17838      CHARACTER*4 ICASE
17839      CHARACTER*4 IJUST
17840      CHARACTER*4 IDIR
17841      CHARACTER*4 IFILL
17842      CHARACTER*4 ICOL
17843C
17844      CHARACTER*24 ISYMBL
17845      CHARACTER*4 ISPAC
17846      CHARACTER*4 IMPSW2
17847C
17848      CHARACTER*4 ICTEXT
17849C
17850      CHARACTER*4 IHNAME
17851      CHARACTER*4 IHNAM2
17852      CHARACTER*4 IUSE
17853      CHARACTER*4 IFUNC
17854C
17855      CHARACTER*1 IREPCH
17856C
17857      CHARACTER*4 ISEQSW
17858C
17859      CHARACTER*4 ITITCV
17860      CHARACTER*4 IX1LCV
17861      CHARACTER*4 IX2LCV
17862      CHARACTER*4 IX3LCV
17863      CHARACTER*4 IY1LCV
17864      CHARACTER*4 IY2LCV
17865C
17866      DIMENSION ITITTE(*)
17867      DIMENSION IX1LTE(*)
17868      DIMENSION IX2LTE(*)
17869      DIMENSION IX3LTE(*)
17870      DIMENSION IY1LTE(*)
17871      DIMENSION IY2LTE(*)
17872C
17873      DIMENSION ICTEXT(130)
17874C
17875      DIMENSION IHNAME(*)
17876      DIMENSION IHNAM2(*)
17877      DIMENSION IUSE(*)
17878      DIMENSION IVALUE(*)
17879      DIMENSION VALUE(*)
17880      DIMENSION IVSTAR(*)
17881      DIMENSION IVSTOP(*)
17882      DIMENSION IFUNC(*)
17883C
17884      DIMENSION ITITCV(*)
17885      DIMENSION PTITRV(*)
17886      DIMENSION IX1LCV(*)
17887      DIMENSION PX1LRV(*)
17888      DIMENSION IX2LCV(*)
17889      DIMENSION PX2LRV(*)
17890      DIMENSION IX3LCV(*)
17891      DIMENSION PX3LRV(*)
17892      DIMENSION IY1LCV(*)
17893      DIMENSION PY1LRV(*)
17894      DIMENSION IY2LCV(*)
17895      DIMENSION PY2LRV(*)
17896C
17897C-----COMMON----------------------------------------------------------
17898C
17899      INCLUDE 'DPCOGR.INC'
17900      INCLUDE 'DPCOBE.INC'
17901      INCLUDE 'DPCOP2.INC'
17902C
17903C-----START POINT-----------------------------------------------------
17904C
17905      ITITFO=ITITCV(1)
17906      ITITCA=ITITCV(2)
17907      ITITFI=ITITCV(3)
17908      ITITCO=ITITCV(4)
17909      PTITHE=PTITRV(1)
17910      PTITWI=PTITRV(2)
17911      PTITVG=PTITRV(3)
17912      PTITHG=PTITRV(4)
17913      PTITTH=PTITRV(5)
17914      PTITDS=PTITRV(6)
17915C
17916      IX1LFO=IX1LCV(1)
17917      IX1LCA=IX1LCV(2)
17918      IX1LFI=IX1LCV(3)
17919      IX1LCO=IX1LCV(4)
17920      IX1LJU=IX1LCV(5)
17921      IX1LDI=IX1LCV(6)
17922      PX1LHE=PX1LRV(1)
17923      PX1LWI=PX1LRV(2)
17924      PX1LVG=PX1LRV(3)
17925      PX1LHG=PX1LRV(4)
17926      PX1LTH=PX1LRV(5)
17927      PX1LDS=PX1LRV(6)
17928      PX1LOF=PX1LRV(7)
17929      PX1LAN=PX1LRV(8)
17930      PX1LXC=PX1LRV(9)
17931      PX1LYC=PX1LRV(10)
17932C
17933      IX2LFO=IX2LCV(1)
17934      IX2LCA=IX2LCV(2)
17935      IX2LFI=IX2LCV(3)
17936      IX2LCO=IX2LCV(4)
17937      IX2LJU=IX2LCV(5)
17938      IX2LDI=IX2LCV(6)
17939      PX2LHE=PX2LRV(1)
17940      PX2LWI=PX2LRV(2)
17941      PX2LVG=PX2LRV(3)
17942      PX2LHG=PX2LRV(4)
17943      PX2LTH=PX2LRV(5)
17944      PX2LDS=PX2LRV(6)
17945      PX2LOF=PX2LRV(7)
17946      PX2LAN=PX2LRV(8)
17947      PX2LXC=PX2LRV(9)
17948      PX2LYC=PX2LRV(10)
17949C
17950      IX3LFO=IX3LCV(1)
17951      IX3LCA=IX3LCV(2)
17952      IX3LFI=IX3LCV(3)
17953      IX3LCO=IX3LCV(4)
17954      IX3LJU=IX3LCV(5)
17955      IX3LDI=IX3LCV(6)
17956      PX3LHE=PX3LRV(1)
17957      PX3LWI=PX3LRV(2)
17958      PX3LVG=PX3LRV(3)
17959      PX3LHG=PX3LRV(4)
17960      PX3LTH=PX3LRV(5)
17961      PX3LDS=PX3LRV(6)
17962      PX3LOF=PX3LRV(7)
17963      PX3LAN=PX3LRV(8)
17964      PX3LXC=PX3LRV(9)
17965      PX3LYC=PX3LRV(10)
17966C
17967      IY1LFO=IY1LCV(1)
17968      IY1LCA=IY1LCV(2)
17969      IY1LFI=IY1LCV(3)
17970      IY1LCO=IY1LCV(4)
17971      IY1LJU=IY1LCV(5)
17972      IY1LDI=IY1LCV(6)
17973      PY1LHE=PY1LRV(1)
17974      PY1LWI=PY1LRV(2)
17975      PY1LVG=PY1LRV(3)
17976      PY1LHG=PY1LRV(4)
17977      PY1LTH=PY1LRV(5)
17978      PY1LDS=PY1LRV(6)
17979      PY1LOF=PY1LRV(7)
17980      PY1LAN=PY1LRV(8)
17981      PY1LXC=PY1LRV(9)
17982      PY1LYC=PY1LRV(10)
17983C
17984      IY2LFO=IY2LCV(1)
17985      IY2LCA=IY2LCV(2)
17986      IY2LFI=IY2LCV(3)
17987      IY2LCO=IY2LCV(4)
17988      IY2LJU=IY2LCV(5)
17989      IY2LDI=IY2LCV(6)
17990      PY2LHE=PY2LRV(1)
17991      PY2LWI=PY2LRV(2)
17992      PY2LVG=PY2LRV(3)
17993      PY2LHG=PY2LRV(4)
17994      PY2LTH=PY2LRV(5)
17995      PY2LDS=PY2LRV(6)
17996      PY2LOF=PY2LRV(7)
17997      PY2LAN=PY2LRV(8)
17998      PY2LXC=PY2LRV(9)
17999      PY2LYC=PY2LRV(10)
18000C
18001      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRLA')THEN
18002        WRITE(ICOUT,999)
18003  999   FORMAT(1X)
18004        CALL DPWRST('XXX','BUG ')
18005        WRITE(ICOUT,51)
18006   51   FORMAT('***** AT THE BEGINNING OF DPWRLA--')
18007        CALL DPWRST('XXX','BUG ')
18008        WRITE(ICOUT,52)IMANUF,IMODEL,ISEQSW,IREPCH
18009   52   FORMAT('IMANUF,IMODEL,ISEQSW,IREPCH = ',3(A4,2X),A1)
18010        CALL DPWRST('XXX','BUG ')
18011        WRITE(ICOUT,56)NUMNAM,NUMSEQ
18012   56   FORMAT('NUMNAM,NUMSEQ = ',2I8)
18013        CALL DPWRST('XXX','BUG ')
18014        WRITE(ICOUT,59)IBUGG4,ISUBG4,IERRG4
18015   59   FORMAT('IBUGG4,ISUBG4,IERRG4 = ',2(A4,2X),A4)
18016        CALL DPWRST('XXX','BUG ')
18017      ENDIF
18018C
18019C               ***************************
18020C               **  STEP 1--             **
18021C               **  WRITE OUT THE TITLE  **
18022C               ***************************
18023C
18024      IF(NCTITL.LE.0)GOTO1190
18025C
18026      PX1=(PXMIN+PXMAX)/2.0
18027      PY1=PYMAX+PTITDS
18028C
18029      NCTEXT=NCTITL
18030      DO1110I=1,NCTEXT
18031      ICTEXT(I)=ITITTE(I)
18032 1110 CONTINUE
18033C
18034      IFONT=ITITFO
18035      ICASE=ITITCA
18036      IJUST='CEBO'
18037      IDIR='HORI'
18038      ANGLE=0.0
18039      IFILL=ITITFI
18040      ICOL=ITITCO
18041C
18042      PHEIGH=PTITHE
18043      PWIDTH=PTITWI
18044      PVEGAP=PTITVG
18045      PHOGAP=PTITHG
18046      PTHICK=PTITTH
18047C
18048      IF(NCTEXT.GE.1)CALL DPREPL(ICTEXT,NCTEXT,
18049     1IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
18050     1IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,
18051     1IBUGG4,IERRG4)
18052C
18053      CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
18054     1IFONT,ICASE,IJUST,IDIR,ANGLE,IFILL,ICOL,
18055     1PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
18056     1ISYMBL,ISPAC,
18057     1IMPSW2,AMPSCH,AMPSCW,
18058     1PX99,PY99)
18059C
18060 1190 CONTINUE
18061C
18062C               *************************************************
18063C               **  STEP 2--                                   **
18064C               **  WRITE OUT THE FIRST HORIZONTAL AXIS LABEL  **
18065C               *************************************************
18066C
18067      IF(NCX1LA.LE.0)GOTO1290
18068C
18069      IF(PX1LXC.GE.0.0 .AND. PX1LXC.LE.100.0)THEN
18070        PX1=PX1LXC
18071      ELSE
18072        PX1=((PXMIN+PXMAX)/2.0)+PX1LOF
18073      ENDIF
18074      IF(PX1LYC.GE.0.0 .AND. PX1LYC.LE.100.0)THEN
18075        PY1=PX1LYC-PX1LHE
18076      ELSE
18077        PY1=PYMIN-PX1LDS-PX1LHE
18078      ENDIF
18079C
18080      NCTEXT=NCX1LA
18081      DO1210I=1,NCTEXT
18082      ICTEXT(I)=IX1LTE(I)
18083 1210 CONTINUE
18084C
18085      IFONT=IX1LFO
18086      ICASE=IX1LCA
18087CCCCC IJUST='CEBO'
18088      IJUST=IX1LJU
18089CCCCC IDIR='HORI'
18090      IDIR=IX1LDI
18091CCCCC ANGLE=0.0
18092      ANGLE=PX1LAN
18093      IFILL=IX1LFI
18094      ICOL=IX1LCO
18095C
18096      PHEIGH=PX1LHE
18097      PWIDTH=PX1LWI
18098      PVEGAP=PX1LVG
18099      PHOGAP=PX1LHG
18100      PTHICK=PX1LTH
18101C
18102      IF(NCTEXT.GE.1)CALL DPREPL(ICTEXT,NCTEXT,
18103     1IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
18104     1IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,
18105     1IBUGG4,IERRG4)
18106C
18107      CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
18108     1IFONT,ICASE,IJUST,IDIR,ANGLE,IFILL,ICOL,
18109     1PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
18110     1ISYMBL,ISPAC,
18111     1IMPSW2,AMPSCH,AMPSCW,
18112     1PX99,PY99)
18113C
18114 1290 CONTINUE
18115C
18116C               **************************************************
18117C               **  STEP 3--                                    **
18118C               **  WRITE OUT THE SECOND HORIZONTAL AXIS LABEL  **
18119C               **************************************************
18120C
18121      IF(NCX2LA.LE.0)GOTO1390
18122C
18123      IF(PX2LXC.GE.0.0 .AND. PX2LXC.LE.100.0)THEN
18124        PX1=PX2LXC
18125      ELSE
18126        PX1=((PXMIN+PXMAX)/2.0)+PX2LOF
18127      ENDIF
18128      IF(PX2LYC.GE.0.0 .AND. PX2LYC.LE.100.0)THEN
18129        PY1=PX2LYC-PX2LHE
18130      ELSE
18131        PY1=PYMIN-PX2LDS-PX2LHE
18132      ENDIF
18133C
18134      NCTEXT=NCX2LA
18135      DO1310I=1,NCTEXT
18136      ICTEXT(I)=IX2LTE(I)
18137 1310 CONTINUE
18138C
18139      IFONT=IX2LFO
18140      ICASE=IX2LCA
18141CCCCC IJUST='CEBO'
18142      IJUST=IX2LJU
18143CCCCC IDIR='HORI'
18144      IDIR=IX2LDI
18145CCCCC ANGLE=0.0
18146      ANGLE=PX2LAN
18147      IFILL=IX2LFI
18148      ICOL=IX2LCO
18149C
18150      PHEIGH=PX2LHE
18151      PWIDTH=PX2LWI
18152      PVEGAP=PX2LVG
18153      PHOGAP=PX2LHG
18154      PTHICK=PX2LTH
18155C
18156      IF(NCTEXT.GE.1)CALL DPREPL(ICTEXT,NCTEXT,
18157     1IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
18158     1IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,
18159     1IBUGG4,IERRG4)
18160C
18161      CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
18162     1IFONT,ICASE,IJUST,IDIR,ANGLE,IFILL,ICOL,
18163     1PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
18164     1ISYMBL,ISPAC,
18165     1IMPSW2,AMPSCH,AMPSCW,
18166     1PX99,PY99)
18167C
18168 1390 CONTINUE
18169C
18170C               **************************************************
18171C               **  STEP 4--                                    **
18172C               **  WRITE OUT THE THIRD  HORIZONTAL AXIS LABEL  **
18173C               **************************************************
18174C
18175      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRLA')THEN
18176        WRITE(ICOUT,1402)NCX3LA,IX3LFO
18177 1402   FORMAT('NCX3LA,IX3LFO = ',I8,2X,A4)
18178        CALL DPWRST('XXX','BUG ')
18179        DO1405I=1,NCX3LA
18180          WRITE(ICOUT,1407)I,IX3LTE(I)
18181 1407     FORMAT('I,IX3LTE(I) = ',I8,2X,A4)
18182          CALL DPWRST('XXX','BUG ')
18183 1405   CONTINUE
18184      ENDIF
18185C
18186      IF(NCX3LA.LE.0)GOTO1490
18187C
18188      IF(PX3LXC.GE.0.0 .AND. PX3LXC.LE.100.0)THEN
18189        PX1=PX3LXC
18190      ELSE
18191        PX1=((PXMIN+PXMAX)/2.0)+PX3LOF
18192      ENDIF
18193      IF(PX3LYC.GE.0.0 .AND. PX3LYC.LE.100.0)THEN
18194        PY1=PX3LYC-PX3LHE
18195      ELSE
18196        PY1=PYMIN-PX3LDS-PX3LHE
18197      ENDIF
18198C
18199      NCTEXT=NCX3LA
18200      DO1410I=1,NCTEXT
18201      ICTEXT(I)=IX3LTE(I)
18202 1410 CONTINUE
18203C
18204      IFONT=IX3LFO
18205      ICASE=IX3LCA
18206CCCCC IJUST='CEBO'
18207      IJUST=IX3LJU
18208CCCCC IDIR='HORI'
18209      IDIR=IX3LDI
18210CCCCC ANGLE=0.0
18211      ANGLE=PX3LAN
18212      IFILL=IX3LFI
18213      ICOL=IX3LCO
18214C
18215      PHEIGH=PX3LHE
18216      PWIDTH=PX3LWI
18217      PVEGAP=PX3LVG
18218      PHOGAP=PX3LHG
18219      PTHICK=PX3LTH
18220C
18221      IF(NCTEXT.GE.1)CALL DPREPL(ICTEXT,NCTEXT,
18222     1IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
18223     1IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,
18224     1IBUGG4,IERRG4)
18225C
18226      CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
18227     1IFONT,ICASE,IJUST,IDIR,ANGLE,IFILL,ICOL,
18228     1PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
18229     1ISYMBL,ISPAC,
18230     1IMPSW2,AMPSCH,AMPSCW,
18231     1PX99,PY99)
18232C
18233 1490 CONTINUE
18234C
18235C               ***********************************************
18236C               **  STEP 5--                                 **
18237C               **  WRITE OUT THE LEFT  VERTICAL AXIS LABEL  **
18238C               ***********************************************
18239C
18240      IF(NCY1LA.LE.0)GOTO1590
18241C
18242      IF(PY1LXC.GE.0.0 .AND. PY1LXC.LE.100.0)THEN
18243        PX1=PY1LXC-PY1LWI
18244      ELSE
18245        PX1=PXMIN-PY1LDS-PY1LWI
18246      ENDIF
18247      IF(PY1LYC.GE.0.0 .AND. PY1LYC.LE.100.0)THEN
18248        PY1=PY1LYC
18249      ELSE
18250        PY1=((PYMIN+PYMAX)/2.0)+PY1LOF
18251      ENDIF
18252C
18253      NCTEXT=NCY1LA
18254      DO1510I=1,NCTEXT
18255      ICTEXT(I)=IY1LTE(I)
18256 1510 CONTINUE
18257C
18258      IFONT=IY1LFO
18259      ICASE=IY1LCA
18260CCCCC THE FOLLOWING 1-LINE FIX WAS DONE                     FEBRUARY 1989
18261CCCCC TO USE THE CENTER FOR VERTICAL JUST. OF Y1LABEL.      FEBRUARY 1989
18262CCCCC THE CENTER IS THE NEEDED CHOICE FOR METAFILE DEVICES  FEBRUARY 1989
18263CCCCC AND FOR DEVICES THAT SUPPORT ROTATED TEXT (ALAN)      FEBRUARY 1989
18264CCCCC IJUST='CEBO'
18265CCCCC IJUST='CECE'
18266      IJUST=IY1LJU
18267CCCCC IDIR='VERT'
18268CCCCC ANGLE=90.0
18269      IDIR=IY1LDI
18270      ANGLE=PY1LAN
18271      IFILL=IY1LFI
18272      ICOL=IY1LCO
18273C
18274CCCCC START OF FIX  AUGUST 1989 (& FEBRUARY 1989 FOR VAX)
18275CCCCC KEY THE SIZE TO HORIZONTAL CHARACTER SIZE.  THIS WILL MAKE THE
18276CCCCC SIZE OF THE Y1LABEL THE SAME AS THE SIZE OF THE XLABEL
18277CCCCC UPDATE FIX: JANUARY, 1987  (& FEBRUARY 1989 FOR VAX)
18278CCCCC IF HARDWARE CHARACTERS, APPLY THE FIX.  IF SOFTWARE CHARACTERS,
18279CCCCC DO NOT APPLY THE FIX.
18280C
18281      IF(IFONT.EQ.'TEKT')GOTO1520
18282      PHEIGH=PY1LHE*(ANUMVP/ANUMHP)
18283      PWIDTH=PY1LWI*(ANUMHP/ANUMVP)
18284      PVEGAP=PY1LVG*(ANUMVP/ANUMHP)
18285      PHOGAP=PY1LHG*(ANUMHP/ANUMVP)
18286      GOTO1530
18287 1520 CONTINUE
18288      PHEIGH=PY1LHE
18289      PWIDTH=PY1LWI
18290      PVEGAP=PY1LVG
18291      PHOGAP=PY1LHG
18292 1530 CONTINUE
18293      PTHICK=PY1LTH
18294C
18295CCCCC END OF FIX
18296C
18297      IF(NCTEXT.GE.1)CALL DPREPL(ICTEXT,NCTEXT,
18298     1IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
18299     1IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,
18300     1IBUGG4,IERRG4)
18301C
18302      CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
18303     1IFONT,ICASE,IJUST,IDIR,ANGLE,IFILL,ICOL,
18304     1PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
18305     1ISYMBL,ISPAC,
18306     1IMPSW2,AMPSCH,AMPSCW,
18307     1PX99,PY99)
18308C
18309 1590 CONTINUE
18310C
18311C               ***********************************************
18312C               **  STEP 6--                                 **
18313C               **  WRITE OUT THE RIGHT VERTICAL AXIS LABEL  **
18314C               ***********************************************
18315C
18316      IF(NCY2LA.LE.0)GOTO1690
18317C
18318      IF(PY2LXC.GE.0.0 .AND. PY2LXC.LE.100.0)THEN
18319        PX1=PY2LXC
18320      ELSE
18321        PX1=PXMAX+PY2LDS
18322      ENDIF
18323      IF(PX1LYC.GE.0.0 .AND. PX1LYC.LE.100.0)THEN
18324        PY1=PY2LYC
18325      ELSE
18326        PY1=((PYMIN+PYMAX)/2.0)+PY2LOF
18327      ENDIF
18328C
18329      NCTEXT=NCY2LA
18330      DO1610I=1,NCTEXT
18331      ICTEXT(I)=IY2LTE(I)
18332 1610 CONTINUE
18333C
18334      IFONT=IY2LFO
18335      ICASE=IY2LCA
18336CCCCC THE FOLLOWING 1-LINE FIX WAS DONE                     FEBRUARY 1989
18337CCCCC TO USE THE CENTER FOR VERTICAL JUST. OF Y2LABEL.      FEBRUARY 1989
18338CCCCC THE CENTER IS THE NEEDED CHOICE FOR METAFILE DEVICES  FEBRUARY 1989
18339CCCCC AND FOR DEVICES THAT SUPPORT ROTATED TEXT (ALAN)      FEBRUARY 1989
18340CCCCC IJUST='CEBO'
18341CCCCC IJUST='CECE'
18342      IJUST=IY2LJU
18343CCCCC IDIR='VERT'
18344CCCCC ANGLE=90.0
18345      IDIR=IY2LDI
18346      ANGLE=PY2LAN
18347      IFILL=IY2LFI
18348      ICOL=IY2LCO
18349C
18350CCCCC START OF FIX   (FEBRUARY 1989 FOR VAX)
18351CCCCC KEY THE SIZE TO HORIZONTAL CHARACTER SIZE.  THIS WILL MAKE THE
18352CCCCC SIZE OF THE Y2LABEL THE SAME AS THE SIZE OF THE XLABEL
18353CCCCC UPDATE FIX: JANUARY, 1987 (& FEBRUARY 1989 FOR VAX)
18354CCCCC IF HARDWARE CHARACTERS, APPLY THE FIX.  IF SOFTWARE CHARACTERS,
18355CCCCC DO NOT APPLY THE FIX.
18356C
18357      IF(IFONT.EQ.'TEKT')GOTO1620
18358      PHEIGH=PY2LHE*(ANUMVP/ANUMHP)
18359      PWIDTH=PY2LWI*(ANUMHP/ANUMVP)
18360      PVEGAP=PY2LVG*(ANUMVP/ANUMHP)
18361      PHOGAP=PY2LHG*(ANUMHP/ANUMVP)
18362      GOTO1630
18363 1620 CONTINUE
18364      PHEIGH=PY2LHE
18365      PWIDTH=PY2LWI
18366      PVEGAP=PY2LVG
18367      PHOGAP=PY2LHG
18368 1630 CONTINUE
18369C
18370CCCCC END OF FIX
18371C
18372      PTHICK=PY2LTH
18373C
18374      IF(NCTEXT.GE.1)CALL DPREPL(ICTEXT,NCTEXT,
18375     1IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
18376     1IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,
18377     1IBUGG4,IERRG4)
18378C
18379      CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
18380     1IFONT,ICASE,IJUST,IDIR,ANGLE,IFILL,ICOL,
18381     1PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
18382     1ISYMBL,ISPAC,
18383     1IMPSW2,AMPSCH,AMPSCW,
18384     1PX99,PY99)
18385C
18386 1690 CONTINUE
18387C
18388C               *************************************
18389C               **  STEP 7--                       **
18390C               **  WRITE OUT THE SEQUENCE NUMBER  **
18391C               *************************************
18392C
18393      IF(ISEQSW.EQ.'OFF')GOTO1790
18394C
18395      PX1=PXMAX+10.0
18396      IF(PX1.GT.95.0)PX1=95.0
18397      PY1=PYMAX+5.0
18398      IF(PY1.GT.94.0)PY1=94.0
18399C
18400      ANUMSE=NUMSEQ
18401      CALL DPCONH(NUMSEQ,ANUMSE,ICTEXT,NCTEXT,IBUGG4,IERRG4)
18402C
18403      IFONT=ITITFO
18404      ICASE=ITITCA
18405      IJUST='CEBO'
18406      IDIR='HORI'
18407      ANGLE=0.0
18408      IFILL=ITITFI
18409      ICOL=ITITCO
18410C
18411      PHEIGH=PTITHE
18412      PWIDTH=PTITWI
18413      PVEGAP=PTITVG
18414      PHOGAP=PTITHG
18415      PTHICK=PTITTH
18416C
18417CCCCC IF(NCTEXT.GE.1)CALL DPREPL(ICTEXT,NCTEXT,
18418CCCCC1IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
18419CCCCC1IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,
18420CCCCC1IBUGG4,IERRG4)
18421C
18422      CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
18423     1IFONT,ICASE,IJUST,IDIR,ANGLE,IFILL,ICOL,
18424     1PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
18425     1ISYMBL,ISPAC,
18426     1IMPSW2,AMPSCH,AMPSCW,
18427     1PX99,PY99)
18428C
18429C     THE FOLLOWING LINE +
18430C     SOME ADDITIONAL LOGIC
18431C     WAS MOVED TO PLOTG2 (NOV. 1986)
18432C
18433CCCCC NUMSEQ=NUMSEQ+1
18434C
18435 1790 CONTINUE
18436C
18437C               *****************
18438C               **  STEP 90--  **
18439C               **  EXIT       **
18440C               *****************
18441C
18442      IF(IBUGG4.EQ.'OFF'.AND.ISUBG4.NE.'WRLA')GOTO9090
18443      WRITE(ICOUT,999)
18444      CALL DPWRST('XXX','BUG ')
18445      WRITE(ICOUT,9011)
18446 9011 FORMAT('***** AT THE END       OF DPWRLA--')
18447      CALL DPWRST('XXX','BUG ')
18448      WRITE(ICOUT,9012)IMANUF,IMODEL
18449 9012 FORMAT('IMANUF,IMODEL = ',A4,2X,A4)
18450      CALL DPWRST('XXX','BUG ')
18451      WRITE(ICOUT,9013)NCTEXT
18452 9013 FORMAT('NCTEXT = ',I8)
18453      CALL DPWRST('XXX','BUG ')
18454      IF(NCTEXT.GE.1.AND.NCTEXT.LE.1000)
18455     1WRITE(ICOUT,9014)(ICTEXT(I),I=1,NCTEXT)
18456 9014 FORMAT('(ICTEXT(I),I=1,NCTEXT) = ',80A1)
18457      IF(NCTEXT.GE.1.AND.NCTEXT.LE.1000)
18458     1CALL DPWRST('XXX','BUG ')
18459      WRITE(ICOUT,9016)ISEQSW,NUMSEQ
18460 9016 FORMAT('ISEQSW,NUMSEQ = ',A4,I8)
18461      CALL DPWRST('XXX','BUG ')
18462      WRITE(ICOUT,9019)IBUGG4,ISUBG4,IERRG4
18463 9019 FORMAT('IBUGG4,ISUBG4,IERRG4 = ',A4,2X,A4,2X,A4)
18464      CALL DPWRST('XXX','BUG ')
18465      WRITE(ICOUT,9021)IREPCH
18466 9021 FORMAT('IREPCH = ',A1)
18467      CALL DPWRST('XXX','BUG ')
18468 9090 CONTINUE
18469C
18470      RETURN
18471      END
18472      SUBROUTINE DPWRLE(ILEGTE,ILEGST,ILEGSP,
18473     1                  ILEGNA,PLEGXC,PLEGYC,ILEGFO,ILEGCA,ILEGJU,
18474     1                  ILEGDI,ALEGAN,ILEGFI,ILEGCO,ILEGUN,
18475     1                  PLEGHE,PLEGWI,PLEGVG,PLEGHG,PLEGTH,NUMLEG,
18476     1                  PBOXXC,PBOXYC,IBOBCO,
18477     1                  IBOPPA,IBOBPA,PBOPTH,PBOPGA,IBOFPA,IBOFCO,
18478     1                  PBOFTH,PBOSHE,PBOSWI,NUMBOX,
18479     1                  PARRXC,PARRYC,IARRPA,IARRCO,PARRTH,
18480     1                  PARHLE,PARHWI,NUMARR,
18481     1                  PSEGXC,PSEGYC,ISEGPA,ISEGCO,PSEGTH,NUMSEG,
18482     1                  IMPSW2,AMPSCH,AMPSCW,
18483     1                  IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
18484     1                  IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,ISYMBL,ISPAC)
18485C
18486C  BUG FIX: ADDED PLEGTH PARAMETER TO CALL LIST AUGUST, 1987
18487C           ALSO USE DPCOPA INCLUDE FILE TO DIMENSION
18488C           ALONG WITH "*" NOTATION
18489C
18490C
18491C     PURPOSE--WRITE OUT LEGENDS, AND BOXES, ARROWS, AND SEGMENTS
18492C              (IF CALLED FOR) ON A PLOT.
18493C     WRITTEN BY--JAMES J. FILLIBEN
18494C                 STATISTICAL ENGINEERING DIVISION
18495C                 INFORMATION TECHNOLOGY LABORATORY
18496C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
18497C                 GAITHERSBURG, MD 20899-8980
18498C                 PHONE--301-975-2899
18499C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
18500C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
18501C     LANGUAGE--ANSI FORTRAN (1977)
18502C     VERSION NUMBER--83.6
18503C     ORIGINAL VERSION (AS A SEPARATE SUBROUTINE)--MAY       1983.
18504C     UPDATED         --JANUARY   1989.  ADD PARAMETER TO ARGUMENT LIST (ALAN)
18505C     UPDATED         --JANUARY   1989.  DIMENSION STATEMENTS SHOULD REFLECT
18506C                                        THE USE OF PARAMETER STATEMENTS
18507C                                        IN THE DPCOPA.INC FILE (ALAN)
18508C     UPDATED         --JANUARY   1989.  MODIFY CALLS TO DPDRPL (ALAN)
18509C     UPDATED         --JANUARY   1989.  MODIFY CALL  TO DPFIRE (ALAN)
18510C     UPDATED         --JANUARY   1989.  XX
18511C     UPDATED         --AUGUST    1992.  ELIMINATE BOX SOLID FILL
18512C     UPDATED         --AUGUST    1992.  ADD SHADOW TO BOX
18513C     UPDATED         --AUGUST    1992.  FIX ARROW COORDINATES (ALAN)
18514C     UPDATED         --AUGUST    1992.  FIX BOX FILL (ALAN)
18515C     UPDATED         --MARCH     1993.  DISTINGUISH BETWEEN BORDER
18516C                                        & FILL THICKNESS (ALAN)
18517C     UPDATED         --AUGUST    1995.  BUG FOR LEGENDS NOT ENTERED
18518C                                        IN NUMERICAL ORDER
18519C     UPDATED         --SEPTEMBER 1999.  ARGUMENT LIST FOR DPWRTE
18520C     UPDATED         --DECEMBER  1999.  ADD ILEGUN (ALLOW LEGENDS
18521C                                        TO BE DEFINED IN EITHER
18522C                                        SCREEN OR DATA UNITS)
18523C     UPDATED         --FEBRUARY  2018.  FOR ILEGUN, ALLOW SEPARATE
18524C                                        SEPARATE SPECIFICATION FOR
18525C                                        X AND Y AXIS
18526C
18527C-----NON-COMMON VARIABLES (GRAPHICS)-------------------------------------------
18528C
18529      CHARACTER*4 IFLAG
18530      CHARACTER*4 IPATT2
18531C
18532      CHARACTER*4 ISEGPA
18533      CHARACTER*4 ISEGCO
18534C
18535      CHARACTER*4 IARRPA
18536      CHARACTER*4 IARRCO
18537C
18538      CHARACTER*4 IBOBCO
18539      CHARACTER*4 IBOPPA
18540      CHARACTER*4 IBOBPA
18541      CHARACTER*4 IBOFPA
18542      CHARACTER*4 IBOFCO
18543C
18544      CHARACTER*4 ILEGTE
18545      CHARACTER*4 ILEGFO
18546      CHARACTER*4 ILEGCA
18547      CHARACTER*4 ILEGJU
18548      CHARACTER*4 ILEGDI
18549      CHARACTER*4 ILEGFI
18550      CHARACTER*4 ILEGCO
18551      CHARACTER*4 ILEGNA
18552      CHARACTER*4 ILEGUN
18553C
18554      CHARACTER*4 ICTEXT
18555C
18556      CHARACTER*4 IFIG
18557      CHARACTER*4 IPATT
18558      CHARACTER*4 IFONT
18559      CHARACTER*4 ICASE
18560      CHARACTER*4 IJUST
18561      CHARACTER*4 IDIR
18562      CHARACTER*4 IFILL
18563      CHARACTER*4 ICOL
18564      CHARACTER*4 ICOLB
18565      CHARACTER*4 ICOLP
18566      CHARACTER*4 IMPSW2
18567C
18568      CHARACTER*4 IHNAME
18569      CHARACTER*4 IHNAM2
18570      CHARACTER*4 IUSE
18571      CHARACTER*4 IFUNC
18572C
18573      CHARACTER*1 IREPCH
18574C
18575      CHARACTER*24 ISYMBL
18576      CHARACTER*4 ISPAC
18577CCCCC OCTOBER 1993.  ADD FOLLOWING LINE
18578      CHARACTER*4 ITRCSW
18579C
18580      INCLUDE 'DPCOPA.INC'
18581      DIMENSION PSEGXC(MAXSG,2)
18582      DIMENSION PSEGYC(MAXSG,2)
18583      DIMENSION ISEGPA(*)
18584      DIMENSION PSEGTH(*)
18585      DIMENSION ISEGCO(*)
18586C
18587      DIMENSION PARRXC(MAXAR,2)
18588      DIMENSION PARRYC(MAXAR,2)
18589      DIMENSION IARRPA(*)
18590      DIMENSION PARRTH(*)
18591      DIMENSION IARRCO(*)
18592      DIMENSION PARHLE(*)
18593      DIMENSION PARHWI(*)
18594C
18595      DIMENSION PBOXXC(MAXBX,2)
18596      DIMENSION PBOXYC(MAXBX,2)
18597C
18598      DIMENSION IBOBCO(*)
18599C
18600      DIMENSION IBOPPA(*)
18601      DIMENSION PBOPTH(*)
18602      DIMENSION PBOPGA(*)
18603CCCCC AUGUST 1992.  FOLLOWING LINE MODIFIED
18604CCCCC DIMENSION IBOPCO(*)
18605      DIMENSION IBOBPA(*)
18606C
18607      DIMENSION IBOFPA(*)
18608      DIMENSION PBOFTH(*)
18609      DIMENSION IBOFCO(*)
18610CCCCC THE FOLLOWING 2 LINES WERE ADDED AUGUST 1992
18611      DIMENSION PBOSHE(*)
18612      DIMENSION PBOSWI(*)
18613C
18614      DIMENSION ILEGTE(*)
18615      DIMENSION ILEGST(*)
18616      DIMENSION ILEGSP(*)
18617CCCCC AUGUST 1995.  ADD FOLLOWING LINE.
18618      DIMENSION ILEGNA(*)
18619      DIMENSION PLEGXC(*)
18620      DIMENSION PLEGYC(*)
18621      DIMENSION ILEGFO(*)
18622      DIMENSION ILEGCA(*)
18623      DIMENSION ILEGJU(*)
18624      DIMENSION ILEGDI(*)
18625      DIMENSION ALEGAN(*)
18626      DIMENSION ILEGFI(*)
18627      DIMENSION ILEGCO(*)
18628      DIMENSION ILEGUN(*)
18629      DIMENSION PLEGWI(*)
18630      DIMENSION PLEGHE(*)
18631      DIMENSION PLEGHG(*)
18632      DIMENSION PLEGVG(*)
18633      DIMENSION PLEGTH(*)
18634C
18635      DIMENSION ICTEXT(130)
18636C
18637      DIMENSION PX(MAXSG)
18638      DIMENSION PY(MAXSG)
18639C
18640      DIMENSION IHNAME(*)
18641      DIMENSION IHNAM2(*)
18642      DIMENSION IUSE(*)
18643      DIMENSION IVALUE(*)
18644      DIMENSION VALUE(*)
18645      DIMENSION IVSTAR(*)
18646      DIMENSION IVSTOP(*)
18647      DIMENSION IFUNC(*)
18648C
18649C-----COMMON----------------------------------------------------------
18650C
18651      INCLUDE 'DPCOGR.INC'
18652      INCLUDE 'DPCOBE.INC'
18653      INCLUDE 'DPCOP2.INC'
18654C
18655C-----START POINT-----------------------------------------------------
18656C
18657      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRLE')THEN
18658        WRITE(ICOUT,999)
18659  999   FORMAT(1X)
18660        CALL DPWRST('XXX','BUG ')
18661        WRITE(ICOUT,51)
18662   51   FORMAT('***** AT THE BEGINNING OF DPWRLE--')
18663        CALL DPWRST('XXX','BUG ')
18664        WRITE(ICOUT,52)IMANUF,IMODEL,IBUGG4,ISUBG4,IERRG4
18665   52   FORMAT('IMANUF,IMODEL,IBUGG4,ISUBG4,IERRG4 = ',4(A4,2X),A4)
18666        CALL DPWRST('XXX','BUG ')
18667        WRITE(ICOUT,61)IREPCH
18668   61   FORMAT('IREPCH = ',A1)
18669        CALL DPWRST('XXX','BUG ')
18670      ENDIF
18671C
18672C               **********************************
18673C               **  STEP 1--                    **
18674C               **  DRAW OUT THE LINE SEGMENTS  **
18675C               **********************************
18676C
18677      IF(NUMSEG.GE.1)THEN
18678        DO1100ISEG=1,NUMSEG
18679C
18680          PX(1)=PSEGXC(ISEG,1)
18681          PY(1)=PSEGYC(ISEG,1)
18682          PX(2)=PSEGXC(ISEG,2)
18683          PY(2)=PSEGYC(ISEG,2)
18684          NP=2
18685          IFIG='LINE'
18686          IPATT=ISEGPA(ISEG)
18687          ICOL=ISEGCO(ISEG)
18688          PTHICK=PSEGTH(ISEG)
18689          IF(PX(1).LT.0.0.OR.PX(1).GT.100.0)GOTO1100
18690          IF(PX(2).LT.0.0.OR.PX(2).GT.100.0)GOTO1100
18691          IF(PX(3).LT.0.0.OR.PX(3).GT.100.0)GOTO1100
18692          IF(PX(4).LT.0.0.OR.PX(4).GT.100.0)GOTO1100
18693          IF(PY(1).LT.0.0.OR.PY(1).GT.100.0)GOTO1100
18694          IF(PY(2).LT.0.0.OR.PY(2).GT.100.0)GOTO1100
18695          IF(PY(3).LT.0.0.OR.PY(3).GT.100.0)GOTO1100
18696          IF(PY(4).LT.0.0.OR.PY(4).GT.100.0)GOTO1100
18697          IFLAG='ON'
18698          CALL DPDRPL(PX,PY,NP,
18699     1                IFIG,IPATT,PTHICK,ICOL,
18700     1                JPATT,JTHICK,PTHIC2,JCOL,IFLAG)
18701C
18702 1100   CONTINUE
18703      ENDIF
18704C
18705C               ***************************
18706C               **  STEP 2--             **
18707C               **  DRAW OUT THE ARROWS  **
18708C               ***************************
18709C
18710C  AUGUST 1992.  USE DPARR2 ROUTINE TO DRAW THE ARROW (I COULD NOT
18711C  GET THE POSITIONING RIGHT TRYING TO DRAW IT WITH THE POLYMARKER
18712C  ROUTINE.
18713C
18714      IF(NUMARR.GE.1)THEN
18715        DO1200IARR=1,NUMARR
18716C
18717          PX1=PARRXC(IARR,1)
18718          PY1=PARRYC(IARR,1)
18719          PX2=PARRXC(IARR,2)
18720          PY2=PARRYC(IARR,2)
18721          PX(1)=PX1
18722          PY(1)=PY1
18723          PX(2)=PX2
18724          PY(2)=PY2
18725          NP=2
18726          IFIG='ARRO'
18727          IPATT=IARRPA(IARR)
18728          ICOL=IARRCO(IARR)
18729          PTHICK=PARRTH(IARR)
18730          IF(PX(1).LT.0.0.OR.PX(1).GT.100.0)GOTO1200
18731          IF(PX(2).LT.0.0.OR.PX(2).GT.100.0)GOTO1200
18732          IF(PX(3).LT.0.0.OR.PX(3).GT.100.0)GOTO1200
18733          IF(PX(4).LT.0.0.OR.PX(4).GT.100.0)GOTO1200
18734          IF(PY(1).LT.0.0.OR.PY(1).GT.100.0)GOTO1200
18735          IF(PY(2).LT.0.0.OR.PY(2).GT.100.0)GOTO1200
18736          IF(PY(3).LT.0.0.OR.PY(3).GT.100.0)GOTO1200
18737          IF(PY(4).LT.0.0.OR.PY(4).GT.100.0)GOTO1200
18738          NP=1
18739          IFILL='ON'
18740          PREPTH=0.1
18741          PREPSP=0.1
18742          PHEIGH=PARHWI(IARR)
18743          PWIDTH=PARHLE(IARR)
18744          PHOGAP=0.1
18745          PVEGAP=0.1
18746          ITRCSW='ON'
18747          CALL DPARR3(PX1,PY1,PX2,PY2,
18748     1                IFIG,ITRCSW,IPATT,ICOL,PTHICK,
18749     1                IFILL,ICOL,ICOL,PREPTH,PREPSP,
18750     1                PHEIGH,PWIDTH,PVEGAP,PHOGAP)
18751C
18752 1200   CONTINUE
18753      ENDIF
18754C
18755C               *******************************
18756C               **  STEP 3--                 **
18757C               **  FILL THE BOX BACKGROUND  **
18758C               *******************************
18759C
18760      IF(NUMBOX.GE.1)THEN
18761        DO1300IBOX=1,NUMBOX
18762C
18763          PX1=PBOXXC(IBOX,1)
18764          PY1=PBOXYC(IBOX,1)
18765          PX2=PBOXXC(IBOX,2)
18766          PY2=PBOXYC(IBOX,2)
18767          PX(1)=PX1
18768          PY(1)=PY1
18769          PX(2)=PX2
18770          PY(2)=PY1
18771          PX(3)=PX2
18772          PY(3)=PY2
18773          PX(4)=PX1
18774          PY(4)=PY2
18775          PX(5)=PX1
18776          PY(5)=PY1
18777          NP=5
18778          IFIG='BOX'
18779          IPATT=IBOFPA(IBOX)
18780          IF(IPATT.EQ.'OFF')GOTO1300
18781          IF(IPATT.EQ.'EMPT')GOTO1300
18782          IF(IPATT.EQ.'    ')GOTO1300
18783          IF(IPATT.EQ.'NONE')GOTO1300
18784          IF(IPATT.EQ.'BLAN')GOTO1300
18785          IF(IPATT.EQ.'ON')IPATT='SOLI'
18786          IPATT2=IBOPPA(IBOX)
18787          ICOLB=IBOFCO(IBOX)
18788          PTHICK=PBOFTH(IBOX)
18789          PXGAP=PBOPGA(IBOX)
18790          PYGAP=PBOPGA(IBOX)
18791          ICOLP=ICOLB
18792          IF(PX(1).LT.0.0.OR.PX(1).GT.100.0)GOTO1300
18793          IF(PX(2).LT.0.0.OR.PX(2).GT.100.0)GOTO1300
18794          IF(PX(3).LT.0.0.OR.PX(3).GT.100.0)GOTO1300
18795          IF(PX(4).LT.0.0.OR.PX(4).GT.100.0)GOTO1300
18796          IF(PX(5).LT.0.0.OR.PX(5).GT.100.0)GOTO1300
18797          IF(PY(1).LT.0.0.OR.PY(1).GT.100.0)GOTO1300
18798          IF(PY(2).LT.0.0.OR.PY(2).GT.100.0)GOTO1300
18799          IF(PY(3).LT.0.0.OR.PY(3).GT.100.0)GOTO1300
18800          IF(PY(4).LT.0.0.OR.PY(4).GT.100.0)GOTO1300
18801          IF(PY(5).LT.0.0.OR.PY(5).GT.100.0)GOTO1300
18802          CALL DPFIRE(PX,PY,NP,IFIG,IPATT,PTHICK,
18803     1                PXGAP,PYGAP,ICOLB,ICOLP,IPATT2)
18804C
18805 1300   CONTINUE
18806      ENDIF
18807C
18808C               ********************************
18809C               **  STEP 4--                  **
18810C               **  DRAW OUT THE BOX PATTERN  **
18811C               ********************************
18812C
18813CCCCC THE FOLLOWING SECTION WAS SKIPPED AROUND AUGUST 1992
18814CCCCC THE FOLLOWING LINE WAS ADDED AUGUST 1992
18815      GOTO1490
18816C
18817CCCCC IF(NUMBOX.LE.0)GOTO1490
18818CCCCC DO1400IBOX=1,NUMBOX
18819C
18820CCCCC PX1=PBOXXC(IBOX,1)
18821CCCCC PY1=PBOXYC(IBOX,1)
18822CCCCC PX2=PBOXXC(IBOX,2)
18823CCCCC PY2=PBOXYC(IBOX,2)
18824CCCCC PX(1)=PX1
18825CCCCC PY(1)=PY1
18826CCCCC PX(2)=PX2
18827CCCCC PY(2)=PY1
18828CCCCC PX(3)=PX2
18829CCCCC PY(3)=PY2
18830CCCCC PX(4)=PX1
18831CCCCC PY(4)=PY2
18832CCCCC PX(5)=PX1
18833CCCCC PY(5)=PY1
18834CCCCC NP=5
18835CCCCC IFIG='BOX'
18836CCCCC IPATT=IBOPPA(IBOX)
18837CCCCC IPATT2='SOLI'
18838CCCCC ICOLB=IBOBCO(IBOX)
18839CCCCC PTHICK=PBOPTH(IBOX)
18840CCCCC PXSPA=PBOPGA(IBOX)
18841CCCCC PYSPA=PBOPGA(IBOX)
18842CCCCC ICOLP=IBOPCO(IBOX)
18843CCCCC ICOLP=ICOLB
18844CCCCC IF(PX(1).LT.0.0.OR.PX(1).GT.100.0)GOTO1400
18845CCCCC IF(PX(2).LT.0.0.OR.PX(2).GT.100.0)GOTO1400
18846CCCCC IF(PX(3).LT.0.0.OR.PX(3).GT.100.0)GOTO1400
18847CCCCC IF(PX(4).LT.0.0.OR.PX(4).GT.100.0)GOTO1400
18848CCCCC IF(PX(5).LT.0.0.OR.PX(5).GT.100.0)GOTO1400
18849CCCCC IF(PY(1).LT.0.0.OR.PY(1).GT.100.0)GOTO1400
18850CCCCC IF(PY(2).LT.0.0.OR.PY(2).GT.100.0)GOTO1400
18851CCCCC IF(PY(3).LT.0.0.OR.PY(3).GT.100.0)GOTO1400
18852CCCCC IF(PY(4).LT.0.0.OR.PY(4).GT.100.0)GOTO1400
18853CCCCC IF(PY(5).LT.0.0.OR.PY(5).GT.100.0)GOTO1400
18854CCCCC CALL DPFIRE(PX,PY,NP,
18855CCCCC1IFIG,IPATT,PTHICK,PXSPA,PYSPA,ICOLB,ICOLP,IPATT2)
18856C
18857C1400 CONTINUE
18858 1490 CONTINUE
18859C
18860C               ******************************
18861C               **  STEP 5--                **
18862C               **  DRAW OUT THE BOX FRAME  **
18863C               ******************************
18864C
18865      IF(NUMBOX.GE.1)THEN
18866        DO1500IBOX=1,NUMBOX
18867C
18868          PX1=PBOXXC(IBOX,1)
18869          PY1=PBOXYC(IBOX,1)
18870          PX2=PBOXXC(IBOX,2)
18871          PY2=PBOXYC(IBOX,2)
18872          PX(1)=PX1
18873          PY(1)=PY1
18874          PX(2)=PX2
18875          PY(2)=PY1
18876          PX(3)=PX2
18877          PY(3)=PY2
18878          PX(4)=PX1
18879          PY(4)=PY2
18880          PX(5)=PX1
18881          PY(5)=PY1
18882          NP=5
18883          IFIG='BOX'
18884          IPATT=IBOBPA(IBOX)
18885          ICOL=IBOBCO(IBOX)
18886          PTHICK=PBOPTH(IBOX)
18887          IF(PX(1).LT.0.0.OR.PX(1).GT.100.0)GOTO1500
18888          IF(PX(2).LT.0.0.OR.PX(2).GT.100.0)GOTO1500
18889          IF(PX(3).LT.0.0.OR.PX(3).GT.100.0)GOTO1500
18890          IF(PX(4).LT.0.0.OR.PX(4).GT.100.0)GOTO1500
18891          IF(PX(5).LT.0.0.OR.PX(5).GT.100.0)GOTO1500
18892          IF(PY(1).LT.0.0.OR.PY(1).GT.100.0)GOTO1500
18893          IF(PY(2).LT.0.0.OR.PY(2).GT.100.0)GOTO1500
18894          IF(PY(3).LT.0.0.OR.PY(3).GT.100.0)GOTO1500
18895          IF(PY(4).LT.0.0.OR.PY(4).GT.100.0)GOTO1500
18896          IF(PY(5).LT.0.0.OR.PY(5).GT.100.0)GOTO1500
18897          IFLAG='ON'
18898          CALL DPDRPL(PX,PY,NP,
18899     1                IFIG,IPATT,PTHICK,ICOL,
18900     1                JPATT,JTHICK,PTHIC2,JCOL,IFLAG)
18901C
18902CCCCC     THE FOLLOWING 2 SECTIONS WERE ADDED AUGUST 1992
18903CCCCC     TO ADD A SHADOW TO THE BOX   AUGUST 1992
18904C
18905          PSH=PBOSHE(IBOX)
18906          PSW=PBOSWI(IBOX)
18907          EPSBS=0.000001
18908          IF(PSH.LT.EPSBS.AND.PSW.LT.EPSBS)GOTO1500
18909          PLEFT=PX1
18910          PRIGHT=PX2
18911          IF(PX2.LT.PX1)THEN
18912            PLEFT=PX2
18913            PRIGHT=PX1
18914          ENDIF
18915          PBOTTO=PY1
18916          PTOP=PY2
18917          IF(PY2.LT.PY1)THEN
18918            PBOTTO=PY2
18919            PTOP=PY1
18920          ENDIF
18921          PX(1)=PLEFT+PSW
18922          PY(1)=PBOTTO-PSH
18923          PX(2)=PRIGHT+PSW
18924          PY(2)=PBOTTO-PSH
18925          PX(3)=PRIGHT+PSW
18926          PY(3)=PBOTTO
18927          PX(4)=PLEFT+PSW
18928          PY(4)=PBOTTO
18929          PX(5)=PLEFT+PSW
18930          PY(5)=PBOTTO-PSH
18931          IPATT='SOLI'
18932          IPATT2='SOLI'
18933          ICOLB=IBOBCO(IBOX)
18934          ICOLP=ICOLB
18935          CALL DPFIRE(PX,PY,NP,IFIG,IPATT,PTHICK,
18936     1                PXSPA,PYSPA,ICOLB,ICOLP,IPATT2)
18937C
18938          PX(1)=PRIGHT
18939          PY(1)=PBOTTO-PSH
18940          PX(2)=PRIGHT+PSW
18941          PY(2)=PBOTTO-PSH
18942          PX(3)=PRIGHT+PSW
18943          PY(3)=PTOP-PSH
18944          PX(4)=PRIGHT
18945          PY(4)=PTOP-PSH
18946          PX(5)=PRIGHT
18947          PY(5)=PBOTTO-PSH
18948          CALL DPFIRE(PX,PY,NP,IFIG,IPATT,PTHICK,
18949     1                PXSPA,PYSPA,ICOLB,ICOLP,IPATT2)
18950C
18951 1500   CONTINUE
18952      ENDIF
18953C
18954C               *****************************
18955C               **  STEP 6--               **
18956C               **  WRITE OUT THE LEGENDS  **
18957C               *****************************
18958C
18959      IF(NUMLEG.GE.1)THEN
18960        DO1600ILEG=1,NUMLEG
18961CCCCC     AUGUST 1995.  BUG IF LEGENDS NOT ENTERED IN PROPER ORDER.
18962CCCCC     INDEX BY VALUE IN ILEGNA.
18963          READ(ILEGNA(ILEG),'(I4)')INDX
18964          IF(INDX.LT.1.OR.INDX.GT.100)INDX=ILEG
18965C
18966CCCCC     AUGUST 1995.  REPLACE ILEG WITH INDX IN FOLLOWING ARRAY INDICES.
18967          IFONT=ILEGFO(ILEG)
18968          ICASE=ILEGCA(ILEG)
18969          IJUST=ILEGJU(ILEG)
18970          IDIR=ILEGDI(ILEG)
18971          ANGLE=ALEGAN(ILEG)
18972          IFILL=ILEGFI(ILEG)
18973          ICOL=ILEGCO(ILEG)
18974          PHEIGH=PLEGHE(ILEG)
18975          PWIDTH=PLEGWI(ILEG)
18976          PHOGAP=PLEGHG(ILEG)
18977          PVEGAP=PLEGVG(ILEG)
18978          PX1=PLEGXC(ILEG)
18979          PY1=PLEGYC(ILEG)
18980C
18981C         2018/02: SUPPORT 'DD', 'DS', 'SD', AND 'SS' TO ALLOW
18982C                  SEPARATE SPECIFICATION FOR X AND Y AXIS
18983C
18984          IF(ILEGUN(ILEG).EQ.'DATA' .OR. ILEGUN(ILEG).EQ.'DD  ')THEN
18985            CALL DPCODS('X',PX1,PX1,IBUGG4,ISUBG4,IERRG4)
18986            CALL DPCODS('Y',PY1,PY1,IBUGG4,ISUBG4,IERRG4)
18987          ELSEIF(ILEGUN(ILEG).EQ.'DS  ')THEN
18988            CALL DPCODS('X',PX1,PX1,IBUGG4,ISUBG4,IERRG4)
18989          ELSEIF(ILEGUN(ILEG).EQ.'SD  ')THEN
18990            CALL DPCODS('Y',PY1,PY1,IBUGG4,ISUBG4,IERRG4)
18991          ENDIF
18992C
18993C         SEPTEMBER, 1987  SET LEGEND THICKNESS
18994CCCCC     PTHICK=PLEGTH(ILEG)
18995C
18996          PTHICK=PLEGTH(INDX)
18997C
18998          ISTART=ILEGST(INDX)
18999          ISTOP=ILEGSP(INDX)
19000C
19001          NCTEXT=ISTOP-ISTART+1
19002          IF(NCTEXT.LE.0)GOTO1600
19003          J=0
19004          DO1610I=ISTART,ISTOP
19005            J=J+1
19006            ICTEXT(J)=ILEGTE(I)
19007 1610     CONTINUE
19008          IF(NCTEXT.GE.1)THEN
19009            CALL DPREPL(ICTEXT,NCTEXT,
19010     1                  IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
19011     1                  IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,
19012     1                  IBUGG4,IERRG4)
19013          ENDIF
19014          IF(ILEGUN(ILEG).EQ.'SCRE' .OR. ILEGUN(ILEG).EQ.'SS  ')THEN
19015            IF(PX1.LT.0.0.OR.PX1.GT.100.0)GOTO1600
19016            IF(PY1.LT.0.0.OR.PY1.GT.100.0)GOTO1600
19017          ELSEIF(ILEGUN(ILEG).EQ.'SD  ')THEN
19018            IF(PX1.LT.0.0.OR.PX1.GT.100.0)GOTO1600
19019          ELSEIF(ILEGUN(ILEG).EQ.'DS  ')THEN
19020            IF(PY1.LT.0.0.OR.PY1.GT.100.0)GOTO1600
19021          ENDIF
19022          CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
19023     1                IFONT,ICASE,IJUST,IDIR,ANGLE,IFILL,ICOL,
19024     1                PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
19025     1                ISYMBL,ISPAC,
19026     1                IMPSW2,AMPSCH,AMPSCW,
19027     1                PX99,PY99)
19028C
19029 1600   CONTINUE
19030      ENDIF
19031C
19032C               *****************
19033C               **  STEP 90--  **
19034C               **  EXIT       **
19035C               *****************
19036C
19037      IF(IBUGG4.EQ.'ON' .OR. ISUBG4.EQ.'WRLE')THEN
19038        WRITE(ICOUT,999)
19039        CALL DPWRST('XXX','BUG ')
19040        WRITE(ICOUT,9011)
19041 9011   FORMAT('***** AT THE END       OF DPWRLE--')
19042        CALL DPWRST('XXX','BUG ')
19043        WRITE(ICOUT,9015)IERRG4
19044 9015   FORMAT('IERRG4 = ',A4)
19045        CALL DPWRST('XXX','BUG ')
19046      ENDIF
19047C
19048      RETURN
19049      END
19050      SUBROUTINE DPWRSG(ISUBN0,TYPE,IREPCH,IMPLSW,IFLAG,ICAPNM,ICAPBX,
19051     1                  ILINE)
19052C
19053C     PURPOSE--WRITE OUT THE NCOUT ELEMENTS OF THE
19054C              CHARACTER*240 STRING ICOUT(.:.)
19055C              TO A GENERAL GRAPHICS DEVICE.
19056C     NOTE   --THIS IS A MODIFIED VERSION OF DPWRST.  IT
19057C              IS USED TO PRINT THE TEXT OUTPUT ON THE GRAPHICS
19058C              DEVICES USING THE TEXT COMMAND (CAN"T CALL DPWRST
19059C              DIRECTLY SINCE THIS LEADS TO RECURSION, WHICH IS
19060C              NOT ALLOWED.
19061C
19062C              THE VALUE OF THE VARIABLE    NCOUT
19063C     ICOUT AND NCOUT RESIDE IN COMMON   /TEXTOU/
19064C     INPUT ARGUMENTS--ICOUT (IN COMMON)
19065C     ISUBN0 = 6-CHARACTER NAME OF SUBROUTINE WHICH CALLED DPWRST.
19066C              (AND THEREBY HAVE WALKBACK INFORMATION).
19067C     TYPE--4 CHARACTER DEFINITION OF TYPE OF INPUT
19068C              1) TEXT
19069C              2) BUG
19070C              3) ERRO
19071C              4) LIST
19072C              5) HELP
19073C              6) WRIT (= ALWAYS WRITE EVEN IF FEEDBACK OFF)
19074C              7) ...
19075C     OUTPUT ARGUMENTS--NCOUT (DETERMINED HEREIN)
19076C     NOTE--ALL DATAPLOT TEXT OUTPUT IS FUNNELED THROUGH
19077C           THIS ONE SUBROUTINE.
19078C     WRITTEN BY--JAMES J. FILLIBEN
19079C                 STATISTICAL ENGINEERING DIVISION
19080C                 INFORMATION TECHNOLOGY LABORATORY
19081C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
19082C                 GAITHERSBURG, MD 20899-8980
19083C                 PHONE--301-975-2899
19084C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
19085C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
19086C     LANGUAGE--ANSI FORTRAN (1977)
19087C     VERSION NUMBER--93.6
19088C     ORIGINAL VERSION (AS A SEPARATE SUBROUTINE)--MAY       1993.
19089C     UPDATED            --SEPTEMBER 1993. ALWAYS WRITE IF TYPE = WRIT
19090C     UPDATED            --SEPTEMBER 1993. OMIT IBUGG4 AS BUG SWITCH
19091C     UPDATED            --JUNE      2002. SUPPORT FOR A
19092C                                          "CAPTURE GRAPHICS" OPTION.
19093C                                          THIS WRITES TEXT OUTPUT
19094C                                          TO GRAPHICS UNIT RATHER
19095C                                          THAN SCREEN.  IMPLEMENT
19096C                                          VIA "TEXT" COMMAND.
19097C     UPDATED            --DECEMBER  2018. CALL LIST TO DPTEXT
19098C
19099C-----NON-COMMON VARIABLES (GRAPHICS)-----------------------------------
19100C
19101CCCCC MUST EVENTUALLY CHANGE THE FOLLOWING LINE FORM *3 TO *?
19102      CHARACTER*4 ISUBN0
19103      CHARACTER*4 TYPE
19104C
19105      CHARACTER*4 IBRANC
19106C
19107      CHARACTER*4 IFLAG
19108      CHARACTER*4 ICAPNM
19109      CHARACTER*4 ICAPBX
19110      CHARACTER*1 IREPCH
19111      CHARACTER*4 IMPLSW
19112      CHARACTER*4 IFOUND
19113      CHARACTER*4 IERROR
19114      CHARACTER*4 IBUGXX
19115C
19116      CHARACTER*4 UNITSW
19117C
19118      PARAMETER(MAXLEN=130)
19119      CHARACTER*4 IANST
19120      CHARACTER*4 IANLCT
19121      CHARACTER*4 ITXTET
19122      DIMENSION IANST(MAXLEN)
19123      DIMENSION IANLCT(MAXLEN)
19124      DIMENSION ITXTET(MAXLEN)
19125C
19126      CHARACTER*4 ITEXCV
19127      DIMENSION PRV(6)
19128      DIMENSION PDIARV(4)
19129      DIMENSION ITEXCV(10)
19130      DIMENSION PTEXRV(5)
19131C
19132C-----COMMON----------------------------------------------------------
19133C
19134      INCLUDE 'DPCOGR.INC'
19135      INCLUDE 'DPCOHO.INC'
19136      INCLUDE 'DPCOBE.INC'
19137      INCLUDE 'DPCOTR.INC'
19138CCCCC JUNE 2002.  ADD FOLLOWING LINES.
19139      INCLUDE 'DPCOPA.INC'
19140      INCLUDE 'DPCOPC.INC'
19141      INCLUDE 'DPCOSU.INC'
19142      INCLUDE 'DPCOHK.INC'
19143      INCLUDE 'DPCODA.INC'
19144      INCLUDE 'DPCOP2.INC'
19145C
19146      SAVE PXTEMP
19147      SAVE PYTEMP
19148C
19149C-----START POINT-----------------------------------------------------
19150C
19151      IERRG4='NO'
19152C
19153      IF(ISUBG4.EQ.'WRSG')THEN
19154         WRITE(IPR,999)
19155  999    FORMAT(1H )
19156         WRITE(IPR,51)
19157   51    FORMAT(1H ,'***** AT THE BEGINNING OF DPWRSG--')
19158         WRITE(IPR,52)ISUBN0
19159   52    FORMAT(1H ,'THE CALLING ROUTINE (ISUBN0) WAS ',A4)
19160         WRITE(IPR,53)TYPE
19161   53    FORMAT(1H ,'TYPE = ',A4)
19162         WRITE(IPR,55)IFEEDB,IHOST1
19163   55    FORMAT(1H ,'IFEEDB,IHOST1 = ',A4,2X,A4)
19164         WRITE(IPR,56)NCOUT,ILOUT
19165   56    FORMAT(1H ,'NCOUT,ILOUT = ',2I8)
19166         WRITE(IPR,61)
19167   61    FORMAT(1H ,'          123456789.123456789.123456789.123456')
19168         WRITE(IPR,62)ICOUT(1:40)
19169   62    FORMAT(1H ,'ICOUT = ',40A1)
19170         WRITE(IPR,63)ICOUT
19171   63    FORMAT(1H ,'ICOUT = ',A230)
19172         WRITE(IPR,65)ICAPTY
19173   65    FORMAT(1H ,'ICAPTY = ',A4)
19174      ENDIF
19175C
19176C               **************************************************
19177C               **  STEP 12--                                   **
19178C               **  DETERMINE THE LENGTH OF THE STRING          **
19179C               **  (BY IGNORING BLANK CHARACTERS AT THE END)   **
19180C               **************************************************
19181C
19182         DO1200I=1,240
19183            J=240-I+1
19184            IF(ICOUT(J:J).NE.' ')GOTO1250
19185 1200    CONTINUE
19186         NCOUT=1
19187         GOTO1290
19188 1250    CONTINUE
19189         NCOUT=J
19190 1290    CONTINUE
19191C
19192C               ******************************
19193C               **  STEP 15--               **
19194C               **  SEND TO GRAPHICS OUTPUT **
19195C               **  VIA TEXT COMMAND.       **
19196C               ******************************
19197C
19198      IF((IFLAG.EQ.'INIT'.OR.IFLAG.EQ.'NEW').AND.ICAPBX.EQ.'ON')THEN
19199        PXSAVE=PXEND
19200        PYSAVE=PYEND
19201C
19202        NUMARG=4
19203        ARG(1)=PBOXXC(1,1)
19204        ARG(2)=PBOXYC(1,1)
19205        ARG(3)=PBOXXC(1,2)
19206        ARG(4)=PBOXYC(1,2)
19207        IARG(1)=INT(PBOXXC(1,1))
19208        IARG(2)=INT(PBOXYC(1,1))
19209        IARG(3)=INT(PBOXXC(1,2))
19210        IARG(4)=INT(PBOXYC(1,2))
19211        IARGT(1)='NUMB'
19212        IARGT(2)='NUMB'
19213        IARGT(3)='NUMB'
19214        IARGT(4)='NUMB'
19215C
19216        IBUGXX='OFF'
19217        UNITSW='ABSO'
19218        CALL DPBX(IHARG,IARGT,ARG,NUMARG,
19219     1            PXSTAR,PYSTAR,
19220     1            PXEND,PYEND,
19221     1            IBOBPA,IBOBCO,PBOPTH,
19222     1            AREGBA,
19223     1            IREBLI,IREBCO,PREBTH,
19224     1            IBOFPA,IBOFCO,
19225     1            IBOFPA,IBOPPA,IBOFCO,PBOFTH,PBOPGA,
19226     1            PBOSHE,PBOSWI,
19227     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
19228     1            IGRASW,IDIASW,
19229     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
19230     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
19231     1            NUMDEV,
19232     1            IDMANU,IDMODE,IDMOD2,IDMOD3,
19233     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
19234     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
19235     1            IBUGXX,IFOUND,IERROR)
19236C
19237        PXEND=PXSAVE
19238        PYEND=PYSAVE
19239      ENDIF
19240C
19241      DO1510I=1,MAXLEN
19242        IANST(I)='    '
19243        IANLCT(I)='    '
19244        ITXTET(I)='    '
19245 1510 CONTINUE
19246C
19247      IANST(1)='T'
19248      IANST(2)='E'
19249      IANST(3)='X'
19250      IANST(4)='T'
19251      IANST(5)=' '
19252      IFACT=5
19253C
19254      IF(ICAPNM.EQ.'ON')THEN
19255        IF(ILINE.LE.9)THEN
19256          WRITE(IANST(6)(1:1),'(I1)')ILINE
19257          IFACT=6
19258        ELSEIF(ILINE.LE.99)THEN
19259          IJUNK=INT(ILINE/10)
19260          WRITE(IANST(6)(1:1),'(I1)')IJUNK
19261          IJUNK=MOD(ILINE,10)
19262          WRITE(IANST(7)(1:1),'(I1)')IJUNK
19263          IFACT=7
19264        ENDIF
19265      ENDIF
19266C
19267      DO1520I=1,NCOUT
19268        J=I+IFACT
19269        IANST(J)(1:1)=ICOUT(I:I)
19270        ITXTET(I)(1:1)=ICOUT(I:I)
19271 1520 CONTINUE
19272      IWDTHT=NCOUT+IFACT
19273      NCTEX=NCOUT
19274C
19275      DO1530I=1,MAXLEN
19276        IANLCT(I)=IANST(I)
19277 1530 CONTINUE
19278C
19279      IFOUND='NO'
19280      IERROR='NO'
19281C
19282      IF(IFLAG.EQ.'INIT')THEN
19283        PXSTAR=PXEND
19284        PYSTAR=PYEND
19285        PXTEMP=PXSTAR
19286        PYTEMP=PYSTAR
19287      ELSEIF(IFLAG.EQ.'NEW')THEN
19288        PXSTAR=PXTEMP
19289        PYSTAR=PYTEMP
19290      ELSE
19291        PXSTAR=PXEND
19292        PYSTAR=PYEND
19293      ENDIF
19294C
19295      PRV(1)=PGRAXF
19296      PRV(2)=PGRAYF
19297      PRV(3)=PDIAXC
19298      PRV(4)=PDIAYC
19299      PRV(5)=PDIAX2
19300      PRV(6)=PDIAY2
19301C
19302      PDIARV(1)=PDIAHE
19303      PDIARV(2)=PDIAWI
19304      PDIARV(3)=PDIAVG
19305      PDIARV(4)=PDIAHG
19306C
19307      ITEXCV(1)=ITEXFO
19308      ITEXCV(2)=ITEXCA
19309      ITEXCV(3)=ITEXJU
19310      ITEXCV(4)=ITEXDI
19311      ITEXCV(5)=ITEXCR
19312      ITEXCV(6)=ITEXLF
19313      ITEXCV(7)=ITEXSY
19314      ITEXCV(8)=ITEXSP
19315      ITEXCV(9)=ITEXFI
19316      ITEXCV(10)=ITEXCO
19317C
19318      PTEXRV(1)=PTEXHE
19319      PTEXRV(2)=PTEXWI
19320      PTEXRV(3)=PTEXVG
19321      PTEXRV(4)=PTEXHG
19322      PTEXRV(5)=PTEXTH
19323C
19324      IBUGXX='OFF'
19325      CALL DPTEXT(IANST,IANLCT,IWDTHT,
19326     1            ITXTET,NCTEX,
19327     1            PXSTAR,PYSTAR,PXEND,PYEND,
19328     1            IGRASW,IDIASW,PRV,PDIARV,
19329     1            ILINPA,ILINCO,PLINTH,
19330     1            ATEXBA,ITEBLI,ITEBCO,PTEBTH,
19331     1            ITEFSW,ITEFCO,
19332     1            ITEPTY,ITEPLI,ITEPCO,PTEPTH,PTEPSP,
19333     1            PTEXMR,ITEXCV,ATEXAN,PTEXRV,
19334     1            IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
19335     1            IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,
19336     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
19337     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
19338     1            IDNVOF,IDNHOF,IDFONT,PDSCAL,
19339     1            IMPLSW,AMPSCH,AMPSCW,
19340     1            IBUGXX,IFOUND,IERROR)
19341CCCCC PXEND=PTEXMR
19342CCCCC PYEND=PYSTAR-PTEXHE-PTEXVG
19343C
19344      IF(ISUBG4.EQ.'WRSG')THEN
19345        WRITE(IPR,1591)
19346 1591   FORMAT(1H ,'***** AFTER CALL TO DPTEXT')
19347        WRITE(IPR,1593)IFOUND,IERROR
19348 1593   FORMAT(1H ,'IFOUND,IERROR,NCOUT = ',A4,2X,A4,2X,I4)
19349      ENDIF
19350      GOTO9000
19351C
19352C               *****************
19353C               **  STEP 90--  **
19354C               **  EXIT       **
19355C               *****************
19356C
19357 9000 CONTINUE
19358      IF(ISUBG4.EQ.'WRSG')THEN
19359         WRITE(IPR,999)
19360         WRITE(IPR,9011)
19361 9011    FORMAT(1H ,'***** AT THE END       OF DPWRST--')
19362         WRITE(IPR,9012)ISUBN0
19363 9012    FORMAT(1H ,'THE CALLING ROUTINE (ISUBN0) WAS ',A3)
19364         WRITE(IPR,9013)TYPE
19365 9013    FORMAT(1H ,'TYPE = ',A4)
19366         WRITE(IPR,9015)IFEEDB,IHOST1
19367 9015    FORMAT(1H ,'IFEEDB,IHOST1 = ',A4,2X,A4)
19368         WRITE(IPR,9016)NCOUT,ILOUT
19369 9016    FORMAT(1H ,'NCOUT,ILOUT = ',2I8)
19370         WRITE(IPR,9021)
19371 9021    FORMAT(1H ,'          123456789.123456789.123456789.123456')
19372         WRITE(IPR,9022)ICOUT(1:40)
19373 9022    FORMAT(1H ,'ICOUT = ',40A1)
19374         WRITE(IPR,9023)ICOUT
19375 9023    FORMAT(1H ,'ICOUT = ',A230)
19376C
19377         WRITE(IPR,9032)IBRANC
19378 9032    FORMAT(1H ,'IBRANC = ',A4)
19379         WRITE(IPR,9034)NCOUT
19380 9034    FORMAT(1H ,'NCOUT = ',I8)
19381         IF(NCOUT.LE.0)GOTO9037
19382         IF(NCOUT.LE.0)GOTO9037
19383         DO9035I=1,NCOUT
19384CCCCC    IASCNE=ICHAR(ICOUT(I:I))
19385         CALL DPCOAN(ICOUT(I:I),IASCNE)
19386         WRITE(IPR,9036)I,ICOUT(I:I),IASCNE
19387 9036    FORMAT(1H ,'I,ICOUT(I:I),IASCNE = ',I8,2X,A1,I8)
19388 9035    CONTINUE
19389 9037    CONTINUE
19390         WRITE(IPR,9039)IBUGG4,ISUBG4,IERRG4
19391 9039    FORMAT(1H ,'IBUGG4,ISUBG4,IERRG4 = ',A4,2X,A4,2X,A4)
19392         IF(NUMTRA.GE.1)THEN
19393           CONTINUE
19394         ENDIF
19395      ENDIF
19396C
19397      RETURN
19398      END
19399      SUBROUTINE DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
19400     1                  IFONT,ICASE,IJUST,IDIR,ANGLE,IFILL,ICOL,
19401     1                  PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
19402     1                  ISYMBL,ISPAC,
19403     1                  IMPSW2,AMPSCH,AMPSCW,
19404     1                  PX99,PY99)
19405C
19406C     PURPOSE--FOR A GENERAL GRAPHICS DEVICE, WRITE A GENERAL TEXT
19407C              STRING WITH SPECIFIED FONT, CASE, JUSTIFICATION,
19408C              DIRECTION, FILL, COLOR, CHARACTER HEIGHT, WIDTH,
19409C              VERTICAL GAP, HORIZONTAL GAP, AND THICKNESS.
19410C
19411C     WRITTEN BY--JAMES J. FILLIBEN
19412C                 STATISTICAL ENGINEERING DIVISION
19413C                 INFORMATION TECHNOLOGY LABORATORY
19414C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
19415C                 GAITHERSBURG, MD 20899-8980
19416C                 PHONE--301-975-2899
19417C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
19418C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
19419C     LANGUAGE--ANSI FORTRAN (1977)
19420C     VERSION NUMBER--83.6
19421C     ORIGINAL VERSION (AS A SEPARATE SUBROUTINE)--MAY       1983.
19422C     UPDATED  --JANUARY     1989. CHECK FOR UPPER & LOWER CASE SHIFTS
19423C                                  WHEN HARDWARE CHAR USED (ALAN)
19424C     UPDATED  --MARCH       1993. STRIP SP()OUT OF HARDWARE TEXT
19425C                                  VIA CALL TO GRSTRI.
19426C     UPDATED  --AUGUST      1993. CHECK FOR CASE LOWER FOR HARDWARE
19427C                                  TEXT
19428C     UPDATED  --OCTOBER     1993. UPPER, LOWER, ASIS CASE
19429C     UPDATED  --MAY         1995. ICTEXT BEING CHANGED CAUSES PROBLEM
19430C                                  WITH TEXT (WHICH LOOPS THROUGH DEVICE)
19431C     UPDATED  --SEPTEMBER   1999. ARGUMENT LIST TO GRWRTE
19432C     UPDATED  --NOVEMBER    1999. CONVERT SP() TO HARD SPACE (BUG
19433C                                  FOR SIMPLEX FONT)
19434C     UPDATED  --NOVEMBER    1999. SUPPORT CR() FOR MULTIPLE LINES
19435C                                  (I.E., LOOP THROUGH STRING IF
19436C                                  PRESENT)
19437C     UPDATED  --MARCH       2001. WHEN CHECK FOR SP(), NEED TO
19438C                                  CHECK THAT IT IS NOT IN FACT
19439C                                  UNSP() (WHICH TERMINATES SUPER
19440C                                  SCRIPTING)
19441C     UPDATED  --AUGUST      2012. ICTEXT IS *16 FROM DPWRTE, *4
19442C                                  ELSEWHERE, SO MAKE IT *(*) TO
19443C                                  ACCOMODATE BOTH CASES
19444C     UPDATED  --FEBRUARY    2019. SUPPORT FOR UP TO 10 TAB POSITIONS
19445C                                  (IDENTIFIED WITH TAB() )
19446C     UPDATED  --FEBRUARY    2019. RESTRUCTURE TO BETTER HANDLE CR() AND
19447C                                  TAB() SEQUENCES
19448C
19449C-----NON-COMMON VARIABLES (GRAPHICS)-----------------------------------
19450C
19451      CHARACTER*4 ICTEXT(*)
19452C
19453      CHARACTER*4 IFONT
19454      CHARACTER*4 ICASE
19455      CHARACTER*4 IJUST
19456      CHARACTER*4 IDIR
19457      CHARACTER*4 IFILL
19458      CHARACTER*4 ICOL
19459C
19460      CHARACTER*24 ISYMBL
19461      CHARACTER*4 ISPAC
19462      CHARACTER*4 IMPSW2
19463C
19464      CHARACTER*4 IPATT
19465      CHARACTER*4 ITYPE
19466C
19467      CHARACTER*4 IHORPA
19468      CHARACTER*4 IVERPA
19469      CHARACTER*4 IDUPPA
19470      CHARACTER*4 IDDOPA
19471      CHARACTER*4 ICASET
19472      CHARACTER*4 IFONTT
19473      CHARACTER*1 IVALC
19474C
19475CCCCC MAY 1995.  ADD FOLLOWING 3 LINES
19476      PARAMETER (NMAX=300)
19477      CHARACTER*4 ICTEX2
19478      CHARACTER*4 ICTEX3
19479      DIMENSION ICTEX2(NMAX)
19480      DIMENSION ICTEX3(NMAX)
19481C
19482C-----COMMON----------------------------------------------------------
19483C
19484      INCLUDE 'DPCOGR.INC'
19485      INCLUDE 'DPCOBE.INC'
19486      INCLUDE 'DPCOST.INC'
19487      INCLUDE 'DPCOP2.INC'
19488C
19489C-----START POINT-----------------------------------------------------
19490C
19491      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTE')THEN
19492        WRITE(ICOUT,999)
19493  999   FORMAT(1X)
19494        CALL DPWRST('XXX','BUG ')
19495        WRITE(ICOUT,51)
19496   51   FORMAT('***** AT THE BEGINNING OF DPWRTE--')
19497        CALL DPWRST('XXX','BUG ')
19498        WRITE(ICOUT,53)PX1,PY1,PX99,PY99
19499   53   FORMAT('PX1,PY1,PX99,PY99 = ',4G15.7)
19500        CALL DPWRST('XXX','BUG ')
19501        WRITE(ICOUT,55)NCTEXT
19502   55   FORMAT('NCTEXT = ',I8)
19503        CALL DPWRST('XXX','BUG ')
19504        WRITE(ICOUT,56)(ICTEXT(I),I=1,MIN(25,NCTEXT))
19505   56   FORMAT('(ICTEXT(I),I=1,NCTEXT) = ',25A4)
19506        CALL DPWRST('XXX','BUG ')
19507        WRITE(ICOUT,60)IFONT,JFONT,ICASE,JCASE
19508   60   FORMAT('IFONT,JFONT,ICASE,JCASE = ',A4,I8,2X,A4,I8)
19509        CALL DPWRST('XXX','BUG ')
19510        WRITE(ICOUT,62)IJUST,IDIR,IFILL,ICOL
19511   62   FORMAT('IJUST,IDIR,IFILL,ICOL= ',3(A4,1X),A4)
19512        CALL DPWRST('XXX','BUG ')
19513        WRITE(ICOUT,64)ANGLE,PTHICK,PHEIGH,PWIDTH,PVEGAP,PHOGAP
19514   64   FORMAT('ANGLE,PTHICK,PHEIGH,PWIDTH,PVEGAP,PHOGAP = ',6G15.7)
19515        CALL DPWRST('XXX','BUG ')
19516        WRITE(ICOUT,72)ISYMBL,ISPAC
19517   72   FORMAT('ISYMBL,ISPAC = ',A24,2X,A4)
19518        CALL DPWRST('XXX','BUG ')
19519        WRITE(ICOUT,79)IBUGG4,ISUBG4,IERRG4
19520   79   FORMAT('IBUGG4,ISUBG4,IERRG4 = ',2(A4,2X),A4)
19521        CALL DPWRST('XXX','BUG ')
19522      ENDIF
19523C
19524CCCCC 2019/02: CODE RESTRUCTURED TO BETTER HANDLE CR() AND TAB().
19525CCCCC          PERFORM CASE CONVERSION AND CONVERTING OF SP() TO
19526CCCCC          HARD SPACE HERE.
19527CCCCC
19528CCCCC          ALSO CHECK FOR LC(), UC().  NOTE THAT THESE
19529CCCCC          OVERRIDE VALUE OF CASE COMMAND.
19530C
19531      NCSAVE=NCTEXT
19532C
19533      IF(NCTEXT.LE.0)GOTO9000
19534C
19535      ICASET=ICASE
19536      DO111I=1,NMAX
19537        ICTEX2(I)=' '
19538        ICTEX3(I)=' '
19539  111 CONTINUE
19540C
19541      ISKIP=0
19542      J=0
19543      DO112I=1,NCTEXT
19544C
19545        IF(ISKIP.GT.0)THEN
19546          ISKIP=ISKIP-1
19547          GOTO112
19548        ENDIF
19549C
19550C       CHECK FOR:
19551C
19552C          1.  "SP()" AND CONVERT TO SINGLE SPACE
19553C          2.  CASE CONVERSION HERE
19554C          3.  LC(), UC()
19555C
19556        IF(I+3.LE.NCTEXT .AND.
19557     1     (ICTEXT(I).EQ.'S'.OR.ICTEXT(I).EQ.'s').AND.
19558     1     (ICTEXT(I+1).EQ.'P'.OR.ICTEXT(I+1).EQ.'p').AND.
19559     1     ICTEXT(I+2).EQ.'('.AND.
19560     1     ICTEXT(I+3).EQ.')')THEN
19561            IF(I.GE.3 .AND.
19562     1            (ICTEXT(I-2).EQ.'U'.OR.ICTEXT(I-2).EQ.'u').AND.
19563     1            (ICTEXT(I-1).EQ.'N'.OR.ICTEXT(I-1).EQ.'n'))THEN
19564              GOTO113
19565            ENDIF
19566C
19567            J=J+1
19568            ICTEX3(J)=' '
19569            ISKIP=3
19570            GOTO112
19571        ELSEIF(I+3.LE.NCTEXT .AND.
19572     1     (ICTEXT(I).EQ.'L'.OR.ICTEXT(I).EQ.'l').AND.
19573     1     (ICTEXT(I+1).EQ.'C'.OR.ICTEXT(I+1).EQ.'c').AND.
19574     1     ICTEXT(I+2).EQ.'('.AND.
19575     1     ICTEXT(I+3).EQ.')')THEN
19576            ICASET='LOWE'
19577            ISKIP=3
19578            GOTO112
19579        ELSEIF(I+3.LE.NCTEXT .AND.
19580     1     (ICTEXT(I).EQ.'U'.OR.ICTEXT(I).EQ.'u').AND.
19581     1     (ICTEXT(I+1).EQ.'C'.OR.ICTEXT(I+1).EQ.'c').AND.
19582     1     ICTEXT(I+2).EQ.'('.AND.
19583     1     ICTEXT(I+3).EQ.')')THEN
19584            ICASET='UPPE'
19585            ISKIP=3
19586            GOTO112
19587        ENDIF
19588C
19589  113   CONTINUE
19590C
19591        CALL DPCOAN(ICTEXT(I)(1:1),IVALT)
19592        IF(ICASET.EQ.'LOWE')THEN
19593          IF(IVALT.GE.65.AND.IVALT.LE.90)IVALT=IVALT+32
19594        ELSE IF(ICASET.EQ.'UPPE')THEN
19595          IF(IVALT.GE.97.AND.IVALT.LE.122)IVALT=IVALT-32
19596        ENDIF
19597        CALL DPCONA(IVALT,IVALC)
19598        J=J+1
19599        ICTEX3(J)='    '
19600        ICTEX3(J)(1:1)=IVALC
19601C
19602  112 CONTINUE
19603C
19604      NCTEXT=J
19605      DO115I=1,24
19606        ISYMBL(I:I)=ICTEX3(I)(1:1)
19607 115  CONTINUE
19608C
19609      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTE')THEN
19610        DO116,II=1,NCTEXT
19611          WRITE(ICOUT,118)II,ICTEXT(II),ICTEX3(II)
19612  118     FORMAT('II,ICTEXT(II),ICTEX3(II) = ',I5,2(2X,A4))
19613          CALL DPWRST('XXX','BUG ')
19614  116  CONTINUE
19615      ENDIF
19616C
19617      J=0
19618      ISKIP=0
19619      ICRFLG=0
19620      ITBFLG=0
19621      ISPFLG=0
19622      ISBFLG=0
19623      NLINE=0
19624      NTAB=0
19625      ICNT=0
19626      IFLAGN=0
19627C
19628      DO121I=1,NCTEXT
19629C
19630        IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTE')THEN
19631          WRITE(ICOUT,122)I,ISKIP,J,ICTEX3(I)
19632  122     FORMAT('I,ISKIP,J,ICTEX3(I) = ',3I5,2X,A4)
19633          CALL DPWRST('XXX','BUG ')
19634        ENDIF
19635C
19636        IF(ISKIP.GT.0)THEN
19637          ISKIP=ISKIP-1
19638          GOTO121
19639        ENDIF
19640C
19641        IF(I+3.LE.NCTEXT .AND.
19642     1     (ICTEX3(I).EQ.'C'.OR.ICTEX3(I).EQ.'c').AND.
19643     1     (ICTEX3(I+1).EQ.'R'.OR.ICTEX3(I+1).EQ.'r').AND.
19644     1     ICTEX3(I+2).EQ.'('.AND.
19645     1     ICTEX3(I+3).EQ.')')THEN
19646             ICRFLG=1
19647             NLINE=NLINE+1
19648             ISKIP=3
19649             GOTO125
19650        ELSEIF(I+3.LE.NCTEXT .AND.
19651     1     (ICTEX3(I).EQ.'T'.OR.ICTEX3(I).EQ.'t').AND.
19652     1     (ICTEX3(I+1).EQ.'A'.OR.ICTEX3(I+1).EQ.'a').AND.
19653     1     (ICTEX3(I+2).EQ.'B'.OR.ICTEX3(I+2).EQ.'b').AND.
19654     1     ICTEX3(I+3).EQ.'('.AND.
19655     1     ICTEX3(I+4).EQ.')')THEN
19656             ITBFLG=1
19657             ISKIP=4
19658             NTAB=NTAB+1
19659             IF(NTAB.GT.11)NTAB=2
19660             IFLAGN=1
19661             GOTO125
19662        ELSEIF(I+4.LE.NCTEXT .AND.
19663     1     (ICTEX3(I).EQ.'S'.OR.ICTEX3(I).EQ.'s').AND.
19664     1     (ICTEX3(I+1).EQ.'U'.OR.ICTEX3(I+1).EQ.'u').AND.
19665     1     (ICTEX3(I+2).EQ.'B'.OR.ICTEX3(I+2).EQ.'b').AND.
19666     1     ICTEX3(I+3).EQ.'('.AND.
19667     1     ICTEX3(I+4).EQ.')')THEN
19668             ISBFLG=1
19669        ELSEIF(I+4.LE.NCTEXT .AND.
19670     1     (ICTEX3(I).EQ.'S'.OR.ICTEX3(I).EQ.'s').AND.
19671     1     (ICTEX3(I+1).EQ.'U'.OR.ICTEX3(I+1).EQ.'u').AND.
19672     1     (ICTEX3(I+2).EQ.'P'.OR.ICTEX3(I+2).EQ.'p').AND.
19673     1     ICTEX3(I+3).EQ.'('.AND.
19674     1     ICTEX3(I+4).EQ.')')THEN
19675             ISPFLG=1
19676        ENDIF
19677C
19678        J=J+1
19679        ICTEX2(J)=ICTEX3(I)
19680C
19681        IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTE')THEN
19682          WRITE(ICOUT,128)I,J,ICTEX3(I),ICTEX2(J)
19683  128     FORMAT('BEFORE 125: I,J,ICTEX3(I),ICTEX2(J) = ',
19684     1           2I5,2(2X,A4))
19685          CALL DPWRST('XXX','BUG ')
19686        ENDIF
19687C
19688C
19689  125   CONTINUE
19690C
19691C       IF TAB, CARRIAGE RETURN, OR LAST CHARACTER IN LINE FOUND,
19692C       THEN PRINT CURRENT STRING.
19693C
19694C       NOTE THAT SOME ATTRIBUTE SETTINGS ONLY NEED TO BE DONE
19695C       ONCE WHILE OTHERS MAY NEED TO BE DONE FOR EACH NEW
19696C       LINE.
19697C
19698        IF((I.GE.NCTEXT .OR. ICRFLG.EQ.1 .OR. ITBFLG.EQ.1) .AND.
19699     1      J.GE.1)THEN
19700C
19701          ICNT=ICNT+1
19702          IFLAGT=0
19703          IF(I.GE.NCTEXT .AND. NTAB.GE.1)THEN
19704            ITBFLG=1
19705            NTAB=NTAB+1
19706          ELSEIF(ICRFLG.EQ.1 .AND. NTAB.GE.1)THEN
19707            ITBFLG=1
19708            IFLAGT=1
19709            NTAB=NTAB+1
19710          ENDIF
19711          IF(I.GE.NCTEXT)THEN
19712            IF(NLINE.GE.1)NLINE=NLINE+1
19713          ENDIF
19714          ITYPE='LINE'
19715C
19716          IF(ICNT.EQ.1)THEN
19717C
19718C               **********************************************
19719C               **  STEP 1--                                **
19720C               **  TRANSLATE THE CHARACTER REPRESENTATION  **
19721C               **  OF THE LINE TYPE (= SOLID) INTO A       **
19722C               **  NUMERIC REPRESENTATION WHICH CAN BE     **
19723C               **  UNDERSTOOD BY THE GRAPHICS DEVICE.      **
19724C               **********************************************
19725C
19726            IPATT='SOLI'
19727            CALL GRTRPA(ITYPE,IPATT,PXSPA,PYSPA,
19728     1                  JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,
19729     1                  PXSPA2,PYSPA2)
19730C
19731C               ****************************************************
19732C               **  STEP 2--                                      **
19733C               **  SET THE PATTERN TYPE ON THE GRAPHICS DEVICE.  **
19734C               ****************************************************
19735C
19736            CALL GRSEPA(ITYPE,IPATT,PXSPA,PYSPA,
19737     1                  JPATT,IHORPA,IVERPA,IDUPPA,IDDOPA,
19738     1                  PXSPA2,PYSPA2)
19739C
19740            ITYPE='TEXT'
19741C
19742C               ****************************************************
19743C               **  STEP 3--                                      **
19744C               **  TRANSLATE THE CHARACTER REPRESENTATION OF THE **
19745C               **  CASE TYPE (UPPER/LOWER) INTO A NUMERIC        **
19746C               **  REPRESENTATION WHICH CAN BE UNDERSTOOD BY THE **
19747C               **  GRAPHICS DEVICE.                              **
19748C               ****************************************************
19749C
19750            CALL GRTRCA(ITYPE,ICASE,JCASE)
19751C
19752C               *************************************************
19753C               **  STEP 4--                                   **
19754C               **  SET THE CASE TYPE ON THE GRAPHICS DEVICE.  **
19755C               *************************************************
19756C
19757            CALL GRSECA(ITYPE,ICASE,JCASE)
19758C
19759C               ******************************************************
19760C               **  STEP 7--                                        **
19761C               **  TRANSLATE THE CHARACTER REPRESENTATION OF THE   **
19762C               **  TEXT DIRECTION INTO A NUMERIC REPRESENTATION    **
19763C               **  WHICH CAN BE UNDERSTOOD BY THE GRAPHICS DEVICE. **
19764C               ******************************************************
19765C
19766            CALL GRTRDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
19767C
19768C               ******************************************************
19769C               **  STEP 8--                                        **
19770C               **  SET THE TEXT DIRECTION ON THE GRAPHICS DEVICE.  **
19771C               ******************************************************
19772C
19773            CALL GRSEDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
19774C
19775C               *******************************************************
19776C               **  STEP 9--                                         **
19777C               **  TRANSLATE THE CHARACTER REPRESENTATION OF THE    **
19778C               **  TEXT FILL (ON/OFF) INTO A NUMERIC REPRESENTATION **
19779C               **  WHICH CAN BE UNDERSTOOD BY THE GRAPHICS DEVICE.  **
19780C               *******************************************************
19781C
19782            CALL GRTRFI(ITYPE,IFILL,JFILL)
19783C
19784C               *************************************************
19785C               **  STEP 10--                                  **
19786C               **  SET THE TEXT FILL ON THE GRAPHICS DEVICE.  **
19787C               *************************************************
19788C
19789            CALL GRSEFI(ITYPE,IFILL,JFILL)
19790C
19791C               ******************************************************
19792C               **  STEP 15--                                       **
19793C               **  TRANSLATE THE CHARACTER REPRESENTATION OF THE   **
19794C               **  TEXT THICKNESS INTO A NUMERIC REPRESENTATION    **
19795C               **  WHICH CAN BE UNDERSTOOD BY THE GRAPHICS DEVICE. **
19796C               ******************************************************
19797C
19798            CALL GRTRTH(ITYPE,PTHICK,JTHICK,PTHIC2)
19799C
19800C               *****************************************************
19801C               **  STEP 16--                                      **
19802C               **  SET THE TEXT THICKNESS ON THE GRAPHICS DEVICE. **
19803C               *****************************************************
19804C
19805            CALL GRSETH(ITYPE,PTHICK,JTHICK,PTHIC2)
19806C
19807          ENDIF
19808C
19809          ITYPE='TEXT'
19810C
19811C               ****************************************************
19812C               **  STEP 1--                                      **
19813C               **  FONT TYPE                                     **
19814C               ****************************************************
19815C
19816          IF(ITBFLG.EQ.1 .AND. NTAB.GE.2 .AND.
19817     1       ITABFO(NTAB-1).NE.'NULL')THEN
19818            IFONTT=ITABFO(NTAB-1)
19819            CALL GRTRFO(ITYPE,ITABFO(NTAB-1),JFONT)
19820            CALL GRSEFO(ITYPE,ITABFO(NTAB-1),JFONT)
19821          ELSE
19822            IFONTT=IFONT
19823            CALL GRTRFO(ITYPE,IFONT,JFONT)
19824          ENDIF
19825C
19826C               *******************************************************
19827C               **  STEP 5--                                         **
19828C               **  TEXT JUSTIFICATION                               **
19829C               *******************************************************
19830C
19831          IF(ITBFLG.EQ.1 .AND. NTAB.GE.2 .AND.
19832     1       ITABJU(NTAB-1).NE.'NULL')THEN
19833            CALL GRTRJU(ITYPE,ITABJU(NTAB-1),JJUST)
19834            CALL GRSEJU(ITYPE,ITABJU(NTAB-1),JJUST)
19835          ELSE
19836            CALL GRTRJU(ITYPE,IJUST,JJUST)
19837            CALL GRSEJU(ITYPE,IJUST,JJUST)
19838          ENDIF
19839C
19840C               *****************************************************
19841C               **  STEP 11--                                      **
19842C               **  TEXT COLOR                                     **
19843C               *****************************************************
19844C
19845          ITYPE='TEXT'
19846          IF(IFONT.NE.'TEKT')ITYPE='LINE'
19847          IF(IDIR.NE.'HORI'.AND.IDIR.NE.'VERT')ITYPE='LINE'
19848C
19849          IF(ITBFLG.EQ.1 .AND. NTAB.GE.2 .AND.
19850     1       ITABCO(NTAB-1).NE.'NULL')THEN
19851            CALL GRTRCO(ITYPE,ITABCO(NTAB-1),JCOL)
19852            CALL GRSECO(ITYPE,ITABCO(NTAB-1),JCOL)
19853          ELSE
19854            CALL GRTRCO(ITYPE,ICOL,JCOL)
19855            CALL GRSECO(ITYPE,ICOL,JCOL)
19856          ENDIF
19857          ITYPE='TEXT'
19858C
19859C               *****************************************************
19860C               **  STEP 13--                                      **
19861C               **  TEXT SIZE                                      **
19862C               *****************************************************
19863C
19864          IF(ITBFLG.EQ.1 .AND. NTAB.GE.2 .AND.
19865     1       PTABHE(NTAB-1).GT.0.0)THEN
19866            PHEIGT=PTABHE(NTAB-1)
19867            PWIDTT=PWIDTH
19868            IF(PTABWI(NTAB-1).GT.0.0)PWIDTT=PTABWI(NTAB-1)
19869            CALL GRTRSI(ITYPE,IFONTT,PHEIGT,PWIDTT,PVEGAP,PHOGAP,
19870     1                  JSIZE,
19871     1                  JHEIG2,JWIDT2,JVEGA2,JHOGA2,
19872     1                  PHEIG2,PWIDT2,PVEGA2,PHOGA2)
19873            CALL GRSESI(ITYPE,IFONTT,PHEIGT,PWIDTT,PVEGAP,PHOGAP,
19874     1                  JSIZE,
19875     1                  JHEIG2,JWIDT2,JVEGA2,JHOGA2,
19876     1                  PHEIG2,PWIDT2,PVEGA2,PHOGA2)
19877          ELSE
19878            PHEIGT=PHEIGH
19879            PWIDTT=PWIDTH
19880            IF(PTABWI(ITBFLG-1).NE.CPUMIN)PWIDTT=PTABWI(ITBFLG-1)
19881            CALL GRTRSI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
19882     1                  JSIZE,
19883     1                  JHEIG2,JWIDT2,JVEGA2,JHOGA2,
19884     1                  PHEIG2,PWIDT2,PVEGA2,PHOGA2)
19885            CALL GRSESI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
19886     1                  JSIZE,
19887     1                  JHEIG2,JWIDT2,JVEGA2,JHOGA2,
19888     1                  PHEIG2,PWIDT2,PVEGA2,PHOGA2)
19889          ENDIF
19890C
19891C               ***********************************************
19892C               **  STEP 21--                                **
19893C               **  DETERMINE THE LENGTH OF THE TEXT STRING  **
19894C               ***********************************************
19895C
19896          NCTEX2=J
19897          CALL GRDETL(ICTEX2,NCTEX2,
19898     1                IFONTT,IDIR,ANGLE,
19899     1                JFONT,JDIR,ANGLE2,
19900     1                PHEIGT,PWIDTT,PVEGAP,PHOGAP,
19901     1                JSIZE,
19902     1                JHEIG2,JWIDT2,JVEGA2,JHOGA2,
19903     1                PHEIG2,PWIDT2,PVEGA2,PHOGA2,
19904     1                PXLEC,PXLECG,PYLEC,PYLECG)
19905C
19906C               **************************
19907C               **  STEP 22--           **
19908C               **  WRITE OUT THE TEXT  **
19909C               **************************
19910C
19911          IF(ITBFLG.EQ.1 .AND. NTAB.GE.2 .AND.
19912     1       PTABHP(NTAB-1).NE.CPUMIN)THEN
19913            PXTEMP=PTABHP(NTAB-1)
19914          ELSE
19915            PXTEMP=PX1
19916          ENDIF
19917C
19918          IF(ITBFLG.EQ.1 .AND. NTAB.GE.2 .AND.
19919     1       PTABVP(NTAB-1).NE.CPUMIN)THEN
19920            PYTEMP=PTABVP(NTAB-1)
19921            IF(NLINE.GE.1)THEN
19922              ATEMP=PHEIGH + (PVEGAP + PWRTGA)
19923              PYTEMP=PYTEMP - REAL(NLINE-1)*ATEMP
19924            ENDIF
19925          ELSE
19926            IF(I.GE.NCTEXT .OR. NLINE.LT.1)THEN
19927              IF(NLINE.LE.0)THEN
19928                PYTEMP=PY1
19929              ELSE
19930                PYTEMP=PY1
19931                ATEMP=PHEIGH + (PVEGAP + PWRTGA)
19932                PYTEMP=PY1 - REAL(NLINE-1)*ATEMP
19933              ENDIF
19934            ELSE
19935              IF(NLINE.LE.0)THEN
19936                PYTEMP=PY1
19937              ELSE
19938                ATEMP=PHEIGH + (PVEGAP + PWRTGA)
19939                PYTEMP=PY1 - REAL(NLINE-1)*ATEMP
19940              ENDIF
19941            ENDIF
19942          ENDIF
19943C
19944          IF(ITBFLG.EQ.1 .AND. NTAB.GE.2 .AND.
19945     1       ITABUN(NTAB-1).EQ.'DATA')THEN
19946            CALL DPCODS('X',PXTEMP,PXTEMP,IBUGG4,ISUBG4,IERRG4)
19947          ENDIF
19948          IF(ITBFLG.EQ.1 .AND. NTAB.GE.2 .AND.
19949     1       ITABUV(NTAB-1).EQ.'DATA')THEN
19950            CALL DPCODS('Y',PYTEMP,PYTEMP,IBUGG4,ISUBG4,IERRG4)
19951          ENDIF
19952C
19953          IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTE')THEN
19954            WRITE(ICOUT,150)I,NCTEXT
19955  150       FORMAT('AT GRWRTE: I,NCTEXT = ',2I5)
19956            CALL DPWRST('XXX','BUG ')
19957            WRITE(ICOUT,151)ICRFLG,ITBFLG,NLINE,NTAB,NCTEX2
19958  151       FORMAT('ICRFLG,ITBFLG,NLINE,NTAB,NCTEX2 = ',5I5)
19959            CALL DPWRST('XXX','BUG ')
19960            WRITE(ICOUT,152)PX1,PY1,PXTEMP,PYTEMP,PX99,PY99
19961  152       FORMAT('PX1,PY1,PXTEMP,PYTEMP,PX99,PY99 = ',6G15.7)
19962            CALL DPWRST('XXX','BUG ')
19963            DO153JJ=1,NCTEX2
19964              WRITE(ICOUT,155)JJ,ICTEX2(JJ)
19965  155         FORMAT('JJ,ICTEX2(JJ) = ',I5,2X,A4)
19966              CALL DPWRST('XXX','BUG ')
19967  153       CONTINUE
19968          ENDIF
19969C
19970          CALL GRWRTE(PXTEMP,PYTEMP,ICTEX2,NCTEX2,
19971     1                IPATT,IFONTT,ICASE,IJUST,IDIR,ANGLE,IFILL,ICOL,
19972     1                JPATT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILL,JCOL,
19973     1                PHEIGT,PWIDTT,PVEGAP,PHOGAP,PTHICK,
19974     1                JSIZE,
19975     1                JHEIG2,JWIDT2,JVEGA2,JHOGA2,
19976     1                PHEIG2,PWIDT2,PVEGA2,PHOGA2,
19977     1                JTHICK,PTHIC2,
19978     1                PXLEC,PXLECG,PYLEC,PYLECG,
19979     1                ISYMBL,ISPAC,
19980     1                IMPSW2,AMPSCH,AMPSCW,
19981     1                PX99,PY99)
19982C
19983          IF(ICRFLG.EQ.1)THEN
19984            IF(IFLAGT.EQ.1)NTAB=NTAB-1
19985            ICRFLG=0
19986          ENDIF
19987C
19988          IF(ITBFLG.EQ.1)THEN
19989            IF(IFLAGN.EQ.1)NLINE=0
19990            IFLAGN=0
19991            ITBFLG=0
19992          ENDIF
19993          J=0
19994C
19995        ENDIF
19996C
19997  121 CONTINUE
19998C
19999C
20000C               *****************
20001C               **  STEP 90--  **
20002C               **  EXIT       **
20003C               *****************
20004C
20005 9000 CONTINUE
20006      NCTEXT=NCSAVE
20007      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTE')THEN
20008        WRITE(ICOUT,999)
20009        CALL DPWRST('XXX','BUG ')
20010        WRITE(ICOUT,9011)
20011 9011   FORMAT('***** AT THE END       OF DPWRTE--')
20012        CALL DPWRST('XXX','BUG ')
20013        WRITE(ICOUT,9115)NCTEX2
20014 9115   FORMAT('NCTEX2 = ',I8)
20015        CALL DPWRST('XXX','BUG ')
20016        WRITE(ICOUT,9116)(ICTEX2(I),I=1,MIN(NCTEX2,25))
20017 9116   FORMAT('(ICTEX2(I),I=1,NCTEXT) = ',25A4)
20018        CALL DPWRST('XXX','BUG ')
20019        WRITE(ICOUT,9035)ISYMBL,ISPAC
20020 9035   FORMAT('ISYMBL,ISPAC = ',A24,2X,A4)
20021        CALL DPWRST('XXX','BUG ')
20022      ENDIF
20023C
20024      RETURN
20025      END
20026      SUBROUTINE DPWRTL(ICASPL,ICAS3D)
20027C
20028C     PURPOSE--WRITE TIC LABELS ON ALL 4 FRAME LINES.
20029C
20030C     WRITTEN BY--JAMES J. FILLIBEN
20031C                 STATISTICAL ENGINEERING DIVISION
20032C                 INFORMATION TECHNOLOGY LABORATORY
20033C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
20034C                 GAITHERSBURG, MD 20899-8980
20035C                 PHONE--301-975-2899
20036C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
20037C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
20038C     LANGUAGE--ANSI FORTRAN (1977)
20039C     VERSION NUMBER--83.6
20040C     ORIGINAL VERSION (AS A SEPARATE SUBROUTINE)--MAY       1983.
20041C     UPDATED         --JANUARY  1988. ALLOW TIC LABELS WITH NO TICS
20042C     UPDATED         --JANUARY  1988. ALPHABETIC TIC LABELS
20043C     UPDATED         --JANUARY  1988. LOG SCALE EXPONENTIAL TIC LABELS
20044C     UPDATED         --JANUARY  1988. LOG SCALE REAL TIC LABELS
20045C     UPDATED         --FEBRUARY 1988. STAR PLOT
20046C     UPDATED         --FEBRUARY 1989. ADDED DPCOPA.INC (ALAN)
20047C     UPDATED         --MARCH    1993. ADD CALLS TO GRSTRI FOR
20048C                                      HARDWARE TEXT.
20049C     UPDATED         --JULY     1997. SUPPORT EXPONENTIAL SCALE FOR
20050C                                      LINEAR SCALE.
20051C     UPDATED         --SEPTEMBER1999. ARGUMENT LIST TO GRWRTE
20052C     UPDATED         --NOVEMBER 1999. FOR ALPHA LABELS, GO THROUGH
20053C                                      DPWRTE INSTEAD OF GRWRTE
20054C     UPDATED         --JANUARY  2004. SUPPORT FOR:
20055C                                      1) ROW LABELS
20056C                                      2) GROUP LABELS
20057C                                      3) NUMERIC LABELS
20058C     UPDATED         --JANUARY  2006. ALLOW VARIABLE, ROWLABEL AND
20059C                                      GROUP LABELS TO BE
20060C                                      INDEXED (E.G., USE WITH
20061C                                      SORT BY MEAN)
20062C     UPDATED         --DECEMBER 2006. SUPPORT FOR TRILINEAR SCALES
20063C     UPDATED         --DECEMBER 2008. MAXIMUM NUMBER OF CHARACTERS
20064C                                      IN A GROUP LABEL NOW SETTABLE
20065C                                      IN DPCOPA.INC
20066C
20067C-----NON-COMMON VARIABLES (GRAPHICS)--------------------------------
20068C
20069      CHARACTER*4 ICASPL
20070      CHARACTER*4 ICAS3D
20071      CHARACTER*4 IPATTT
20072      CHARACTER*4 ITYPE
20073      CHARACTER*4 IHORPA
20074      CHARACTER*4 IVERPA
20075      CHARACTER*4 IDUPPA
20076      CHARACTER*4 IDDOPA
20077      CHARACTER*4 IFONT
20078      CHARACTER*4 ICASE
20079      CHARACTER*4 IJUST
20080      CHARACTER*4 IDIR
20081      CHARACTER*4 IFILLT
20082      CHARACTER*4 ICOL
20083      CHARACTER*24 ISYMBL
20084      CHARACTER*4 ISPAC
20085      CHARACTER*4 IH
20086      CHARACTER*4 IH2
20087      CHARACTER*4 IHTEMP
20088      CHARACTER*4 IHTEM2
20089      CHARACTER*4 IHIND
20090      CHARACTER*4 IHIND2
20091      CHARACTER*4 IHWUSE
20092      CHARACTER*4 ISUBN1
20093      CHARACTER*4 ISUBN2
20094      CHARACTER*4 IERROR
20095      CHARACTER*4 ICTEXT
20096      CHARACTER*4 ISUBN0
20097      CHARACTER*4 ISUBRO
20098      CHARACTER*4 IENDFI
20099      CHARACTER*4 IREWIN
20100      CHARACTER*1 IAJUNK
20101      CHARACTER*20 IFORMT
20102C
20103      CHARACTER*2048 ISTRI2
20104      CHARACTER*2400 ISTRCC
20105      CHARACTER*1 IC1
20106      CHARACTER*4 IC4
20107      CHARACTER*4 MESSAG
20108      CHARACTER*10 ICTEMP
20109C
20110      INCLUDE 'DPCOPA.INC'
20111C
20112CCCCC CHARACTER*80 IFILE2
20113      CHARACTER (LEN=MAXFNC) :: IFILE2
20114      CHARACTER*12 ISTAT2
20115      CHARACTER*12 IFORM2
20116      CHARACTER*12 IACCE2
20117      CHARACTER*12 IPROT2
20118      CHARACTER*12 ICURS2
20119      CHARACTER*4  IREWI2
20120      CHARACTER*4  IERRF2
20121C
20122      DIMENSION ICTEXT(2048)
20123C
20124C-----COMMON----------------------------------------------------------
20125C
20126      INCLUDE 'DPCOPC.INC'
20127      INCLUDE 'DPCOGR.INC'
20128      INCLUDE 'DPCOBE.INC'
20129      INCLUDE 'DPCOHK.INC'
20130      INCLUDE 'DPCODA.INC'
20131      INCLUDE 'DPCOFO.INC'
20132      INCLUDE 'DPCOF2.INC'
20133      INCLUDE 'DPCOP2.INC'
20134C
20135C-----START POINT-----------------------------------------------------
20136C
20137      MESSAG='OFF'
20138      ISUBRO='XXXX'
20139C
20140      MAXCP1=MAXCOL+1
20141      MAXCP2=MAXCOL+2
20142      MAXCP3=MAXCOL+3
20143      MAXCP4=MAXCOL+4
20144      MAXCP5=MAXCOL+5
20145      MAXCP6=MAXCOL+6
20146      IFLAGC=0
20147      ICOLI=0
20148      IRLIND=0
20149      IVLIND=0
20150      IGLIND=0
20151      IROW1=0
20152      IGVAR=0
20153      IROWID=0
20154      ICOLL=0
20155      AVALU2=0.0
20156C
20157      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
20158        WRITE(ICOUT,999)
20159  999   FORMAT(1X)
20160        CALL DPWRST('XXX','BUG ')
20161        WRITE(ICOUT,51)
20162   51   FORMAT('***** AT THE BEGINNING OF DPWRTL--')
20163        CALL DPWRST('XXX','BUG ')
20164        WRITE(ICOUT,52)PXMIN,PYMIN,PXMAX,PYMAX
20165   52   FORMAT('PXMIN,PYMIN,PXMAX,PYMAX = ',4F10.5)
20166        CALL DPWRST('XXX','BUG ')
20167        WRITE(ICOUT,53)ICASPL,ICAS3D,IBUGG4,ISUBG4,IERRG4
20168   53   FORMAT('ICASPL,ICAS3D,IBUGG4,ISUBG4,IERRG4 = ',4(A4,2X),A4)
20169        CALL DPWRST('XXX','BUG ')
20170        WRITE(ICOUT,54)NX1COO,NX2COO,NY1COO,NY2COO
20171   54   FORMAT('NX1COO,NX2COO,NY1COO,NY2COO = ',4I8)
20172        CALL DPWRST('XXX','BUG ')
20173        WRITE(ICOUT,55)IX1ZSW,IX2ZSW,IY1ZSW,IY2ZSW
20174   55   FORMAT('IX1ZSW,IX2ZSW,IY1ZSW,IY2ZSW = ',3(A4,2X),A4)
20175        CALL DPWRST('XXX','BUG ')
20176        WRITE(ICOUT,56)IX1ZFO,IX2ZFO,IY1ZFO,IY2ZFO
20177   56   FORMAT('IX1ZFO,IX2ZFO,IY1ZFO,IY2ZFO = ',3(A4,2X),A4)
20178        CALL DPWRST('XXX','BUG ')
20179        WRITE(ICOUT,57)IX1ZCA,IX2ZCA,IY1ZCA,IY2ZCA
20180   57   FORMAT('IX1ZCA,IX2ZCA,IY1ZCA,IY2ZCA = ',3(A4,2X),A4)
20181        CALL DPWRST('XXX','BUG ')
20182        WRITE(ICOUT,58)IX1ZJU,IX2ZJU,IY1ZJU,IY2ZJU
20183   58   FORMAT('IX1ZJU,IX2ZJU,IY1ZJU,IY2ZJU = ',3(A4,2X),A4)
20184        CALL DPWRST('XXX','BUG ')
20185        WRITE(ICOUT,59)PX1ZDS,PX2ZDS,PY1ZDS,PY2ZDS
20186   59   FORMAT('PX1ZDS,PX2ZDS,PY1ZDS,PY2ZDS = ',4G15.7)
20187        CALL DPWRST('XXX','BUG ')
20188        WRITE(ICOUT,60)IX1ZDI,IX2ZDI,IY1ZDI,IY2ZDI
20189   60   FORMAT('IX1ZDI,IX2ZDI,IY1ZDI,IY2ZDI = ',A4,2X,A4,2X,A4,2X,A4)
20190        CALL DPWRST('XXX','BUG ')
20191        WRITE(ICOUT,64)AX1ZAN,AX2ZAN,AY1ZAN,AY2ZAN
20192   64   FORMAT('AX1ZAN,AX2ZAN,AY1ZAN,AY2ZAN = ',4G15.7)
20193        CALL DPWRST('XXX','BUG ')
20194        WRITE(ICOUT,65)IX1ZFI,IX2ZFI,IY1ZFI,IY2ZFI
20195   65   FORMAT('IX1ZFI,IX2ZFI,IY1ZFI,IY2ZFI = ',3(A4,2X),A4)
20196        CALL DPWRST('XXX','BUG ')
20197        WRITE(ICOUT,66)IX1ZCO,IX2ZCO,IY1ZCO,IY2ZCO
20198   66   FORMAT('IX1ZCO,IX2ZCO,IY1ZCO,IY2ZCO = ',3(A4,2X),A4)
20199        CALL DPWRST('XXX','BUG ')
20200        WRITE(ICOUT,63)IX1ZDP,IX2ZDP,IY1ZDP,IY2ZDP
20201   63   FORMAT('IX1ZDP,IX2ZDP,IY1ZDP,IY2ZDP = ',4I8)
20202        CALL DPWRST('XXX','BUG ')
20203        WRITE(ICOUT,73)PX1ZHE,PX2ZHE,PY1ZHE,PY2ZHE
20204   73   FORMAT('PX1ZHE,PX2ZHE,PY1ZHE,PY2ZHE = ',4G15.7)
20205        CALL DPWRST('XXX','BUG ')
20206        WRITE(ICOUT,74)PX1ZWI,PX2ZWI,PY1ZWI,PY2ZWI
20207   74   FORMAT('PX1ZWI,PX2ZWI,PY1ZWI,PY2ZWI = ',4G15.7)
20208        CALL DPWRST('XXX','BUG ')
20209        WRITE(ICOUT,75)PX1ZVG,PX2ZVG,PY1ZVG,PY2ZVG
20210   75   FORMAT('PX1ZVG,PX2ZVG,PY1ZVG,PY2ZVG = ',4G15.7)
20211        CALL DPWRST('XXX','BUG ')
20212        WRITE(ICOUT,76)PX1ZHG,PX2ZHG,PY1ZHG,PY2ZHG
20213   76   FORMAT('PX1ZHG,PX2ZHG,PY1ZHG,PY2ZHG = ',4G15.7)
20214        CALL DPWRST('XXX','BUG ')
20215        WRITE(ICOUT,77)PTIZTH
20216   77   FORMAT('PTIZTH = ',E15.7)
20217        CALL DPWRST('XXX','BUG ')
20218        WRITE(ICOUT,83)IX1ZFM,IX2ZFM,IY1ZFM,IY2ZFM
20219   83   FORMAT('IX1ZFM,IX2ZFM,IY1ZFM,IY2ZFM = ',3(A4,2X),A4)
20220        CALL DPWRST('XXX','BUG ')
20221        WRITE(ICOUT,84)(IX1ZCN(I:I),I=1,100)
20222   84   FORMAT('(IX1ZCN(I:I) = ',100A1)
20223        CALL DPWRST('XXX','BUG ')
20224        WRITE(ICOUT,85)(IX2ZCN(I:I),I=1,100)
20225   85   FORMAT('(IX2ZCN(I:I) = ',100A1)
20226        CALL DPWRST('XXX','BUG ')
20227        WRITE(ICOUT,86)(IY1ZCN(I:I),I=1,100)
20228   86   FORMAT('(IY1ZCN(I:I) = ',100A1)
20229        CALL DPWRST('XXX','BUG ')
20230        WRITE(ICOUT,87)(IY2ZCN(I:I),I=1,100)
20231   87   FORMAT('(IY2ZCN(I:I) = ',100A1)
20232        CALL DPWRST('XXX','BUG ')
20233C
20234        IF(NX1COO.GT.0)THEN
20235          WRITE(ICOUT,999)
20236          CALL DPWRST('XXX','BUG ')
20237          DO61I=1,NX1COO
20238            WRITE(ICOUT,62)I,PX1COO(I),X1COOR(I)
20239   62       FORMAT('I,PX1COO(I),X1COOR(I) = ',I8,2G15.7)
20240            CALL DPWRST('XXX','BUG ')
20241   61     CONTINUE
20242        ENDIF
20243C
20244        IF(NX2COO.GT.0)THEN
20245          WRITE(ICOUT,999)
20246          CALL DPWRST('XXX','BUG ')
20247          DO71I=1,NX2COO
20248           WRITE(ICOUT,72)I,PX2COO(I),X2COOR(I)
20249   72      FORMAT('I,PX2COO(I),X2COOR(I) = ',I8,2G15.7)
20250           CALL DPWRST('XXX','BUG ')
20251   71    CONTINUE
20252        ENDIF
20253C
20254        IF(NY1COO.GT.0)THEN
20255          WRITE(ICOUT,999)
20256          CALL DPWRST('XXX','BUG ')
20257          DO81I=1,NY1COO
20258            WRITE(ICOUT,82)I,PY1COO(I),Y1COOR(I)
20259   82       FORMAT('I,PY1COO(I),Y1COOR(I) = ',I8,2G15.7)
20260            CALL DPWRST('XXX','BUG ')
20261   81     CONTINUE
20262        ENDIF
20263C
20264        IF(NY2COO.GT.0)THEN
20265          WRITE(ICOUT,999)
20266          CALL DPWRST('XXX','BUG ')
20267          DO91I=1,NY2COO
20268            WRITE(ICOUT,92)I,PY2COO(I),Y2COOR(I)
20269   92       FORMAT('I,PY2COO(I),Y2COOR(I) = ',I8,2G15.7)
20270            CALL DPWRST('XXX','BUG ')
20271   91     CONTINUE
20272        ENDIF
20273C
20274C
20275      ENDIF
20276C
20277      IF(ICASPL.EQ.'PIEC')GOTO9000
20278      IF(ICASPL.EQ.'STAR')GOTO9000
20279      IF(ICAS3D.EQ.'ON')GOTO9000
20280C
20281      ITYPE='LINE'
20282      ISYMBL=ITEXSY
20283      ISPAC=ITEXSP
20284C
20285C               **********************************************
20286C               **  STEP 1--                                **
20287C               **  TRANSLATE THE CHARACTER REPRESENTATION  **
20288C               **  OF THE TIC LABEL TYPE (= SOLID)         **
20289C               **  INTO A NUMERIC REPRESENTATION           **
20290C               **  WHICH CAN BE UNDERSTOOD BY THE          **
20291C               **  GRAPHICS DEVICE.                        **
20292C               **********************************************
20293C
20294
20295      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
20296        WRITE(ICOUT,8001)
20297 8001   FORMAT('STEP 1')
20298        CALL DPWRST('XXX','BUG ')
20299      ENDIF
20300C
20301      IPATTT='SOLI'
20302      CALL GRTRPA(ICASE,IPATTT,PXSPA,PYSPA,
20303     1JPATTT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXSPA2,PYSPA2)
20304C
20305C               *******************************
20306C               **  STEP 2--                 **
20307C               **  SET THE PATTERN TYPE     **
20308C               **  ON THE GRAPHICS DEVICE.  **
20309C               *******************************
20310C
20311      CALL GRSEPA(ICASE,IPATTT,PXSPA,PYSPA,
20312     1JPATTT,IHORPA,IVERPA,IDUPPA,IDDOPA,PXSPA2,PYSPA2)
20313C
20314      ITYPE='TEXT'
20315C
20316C               **********************************************
20317C               **  STEP 11--                               **
20318C               **  TRANSLATE THE CHARACTER REPRESENTATION  **
20319C               **  OF THE TEXT THICKNESS                   **
20320C               **  INTO A NUMERIC REPRESENTATION           **
20321C               **  WHICH CAN BE UNDERSTOOD BY THE          **
20322C               **  GRAPHICS DEVICE.                        **
20323C               **********************************************
20324C
20325      PTHICK=PTIZTH
20326      CALL GRTRTH(ITYPE,PTHICK,JTHICK,PTHIC2)
20327C
20328C               *******************************
20329C               **  STEP 12--                **
20330C               **  SET THE TEXT THICKNESS   **
20331C               **  ON THE GRAPHICS DEVICE.  **
20332C               *******************************
20333C
20334      CALL GRSETH(ITYPE,PTHICK,JTHICK,PTHIC2)
20335C
20336      IF(ICASPL.EQ.'TRPL')GOTO8000
20337C
20338C               ********************************************************
20339C               **  STEP 13--                                         **
20340C               **  WRITE OUT TIC LABELS ON THE 4 AXES.  THE FIRST    **
20341C               **  STEP IN EACH OF THE 4 AXES IS TO TRANSLATE THE    **
20342C               **  CHARACTER REPRESENTATION INTO A NUMERIC           **
20343C               **  REPRESENTATION OF THE TEXT JUSTIFICATION WHICH    **
20344C               **  CAN BE UNDERSTOOD BY THE GRAPHICS DEVICE.  THE    **
20345C               **  SECOND STEP IS TO ACTUALLY SET THE TEXT           **
20346C               **  JUSTIFICATION.  THE THIRD STEP IN EACH OF THE 4   **
20347C               **  AXES IS TO TRANSLATE THE CHARACTER REPRESENTATION **
20348C               **  OF THE TEXT DIRECTION INTO A NUMERIC              **
20349C               **  REPRESENTATION WHICH CAN BE UNDERSTOOD BY THE     **
20350C               **  GRAPHICS DEVICE.  THE FOURTH STEP IS TO ACTUALLY  **
20351C               **  SET THE TEXT DIRECTION.  THE FIFTH STEP IS TO     **
20352C               **  SPECIFY REFERENCE COORDINATES FOR THE TIC LABEL.  **
20353C               **  THE SIXTH STEP IS TO WRITE OUT THE TIC LABEL.     **
20354C               ********************************************************
20355C
20356C               ******************************************************
20357C               **  STEP 21.1--                                     **
20358C               **  WRITE TIC LABELS     ON BOTTOM HORIZONTAL AXIS  **
20359C               ******************************************************
20360C
20361      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
20362        WRITE(ICOUT,8002)
20363 8002   FORMAT('STEP 21.1')
20364        CALL DPWRST('XXX','BUG ')
20365      ENDIF
20366C
20367      IF(IX1FSW.EQ.'OFF')GOTO1190
20368CCCCC IF(IX1TSW.EQ.'OFF')GOTO1190
20369      IF(IX1ZSW.EQ.'OFF')GOTO1190
20370      IF(NX1COO.LE.0)GOTO1190
20371C
20372      IFONT=IX1ZFO
20373      CALL GRTRFO(ITYPE,IFONT,JFONT)
20374      CALL GRSEFO(ITYPE,IFONT,JFONT)
20375C
20376      ICASE=IX1ZCA
20377      CALL GRTRCA(ITYPE,ICASE,JCASE)
20378      CALL GRSECA(ITYPE,ICASE,JCASE)
20379C
20380      IJUST=IX1ZJU
20381      CALL GRTRJU(ITYPE,IJUST,JJUST)
20382      CALL GRSEJU(ITYPE,IJUST,JJUST)
20383C
20384      IDIR=IX1ZDI
20385      ANGLE=AX1ZAN
20386      CALL GRTRDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
20387      CALL GRSEDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
20388C
20389      IFILLT=IX1ZFI
20390      CALL GRTRFI(ITYPE,IFILLT,JFILLT)
20391      CALL GRSEFI(ITYPE,IFILLT,JFILLT)
20392C
20393      ICOL=IX1ZCO
20394      CALL GRTRCO(ITYPE,ICOL,JCOL)
20395      CALL GRSECO(ITYPE,ICOL,JCOL)
20396C
20397      PHEIGH=PX1ZHE
20398      PWIDTH=PX1ZWI
20399      PVEGAP=PX1ZVG
20400      PHOGAP=PX1ZHG
20401      CALL GRTRSI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
20402     1JSIZE,
20403     1JHEIG2,JWIDT2,JVEGA2,JHOGA2,
20404     1PHEIG2,PWIDT2,PVEGA2,PHOGA2)
20405      CALL GRSESI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
20406     1JSIZE,
20407     1JHEIG2,JWIDT2,JVEGA2,JHOGA2,
20408     1PHEIG2,PWIDT2,PVEGA2,PHOGA2)
20409C
20410      PY1=PYMIN-PX1ZDS
20411CCCCC PY1=PY1-PHEIG2
20412C
20413      ISTART=1
20414CCCCC ISTOP=130
20415      ISTOP=2048
20416      NCOLMX=2048
20417C
20418      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
20419        WRITE(ICOUT,8003)
20420 8003   FORMAT('STEP 21.1: AFTER ATTRIBUTE SETTING ROUTINES')
20421        CALL DPWRST('XXX','BUG ')
20422      ENDIF
20423C
20424CCCCC JANUARY 2004.  FOR VARIABLE OR GROUP LABEL CASE, NEED
20425CCCCC TO EXTRACT RELEVANT VARIABLE.
20426C
20427CCCCC 2019/10: FOR VARIABLE CASE, ALSO CHECK FOR CHARACTER VARIABLE
20428C
20429      IF(IX1ZFM.EQ.'VARI')THEN
20430C
20431        IFLAGC=0
20432        I=1
20433        CALL DPUPPE(IX1ZCN,ISTOP,IX1ZCN,IBUGG4,IERROR)
20434        MESSAG='OFF'
20435        CALL DPEXS1(IX1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
20436     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
20437     1              IBUGG4,ISUBG4,IERRG4)
20438        IF(NCSTR2.LE.0)THEN
20439          WRITE(ICOUT,999)
20440          CALL DPWRST('XXX','BUG ')
20441          WRITE(ICOUT,11102)
2044211102     FORMAT('***** WARNING--FOR X1TIC MARK LABEL FORMAT ',
20443     1           '"VARIABLE"')
20444          CALL DPWRST('XXX','BUG ')
20445          WRITE(ICOUT,11104)
2044611104     FORMAT('      NO VARIABLE NAME SPECIFIED ON ',
20447     1           'X1TIC MARK LABEL CONTENT COMMAND.')
20448          CALL DPWRST('XXX','BUG ')
20449        ELSE
20450          IH='    '
20451          IH2='    '
20452          IH(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
20453          IF(NCSTR2.GE.5)IH2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
20454        ENDIF
20455C
20456C
20457        IHWUSE='V'
20458        MESSAG='NO'
20459        CALL CHECKN(IH,IH2,IHWUSE,
20460     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
20461     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
20462        IF(IERROR.EQ.'YES')THEN
20463C
20464C         2019/10: CHECK TO SEE IF DPZCHF.DAT EXISTS
20465C
20466          IOUNI2=IZCHNU
20467          IFILE2=IZCHNA
20468          ISTAT2=IZCHST
20469          IFORM2=IZCHFO
20470          IACCE2=IZCHAC
20471          IPROT2=IZCHPR
20472          ICURS2=IZCHCS
20473C
20474          ISUBN0='WRIT'
20475          IERRF2='NO'
20476          CALL DPOPFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,
20477     1                ICURS2,
20478     1                IREWI2,ISUBN0,IERRF2,IBUGG4,ISUBRO,IERROR)
20479          IF(IERRF2.EQ.'YES')GOTO11101
20480          IFLAGC=1
20481          REWIND(IOUNI2)
20482          READ(IOUNI2,'(I8)',END=11201,ERR=11201)NCVAR
20483          DO11203KK=1,NCVAR
20484            READ(IOUNI2,'(2A4)',END=11201,ERR=11201)IHTEMP,IHTEM2
20485            IF(IHTEMP.EQ.IH .AND. IHTEM2.EQ.IH2)THEN
20486              IROWID=KK
20487              GOTO11109
20488            ENDIF
2048911203     CONTINUE
20490C
2049111201     CONTINUE
20492          IENDFI='OFF'
20493          IREWIN='ON'
20494          CALL DPCLFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,ICURS2,
20495     1                IENDFI,IREWIN,ISUBN0,IERRF2,IBUGG4,ISUBRO,IERROR)
20496          IZCHCS='CLOSED'
20497C
2049811101     CONTINUE
20499          WRITE(ICOUT,999)
20500          CALL DPWRST('XXX','BUG ')
20501          WRITE(ICOUT,11106)IH,IH2
2050211106     FORMAT('***** WARNING--UNABLE TO DETERMINE VARIABLE ',
20503     1           2A4,' FOR X1TIC MARK LABELS.')
20504          CALL DPWRST('XXX','BUG ')
20505          IF(IFLAGC.EQ.1)GOTO9000
20506          GOTO1190
20507        ENDIF
20508        ICOLL=IVALUE(ILOCV)
20509        NLEFT=IN(ILOCV)
20510C
2051111109   CONTINUE
20512C
20513C  1/2006: IF VARIABLE LABEL SPECIFIED, THEN CHECK TO SEE IF
20514C          INDEX VARIABLE ALSO SPECIFIED.
20515C
20516        IVLIND=0
20517        I=2
20518        MESSAG='OFF'
20519        CALL DPEXS1(IX1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
20520     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
20521     1              IBUGG4,ISUBG4,IERRG4)
20522        IF(NCSTR2.GT.0)THEN
20523          IHIND='    '
20524          IHIND2='    '
20525          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
20526          IF(NCSTR2.GE.5)
20527     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
20528C
20529          IHWUSE='V'
20530          MESSAG='NO'
20531          CALL CHECKN(IHIND,IHIND2,IHWUSE,
20532     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
20533     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
20534          IF(IERROR.EQ.'YES')THEN
20535            WRITE(ICOUT,999)
20536            CALL DPWRST('XXX','BUG ')
20537            WRITE(ICOUT,11116)IHIND,IHIND2
2053811116       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
20539     1            'VARIABLE, ',A4,A4,',')
20540            CALL DPWRST('XXX','BUG ')
20541            WRITE(ICOUT,11117)
2054211117       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
20543     1             '(VARIABLE FORM).')
20544            CALL DPWRST('XXX','BUG ')
20545            GOTO1190
20546          ENDIF
20547          ICOLI=IVALUE(ILOCV)
20548          NLEFI=IN(ILOCV)
20549          IVLIND=1
20550        ENDIF
20551      ELSEIF(IX1ZFM.EQ.'GLAB')THEN
20552        CALL DPUPPE(IX1ZCN,ISTOP,IX1ZCN,IBUGG4,IERROR)
20553        I=1
20554        MESSAG='OFF'
20555        CALL DPEXS1(IX1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
20556     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
20557     1              IBUGG4,ISUBG4,IERRG4)
20558        IF(NCSTR2.LE.0)THEN
20559          WRITE(ICOUT,999)
20560          CALL DPWRST('XXX','BUG ')
20561          WRITE(ICOUT,11122)
2056211122     FORMAT('***** WARNING--FOR X1TIC MARK LABEL FORMAT ',
20563     1           '"GROUP LABEL"')
20564          CALL DPWRST('XXX','BUG ')
20565          WRITE(ICOUT,11124)
2056611124     FORMAT('      NO GROUP LABEL VARIABLE NAME SPECIFIED ON ',
20567     1           'X1TIC MARK LABEL CONTENT COMMAND.')
20568          CALL DPWRST('XXX','BUG ')
20569          GOTO1190
20570        ELSE
20571          IH='    '
20572          IH2='    '
20573          IH(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
20574          IF(NCSTR2.GE.5)IH2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
20575        ENDIF
20576C
20577        IGVAR=0
20578        DO11120I=1,MAXGRP
20579          IF(IH(1:4).EQ.IGRPVN(I)(1:4) .AND.
20580     1       IH2(1:4).EQ.IGRPVN(I)(5:8))THEN
20581            IGVAR=I
20582            GOTO11129
20583          ENDIF
2058411120   CONTINUE
2058511129   CONTINUE
20586C
20587C  1/2006: IF GROUP LABEL SPECIFIED, THEN CHECK TO SEE IF
20588C          INDEX VARIABLE ALSO SPECIFIED.
20589C
20590        IGLIND=0
20591        I=2
20592        MESSAG='OFF'
20593        CALL DPEXS1(IX1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
20594     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
20595     1              IBUGG4,ISUBG4,IERRG4)
20596        IF(NCSTR2.GT.0)THEN
20597          IHIND='    '
20598          IHIND2='    '
20599          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
20600          IF(NCSTR2.GE.5)
20601     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
20602C
20603          IHWUSE='V'
20604          MESSAG='NO'
20605          CALL CHECKN(IHIND,IHIND2,IHWUSE,
20606     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
20607     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
20608          IF(IERROR.EQ.'YES')THEN
20609            WRITE(ICOUT,999)
20610            CALL DPWRST('XXX','BUG ')
20611            WRITE(ICOUT,11136)IHIND,IHIND2
2061211136       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
20613     1             'VARIABLE, ',A4,A4,',')
20614            CALL DPWRST('XXX','BUG ')
20615            WRITE(ICOUT,11137)
2061611137       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
20617     1             '(GROUP LABEL FORM).')
20618            CALL DPWRST('XXX','BUG ')
20619            GOTO1190
20620          ENDIF
20621          ICOLI=IVALUE(ILOCV)
20622          NLEFI=IN(ILOCV)
20623          IGLIND=1
20624        ENDIF
20625C
20626      ELSEIF(IX1ZFM.EQ.'ROWL')THEN
20627C
20628C  1/2006: IF ROW LABEL SPECIFIED, THEN CHECK TO SEE IF
20629C          INDEX VARIABLE ALSO SPECIFIED.
20630C
20631C  4/2017: IF ROW LABEL SPECIFIED, THEN CHECK TO SEE IF
20632C          START AND STOP ROWS ALSO SPECIFIED.
20633C
20634        CALL DPUPPE(IX1ZCN,ISTOP,IX1ZCN,IBUGG4,IERROR)
20635        IRLIND=0
20636C
20637C       CHECK FOR INDEX VARIABLE
20638C
20639        I=1
20640        MESSAG='OFF'
20641        CALL DPEXS1(IX1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
20642     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
20643     1              IBUGG4,ISUBG4,IERRG4)
20644        IF(NCSTR2.GT.0)THEN
20645          IHIND='    '
20646          IHIND2='    '
20647          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
20648          IF(NCSTR2.GE.5)
20649     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
20650C
20651          IHWUSE='V'
20652          MESSAG='NO'
20653          IERROR='NO'
20654          CALL CHECKN(IHIND,IHIND2,IHWUSE,
20655     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
20656     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
20657          IF(IERROR.EQ.'YES')THEN
20658            WRITE(ICOUT,999)
20659            CALL DPWRST('XXX','BUG ')
20660            WRITE(ICOUT,11138)IHIND,IHIND2
2066111138       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
20662     1             'VARIABLE, ',A4,A4,',')
20663            CALL DPWRST('XXX','BUG ')
20664            WRITE(ICOUT,11139)
2066511139       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
20666     1             '(ROW LABEL FORM).')
20667            CALL DPWRST('XXX','BUG ')
20668            GOTO1190
20669          ENDIF
20670          ICOLI=IVALUE(ILOCV)
20671          NLEFI=IN(ILOCV)
20672          IRLIND=1
20673        ENDIF
20674C
20675C       CHECK FOR STARTING ROW
20676C
20677        I=2
20678        MESSAG='OFF'
20679        CALL DPEXS1(IX1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
20680     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
20681     1              IBUGG4,ISUBG4,IERRG4)
20682        IF(NCSTR2.GT.0)THEN
20683          IHIND='    '
20684          IHIND2='    '
20685          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
20686          IF(NCSTR2.GE.5)
20687     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
20688C
20689          IHWUSE='P'
20690          MESSAG='NO'
20691          IERROR='NO'
20692          CALL CHECKN(IHIND,IHIND2,IHWUSE,
20693     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
20694     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
20695          IF(IERROR.EQ.'YES')THEN
20696            IROW1=1
20697          ELSE
20698            IROW1=INT(VALUE(ILOCV)+0.01)
20699            IF(IROW1.LT.1)IROW1=1
20700            IF(IROW1.GT.MAXOBV)IROW1=1
20701          ENDIF
20702        ENDIF
20703C
20704      ENDIF
20705C
20706      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
20707        WRITE(ICOUT,8004)
20708 8004   FORMAT('STEP 21.1: BEFORE DO1100')
20709        CALL DPWRST('XXX','BUG ')
20710      ENDIF
20711C
20712      DO1100I=1,NX1COO
20713C
20714        PX1=PX1COO(I)
20715        IF(IX1ZFM.EQ.'VARI')THEN
20716          IF(IVLIND.EQ.1)THEN
20717            IJ=MAXN*(ICOLI-1)+I
20718            IF(ICOLI.LE.MAXCOL)AVALU2=V(IJ)
20719            IF(ICOLI.EQ.MAXCP1)AVALU2=PRED(I)
20720            IF(ICOLI.EQ.MAXCP2)AVALU2=RES(I)
20721            IF(ICOLI.EQ.MAXCP3)AVALU2=YPLOT(I)
20722            IF(ICOLI.EQ.MAXCP4)AVALU2=XPLOT(I)
20723            IF(ICOLI.EQ.MAXCP5)AVALU2=X2PLOT(I)
20724            IF(ICOLI.EQ.MAXCP6)AVALU2=TAGPLO(I)
20725            INDX=INT(AVALU2+0.5)
20726            IF(INDX.LT.1 .OR. INDX.GT.NX1COO)THEN
20727              INDX=I
20728            ENDIF
20729          ELSE
20730            INDX=I
20731          ENDIF
20732C
20733          IF(IFLAGC.EQ.0)THEN
20734            IJ=MAXN*(ICOLL-1)+INDX
20735            IF(ICOLL.LE.MAXCOL)AVALUE=V(IJ)
20736            IF(ICOLL.EQ.MAXCP1)AVALUE=PRED(INDX)
20737            IF(ICOLL.EQ.MAXCP2)AVALUE=RES(INDX)
20738            IF(ICOLL.EQ.MAXCP3)AVALUE=YPLOT(INDX)
20739            IF(ICOLL.EQ.MAXCP4)AVALUE=XPLOT(INDX)
20740            IF(ICOLL.EQ.MAXCP5)AVALUE=X2PLOT(INDX)
20741            IF(ICOLL.EQ.MAXCP6)AVALUE=TAGPLO(INDX)
20742            IVALU9=INT(AVALUE+0.5)
20743            IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
20744          ELSE
20745            IVALU9=INDX
20746          ENDIF
20747        ELSEIF(IX1ZFM.EQ.'GLAB' .AND. IGLIND.EQ.1)THEN
20748          IJ=MAXN*(ICOLI-1)+I
20749          IF(ICOLI.LE.MAXCOL)AVALUE=V(IJ)
20750          IF(ICOLI.EQ.MAXCP1)AVALUE=PRED(I)
20751          IF(ICOLI.EQ.MAXCP2)AVALUE=RES(I)
20752          IF(ICOLI.EQ.MAXCP3)AVALUE=YPLOT(I)
20753          IF(ICOLI.EQ.MAXCP4)AVALUE=XPLOT(I)
20754          IF(ICOLI.EQ.MAXCP5)AVALUE=X2PLOT(I)
20755          IF(ICOLI.EQ.MAXCP6)AVALUE=TAGPLO(I)
20756          IVALU9=INT(AVALUE+0.5)
20757        ELSEIF(IX1ZFM.EQ.'ROWL' .AND. IRLIND.EQ.1)THEN
20758          IJ=MAXN*(ICOLI-1)+I
20759          IJ=IJ+IROW1-1
20760          IF(IJ.LT.1)IJ=1
20761          IF(IJ.GT.MAXOBV)IJ=MAXOBV
20762          IJ2=I+IROW1-1
20763          IF(IJ2.LT.1)IJ2=1
20764          IF(IJ2.GT.MAXOBV)IJ2=MAXOBV
20765          IF(ICOLI.LE.MAXCOL)AVALUE=V(IJ)
20766          IF(ICOLI.EQ.MAXCP1)AVALUE=PRED(IJ2)
20767          IF(ICOLI.EQ.MAXCP2)AVALUE=RES(IJ2)
20768          IF(ICOLI.EQ.MAXCP3)AVALUE=YPLOT(IJ2)
20769          IF(ICOLI.EQ.MAXCP4)AVALUE=XPLOT(IJ2)
20770          IF(ICOLI.EQ.MAXCP5)AVALUE=X2PLOT(IJ2)
20771          IF(ICOLI.EQ.MAXCP6)AVALUE=TAGPLO(IJ2)
20772          IVALU9=INT(AVALUE+0.5)
20773        ELSE
20774          AVALUE=X1COOR(I)
20775          IVALU9=INT(AVALUE+0.5)
20776          IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
20777        ENDIF
20778C
20779        IF(IX1ZFM.EQ.'VARI' .AND. IFLAGC.EQ.1)GOTO11160
20780        IF(IX1ZFM.EQ.'ROWL')GOTO1160
20781        IF(IX1ZFM.EQ.'GLAB')GOTO1170
20782        IF(IX1ZFM.EQ.'ALPH')GOTO1150
20783        IF(IX1TSC.EQ.'LOG'.AND.IX1ZFM.EQ.'REAL')GOTO1120
20784        IF(IX1TSC.EQ.'LOG'.AND.IX1ZFM.EQ.'FIXE')GOTO1120
20785        IF(IX1TSC.EQ.'LOG'.AND.IX1ZFM.EQ.'DECI')GOTO1120
20786        IF(IX1TSC.EQ.'LOG'.AND.IX1ZFM.EQ.'INTE')GOTO1120
20787        IF(IX1TSC.EQ.'LOG'.AND.IX1ZFM.EQ.'EXPO')GOTO1130
20788        IF(IX1TSC.EQ.'LOG'.AND.IX1ZFM.EQ.'EXP')GOTO1130
20789CCCCC ADD FOLLOWING 2 LINES.  JULY 1997.
20790        IF(IX1TSC.EQ.'LINE'.AND.IX1ZFM.EQ.'EXP')GOTO1140
20791        IF(IX1TSC.EQ.'LINE'.AND.IX1ZFM.EQ.'EXPO')GOTO1140
20792        GOTO1110
20793C
20794 1110   CONTINUE
20795        NMDID0=IX1ZDP
20796        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
20797        GOTO1180
20798C
20799 1120   CONTINUE
20800CCCCC   AVALUE=X1COOR(I)
20801        AVALUE=10.0**AVALUE
20802        IVALU9=INT(AVALUE+0.5)
20803        IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
20804        NMDID0=IX1ZDP
20805        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
20806        GOTO1180
20807C
20808 1130   CONTINUE
20809        NMDID0=IX1ZDP
20810        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
20811        IF(NCTEXT.LE.0)GOTO1139
20812        DO1131J=1,NCTEXT
20813          JREV=NCTEXT-J+1
20814          J2=JREV+7
20815          ICTEXT(J2)=ICTEXT(JREV)
20816 1131   CONTINUE
20817        ICTEXT(1)='1   '
20818        ICTEXT(2)='0   '
20819        ICTEXT(3)='S   '
20820        ICTEXT(4)='U   '
20821        ICTEXT(5)='P   '
20822        ICTEXT(6)='(   '
20823        ICTEXT(7)=')   '
20824        NCTEXT=NCTEXT+7
20825        NCTEXT=NCTEXT+1
20826        ICTEXT(NCTEXT)='U   '
20827        NCTEXT=NCTEXT+1
20828        ICTEXT(NCTEXT)='N   '
20829        NCTEXT=NCTEXT+1
20830        ICTEXT(NCTEXT)='S   '
20831        NCTEXT=NCTEXT+1
20832        ICTEXT(NCTEXT)='P   '
20833        NCTEXT=NCTEXT+1
20834        ICTEXT(NCTEXT)='(   '
20835        NCTEXT=NCTEXT+1
20836        ICTEXT(NCTEXT)=')   '
20837 1139   CONTINUE
20838        GOTO1180
20839C
20840CCCCC ADD FOLLOWING SECTION (FOR EXPONENTIAL NUMBERS ON LINEAR
20841CCCCC SCALE) JULY 1997
20842 1140   CONTINUE
20843        NMDID0=IX1ZDP
20844        ISTRI2=' '
20845        ICTEMP='(E15.7 )'
20846        NTEMP2=7
20847        IF(NMDID0.GE.1)NTEMP2=NMDID0
20848        NTEMP1=NTEMP2+8
20849        IF(NTEMP2.LE.9)THEN
20850          WRITE(ICTEMP(6:6),'(I1)')NTEMP2
20851        ELSE
20852          WRITE(ICTEMP(6:7),'(I2)')NTEMP2
20853        ENDIF
20854        WRITE(ICTEMP(3:4),'(I2)')NTEMP1
20855        WRITE(ISTRI2,ICTEMP)AVALUE
20856        DO1142KK=1,NTEMP1
20857          IF(ISTRI2(KK:KK).NE.' ')THEN
20858             NCTEXT=KK
20859             ICTEXT(KK)=ISTRI2(KK:KK)
20860          ELSE
20861             ICTEXT(KK)=' '
20862          ENDIF
20863 1142   CONTINUE
20864C
20865        GOTO1180
20866C
20867 1150   CONTINUE
20868        MESSAG='OFF'
20869        CALL DPEXS1(IX1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
20870     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
20871     1              IBUGG4,ISUBG4,IERRG4)
20872        IF(NCSTR2.LE.0)GOTO1159
20873        DO1152J=1,NCSTR2
20874          IC1=ISTRI2(J:J)
20875          IC4='    '
20876          IC4(1:1)=IC1
20877          ICTEXT(J)=IC4
20878 1152   CONTINUE
20879 1159   CONTINUE
20880        NCTEXT=NCSTR2
20881        GOTO1185
20882C
20883 1160   CONTINUE
20884        INDX=IVALU9
20885        IF(INDX.LT.1)INDX=I
20886CCCCC   IF(IRLIND.EQ.1)THEN
20887CCCCC     IF(IVALU9.GE.1 .AND. IVALU9.LE.NX1COO)INDX=IVALU9
20888CCCCC   ENDIF
20889C
20890        DO1161J=1,24
20891          ICTEXT(J)=IROWLB(INDX)(J:J)
20892 1161   CONTINUE
20893        NCTEXT=1
20894        DO1163J=24,1,-1
20895          IF(ICTEXT(J).NE.'    ')THEN
20896            NCTEXT=J
20897            GOTO1185
20898          ENDIF
20899 1163   CONTINUE
20900        GOTO1185
20901C
2090211160   CONTINUE
20903        INDX=IVALU9
20904        IF(INDX.LT.1)INDX=I
20905C
20906        REWIND(IOUNI2)
20907        READ(IOUNI2,'(I8)',END=11166,ERR=11166)NCVAR
20908        DO11161KK=1,NCVAR
20909          READ(IOUNI2,'(A1)',END=11166,ERR=11166)IAJUNK
2091011161   CONTINUE
20911        IF(INDX.GT.1)THEN
20912          DO11162KK=1,INDX-1
20913            READ(IOUNI2,'(A1)',END=11166,ERR=11166)IAJUNK
2091411162     CONTINUE
20915        ENDIF
20916        IFORMT=' '
20917        IFORMT='(    A)'
20918        WRITE(IFORMT(2:5),'(I4)')NCVAR
20919        READ(IOUNI2,IFORMT,END=11166,ERR=11166)ISTRCC
20920        NSTRT=(IROWID-1)*25 + 1
20921        NSTOP=NSTRT+23
20922        DO11163J=1,24
20923          IVAL=NSTRT+J-1
20924          ICTEXT(J)=ISTRCC(IVAL:IVAL)
2092511163   CONTINUE
20926        NCTEXT=1
20927        DO11164J=24,1,-1
20928          IF(ICTEXT(J).NE.'    ')THEN
20929            NCTEXT=J
20930            GOTO1185
20931          ENDIF
2093211164   CONTINUE
20933        GOTO1185
20934C
2093511166   CONTINUE
20936        WRITE(ICOUT,999)
20937        CALL DPWRST('XXX','BUG ')
20938        WRITE(ICOUT,11167)
2093911167   FORMAT('***** ERROR IN X1TIC MARK LABEL--')
20940        CALL DPWRST('XXX','BUG ')
20941        WRITE(ICOUT,11168)
2094211168   FORMAT('      END OF FILE OR ERROR IN READING DPZCHF.DAT FILE.')
20943        CALL DPWRST('XXX','BUG ')
20944        GOTO9000
20945C
20946 1170   CONTINUE
20947        IF(IGVAR.EQ.0)THEN
20948           WRITE(ICOUT,999)
20949           CALL DPWRST('XXX','BUG ')
20950           WRITE(ICOUT,1176)
20951 1176      FORMAT('***** WARNING--UNABLE TO DETERMINE GROUP LABEL ',
20952     1            'VARIABLE FOR X1TIC MARK LABELS.')
20953           CALL DPWRST('XXX','BUG ')
20954           GOTO1190
20955        ENDIF
20956C
20957C       JANUARY 2006.  DETERMINE THE INDEX IF REQUESTED.
20958C
20959        INDX=I
20960        IF(IGLIND.EQ.1)THEN
20961          IF(IVALU9.GE.1 .AND. IVALU9.LE.NX1COO)INDX=IVALU9
20962        ENDIF
20963C
20964CCCCC   DO1171J=1,24
20965        DO1171J=1,MAXGR2
20966          ICTEXT(J)=IGRPLA(INDX,IGVAR)(J:J)
20967 1171   CONTINUE
20968        NCTEXT=1
20969CCCCC   DO1173J=24,1,-1
20970        DO1173J=MAXGR2,1,-1
20971          IF(ICTEXT(J).NE.'    ')THEN
20972            NCTEXT=J
20973            GOTO1185
20974          ENDIF
20975 1173   CONTINUE
20976        GOTO1185
20977C
20978 1180   CONTINUE
20979C
20980        IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
20981          WRITE(ICOUT,8101)
20982 8101     FORMAT('STEP 21.1: AT 1180')
20983          CALL DPWRST('XXX','BUG ')
20984        ENDIF
20985C
20986CCCCC   MARCH 1993.  STRIP OUT UC(), LC(), AND SP() FOR HARDWARE TEXT.
20987        IF(IFONT.EQ.'TEKT')CALL GRSTRI(ICTEXT,NCTEXT)
20988        IF(NCTEXT.GE.1)
20989     1    CALL GRDETL(ICTEXT,NCTEXT,
20990     1                IFONT,IDIR,ANGLE,
20991     1                JFONT,JDIR,ANGLE2,
20992     1                PHEIGH,PWIDTH,PVEGAP,PHOGAP,
20993     1                JSIZE,
20994     1                JHEIG2,JWIDT2,JVEGA2,JHOGA2,
20995     1                PHEIG2,PWIDT2,PVEGA2,PHOGA2,
20996     1                PXLEC,PXLECG,PYLEC,PYLECG)
20997C
20998        IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
20999          WRITE(ICOUT,8102)
21000 8102     FORMAT('STEP 21.1: BEFORE CALL GRWRTE')
21001          CALL DPWRST('XXX','BUG ')
21002        ENDIF
21003C
21004        IF(NCTEXT.GE.1)
21005     1    CALL GRWRTE(PX1,PY1,ICTEXT,NCTEXT,
21006     1         IPATTT,IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
21007     1         JPATTT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILLT,JCOL,
21008     1         PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
21009     1         JSIZE,
21010     1         JHEIG2,JWIDT2,JVEGA2,JHOGA2,
21011     1         PHEIG2,PWIDT2,PVEGA2,PHOGA2,
21012     1         JTHICK,PTHIC2,
21013     1         PXLEC,PXLECG,PYLEC,PYLECG,
21014     1         ISYMBL,ISPAC,
21015     1         IMPSW2,AMPSCH,AMPSCW,
21016     1         PX99,PY99)
21017        GOTO1100
21018C
21019 1185   CONTINUE
21020C
21021        IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
21022          WRITE(ICOUT,8202)
21023 8202     FORMAT('STEP 21.1: BEFORE CALL DPWRTE')
21024          CALL DPWRST('XXX','BUG ')
21025        ENDIF
21026C
21027        IF(NCTEXT.GE.1)
21028     1    CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
21029     1                IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
21030     1                PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
21031     1                ISYMBL,ISPAC,
21032     1                IMPSW2,AMPSCH,AMPSCW,
21033     1                PX99,PY99)
21034        GOTO1100
21035C
21036 1100 CONTINUE
21037 1190 CONTINUE
21038C
21039C               ******************************************************
21040C               **  STEP 21.2--                                     **
21041C               **  WRITE TIC LABELS     ON TOP    HORIZONTAL AXIS  **
21042C               ******************************************************
21043C
21044      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
21045        WRITE(ICOUT,8005)
21046 8005   FORMAT('STEP 21.2')
21047        CALL DPWRST('XXX','BUG ')
21048      ENDIF
21049C
21050      IF(IX2FSW.EQ.'OFF')GOTO1290
21051CCCCC IF(IX2TSW.EQ.'OFF')GOTO1290
21052      IF(IX2ZSW.EQ.'OFF')GOTO1290
21053      IF(NX2COO.LE.0)GOTO1290
21054C
21055      IFONT=IX2ZFO
21056      CALL GRTRFO(ITYPE,IFONT,JFONT)
21057      CALL GRSEFO(ITYPE,IFONT,JFONT)
21058C
21059      ICASE=IX2ZCA
21060      CALL GRTRCA(ITYPE,ICASE,JCASE)
21061      CALL GRSECA(ITYPE,ICASE,JCASE)
21062C
21063      IJUST=IX2ZJU
21064      CALL GRTRJU(ITYPE,IJUST,JJUST)
21065      CALL GRSEJU(ITYPE,IJUST,JJUST)
21066C
21067      IDIR=IX2ZDI
21068      ANGLE=AX2ZAN
21069      CALL GRTRDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
21070      CALL GRSEDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
21071C
21072      IFILLT=IX2ZFI
21073      CALL GRTRFI(ITYPE,IFILLT,JFILLT)
21074      CALL GRSEFI(ITYPE,IFILLT,JFILLT)
21075C
21076      ICOL=IX2ZCO
21077      CALL GRTRCO(ITYPE,ICOL,JCOL)
21078      CALL GRSECO(ITYPE,ICOL,JCOL)
21079C
21080      PHEIGH=PX2ZHE
21081      PWIDTH=PX2ZWI
21082      PVEGAP=PX2ZVG
21083      PHOGAP=PX2ZHG
21084      CALL GRTRSI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
21085     1JSIZE,
21086     1JHEIG2,JWIDT2,JVEGA2,JHOGA2,
21087     1PHEIG2,PWIDT2,PVEGA2,PHOGA2)
21088      CALL GRSESI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
21089     1JSIZE,
21090     1JHEIG2,JWIDT2,JVEGA2,JHOGA2,
21091     1PHEIG2,PWIDT2,PVEGA2,PHOGA2)
21092C
21093      PY1=PYMAX+PX2ZDS
21094C
21095      ISTART=1
21096CCCCC ISTOP=130
21097      ISTOP=2048
21098C
21099CCCCC JANUARY 2004.  FOR VARIABLE OR GROUP LABEL CASE, NEED
21100CCCCC TO EXTRACT RELEVANT VARIABLE.
21101C
21102      IF(IX2ZFM.EQ.'VARI')THEN
21103C
21104        IFLAGC=0
21105        I=1
21106        CALL DPUPPE(IX2ZCN,ISTOP,IX2ZCN,IBUGG4,IERROR)
21107        MESSAG='OFF'
21108        CALL DPEXS1(IX2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21109     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21110     1              IBUGG4,ISUBG4,IERRG4)
21111        IF(NCSTR2.LE.0)THEN
21112          WRITE(ICOUT,999)
21113          CALL DPWRST('XXX','BUG ')
21114          WRITE(ICOUT,12102)
2111512102     FORMAT('***** WARNING--FOR X2TIC MARK LABEL FORMAT ',
21116     1           '"VARIABLE"')
21117          CALL DPWRST('XXX','BUG ')
21118          WRITE(ICOUT,12104)
2111912104     FORMAT('      NO VARIABLE NAME SPECIFIED ON ',
21120     1           'X2TIC MARK LABEL CONTENT COMMAND.')
21121          CALL DPWRST('XXX','BUG ')
21122        ELSE
21123          IH='    '
21124          IH2='    '
21125          IH(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21126          IF(NCSTR2.GE.5)IH2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21127        ENDIF
21128C
21129        IHWUSE='V   '
21130        MESSAG='NO'
21131        CALL CHECKN(IH,IH2,IHWUSE,
21132     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
21133     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
21134        IF(IERROR.EQ.'YES')THEN
21135C
21136C         2019/10: CHECK TO SEE IF DPZCHF.DAT EXISTS
21137C
21138          IOUNI2=IZCHNU
21139          IFILE2=IZCHNA
21140          ISTAT2=IZCHST
21141          IFORM2=IZCHFO
21142          IACCE2=IZCHAC
21143          IPROT2=IZCHPR
21144          ICURS2=IZCHCS
21145C
21146          ISUBN0='WRIT'
21147          IERRF2='NO'
21148          CALL DPOPFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,
21149     1                ICURS2,
21150     1                IREWI2,ISUBN0,IERRF2,IBUGG4,ISUBRO,IERROR)
21151          IF(IERRF2.EQ.'YES')GOTO12201
21152          IFLAGC=1
21153          REWIND(IOUNI2)
21154          READ(IOUNI2,'(I8)',END=12201,ERR=12201)NCVAR
21155          DO12203KK=1,NCVAR
21156            READ(IOUNI2,'(2A4)',END=12201,ERR=12201)IHTEMP,IHTEM2
21157            IF(IHTEMP.EQ.IH .AND. IHTEM2.EQ.IH2)THEN
21158              IROWID=KK
21159              GOTO12109
21160            ENDIF
2116112203     CONTINUE
21162C
2116312201     CONTINUE
21164          IENDFI='OFF'
21165          IREWIN='ON'
21166          CALL DPCLFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,ICURS2,
21167     1                IENDFI,IREWIN,ISUBN0,IERRF2,IBUGG4,ISUBRO,IERROR)
21168          IZCHCS='CLOSED'
21169C
21170          WRITE(ICOUT,999)
21171          CALL DPWRST('XXX','BUG ')
21172          WRITE(ICOUT,12106)IH,IH2
2117312106     FORMAT('***** WARNING--UNABLE TO DETERMINE VARIABLE ',
21174     1           2A4,' FOR X2TIC MARK LABELS.')
21175          CALL DPWRST('XXX','BUG ')
21176          IF(IFLAGC.EQ.1)GOTO9000
21177          GOTO1290
21178        ENDIF
21179        ICOLL=IVALUE(ILOCV)
21180        NLEFT=IN(ILOCV)
21181C
2118212109   CONTINUE
21183C
21184C  1/2006: IF VARIABLE LABEL SPECIFIED, THEN CHECK TO SEE IF
21185C          INDEX VARIABLE ALSO SPECIFIED.
21186C
21187        IVLIND=0
21188        I=2
21189        MESSAG='OFF'
21190        CALL DPEXS1(IX2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21191     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21192     1              IBUGG4,ISUBG4,IERRG4)
21193        IF(NCSTR2.GT.0)THEN
21194          IHIND='    '
21195          IHIND2='    '
21196          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21197          IF(NCSTR2.GE.5)
21198     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21199C
21200          IHWUSE='V'
21201          MESSAG='NO'
21202          CALL CHECKN(IHIND,IHIND2,IHWUSE,
21203     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
21204     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
21205          IF(IERROR.EQ.'YES')THEN
21206            WRITE(ICOUT,999)
21207            CALL DPWRST('XXX','BUG ')
21208            WRITE(ICOUT,12116)IHIND,IHIND2
2120912116       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
21210     1            'VARIABLE, ',A4,A4,',')
21211            CALL DPWRST('XXX','BUG ')
21212            WRITE(ICOUT,12117)
2121312117       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
21214     1             '(VARIABLE FORM).')
21215            CALL DPWRST('XXX','BUG ')
21216            GOTO1290
21217          ENDIF
21218          ICOLI=IVALUE(ILOCV)
21219          NLEFI=IN(ILOCV)
21220          IVLIND=1
21221        ENDIF
21222      ELSEIF(IX2ZFM.EQ.'GLAB')THEN
21223        CALL DPUPPE(IX2ZCN,ISTOP,IX2ZCN,IBUGG4,IERROR)
21224        I=1
21225        MESSAG='OFF'
21226        CALL DPEXS1(IX2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21227     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21228     1              IBUGG4,ISUBG4,IERRG4)
21229        IF(NCSTR2.LE.0)THEN
21230          WRITE(ICOUT,999)
21231          CALL DPWRST('XXX','BUG ')
21232          WRITE(ICOUT,12122)
2123312122     FORMAT('***** WARNING--FOR X2TIC MARK LABEL FORMAT ',
21234     1           '"GROUP LABEL"')
21235          CALL DPWRST('XXX','BUG ')
21236          WRITE(ICOUT,12124)
2123712124     FORMAT('      NO GROUP LABEL VARIABLE NAME SPECIFIED ON ',
21238     1           'X2TIC MARK LABEL CONTENT COMMAND.')
21239          CALL DPWRST('XXX','BUG ')
21240          GOTO1290
21241        ELSE
21242          IH='    '
21243          IH2='    '
21244          IH(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21245          IF(NCSTR2.GE.5)IH2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21246        ENDIF
21247C
21248        IGVAR=0
21249        DO12120I=1,MAXGRP
21250          IF(IH(1:4).EQ.IGRPVN(I)(1:4) .AND.
21251     1       IH2(1:4).EQ.IGRPVN(I)(5:8))THEN
21252            IGVAR=I
21253            GOTO12129
21254          ENDIF
2125512120   CONTINUE
2125612129   CONTINUE
21257C
21258C  1/2006: IF GROUP LABEL SPECIFIED, THEN CHECK TO SEE IF
21259C          INDEX VARIABLE ALSO SPECIFIED.
21260C
21261        IGLIND=0
21262        I=2
21263        MESSAG='OFF'
21264        CALL DPEXS1(IX2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21265     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21266     1              IBUGG4,ISUBG4,IERRG4)
21267        IF(NCSTR2.GT.0)THEN
21268          IHIND='    '
21269          IHIND2='    '
21270          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21271          IF(NCSTR2.GE.5)
21272     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21273C
21274          IHWUSE='V'
21275          MESSAG='NO'
21276          CALL CHECKN(IHIND,IHIND2,IHWUSE,
21277     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
21278     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
21279          IF(IERROR.EQ.'YES')THEN
21280            WRITE(ICOUT,999)
21281            CALL DPWRST('XXX','BUG ')
21282            WRITE(ICOUT,12136)IHIND,IHIND2
2128312136       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
21284     1             'VARIABLE, ',A4,A4,',')
21285            CALL DPWRST('XXX','BUG ')
21286            WRITE(ICOUT,12137)
2128712137       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
21288     1             '(GROUP LABEL FORM).')
21289            CALL DPWRST('XXX','BUG ')
21290            GOTO1290
21291          ENDIF
21292          ICOLI=IVALUE(ILOCV)
21293          NLEFI=IN(ILOCV)
21294          IGLIND=1
21295        ENDIF
21296C
21297      ELSEIF(IX2ZFM.EQ.'ROWL')THEN
21298C
21299C  1/2006: IF ROW LABEL SPECIFIED, THEN CHECK TO SEE IF
21300C          INDEX VARIABLE ALSO SPECIFIED.
21301C
21302        CALL DPUPPE(IX2ZCN,ISTOP,IX2ZCN,IBUGG4,IERROR)
21303        IRLIND=0
21304        I=1
21305        MESSAG='OFF'
21306        CALL DPEXS1(IX2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21307     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21308     1              IBUGG4,ISUBG4,IERRG4)
21309        IF(NCSTR2.GT.0)THEN
21310          IHIND='    '
21311          IHIND2='    '
21312          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21313          IF(NCSTR2.GE.5)
21314     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21315C
21316          IHWUSE='V'
21317          MESSAG='NO'
21318          CALL CHECKN(IHIND,IHIND2,IHWUSE,
21319     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
21320     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
21321          IF(IERROR.EQ.'YES')THEN
21322            WRITE(ICOUT,999)
21323            CALL DPWRST('XXX','BUG ')
21324            WRITE(ICOUT,12138)IHIND,IHIND2
2132512138       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
21326     1             'VARIABLE, ',A4,A4,',')
21327            CALL DPWRST('XXX','BUG ')
21328            WRITE(ICOUT,12139)
2132912139       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
21330     1             '(ROW LABEL FORM).')
21331            CALL DPWRST('XXX','BUG ')
21332            GOTO1290
21333          ENDIF
21334          ICOLI=IVALUE(ILOCV)
21335          NLEFI=IN(ILOCV)
21336          IRLIND=1
21337        ENDIF
21338C
21339C       CHECK FOR STARTING ROW
21340C
21341        I=2
21342        MESSAG='OFF'
21343        CALL DPEXS1(IX2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21344     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21345     1              IBUGG4,ISUBG4,IERRG4)
21346        IF(NCSTR2.GT.0)THEN
21347          IHIND='    '
21348          IHIND2='    '
21349          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21350          IF(NCSTR2.GE.5)
21351     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21352C
21353          IHWUSE='P'
21354          MESSAG='NO'
21355          IERROR='NO'
21356          CALL CHECKN(IHIND,IHIND2,IHWUSE,
21357     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
21358     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
21359          IF(IERROR.EQ.'YES')THEN
21360            IROW1=1
21361          ELSE
21362            IROW1=INT(VALUE(ILOCV)+0.01)
21363            IF(IROW1.LT.1)IROW1=1
21364            IF(IROW1.GT.MAXOBV)IROW1=1
21365          ENDIF
21366        ENDIF
21367C
21368      ENDIF
21369C
21370      DO1200I=1,NX2COO
21371C
21372        PX1=PX2COO(I)
21373        IF(IX2ZFM.EQ.'VARI')THEN
21374          IF(IVLIND.EQ.1)THEN
21375            IJ=MAXN*(ICOLI-1)+I
21376            IF(ICOLI.LE.MAXCOL)AVALU2=V(IJ)
21377            IF(ICOLI.EQ.MAXCP1)AVALU2=PRED(I)
21378            IF(ICOLI.EQ.MAXCP2)AVALU2=RES(I)
21379            IF(ICOLI.EQ.MAXCP3)AVALU2=YPLOT(I)
21380            IF(ICOLI.EQ.MAXCP4)AVALU2=XPLOT(I)
21381            IF(ICOLI.EQ.MAXCP5)AVALU2=X2PLOT(I)
21382            IF(ICOLI.EQ.MAXCP6)AVALU2=TAGPLO(I)
21383            INDX=INT(AVALU2+0.5)
21384            IF(INDX.LT.1 .OR. INDX.GT.NX2COO)THEN
21385              INDX=I
21386            ENDIF
21387          ELSE
21388            INDX=I
21389          ENDIF
21390C
21391          IF(IFLAGC.EQ.0)THEN
21392            IJ=MAXN*(ICOLL-1)+INDX
21393            IF(ICOLL.LE.MAXCOL)AVALUE=V(IJ)
21394            IF(ICOLL.EQ.MAXCP1)AVALUE=PRED(INDX)
21395            IF(ICOLL.EQ.MAXCP2)AVALUE=RES(INDX)
21396            IF(ICOLL.EQ.MAXCP3)AVALUE=YPLOT(INDX)
21397            IF(ICOLL.EQ.MAXCP4)AVALUE=XPLOT(INDX)
21398            IF(ICOLL.EQ.MAXCP5)AVALUE=X2PLOT(INDX)
21399            IF(ICOLL.EQ.MAXCP6)AVALUE=TAGPLO(INDX)
21400            IVALU9=INT(AVALUE+0.5)
21401            IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
21402          ELSE
21403            IVALU9=INDX
21404          ENDIF
21405        ELSEIF(IX2ZFM.EQ.'GLAB' .AND. IGLIND.EQ.1)THEN
21406          IJ=MAXN*(ICOLI-1)+I
21407          IF(ICOLI.LE.MAXCOL)AVALUE=V(IJ)
21408          IF(ICOLI.EQ.MAXCP1)AVALUE=PRED(I)
21409          IF(ICOLI.EQ.MAXCP2)AVALUE=RES(I)
21410          IF(ICOLI.EQ.MAXCP3)AVALUE=YPLOT(I)
21411          IF(ICOLI.EQ.MAXCP4)AVALUE=XPLOT(I)
21412          IF(ICOLI.EQ.MAXCP5)AVALUE=X2PLOT(I)
21413          IF(ICOLI.EQ.MAXCP6)AVALUE=TAGPLO(I)
21414          IVALU9=INT(AVALUE+0.5)
21415        ELSEIF(IX2ZFM.EQ.'ROWL' .AND. IRLIND.EQ.1)THEN
21416          IJ=MAXN*(ICOLI-1)+I
21417          IJ=IJ+IROW1-1
21418          IF(IJ.LT.1)IJ=1
21419          IF(IJ.GT.MAXOBV)IJ=MAXOBV
21420          IJ2=I+IROW1-1
21421          IF(IJ2.LT.1)IJ2=1
21422          IF(IJ2.GT.MAXOBV)IJ2=MAXOBV
21423          IF(ICOLI.LE.MAXCOL)AVALUE=V(IJ)
21424          IF(ICOLI.EQ.MAXCP1)AVALUE=PRED(IJ2)
21425          IF(ICOLI.EQ.MAXCP2)AVALUE=RES(IJ2)
21426          IF(ICOLI.EQ.MAXCP3)AVALUE=YPLOT(IJ2)
21427          IF(ICOLI.EQ.MAXCP4)AVALUE=XPLOT(IJ2)
21428          IF(ICOLI.EQ.MAXCP5)AVALUE=X2PLOT(IJ2)
21429          IF(ICOLI.EQ.MAXCP6)AVALUE=TAGPLO(IJ2)
21430          IVALU9=INT(AVALUE+0.5)
21431        ELSE
21432          AVALUE=X2COOR(I)
21433          IVALU9=INT(AVALUE+0.5)
21434          IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
21435        ENDIF
21436C
21437        IF(IX2ZFM.EQ.'VARI' .AND. IFLAGC.EQ.1)GOTO12160
21438        IF(IX2ZFM.EQ.'ROWL')GOTO1260
21439        IF(IX2ZFM.EQ.'GLAB')GOTO1270
21440        IF(IX2ZFM.EQ.'ALPH')GOTO1250
21441        IF(IX2TSC.EQ.'LOG'.AND.IX2ZFM.EQ.'REAL')GOTO1220
21442        IF(IX2TSC.EQ.'LOG'.AND.IX2ZFM.EQ.'FIXE')GOTO1220
21443        IF(IX2TSC.EQ.'LOG'.AND.IX2ZFM.EQ.'DECI')GOTO1220
21444        IF(IX2TSC.EQ.'LOG'.AND.IX2ZFM.EQ.'INTE')GOTO1220
21445        IF(IX2TSC.EQ.'LOG'.AND.IX2ZFM.EQ.'EXPO')GOTO1230
21446        IF(IX2TSC.EQ.'LOG'.AND.IX2ZFM.EQ.'EXP')GOTO1230
21447CCCCC ADD FOLLOWING 2 LINES.  JULY 1997.
21448        IF(IX2TSC.EQ.'LINE'.AND.IX2ZFM.EQ.'EXP')GOTO1240
21449        IF(IX2TSC.EQ.'LINE'.AND.IX2ZFM.EQ.'EXPO')GOTO1240
21450        GOTO1210
21451C
21452 1210   CONTINUE
21453        NMDID0=IX2ZDP
21454        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
21455        GOTO1280
21456C
21457 1220   CONTINUE
21458CCCCC   AVALUE=X2COOR(I)
21459        AVALUE=10.0**AVALUE
21460        IVALU9=INT(AVALUE+0.5)
21461        IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
21462        NMDID0=IX2ZDP
21463        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
21464        GOTO1280
21465C
21466 1230   CONTINUE
21467        NMDID0=IX2ZDP
21468        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
21469        IF(NCTEXT.LE.0)GOTO1239
21470        DO1231J=1,NCTEXT
21471        JREV=NCTEXT-J+1
21472        J2=JREV+7
21473        ICTEXT(J2)=ICTEXT(JREV)
21474 1231   CONTINUE
21475        ICTEXT(1)='1   '
21476        ICTEXT(2)='0   '
21477        ICTEXT(3)='S   '
21478        ICTEXT(4)='U   '
21479        ICTEXT(5)='P   '
21480        ICTEXT(6)='(   '
21481        ICTEXT(7)=')   '
21482        NCTEXT=NCTEXT+7
21483        NCTEXT=NCTEXT+1
21484        ICTEXT(NCTEXT)='U   '
21485        NCTEXT=NCTEXT+1
21486        ICTEXT(NCTEXT)='N   '
21487        NCTEXT=NCTEXT+1
21488        ICTEXT(NCTEXT)='S   '
21489        NCTEXT=NCTEXT+1
21490        ICTEXT(NCTEXT)='P   '
21491        NCTEXT=NCTEXT+1
21492        ICTEXT(NCTEXT)='(   '
21493        NCTEXT=NCTEXT+1
21494        ICTEXT(NCTEXT)=')   '
21495 1239   CONTINUE
21496        GOTO1280
21497C
21498CCCCC ADD FOLLOWING SECTION (FOR EXPONENTIAL NUMBERS ON LINEAR
21499CCCCC SCALE) JULY 1997
21500 1240   CONTINUE
21501        NMDID0=IX2ZDP
21502        ISTRI2=' '
21503        ICTEMP='(E15.7 )'
21504        NTEMP2=7
21505        IF(NMDID0.GE.1)NTEMP2=NMDID0
21506        NTEMP1=NTEMP2+8
21507        IF(NTEMP2.LE.9)THEN
21508          WRITE(ICTEMP(6:6),'(I1)')NTEMP2
21509        ELSE
21510          WRITE(ICTEMP(6:7),'(I2)')NTEMP2
21511        ENDIF
21512        WRITE(ICTEMP(3:4),'(I2)')NTEMP1
21513        WRITE(ISTRI2,ICTEMP)AVALUE
21514        DO1242KK=1,NTEMP1
21515          IF(ISTRI2(KK:KK).NE.' ')THEN
21516             NCTEXT=KK
21517             ICTEXT(KK)=ISTRI2(KK:KK)
21518          ELSE
21519             ICTEXT(KK)=' '
21520          ENDIF
21521 1242   CONTINUE
21522C
21523        GOTO1280
21524C
21525 1250   CONTINUE
21526        MESSAG='OFF'
21527        CALL DPEXS1(IX2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21528     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21529     1              IBUGG4,ISUBG4,IERRG4)
21530        IF(NCSTR2.LE.0)GOTO1259
21531        DO1252J=1,NCSTR2
21532          IC1=ISTRI2(J:J)
21533          IC4='    '
21534          IC4(1:1)=IC1
21535          ICTEXT(J)=IC4
21536 1252   CONTINUE
21537 1259   CONTINUE
21538        NCTEXT=NCSTR2
21539CCCCC   GOTO1280
21540        GOTO1285
21541C
21542 1260   CONTINUE
21543        INDX=IVALU9
21544        IF(INDX.LT.1)INDX=I
21545CCCCC   IF(IRLIND.EQ.1)THEN
21546CCCCC     IF(IVALU9.GE.1 .AND. IVALU9.LE.NX2COO)INDX=IVALU9
21547CCCCC   ENDIF
21548C
21549        DO1261J=1,24
21550          ICTEXT(J)=IROWLB(INDX)(J:J)
21551 1261   CONTINUE
21552        NCTEXT=1
21553        DO1263J=24,1,-1
21554          IF(ICTEXT(J).NE.'    ')THEN
21555            NCTEXT=J
21556            GOTO1285
21557          ENDIF
21558 1263   CONTINUE
21559        GOTO1285
21560C
2156112160   CONTINUE
21562        INDX=IVALU9
21563        IF(INDX.LT.1)INDX=I
21564C
21565        REWIND(IOUNI2)
21566        READ(IOUNI2,'(I8)',END=12166,ERR=12166)NCVAR
21567        DO12161KK=1,NCVAR
21568          READ(IOUNI2,'(A1)',END=12166,ERR=12166)IAJUNK
2156912161   CONTINUE
21570        IF(INDX.GT.1)THEN
21571          DO12162KK=1,INDX-1
21572            READ(IOUNI2,'(A1)',END=12166,ERR=12166)IAJUNK
2157312162     CONTINUE
21574        ENDIF
21575        IFORMT=' '
21576        IFORMT='(    A)'
21577        WRITE(IFORMT(2:5),'(I4)')NCVAR
21578        READ(IOUNI2,IFORMT,END=12166,ERR=12166)ISTRCC
21579        NSTRT=(IROWID-1)*25 + 1
21580        NSTOP=NSTRT+23
21581        DO12163J=1,24
21582          IVAL=NSTRT+J-1
21583          ICTEXT(J)=ISTRCC(IVAL:IVAL)
2158412163   CONTINUE
21585        NCTEXT=1
21586        DO12164J=24,1,-1
21587          IF(ICTEXT(J).NE.'    ')THEN
21588            NCTEXT=J
21589            GOTO1285
21590          ENDIF
2159112164   CONTINUE
21592        GOTO1285
21593C
2159412166   CONTINUE
21595        WRITE(ICOUT,999)
21596        CALL DPWRST('XXX','BUG ')
21597        WRITE(ICOUT,12167)
2159812167   FORMAT('***** ERROR IN X2TIC MARK LABEL--')
21599        CALL DPWRST('XXX','BUG ')
21600        WRITE(ICOUT,11168)
21601        CALL DPWRST('XXX','BUG ')
21602        GOTO9000
21603C
21604 1270   CONTINUE
21605C
21606C       JANUARY 2006.  DETERMINE THE INDEX IF REQUESTED.
21607C
21608        INDX=I
21609        IF(IGLIND.EQ.1)THEN
21610          IF(IVALU9.GE.1 .AND. IVALU9.LE.NX2COO)INDX=IVALU9
21611        ENDIF
21612C
21613        IF(IGVAR.EQ.0)THEN
21614           WRITE(ICOUT,999)
21615           CALL DPWRST('XXX','BUG ')
21616           WRITE(ICOUT,1276)
21617 1276      FORMAT('***** WARNING--UNABLE TO DETERMINE GROUP LABEL ',
21618     1            'VARIABLE FOR X2TIC MARK LABELS.')
21619           CALL DPWRST('XXX','BUG ')
21620           GOTO1290
21621        ENDIF
21622CCCCC   DO1271J=1,24
21623        DO1271J=1,MAXGR2
21624          ICTEXT(J)=IGRPLA(INDX,IGVAR)(J:J)
21625 1271   CONTINUE
21626        NCTEXT=1
21627CCCCC   DO1273J=24,1,-1
21628        DO1273J=MAXGR2,1,-1
21629          IF(ICTEXT(J).NE.'    ')THEN
21630            NCTEXT=J
21631            GOTO1285
21632          ENDIF
21633 1273   CONTINUE
21634        GOTO1285
21635C
21636 1280   CONTINUE
21637CCCCC   MARCH 1993.  STRIP OUT UC(), LC(), AND SP() FOR HARDWARE TEXT.
21638        IF(IFONT.EQ.'TEKT')CALL GRSTRI(ICTEXT,NCTEXT)
21639        IF(NCTEXT.GE.1)
21640     1    CALL GRDETL(ICTEXT,NCTEXT,
21641     1                IFONT,IDIR,ANGLE,
21642     1                JFONT,JDIR,ANGLE2,
21643     1                PHEIGH,PWIDTH,PVEGAP,PHOGAP,
21644     1                JSIZE,
21645     1                JHEIG2,JWIDT2,JVEGA2,JHOGA2,
21646     1                PHEIG2,PWIDT2,PVEGA2,PHOGA2,
21647     1                PXLEC,PXLECG,PYLEC,PYLECG)
21648C
21649        IF(NCTEXT.GE.1)
21650     1    CALL GRWRTE(PX1,PY1,ICTEXT,NCTEXT,
21651     1      IPATTT,IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
21652     1      JPATTT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILLT,JCOL,
21653     1      PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
21654     1      JSIZE,
21655     1      JHEIG2,JWIDT2,JVEGA2,JHOGA2,
21656     1      PHEIG2,PWIDT2,PVEGA2,PHOGA2,
21657     1      JTHICK,PTHIC2,
21658     1      PXLEC,PXLECG,PYLEC,PYLECG,
21659     1      ISYMBL,ISPAC,
21660     1      IMPSW2,AMPSCH,AMPSCW,
21661     1      PX99,PY99)
21662        GOTO1200
21663C
21664 1285   CONTINUE
21665        IF(NCTEXT.GE.1)
21666     1    CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
21667     1                IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
21668     1                PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
21669     1                ISYMBL,ISPAC,
21670     1                IMPSW2,AMPSCH,AMPSCW,
21671     1                PX99,PY99)
21672        GOTO1200
21673C
21674 1200 CONTINUE
21675 1290 CONTINUE
21676C
21677C               ******************************************************
21678C               **  STEP 21.3--                                     **
21679C               **  WRITE TIC LABELS     ON LEFT   VERTICAL   AXIS  **
21680C               ******************************************************
21681C
21682      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
21683        WRITE(ICOUT,8009)
21684 8009   FORMAT('STEP 21.2')
21685        CALL DPWRST('XXX','BUG ')
21686      ENDIF
21687C
21688      IF(IY1FSW.EQ.'OFF')GOTO1390
21689CCCCC IF(IY1TSW.EQ.'OFF')GOTO1390
21690      IF(IY1ZSW.EQ.'OFF')GOTO1390
21691      IF(NY1COO.LE.0)GOTO1390
21692C
21693      IFONT=IY1ZFO
21694      CALL GRTRFO(ITYPE,IFONT,JFONT)
21695      CALL GRSEFO(ITYPE,IFONT,JFONT)
21696C
21697      ICASE=IY1ZCA
21698      CALL GRTRCA(ITYPE,ICASE,JCASE)
21699      CALL GRSECA(ITYPE,ICASE,JCASE)
21700C
21701      IJUST=IY1ZJU
21702      CALL GRTRJU(ITYPE,IJUST,JJUST)
21703      CALL GRSEJU(ITYPE,IJUST,JJUST)
21704C
21705      IDIR=IY1ZDI
21706      ANGLE=AY1ZAN
21707      CALL GRTRDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
21708      CALL GRSEDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
21709C
21710      IFILLT=IY1ZFI
21711      CALL GRTRFI(ITYPE,IFILLT,JFILLT)
21712      CALL GRSEFI(ITYPE,IFILLT,JFILLT)
21713C
21714      ICOL=IY1ZCO
21715      CALL GRTRCO(ITYPE,ICOL,JCOL)
21716      CALL GRSECO(ITYPE,ICOL,JCOL)
21717C
21718      PHEIGH=PY1ZHE
21719      PWIDTH=PY1ZWI
21720      PVEGAP=PY1ZVG
21721      PHOGAP=PY1ZHG
21722      CALL GRTRSI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
21723     1JSIZE,
21724     1JHEIG2,JWIDT2,JVEGA2,JHOGA2,
21725     1PHEIG2,PWIDT2,PVEGA2,PHOGA2)
21726      CALL GRSESI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
21727     1JSIZE,
21728     1JHEIG2,JWIDT2,JVEGA2,JHOGA2,
21729     1PHEIG2,PWIDT2,PVEGA2,PHOGA2)
21730C
21731      ISTART=1
21732CCCCC ISTOP=130
21733      ISTOP=2048
21734      NCOLMX=2048
21735C
21736CCCCC JANUARY 2004.  FOR VARIABLE OR GROUP LABEL CASE, NEED
21737CCCCC TO EXTRACT RELEVANT VARIABLE.
21738C
21739      IF(IY1ZFM.EQ.'VARI')THEN
21740C
21741        IFLAGC=0
21742        I=1
21743        CALL DPUPPE(IY1ZCN,ISTOP,IY1ZCN,IBUGG4,IERROR)
21744        MESSAG='OFF'
21745        CALL DPEXS1(IY1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21746     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21747     1              IBUGG4,ISUBG4,IERRG4)
21748        IF(NCSTR2.LE.0)THEN
21749          WRITE(ICOUT,999)
21750          CALL DPWRST('XXX','BUG ')
21751          WRITE(ICOUT,13102)
2175213102     FORMAT('***** WARNING--FOR Y1TIC MARK LABEL FORMAT ',
21753     1           '"VARIABLE"')
21754          CALL DPWRST('XXX','BUG ')
21755          WRITE(ICOUT,13104)
2175613104     FORMAT('      NO VARIABLE NAME SPECIFIED ON ',
21757     1           'Y1TIC MARK LABEL CONTENT COMMAND.')
21758          CALL DPWRST('XXX','BUG ')
21759        ELSE
21760          IH='    '
21761          IH2='    '
21762          IH(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21763          IF(NCSTR2.GE.5)IH2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21764        ENDIF
21765C
21766        IHWUSE='V'
21767        MESSAG='NO'
21768        CALL CHECKN(IH,IH2,IHWUSE,
21769     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
21770     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
21771        IF(IERROR.EQ.'YES')THEN
21772C
21773C         2019/10: CHECK TO SEE IF DPZCHF.DAT EXISTS
21774C
21775          IOUNI2=IZCHNU
21776          IFILE2=IZCHNA
21777          ISTAT2=IZCHST
21778          IFORM2=IZCHFO
21779          IACCE2=IZCHAC
21780          IPROT2=IZCHPR
21781          ICURS2=IZCHCS
21782C
21783          ISUBN0='WRIT'
21784          IERRF2='NO'
21785          CALL DPOPFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,
21786     1                ICURS2,
21787     1                IREWI2,ISUBN0,IERRF2,IBUGG4,ISUBRO,IERROR)
21788          IF(IERRF2.EQ.'YES')GOTO13101
21789          IFLAGC=1
21790          REWIND(IOUNI2)
21791          READ(IOUNI2,'(I8)',END=13201,ERR=13201)NCVAR
21792          DO13203KK=1,NCVAR
21793            READ(IOUNI2,'(2A4)',END=13201,ERR=13201)IHTEMP,IHTEM2
21794            IF(IHTEMP.EQ.IH .AND. IHTEM2.EQ.IH2)THEN
21795              IROWID=KK
21796              GOTO13109
21797            ENDIF
2179813203     CONTINUE
21799C
2180013201     CONTINUE
21801          IENDFI='OFF'
21802          IREWIN='ON'
21803          CALL DPCLFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,ICURS2,
21804     1                IENDFI,IREWIN,ISUBN0,IERRF2,IBUGG4,ISUBRO,IERROR)
21805          IZCHCS='CLOSED'
21806C
2180713101     CONTINUE
21808          WRITE(ICOUT,999)
21809          CALL DPWRST('XXX','BUG ')
21810          WRITE(ICOUT,13106)IH,IH2
2181113106     FORMAT('***** WARNING--UNABLE TO DETERMINE VARIABLE ',
21812     1           2A4,' FOR Y1TIC MARK LABELS.')
21813          CALL DPWRST('XXX','BUG ')
21814          IF(IFLAGC.EQ.1)GOTO9000
21815          GOTO1390
21816        ENDIF
21817        ICOLL=IVALUE(ILOCV)
21818        NLEFT=IN(ILOCV)
21819C
2182013109   CONTINUE
21821C
21822C  1/2006: IF VARIABLE LABEL SPECIFIED, THEN CHECK TO SEE IF
21823C          INDEX VARIABLE ALSO SPECIFIED.
21824C
21825        IVLIND=0
21826        I=2
21827        MESSAG='OFF'
21828        CALL DPEXS1(IY1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21829     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21830     1              IBUGG4,ISUBG4,IERRG4)
21831        IF(NCSTR2.GT.0)THEN
21832          IHIND='    '
21833          IHIND2='    '
21834          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21835          IF(NCSTR2.GE.5)
21836     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21837C
21838          IHWUSE='V'
21839          MESSAG='NO'
21840          CALL CHECKN(IHIND,IHIND2,IHWUSE,
21841     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
21842     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
21843          IF(IERROR.EQ.'YES')THEN
21844            WRITE(ICOUT,999)
21845            CALL DPWRST('XXX','BUG ')
21846            WRITE(ICOUT,13116)IHIND,IHIND2
2184713116       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
21848     1            'VARIABLE, ',A4,A4,',')
21849            CALL DPWRST('XXX','BUG ')
21850            WRITE(ICOUT,13117)
2185113117       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
21852     1             '(VARIABLE FORM).')
21853            CALL DPWRST('XXX','BUG ')
21854            GOTO1390
21855          ENDIF
21856          ICOLI=IVALUE(ILOCV)
21857          NLEFI=IN(ILOCV)
21858          IVLIND=1
21859        ENDIF
21860      ELSEIF(IY1ZFM.EQ.'GLAB')THEN
21861        CALL DPUPPE(IY1ZCN,ISTOP,IY1ZCN,IBUGG4,IERROR)
21862        I=1
21863        MESSAG='OFF'
21864        CALL DPEXS1(IY1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21865     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21866     1              IBUGG4,ISUBG4,IERRG4)
21867        IF(NCSTR2.LE.0)THEN
21868          WRITE(ICOUT,999)
21869          CALL DPWRST('XXX','BUG ')
21870          WRITE(ICOUT,13122)
2187113122     FORMAT('***** WARNING--FOR Y1TIC MARK LABEL FORMAT ',
21872     1           '"GROUP LABEL"')
21873          CALL DPWRST('XXX','BUG ')
21874          WRITE(ICOUT,13124)
2187513124     FORMAT('      NO GROUP LABEL VARIABLE NAME SPECIFIED ON ',
21876     1           'Y1TIC MARK LABEL CONTENT COMMAND.')
21877          CALL DPWRST('XXX','BUG ')
21878          GOTO1390
21879        ELSE
21880          IH='    '
21881          IH2='    '
21882          IH(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21883          IF(NCSTR2.GE.5)IH2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21884        ENDIF
21885C
21886        IGVAR=0
21887        DO13120I=1,MAXGRP
21888          IF(IH(1:4).EQ.IGRPVN(I)(1:4) .AND.
21889     1       IH2(1:4).EQ.IGRPVN(I)(5:8))THEN
21890            IGVAR=I
21891            GOTO13129
21892          ENDIF
2189313120   CONTINUE
2189413129   CONTINUE
21895C
21896C  1/2006: IF GROUP LABEL SPECIFIED, THEN CHECK TO SEE IF
21897C          INDEX VARIABLE ALSO SPECIFIED.
21898C
21899        IGLIND=0
21900        I=2
21901        MESSAG='OFF'
21902        CALL DPEXS1(IY1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21903     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21904     1              IBUGG4,ISUBG4,IERRG4)
21905        IF(NCSTR2.GT.0)THEN
21906          IHIND='    '
21907          IHIND2='    '
21908          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21909          IF(NCSTR2.GE.5)
21910     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21911C
21912          IHWUSE='V'
21913          MESSAG='NO'
21914          CALL CHECKN(IHIND,IHIND2,IHWUSE,
21915     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
21916     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
21917          IF(IERROR.EQ.'YES')THEN
21918            WRITE(ICOUT,999)
21919            CALL DPWRST('XXX','BUG ')
21920            WRITE(ICOUT,13136)IHIND,IHIND2
2192113136       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
21922     1             'VARIABLE, ',A4,A4,',')
21923            CALL DPWRST('XXX','BUG ')
21924            WRITE(ICOUT,13137)
2192513137       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
21926     1             '(GROUP LABEL FORM).')
21927            CALL DPWRST('XXX','BUG ')
21928            GOTO1390
21929          ENDIF
21930          ICOLI=IVALUE(ILOCV)
21931          NLEFI=IN(ILOCV)
21932          IGLIND=1
21933        ENDIF
21934C
21935      ELSEIF(IY1ZFM.EQ.'ROWL')THEN
21936C
21937C  1/2006: IF ROW LABEL SPECIFIED, THEN CHECK TO SEE IF
21938C          INDEX VARIABLE ALSO SPECIFIED.
21939C
21940        CALL DPUPPE(IY1ZCN,ISTOP,IY1ZCN,IBUGG4,IERROR)
21941        IRLIND=0
21942        I=1
21943        MESSAG='OFF'
21944        CALL DPEXS1(IY1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21945     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21946     1              IBUGG4,ISUBG4,IERRG4)
21947        IF(NCSTR2.GT.0)THEN
21948          IHIND='    '
21949          IHIND2='    '
21950          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21951          IF(NCSTR2.GE.5)
21952     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21953C
21954          IHWUSE='V'
21955          MESSAG='NO'
21956          CALL CHECKN(IHIND,IHIND2,IHWUSE,
21957     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
21958     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
21959          IF(IERROR.EQ.'YES')THEN
21960            WRITE(ICOUT,999)
21961            CALL DPWRST('XXX','BUG ')
21962            WRITE(ICOUT,13138)IHIND,IHIND2
2196313138       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
21964     1             'VARIABLE, ',A4,A4,',')
21965            CALL DPWRST('XXX','BUG ')
21966            WRITE(ICOUT,13139)
2196713139       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
21968     1             '(ROW LABEL FORM).')
21969            CALL DPWRST('XXX','BUG ')
21970            GOTO1390
21971          ENDIF
21972          ICOLI=IVALUE(ILOCV)
21973          NLEFI=IN(ILOCV)
21974          IRLIND=1
21975        ENDIF
21976C
21977C       CHECK FOR STARTING ROW
21978C
21979        I=2
21980        MESSAG='OFF'
21981        CALL DPEXS1(IY1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
21982     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
21983     1              IBUGG4,ISUBG4,IERRG4)
21984        IF(NCSTR2.GT.0)THEN
21985          IHIND='    '
21986          IHIND2='    '
21987          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
21988          IF(NCSTR2.GE.5)
21989     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
21990C
21991          IHWUSE='P'
21992          MESSAG='NO'
21993          IERROR='NO'
21994          CALL CHECKN(IHIND,IHIND2,IHWUSE,
21995     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
21996     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
21997          IF(IERROR.EQ.'YES')THEN
21998            IROW1=1
21999          ELSE
22000            IROW1=INT(VALUE(ILOCV)+0.01)
22001            IF(IROW1.LT.1)IROW1=1
22002            IF(IROW1.GT.MAXOBV)IROW1=1
22003          ENDIF
22004        ENDIF
22005C
22006      ENDIF
22007C
22008      DO1300I=1,NY1COO
22009C
22010        PX1=PXMIN-PY1ZDS
22011        PY1=PY1COO(I)
22012CCCCC   PY1=PY1-PHEIG2/2.0
22013        IF(IY1ZFM.EQ.'VARI')THEN
22014          IF(IVLIND.EQ.1)THEN
22015            IJ=MAXN*(ICOLI-1)+I
22016            IF(ICOLI.LE.MAXCOL)AVALU2=V(IJ)
22017            IF(ICOLI.EQ.MAXCP1)AVALU2=PRED(I)
22018            IF(ICOLI.EQ.MAXCP2)AVALU2=RES(I)
22019            IF(ICOLI.EQ.MAXCP3)AVALU2=YPLOT(I)
22020            IF(ICOLI.EQ.MAXCP4)AVALU2=XPLOT(I)
22021            IF(ICOLI.EQ.MAXCP5)AVALU2=X2PLOT(I)
22022            IF(ICOLI.EQ.MAXCP6)AVALU2=TAGPLO(I)
22023            INDX=INT(AVALU2+0.5)
22024            IF(INDX.LT.1 .OR. INDX.GT.NY1COO)THEN
22025              INDX=I
22026            ENDIF
22027          ELSE
22028            INDX=I
22029          ENDIF
22030          IF(IFLAGC.EQ.0)THEN
22031            IJ=MAXN*(ICOLL-1)+INDX
22032            IF(ICOLL.LE.MAXCOL)AVALUE=V(IJ)
22033            IF(ICOLL.EQ.MAXCP1)AVALUE=PRED(INDX)
22034            IF(ICOLL.EQ.MAXCP2)AVALUE=RES(INDX)
22035            IF(ICOLL.EQ.MAXCP3)AVALUE=YPLOT(INDX)
22036            IF(ICOLL.EQ.MAXCP4)AVALUE=XPLOT(INDX)
22037            IF(ICOLL.EQ.MAXCP5)AVALUE=X2PLOT(INDX)
22038            IF(ICOLL.EQ.MAXCP6)AVALUE=TAGPLO(INDX)
22039            IVALU9=INT(AVALUE+0.5)
22040            IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
22041          ELSE
22042            IVALU9=INDX
22043          ENDIF
22044        ELSEIF(IY1ZFM.EQ.'GLAB' .AND. IGLIND.EQ.1)THEN
22045          IJ=MAXN*(ICOLI-1)+I
22046          IF(ICOLI.LE.MAXCOL)AVALUE=V(IJ)
22047          IF(ICOLI.EQ.MAXCP1)AVALUE=PRED(I)
22048          IF(ICOLI.EQ.MAXCP2)AVALUE=RES(I)
22049          IF(ICOLI.EQ.MAXCP3)AVALUE=YPLOT(I)
22050          IF(ICOLI.EQ.MAXCP4)AVALUE=XPLOT(I)
22051          IF(ICOLI.EQ.MAXCP5)AVALUE=X2PLOT(I)
22052          IF(ICOLI.EQ.MAXCP6)AVALUE=TAGPLO(I)
22053          IVALU9=INT(AVALUE+0.5)
22054        ELSEIF(IY1ZFM.EQ.'ROWL' .AND. IRLIND.EQ.1)THEN
22055          IJ=MAXN*(ICOLI-1)+I
22056          IJ=IJ+IROW1-1
22057          IF(IJ.LT.1)IJ=1
22058          IF(IJ.GT.MAXOBV)IJ=MAXOBV
22059          IJ2=I+IROW1-1
22060          IF(IJ2.LT.1)IJ2=1
22061          IF(IJ2.GT.MAXOBV)IJ2=MAXOBV
22062          IF(ICOLI.LE.MAXCOL)AVALUE=V(IJ)
22063          IF(ICOLI.EQ.MAXCP1)AVALUE=PRED(IJ2)
22064          IF(ICOLI.EQ.MAXCP2)AVALUE=RES(IJ2)
22065          IF(ICOLI.EQ.MAXCP3)AVALUE=YPLOT(IJ2)
22066          IF(ICOLI.EQ.MAXCP4)AVALUE=XPLOT(IJ2)
22067          IF(ICOLI.EQ.MAXCP5)AVALUE=X2PLOT(IJ2)
22068          IF(ICOLI.EQ.MAXCP6)AVALUE=TAGPLO(IJ2)
22069          IVALU9=INT(AVALUE+0.5)
22070        ELSE
22071          AVALUE=Y1COOR(I)
22072          IVALU9=INT(AVALUE+0.5)
22073          IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
22074        ENDIF
22075C
22076        IF(IY1ZFM.EQ.'VARI' .AND. IFLAGC.EQ.1)GOTO13160
22077        IF(IY1ZFM.EQ.'ROWL')GOTO1360
22078        IF(IY1ZFM.EQ.'GLAB')GOTO1370
22079        IF(IY1ZFM.EQ.'ALPH')GOTO1350
22080        IF(IY1TSC.EQ.'LOG'.AND.IY1ZFM.EQ.'REAL')GOTO1320
22081        IF(IY1TSC.EQ.'LOG'.AND.IY1ZFM.EQ.'FIXE')GOTO1320
22082        IF(IY1TSC.EQ.'LOG'.AND.IY1ZFM.EQ.'DECI')GOTO1320
22083        IF(IY1TSC.EQ.'LOG'.AND.IY1ZFM.EQ.'INTE')GOTO1320
22084        IF(IY1TSC.EQ.'LOG'.AND.IY1ZFM.EQ.'EXPO')GOTO1330
22085        IF(IY1TSC.EQ.'LOG'.AND.IY1ZFM.EQ.'EXP')GOTO1330
22086CCCCC   ADD FOLLOWING 2 LINES.  JULY 1997.
22087        IF(IY1TSC.EQ.'LINE'.AND.IY1ZFM.EQ.'EXP')GOTO1340
22088        IF(IY1TSC.EQ.'LINE'.AND.IY1ZFM.EQ.'EXPO')GOTO1340
22089        GOTO1310
22090C
22091 1310   CONTINUE
22092        NMDID0=IY1ZDP
22093        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
22094        GOTO1380
22095C
22096 1320   CONTINUE
22097CCCCC   AVALUE=Y1COOR(I)
22098        AVALUE=10.0**AVALUE
22099        IVALU9=INT(AVALUE+0.5)
22100        IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
22101        NMDID0=IX1ZDP
22102        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
22103        GOTO1380
22104C
22105 1330   CONTINUE
22106        NMDID0=IY1ZDP
22107        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
22108        IF(NCTEXT.LE.0)GOTO1339
22109        DO1331J=1,NCTEXT
22110          JREV=NCTEXT-J+1
22111          J2=JREV+7
22112          ICTEXT(J2)=ICTEXT(JREV)
22113 1331   CONTINUE
22114        ICTEXT(1)='1   '
22115        ICTEXT(2)='0   '
22116        ICTEXT(3)='S   '
22117        ICTEXT(4)='U   '
22118        ICTEXT(5)='P   '
22119        ICTEXT(6)='(   '
22120        ICTEXT(7)=')   '
22121        NCTEXT=NCTEXT+7
22122        NCTEXT=NCTEXT+1
22123        ICTEXT(NCTEXT)='U   '
22124        NCTEXT=NCTEXT+1
22125        ICTEXT(NCTEXT)='N   '
22126        NCTEXT=NCTEXT+1
22127        ICTEXT(NCTEXT)='S   '
22128        NCTEXT=NCTEXT+1
22129        ICTEXT(NCTEXT)='P   '
22130        NCTEXT=NCTEXT+1
22131        ICTEXT(NCTEXT)='(   '
22132        NCTEXT=NCTEXT+1
22133        ICTEXT(NCTEXT)=')   '
22134 1339   CONTINUE
22135        GOTO1380
22136C
22137CCCCC   ADD FOLLOWING SECTION (FOR EXPONENTIAL NUMBERS ON LINEAR
22138CCCCC   SCALE) JULY 1997
22139 1340   CONTINUE
22140        NMDID0=IY1ZDP
22141        ISTRI2=' '
22142        ICTEMP='(E15.7 )'
22143        NTEMP2=7
22144        IF(NMDID0.GE.1)NTEMP2=NMDID0
22145        NTEMP1=NTEMP2+8
22146        IF(NTEMP2.LE.9)THEN
22147          WRITE(ICTEMP(6:6),'(I1)')NTEMP2
22148        ELSE
22149          WRITE(ICTEMP(6:7),'(I2)')NTEMP2
22150        ENDIF
22151        WRITE(ICTEMP(3:4),'(I2)')NTEMP1
22152        WRITE(ISTRI2,ICTEMP)AVALUE
22153        DO1342KK=1,NTEMP1
22154          IF(ISTRI2(KK:KK).NE.' ')THEN
22155             NCTEXT=KK
22156             ICTEXT(KK)=ISTRI2(KK:KK)
22157          ELSE
22158             ICTEXT(KK)=' '
22159          ENDIF
22160 1342   CONTINUE
22161C
22162        GOTO1380
22163C
22164 1350   CONTINUE
22165        MESSAG='OFF'
22166        CALL DPEXS1(IY1ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
22167     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
22168     1              IBUGG4,ISUBG4,IERRG4)
22169        IF(NCSTR2.LE.0)GOTO1359
22170        IC4='    '
22171        DO1352J=1,NCSTR2
22172          IC4(1:1)=ISTRI2(J:J)
22173          ICTEXT(J)=IC4
22174 1352   CONTINUE
22175 1359   CONTINUE
22176        NCTEXT=NCSTR2
22177CCCCC   GOTO1380
22178        GOTO1385
22179C
22180 1360   CONTINUE
22181        INDX=IVALU9
22182        IF(INDX.LT.1)INDX=I
22183CCCCC   IF(IRLIND.EQ.1)THEN
22184CCCCC     IF(IVALU9.GE.1 .AND. IVALU9.LE.NY1COO)INDX=IVALU9
22185CCCCC   ENDIF
22186C
22187        DO1361J=1,24
22188          ICTEXT(J)=IROWLB(INDX)(J:J)
22189 1361   CONTINUE
22190        NCTEXT=1
22191        DO1363J=24,1,-1
22192          IF(ICTEXT(J).NE.'    ')THEN
22193            NCTEXT=J
22194            GOTO1385
22195          ENDIF
22196 1363   CONTINUE
22197        GOTO1385
22198C
2219913160   CONTINUE
22200        INDX=IVALU9
22201        IF(INDX.LT.1)INDX=I
22202C
22203        REWIND(IOUNI2)
22204        READ(IOUNI2,'(I8)',END=13166,ERR=13166)NCVAR
22205        DO13161KK=1,NCVAR
22206          READ(IOUNI2,'(A1)',END=13166,ERR=13166)IAJUNK
2220713161   CONTINUE
22208        IF(INDX.GT.1)THEN
22209          DO13162KK=1,INDX-1
22210            READ(IOUNI2,'(A1)',END=13166,ERR=13166)IAJUNK
2221113162     CONTINUE
22212        ENDIF
22213        IFORMT=' '
22214        IFORMT='(    A)'
22215        WRITE(IFORMT(2:5),'(I4)')NCVAR
22216        READ(IOUNI2,IFORMT,END=13166,ERR=13166)ISTRCC
22217        NSTRT=(IROWID-1)*25 + 1
22218        NSTOP=NSTRT+23
22219        DO13163J=1,24
22220          IVAL=NSTRT+J-1
22221          ICTEXT(J)=ISTRCC(IVAL:IVAL)
2222213163   CONTINUE
22223        NCTEXT=1
22224        DO13164J=24,1,-1
22225          IF(ICTEXT(J).NE.'    ')THEN
22226            NCTEXT=J
22227            GOTO1385
22228          ENDIF
2222913164   CONTINUE
22230        GOTO1385
22231C
2223213166   CONTINUE
22233        WRITE(ICOUT,999)
22234        CALL DPWRST('XXX','BUG ')
22235        WRITE(ICOUT,13167)
2223613167   FORMAT('***** ERROR IN Y1TIC MARK LABEL--')
22237        CALL DPWRST('XXX','BUG ')
22238        WRITE(ICOUT,11168)
22239        CALL DPWRST('XXX','BUG ')
22240        GOTO9000
22241C
22242 1370   CONTINUE
22243C
22244C       JANUARY 2006.  DETERMINE THE INDEX IF REQUESTED.
22245C
22246        INDX=I
22247        IF(IGLIND.EQ.1)THEN
22248          IF(IVALU9.GE.1 .AND. IVALU9.LE.NY1COO)INDX=IVALU9
22249        ENDIF
22250C
22251        IF(IGVAR.EQ.0)THEN
22252           WRITE(ICOUT,999)
22253           CALL DPWRST('XXX','BUG ')
22254           WRITE(ICOUT,1376)
22255 1376      FORMAT('***** WARNING--UNABLE TO DETERMINE GROUP LABEL ',
22256     1            'VARIABLE FOR X1TIC MARK LABELS.')
22257           CALL DPWRST('XXX','BUG ')
22258           GOTO1390
22259        ENDIF
22260CCCCC   DO1371J=1,24
22261        DO1371J=1,MAXGR2
22262          ICTEXT(J)=IGRPLA(INDX,IGVAR)(J:J)
22263 1371   CONTINUE
22264        NCTEXT=1
22265CCCCC   DO1373J=24,1,-1
22266        DO1373J=MAXGR2,1,-1
22267          IF(ICTEXT(J).NE.'    ')THEN
22268            NCTEXT=J
22269            GOTO1385
22270          ENDIF
22271 1373   CONTINUE
22272        GOTO1385
22273C
22274 1380   CONTINUE
22275CCCCC   MARCH 1993.  STRIP OUT UC(), LC(), AND SP() FOR HARDWARE TEXT.
22276        IF(IFONT.EQ.'TEKT')CALL GRSTRI(ICTEXT,NCTEXT)
22277        IF(NCTEXT.GE.1)
22278     1    CALL GRDETL(ICTEXT,NCTEXT,
22279     1                IFONT,IDIR,ANGLE,
22280     1                JFONT,JDIR,ANGLE2,
22281     1                PHEIGH,PWIDTH,PVEGAP,PHOGAP,
22282     1                JSIZE,
22283     1                JHEIG2,JWIDT2,JVEGA2,JHOGA2,
22284     1                PHEIG2,PWIDT2,PVEGA2,PHOGA2,
22285     1                PXLEC,PXLECG,PYLEC,PYLECG)
22286C
22287        IF(NCTEXT.GE.1)
22288     1    CALL GRWRTE(PX1,PY1,ICTEXT,NCTEXT,
22289     1      IPATTT,IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
22290     1      JPATTT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILLT,JCOL,
22291     1      PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
22292     1      JSIZE,
22293     1      JHEIG2,JWIDT2,JVEGA2,JHOGA2,
22294     1      PHEIG2,PWIDT2,PVEGA2,PHOGA2,
22295     1      JTHICK,PTHIC2,
22296     1      PXLEC,PXLECG,PYLEC,PYLECG,
22297     1      ISYMBL,ISPAC,
22298     1      IMPSW2,AMPSCH,AMPSCW,
22299     1      PX99,PY99)
22300        GOTO1300
22301C
22302 1385   CONTINUE
22303        IF(NCTEXT.GE.1)
22304     1    CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
22305     1      IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
22306     1      PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
22307     1      ISYMBL,ISPAC,
22308     1      IMPSW2,AMPSCH,AMPSCW,
22309     1      PX99,PY99)
22310            GOTO1300
22311C
22312 1300 CONTINUE
22313 1390 CONTINUE
22314C
22315C               ******************************************************
22316C               **  STEP 21.4--                                     **
22317C               **  WRITE TIC LABELS     ON RIGHT  VERTICAL   AXIS  **
22318C               ******************************************************
22319C
22320      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
22321        WRITE(ICOUT,8014)
22322 8014   FORMAT('STEP 21.2')
22323        CALL DPWRST('XXX','BUG ')
22324      ENDIF
22325C
22326      IF(IY2FSW.EQ.'OFF')GOTO1490
22327CCCCC IF(IY2TSW.EQ.'OFF')GOTO1490
22328      IF(IY2ZSW.EQ.'OFF')GOTO1490
22329      IF(NY2COO.LE.0)GOTO1490
22330C
22331      IFONT=IY2ZFO
22332      CALL GRTRFO(ITYPE,IFONT,JFONT)
22333      CALL GRSEFO(ITYPE,IFONT,JFONT)
22334C
22335      ICASE=IY2ZCA
22336      CALL GRTRCA(ITYPE,ICASE,JCASE)
22337      CALL GRSECA(ITYPE,ICASE,JCASE)
22338C
22339      IJUST=IY2ZJU
22340      CALL GRTRJU(ITYPE,IJUST,JJUST)
22341      CALL GRSEJU(ITYPE,IJUST,JJUST)
22342C
22343      IDIR=IY2ZDI
22344      ANGLE=AY2ZAN
22345      CALL GRTRDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
22346      CALL GRSEDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
22347C
22348      IFILLT=IY2ZFI
22349      CALL GRTRFI(ITYPE,IFILLT,JFILLT)
22350      CALL GRSEFI(ITYPE,IFILLT,JFILLT)
22351C
22352      ICOL=IY2ZCO
22353      CALL GRTRCO(ITYPE,ICOL,JCOL)
22354      CALL GRSECO(ITYPE,ICOL,JCOL)
22355C
22356      PHEIGH=PY2ZHE
22357      PWIDTH=PY2ZWI
22358      PVEGAP=PY2ZVG
22359      PHOGAP=PY2ZHG
22360      CALL GRTRSI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
22361     1JSIZE,
22362     1JHEIG2,JWIDT2,JVEGA2,JHOGA2,
22363     1PHEIG2,PWIDT2,PVEGA2,PHOGA2)
22364      CALL GRSESI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
22365     1JSIZE,
22366     1JHEIG2,JWIDT2,JVEGA2,JHOGA2,
22367     1PHEIG2,PWIDT2,PVEGA2,PHOGA2)
22368C
22369      ISTART=1
22370CCCCC ISTOP=130
22371      ISTOP=2048
22372C
22373CCCCC JANUARY 2004.  FOR VARIABLE OR GROUP LABEL CASE, NEED
22374CCCCC TO EXTRACT RELEVANT VARIABLE.
22375C
22376      IF(IY2ZFM.EQ.'VARI')THEN
22377C
22378        IFLAGC=0
22379        I=1
22380        CALL DPUPPE(IY2ZCN,ISTOP,IY2ZCN,IBUGG4,IERROR)
22381        MESSAG='OFF'
22382        CALL DPEXS1(IY2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
22383     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
22384     1              IBUGG4,ISUBG4,IERRG4)
22385        IF(NCSTR2.LE.0)THEN
22386          WRITE(ICOUT,999)
22387          CALL DPWRST('XXX','BUG ')
22388          WRITE(ICOUT,14102)
2238914102     FORMAT('***** WARNING--FOR Y2TIC MARK LABEL FORMAT ',
22390     1           '"VARIABLE"')
22391          CALL DPWRST('XXX','BUG ')
22392          WRITE(ICOUT,14104)
2239314104     FORMAT('      NO VARIABLE NAME SPECIFIED ON ',
22394     1           'Y2TIC MARK LABEL CONTENT COMMAND.')
22395          CALL DPWRST('XXX','BUG ')
22396        ELSE
22397          IH='    '
22398          IH2='    '
22399          IH(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
22400          IF(NCSTR2.GE.5)IH2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
22401        ENDIF
22402C
22403        IHWUSE='V'
22404        MESSAG='NO'
22405        CALL CHECKN(IH,IH2,IHWUSE,
22406     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
22407     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
22408        IF(IERROR.EQ.'YES')THEN
22409C
22410C         2019/10: CHECK TO SEE IF DPZCHF.DAT EXISTS
22411C
22412          IOUNI2=IZCHNU
22413          IFILE2=IZCHNA
22414          ISTAT2=IZCHST
22415          IFORM2=IZCHFO
22416          IACCE2=IZCHAC
22417          IPROT2=IZCHPR
22418          ICURS2=IZCHCS
22419C
22420          ISUBN0='WRIT'
22421          IERRF2='NO'
22422          CALL DPOPFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,
22423     1                ICURS2,
22424     1                IREWI2,ISUBN0,IERRF2,IBUGG4,ISUBRO,IERROR)
22425          IF(IERRF2.EQ.'YES')GOTO14101
22426          IFLAGC=1
22427          REWIND(IOUNI2)
22428          READ(IOUNI2,'(I8)',END=14201,ERR=14201)NCVAR
22429          DO14203KK=1,NCVAR
22430            READ(IOUNI2,'(2A4)',END=14201,ERR=14201)IHTEMP,IHTEM2
22431            IF(IHTEMP.EQ.IH .AND. IHTEM2.EQ.IH2)THEN
22432              IROWID=KK
22433              GOTO14109
22434            ENDIF
2243514203     CONTINUE
22436C
2243714201     CONTINUE
22438          IENDFI='OFF'
22439          IREWIN='ON'
22440          CALL DPCLFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,ICURS2,
22441     1                IENDFI,IREWIN,ISUBN0,IERRF2,IBUGG4,ISUBRO,IERROR)
22442          IZCHCS='CLOSED'
22443C
2244414101     CONTINUE
22445          WRITE(ICOUT,999)
22446          CALL DPWRST('XXX','BUG ')
22447          WRITE(ICOUT,14106)IH,IH2
2244814106     FORMAT('***** WARNING--UNABLE TO DETERMINE VARIABLE ',
22449     1           2A4,' FOR Y2TIC MARK LABELS.')
22450          CALL DPWRST('XXX','BUG ')
22451          IF(IFLAGC.EQ.1)GOTO9000
22452          GOTO1490
22453        ENDIF
22454        ICOLL=IVALUE(ILOCV)
22455        NLEFT=IN(ILOCV)
22456C
2245714109   CONTINUE
22458C
22459C  1/2006: IF VARIABLE LABEL SPECIFIED, THEN CHECK TO SEE IF
22460C          INDEX VARIABLE ALSO SPECIFIED.
22461C
22462        IVLIND=0
22463        I=2
22464        MESSAG='OFF'
22465        CALL DPEXS1(IY2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
22466     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
22467     1              IBUGG4,ISUBG4,IERRG4)
22468        IF(NCSTR2.GT.0)THEN
22469          IHIND='    '
22470          IHIND2='    '
22471          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
22472          IF(NCSTR2.GE.5)
22473     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
22474C
22475          IHWUSE='V'
22476          MESSAG='NO'
22477          CALL CHECKN(IHIND,IHIND2,IHWUSE,
22478     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
22479     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
22480          IF(IERROR.EQ.'YES')THEN
22481            WRITE(ICOUT,999)
22482            CALL DPWRST('XXX','BUG ')
22483            WRITE(ICOUT,14116)IHIND,IHIND2
2248414116       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
22485     1            'VARIABLE, ',A4,A4,',')
22486            CALL DPWRST('XXX','BUG ')
22487            WRITE(ICOUT,14117)
2248814117       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
22489     1             '(VARIABLE FORM).')
22490            CALL DPWRST('XXX','BUG ')
22491            GOTO1490
22492          ENDIF
22493          ICOLI=IVALUE(ILOCV)
22494          NLEFI=IN(ILOCV)
22495          IVLIND=1
22496        ENDIF
22497      ELSEIF(IY2ZFM.EQ.'GLAB')THEN
22498        CALL DPUPPE(IY2ZCN,ISTOP,IY2ZCN,IBUGG4,IERROR)
22499        I=1
22500        MESSAG='OFF'
22501        CALL DPEXS1(IY2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
22502     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
22503     1              IBUGG4,ISUBG4,IERRG4)
22504        IF(NCSTR2.LE.0)THEN
22505          WRITE(ICOUT,999)
22506          CALL DPWRST('XXX','BUG ')
22507          WRITE(ICOUT,14122)
2250814122     FORMAT('***** WARNING--FOR Y2TIC MARK LABEL FORMAT ',
22509     1           '"GROUP LABEL"')
22510          CALL DPWRST('XXX','BUG ')
22511          WRITE(ICOUT,14124)
2251214124     FORMAT('      NO GROUP LABEL VARIABLE NAME SPECIFIED ON ',
22513     1           'Y2TIC MARK LABEL CONTENT COMMAND.')
22514          CALL DPWRST('XXX','BUG ')
22515          GOTO1490
22516        ELSE
22517          IH='    '
22518          IH2='    '
22519          IH(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
22520          IF(NCSTR2.GE.5)IH2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
22521        ENDIF
22522C
22523        IGVAR=0
22524        DO14120I=1,MAXGRP
22525          IF(IH(1:4).EQ.IGRPVN(I)(1:4) .AND.
22526     1       IH2(1:4).EQ.IGRPVN(I)(5:8))THEN
22527            IGVAR=I
22528            GOTO14129
22529          ENDIF
2253014120   CONTINUE
2253114129   CONTINUE
22532C
22533C  1/2006: IF GROUP LABEL SPECIFIED, THEN CHECK TO SEE IF
22534C          INDEX VARIABLE ALSO SPECIFIED.
22535C
22536        IGLIND=0
22537        I=2
22538        MESSAG='OFF'
22539        CALL DPEXS1(IY2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
22540     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
22541     1              IBUGG4,ISUBG4,IERRG4)
22542        IF(NCSTR2.GT.0)THEN
22543          IHIND='    '
22544          IHIND2='    '
22545          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
22546          IF(NCSTR2.GE.5)
22547     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
22548C
22549          IHWUSE='V'
22550          MESSAG='NO'
22551          CALL CHECKN(IHIND,IHIND2,IHWUSE,
22552     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
22553     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
22554          IF(IERROR.EQ.'YES')THEN
22555            WRITE(ICOUT,999)
22556            CALL DPWRST('XXX','BUG ')
22557            WRITE(ICOUT,14136)IHIND,IHIND2
2255814136       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
22559     1             'VARIABLE, ',A4,A4,',')
22560            CALL DPWRST('XXX','BUG ')
22561            WRITE(ICOUT,14137)
2256214137       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
22563     1             '(GROUP LABEL FORM).')
22564            CALL DPWRST('XXX','BUG ')
22565            GOTO1490
22566          ENDIF
22567          ICOLI=IVALUE(ILOCV)
22568          NLEFI=IN(ILOCV)
22569          IGLIND=1
22570        ENDIF
22571C
22572      ELSEIF(IY2ZFM.EQ.'ROWL')THEN
22573C
22574C  1/2006: IF ROW LABEL SPECIFIED, THEN CHECK TO SEE IF
22575C          INDEX VARIABLE ALSO SPECIFIED.
22576C
22577        CALL DPUPPE(IY2ZCN,ISTOP,IY2ZCN,IBUGG4,IERROR)
22578        IRLIND=0
22579        I=1
22580        MESSAG='OFF'
22581        CALL DPEXS1(IY2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
22582     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
22583     1              IBUGG4,ISUBG4,IERRG4)
22584        IF(NCSTR2.GT.0)THEN
22585          IHIND='    '
22586          IHIND2='    '
22587          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
22588          IF(NCSTR2.GE.5)
22589     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
22590C
22591          IHWUSE='V'
22592          MESSAG='NO'
22593          CALL CHECKN(IHIND,IHIND2,IHWUSE,
22594     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
22595     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
22596          IF(IERROR.EQ.'YES')THEN
22597            WRITE(ICOUT,999)
22598            CALL DPWRST('XXX','BUG ')
22599            WRITE(ICOUT,14138)IHIND,IHIND2
2260014138       FORMAT('***** WARNING--UNABLE TO DETERMINE INDEX ',
22601     1             'VARIABLE, ',A4,A4,',')
22602            CALL DPWRST('XXX','BUG ')
22603            WRITE(ICOUT,14139)
2260414139       FORMAT('      FOR TIC MARK LABEL CONTENTS ',
22605     1             '(ROW LABEL FORM).')
22606            CALL DPWRST('XXX','BUG ')
22607            GOTO1490
22608          ENDIF
22609          ICOLI=IVALUE(ILOCV)
22610          NLEFI=IN(ILOCV)
22611          IRLIND=1
22612        ENDIF
22613C
22614C       CHECK FOR STARTING ROW
22615C
22616        I=2
22617        MESSAG='OFF'
22618        CALL DPEXS1(IY2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
22619     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
22620     1              IBUGG4,ISUBG4,IERRG4)
22621        IF(NCSTR2.GT.0)THEN
22622          IHIND='    '
22623          IHIND2='    '
22624          IHIND(1:MIN(4,NCSTR2))=ISTRI2(1:MIN(4,NCSTR2))
22625          IF(NCSTR2.GE.5)
22626     1      IHIND2(1:MIN(8,NCSTR2)-4)=ISTRI2(5:MIN(8,NCSTR2))
22627C
22628          IHWUSE='P'
22629          MESSAG='NO'
22630          IERROR='NO'
22631          CALL CHECKN(IHIND,IHIND2,IHWUSE,
22632     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
22633     1              ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCV,IERROR)
22634          IF(IERROR.EQ.'YES')THEN
22635            IROW1=1
22636          ELSE
22637            IROW1=INT(VALUE(ILOCV)+0.01)
22638            IF(IROW1.LT.1)IROW1=1
22639            IF(IROW1.GT.MAXOBV)IROW1=1
22640          ENDIF
22641        ENDIF
22642C
22643      ENDIF
22644C
22645      DO1400I=1,NY2COO
22646C
22647        PX1=PXMAX+PY2ZDS
22648        PY1=PY2COO(I)
22649CCCCC   PY1=PY1-PHEIG2/2.0
22650        IF(IY2ZFM.EQ.'VARI')THEN
22651          IF(IVLIND.EQ.1)THEN
22652            IJ=MAXN*(ICOLI-1)+I
22653            IF(ICOLI.LE.MAXCOL)AVALU2=V(IJ)
22654            IF(ICOLI.EQ.MAXCP1)AVALU2=PRED(I)
22655            IF(ICOLI.EQ.MAXCP2)AVALU2=RES(I)
22656            IF(ICOLI.EQ.MAXCP3)AVALU2=YPLOT(I)
22657            IF(ICOLI.EQ.MAXCP4)AVALU2=XPLOT(I)
22658            IF(ICOLI.EQ.MAXCP5)AVALU2=X2PLOT(I)
22659            IF(ICOLI.EQ.MAXCP6)AVALU2=TAGPLO(I)
22660            INDX=INT(AVALU2+0.5)
22661            IF(INDX.LT.1 .OR. INDX.GT.NY2COO)THEN
22662              INDX=I
22663            ENDIF
22664          ELSE
22665            INDX=I
22666          ENDIF
22667C
22668          IF(IFLAGC.EQ.0)THEN
22669            IJ=MAXN*(ICOLL-1)+INDX
22670            IF(ICOLL.LE.MAXCOL)AVALUE=V(IJ)
22671            IF(ICOLL.EQ.MAXCP1)AVALUE=PRED(INDX)
22672            IF(ICOLL.EQ.MAXCP2)AVALUE=RES(INDX)
22673            IF(ICOLL.EQ.MAXCP3)AVALUE=YPLOT(INDX)
22674            IF(ICOLL.EQ.MAXCP4)AVALUE=XPLOT(INDX)
22675            IF(ICOLL.EQ.MAXCP5)AVALUE=X2PLOT(INDX)
22676            IF(ICOLL.EQ.MAXCP6)AVALUE=TAGPLO(INDX)
22677            IVALU9=INT(AVALUE+0.5)
22678            IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
22679          ELSE
22680            IVALU9=INDX
22681          ENDIF
22682        ELSEIF(IY2ZFM.EQ.'GLAB' .AND. IGLIND.EQ.1)THEN
22683          IJ=MAXN*(ICOLI-1)+I
22684          IF(ICOLI.LE.MAXCOL)AVALUE=V(IJ)
22685          IF(ICOLI.EQ.MAXCP1)AVALUE=PRED(I)
22686          IF(ICOLI.EQ.MAXCP2)AVALUE=RES(I)
22687          IF(ICOLI.EQ.MAXCP3)AVALUE=YPLOT(I)
22688          IF(ICOLI.EQ.MAXCP4)AVALUE=XPLOT(I)
22689          IF(ICOLI.EQ.MAXCP5)AVALUE=X2PLOT(I)
22690          IF(ICOLI.EQ.MAXCP6)AVALUE=TAGPLO(I)
22691          IVALU9=INT(AVALUE+0.5)
22692        ELSEIF(IY2ZFM.EQ.'ROWL' .AND. IRLIND.EQ.1)THEN
22693          IJ=MAXN*(ICOLI-1)+I
22694          IJ=IJ+IROW1-1
22695          IF(IJ.LT.1)IJ=1
22696          IF(IJ.GT.MAXOBV)IJ=MAXOBV
22697          IJ2=I+IROW1-1
22698          IF(IJ2.LT.1)IJ2=1
22699          IF(IJ2.GT.MAXOBV)IJ2=MAXOBV
22700          IF(ICOLI.LE.MAXCOL)AVALUE=V(IJ)
22701          IF(ICOLI.EQ.MAXCP1)AVALUE=PRED(IJ2)
22702          IF(ICOLI.EQ.MAXCP2)AVALUE=RES(IJ2)
22703          IF(ICOLI.EQ.MAXCP3)AVALUE=YPLOT(IJ2)
22704          IF(ICOLI.EQ.MAXCP4)AVALUE=XPLOT(IJ2)
22705          IF(ICOLI.EQ.MAXCP5)AVALUE=X2PLOT(IJ2)
22706          IF(ICOLI.EQ.MAXCP6)AVALUE=TAGPLO(IJ2)
22707          IVALU9=INT(AVALUE+0.5)
22708        ELSE
22709          AVALUE=Y2COOR(I)
22710          IVALU9=INT(AVALUE+0.5)
22711          IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
22712        ENDIF
22713C
22714        IF(IY2ZFM.EQ.'VARI' .AND. IFLAGC.EQ.1)GOTO14160
22715        IF(IY2ZFM.EQ.'ROWL')GOTO1460
22716        IF(IY2ZFM.EQ.'GLAB')GOTO1470
22717        IF(IY2ZFM.EQ.'ALPH')GOTO1450
22718        IF(IY2TSC.EQ.'LOG'.AND.IY2ZFM.EQ.'REAL')GOTO1420
22719        IF(IY2TSC.EQ.'LOG'.AND.IY2ZFM.EQ.'FIXE')GOTO1420
22720        IF(IY2TSC.EQ.'LOG'.AND.IY2ZFM.EQ.'DECI')GOTO1420
22721        IF(IY2TSC.EQ.'LOG'.AND.IY2ZFM.EQ.'INTE')GOTO1420
22722        IF(IY2TSC.EQ.'LOG'.AND.IY2ZFM.EQ.'EXPO')GOTO1430
22723        IF(IY2TSC.EQ.'LOG'.AND.IY2ZFM.EQ.'EXP')GOTO1430
22724CCCCC   ADD FOLLOWING 2 LINES.  JULY 1997.
22725        IF(IY2TSC.EQ.'LINE'.AND.IY2ZFM.EQ.'EXP')GOTO1440
22726        IF(IY2TSC.EQ.'LINE'.AND.IY2ZFM.EQ.'EXPO')GOTO1440
22727        GOTO1410
22728C
22729 1410   CONTINUE
22730        NMDID0=IY2ZDP
22731        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
22732        GOTO1480
22733C
22734 1420   CONTINUE
22735CCCCC   AVALUE=Y2COOR(I)
22736        AVALUE=10.0**AVALUE
22737        IVALU9=INT(AVALUE+0.5)
22738        IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
22739        NMDID0=IX1ZDP
22740        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
22741        GOTO1480
22742C
22743 1430   CONTINUE
22744        NMDID0=IY2ZDP
22745        CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
22746        IF(NCTEXT.LE.0)GOTO1439
22747        DO1431J=1,NCTEXT
22748          JREV=NCTEXT-J+1
22749          J2=JREV+7
22750          ICTEXT(J2)=ICTEXT(JREV)
22751 1431   CONTINUE
22752        ICTEXT(1)='1   '
22753        ICTEXT(2)='0   '
22754        ICTEXT(3)='S   '
22755        ICTEXT(4)='U   '
22756        ICTEXT(5)='P   '
22757        ICTEXT(6)='(   '
22758        ICTEXT(7)=')   '
22759        NCTEXT=NCTEXT+7
22760        NCTEXT=NCTEXT+1
22761        ICTEXT(NCTEXT)='U   '
22762        NCTEXT=NCTEXT+1
22763        ICTEXT(NCTEXT)='N   '
22764        NCTEXT=NCTEXT+1
22765        ICTEXT(NCTEXT)='S   '
22766        NCTEXT=NCTEXT+1
22767        ICTEXT(NCTEXT)='P   '
22768        NCTEXT=NCTEXT+1
22769        ICTEXT(NCTEXT)='(   '
22770        NCTEXT=NCTEXT+1
22771        ICTEXT(NCTEXT)=')   '
22772 1439   CONTINUE
22773        GOTO1480
22774C
22775CCCCC   ADD FOLLOWING SECTION (FOR EXPONENTIAL NUMBERS ON LINEAR
22776CCCCC   SCALE) JULY 1997
22777 1440   CONTINUE
22778        NMDID0=IY2ZDP
22779        ISTRI2=' '
22780        ICTEMP='(E15.7 )'
22781        NTEMP2=7
22782        IF(NMDID0.GE.1)NTEMP2=NMDID0
22783        NTEMP1=NTEMP2+8
22784        IF(NTEMP2.LE.9)THEN
22785          WRITE(ICTEMP(6:6),'(I1)')NTEMP2
22786        ELSE
22787          WRITE(ICTEMP(6:7),'(I2)')NTEMP2
22788        ENDIF
22789        WRITE(ICTEMP(3:4),'(I2)')NTEMP1
22790        WRITE(ISTRI2,ICTEMP)AVALUE
22791        DO1442KK=1,NTEMP1
22792          IF(ISTRI2(KK:KK).NE.' ')THEN
22793             NCTEXT=KK
22794             ICTEXT(KK)=ISTRI2(KK:KK)
22795          ELSE
22796             ICTEXT(KK)=' '
22797          ENDIF
22798 1442 CONTINUE
22799C
22800        GOTO1480
22801C
22802 1450 CONTINUE
22803        MESSAG='OFF'
22804        CALL DPEXS1(IY2ZCN,NCOLMX,ISTART,ISTOP,I,MESSAG,
22805     1              ICOL1,ICOL2,ISTRI2,NCSTR2,
22806     1              IBUGG4,ISUBG4,IERRG4)
22807        IF(NCSTR2.LE.0)GOTO1459
22808        DO1452J=1,NCSTR2
22809        IC1=ISTRI2(J:J)
22810        IC4='    '
22811        IC4(1:1)=IC1
22812        ICTEXT(J)=IC4
22813 1452 CONTINUE
22814 1459 CONTINUE
22815        NCTEXT=NCSTR2
22816CCCCC GOTO1480
22817        GOTO1485
22818C
22819 1460   CONTINUE
22820        INDX=IVALU9
22821        IF(INDX.LT.1)INDX=I
22822CCCCC   IF(IRLIND.EQ.1)THEN
22823CCCCC     IF(IVALU9.GE.1 .AND. IVALU9.LE.NY2COO)INDX=IVALU9
22824CCCCC   ENDIF
22825C
22826        DO1461J=1,24
22827          ICTEXT(J)=IROWLB(INDX)(J:J)
22828 1461   CONTINUE
22829        NCTEXT=1
22830        DO1463J=24,1,-1
22831          IF(ICTEXT(J).NE.'    ')THEN
22832            NCTEXT=J
22833            GOTO1485
22834          ENDIF
22835 1463   CONTINUE
22836        GOTO1485
22837C
2283814160   CONTINUE
22839        INDX=IVALU9
22840        IF(INDX.LT.1)INDX=I
22841C
22842        REWIND(IOUNI2)
22843        READ(IOUNI2,'(I8)',END=14166,ERR=14166)NCVAR
22844        DO14161KK=1,NCVAR
22845          READ(IOUNI2,'(A1)',END=14166,ERR=14166)IAJUNK
2284614161   CONTINUE
22847        IF(INDX.GT.1)THEN
22848          DO14162KK=1,INDX-1
22849            READ(IOUNI2,'(A1)',END=14166,ERR=14166)IAJUNK
2285014162     CONTINUE
22851        ENDIF
22852        IFORMT=' '
22853        IFORMT='(    A)'
22854        WRITE(IFORMT(2:5),'(I4)')NCVAR
22855        READ(IOUNI2,IFORMT,END=14166,ERR=14166)ISTRCC
22856        NSTRT=(IROWID-1)*25 + 1
22857        NSTOP=NSTRT+23
22858        DO14163J=1,24
22859          IVAL=NSTRT+J-1
22860          ICTEXT(J)=ISTRCC(IVAL:IVAL)
2286114163   CONTINUE
22862        NCTEXT=1
22863        DO14164J=24,1,-1
22864          IF(ICTEXT(J).NE.'    ')THEN
22865            NCTEXT=J
22866            GOTO1485
22867          ENDIF
2286814164   CONTINUE
22869        GOTO1485
22870C
2287114166   CONTINUE
22872        WRITE(ICOUT,999)
22873        CALL DPWRST('XXX','BUG ')
22874        WRITE(ICOUT,14167)
2287514167   FORMAT('***** ERROR IN Y2TIC MARK LABEL--')
22876        CALL DPWRST('XXX','BUG ')
22877        WRITE(ICOUT,11168)
22878        CALL DPWRST('XXX','BUG ')
22879        GOTO9000
22880C
22881 1470   CONTINUE
22882C
22883C       JANUARY 2006.  DETERMINE THE INDEX IF REQUESTED.
22884C
22885        INDX=I
22886        IF(IGLIND.EQ.1)THEN
22887          IF(IVALU9.GE.1 .AND. IVALU9.LE.NY2COO)INDX=IVALU9
22888        ENDIF
22889C
22890        IF(IGVAR.EQ.0)THEN
22891           WRITE(ICOUT,999)
22892           CALL DPWRST('XXX','BUG ')
22893           WRITE(ICOUT,1476)
22894 1476      FORMAT('***** WARNING--UNABLE TO DETERMINE GROUP LABEL ',
22895     1            'VARIABLE FOR X1TIC MARK LABELS.')
22896           CALL DPWRST('XXX','BUG ')
22897           GOTO1490
22898        ENDIF
22899CCCCC   DO1471J=1,24
22900        DO1471J=1,MAXGR2
22901          ICTEXT(J)=IGRPLA(INDX,IGVAR)(J:J)
22902 1471   CONTINUE
22903        NCTEXT=1
22904CCCCC   DO1473J=24,1,-1
22905        DO1473J=MAXGR2,1,-1
22906          IF(ICTEXT(J).NE.'    ')THEN
22907            NCTEXT=J
22908            GOTO1485
22909          ENDIF
22910 1473   CONTINUE
22911        GOTO1485
22912C
22913 1480   CONTINUE
22914CCCCC   MARCH 1993.  STRIP OUT UC(), LC(), AND SP() FOR HARDWARE TEXT.
22915        IF(IFONT.EQ.'TEKT')CALL GRSTRI(ICTEXT,NCTEXT)
22916        IF(NCTEXT.GE.1)
22917     1    CALL GRDETL(ICTEXT,NCTEXT,
22918     1                IFONT,IDIR,ANGLE,
22919     1                JFONT,JDIR,ANGLE2,
22920     1                PHEIGH,PWIDTH,PVEGAP,PHOGAP,
22921     1                JSIZE,
22922     1                JHEIG2,JWIDT2,JVEGA2,JHOGA2,
22923     1                PHEIG2,PWIDT2,PVEGA2,PHOGA2,
22924     1                PXLEC,PXLECG,PYLEC,PYLECG)
22925C
22926        IF(NCTEXT.GE.1)
22927     1    CALL GRWRTE(PX1,PY1,ICTEXT,NCTEXT,
22928     1      IPATTT,IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
22929     1      JPATTT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILLT,JCOL,
22930     1      PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
22931     1      JSIZE,
22932     1      JHEIG2,JWIDT2,JVEGA2,JHOGA2,
22933     1      PHEIG2,PWIDT2,PVEGA2,PHOGA2,
22934     1      JTHICK,PTHIC2,
22935     1      PXLEC,PXLECG,PYLEC,PYLECG,
22936     1      ISYMBL,ISPAC,
22937     1      IMPSW2,AMPSCH,AMPSCW,
22938     1      PX99,PY99)
22939        GOTO1400
22940C
22941 1485   CONTINUE
22942        IF(NCTEXT.GE.1)
22943     1    CALL DPWRTE(PX1,PY1,ICTEXT,NCTEXT,
22944     1      IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
22945     1      PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
22946     1      ISYMBL,ISPAC,
22947     1      IMPSW2,AMPSCH,AMPSCW,
22948     1      PX99,PY99)
22949        GOTO1400
22950C
22951 1400 CONTINUE
22952 1490 CONTINUE
22953C
22954      GOTO9000
22955C
22956C               ******************************************************
22957C               **  STEP 8--                                        **
22958C               **  WRITE TIC LABELS FOR TRILINEAR SCALES           **
22959C               ******************************************************
22960C
22961C     NOTE: FOR TRILINEAR SCALES, CURRENTLY ONLY SUPPORT LINEAR
22962C           SCALES.  IF TIC MARK LABELS REQUESTED, PRINT THE
22963C           "0" AND "1" VALUES FOR EACH OF THE 3 COMPONENTS.
22964C
22965C
22966 8000 CONTINUE
22967C
22968      IFONT=IX1ZFO
22969      CALL GRTRFO(ITYPE,IFONT,JFONT)
22970      CALL GRSEFO(ITYPE,IFONT,JFONT)
22971C
22972      ICASE=IX1ZCA
22973      CALL GRTRCA(ITYPE,ICASE,JCASE)
22974      CALL GRSECA(ITYPE,ICASE,JCASE)
22975C
22976      IJUST=IX1ZJU
22977      CALL GRTRJU(ITYPE,IJUST,JJUST)
22978      CALL GRSEJU(ITYPE,IJUST,JJUST)
22979C
22980      IDIR=IX1ZDI
22981      ANGLE=AX1ZAN
22982      CALL GRTRDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
22983      CALL GRSEDI(ITYPE,IDIR,ANGLE,JDIR,ANGLE2)
22984C
22985      IFILLT=IX1ZFI
22986      CALL GRTRFI(ITYPE,IFILLT,JFILLT)
22987      CALL GRSEFI(ITYPE,IFILLT,JFILLT)
22988C
22989      ICOL=IX1ZCO
22990      CALL GRTRCO(ITYPE,ICOL,JCOL)
22991      CALL GRSECO(ITYPE,ICOL,JCOL)
22992C
22993      PHEIGH=PX1ZHE
22994      PWIDTH=PX1ZWI
22995      PVEGAP=PX1ZVG
22996      PHOGAP=PX1ZHG
22997      CALL GRTRSI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
22998     1JSIZE,
22999     1JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23000     1PHEIG2,PWIDT2,PVEGA2,PHOGA2)
23001      CALL GRSESI(ITYPE,IFONT,PHEIGH,PWIDTH,PVEGAP,PHOGAP,
23002     1JSIZE,
23003     1JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23004     1PHEIG2,PWIDT2,PVEGA2,PHOGA2)
23005C
23006      AMIN=0.0
23007      AMAX=FX1MAX
23008      GRDINC=(AMAX-AMIN)/REAL(NX1COO-1)
23009      PXRANG=PXMAX - PXMIN
23010      PYRANG=PYMAX - PYMIN
23011C
23012C     TIC LABELS FOR X1
23013C
23014      AVALUE=X1COOR(NX1COO)
23015      IVALU9=INT(AVALUE+0.5)
23016      IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
23017      NMDID0=IX1ZDP
23018      CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
23019      PX1=0.5*(PXMIN+PXMAX)
23020      PY1=PYMAX + PX1ZDS
23021      IF(NCTEXT.GE.1)THEN
23022        CALL GRDETL(ICTEXT,NCTEXT,
23023     1              IFONT,IDIR,ANGLE,
23024     1              JFONT,JDIR,ANGLE2,
23025     1              PHEIGH,PWIDTH,PVEGAP,PHOGAP,
23026     1              JSIZE,
23027     1              JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23028     1              PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23029     1              PXLEC,PXLECG,PYLEC,PYLECG)
23030C
23031        CALL GRWRTE(PX1,PY1,ICTEXT,NCTEXT,
23032     1         IPATTT,IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
23033     1         JPATTT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILLT,JCOL,
23034     1         PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
23035     1         JSIZE,
23036     1         JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23037     1         PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23038     1         JTHICK,PTHIC2,
23039     1         PXLEC,PXLECG,PYLEC,PYLECG,
23040     1         ISYMBL,ISPAC,
23041     1         IMPSW2,AMPSCH,AMPSCW,
23042     1         PX99,PY99)
23043C
23044      ENDIF
23045C
23046      AVALUE=0.0
23047      IVALU9=0
23048      NMDID0=IX1ZDP
23049      CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
23050      PY1=PYMIN - PX1ZDS
23051      IF(NCTEXT.GE.1)THEN
23052        CALL GRDETL(ICTEXT,NCTEXT,
23053     1              IFONT,IDIR,ANGLE,
23054     1              JFONT,JDIR,ANGLE2,
23055     1              PHEIGH,PWIDTH,PVEGAP,PHOGAP,
23056     1              JSIZE,
23057     1              JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23058     1              PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23059     1              PXLEC,PXLECG,PYLEC,PYLECG)
23060C
23061        CALL GRWRTE(PX1,PY1,ICTEXT,NCTEXT,
23062     1         IPATTT,IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
23063     1         JPATTT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILLT,JCOL,
23064     1         PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
23065     1         JSIZE,
23066     1         JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23067     1         PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23068     1         JTHICK,PTHIC2,
23069     1         PXLEC,PXLECG,PYLEC,PYLECG,
23070     1         ISYMBL,ISPAC,
23071     1         IMPSW2,AMPSCH,AMPSCW,
23072     1         PX99,PY99)
23073C
23074      ENDIF
23075C
23076C     TIC LABELS FOR X2
23077C
23078      AVALUE=X1COOR(NX1COO)
23079      IVALU9=INT(AVALUE+0.5)
23080      IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
23081      NMDID0=IX1ZDP
23082      CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
23083      PX1=PXMIN - PX1ZDS
23084      PY1=PYMIN - PHEIGH/2.0
23085      IF(NCTEXT.GE.1)THEN
23086        CALL GRDETL(ICTEXT,NCTEXT,
23087     1              IFONT,IDIR,ANGLE,
23088     1              JFONT,JDIR,ANGLE2,
23089     1              PHEIGH,PWIDTH,PVEGAP,PHOGAP,
23090     1              JSIZE,
23091     1              JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23092     1              PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23093     1              PXLEC,PXLECG,PYLEC,PYLECG)
23094C
23095        CALL GRWRTE(PX1,PY1,ICTEXT,NCTEXT,
23096     1         IPATTT,IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
23097     1         JPATTT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILLT,JCOL,
23098     1         PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
23099     1         JSIZE,
23100     1         JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23101     1         PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23102     1         JTHICK,PTHIC2,
23103     1         PXLEC,PXLECG,PYLEC,PYLECG,
23104     1         ISYMBL,ISPAC,
23105     1         IMPSW2,AMPSCH,AMPSCW,
23106     1         PX99,PY99)
23107C
23108      ENDIF
23109C
23110      AVALUE=0.0
23111      IVALU9=0
23112      NMDID0=IX1ZDP
23113      CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
23114      PX1=PXMIN + PXRANG*0.5
23115      PX1=PX1 + 0.5*PXRANG*(AMAX-0.5)
23116      PY1=PYMIN + PYRANG*(AMAX-0.5)
23117      PX1=PX1 + PX1ZDS
23118      IF(NCTEXT.GE.1)THEN
23119        CALL GRDETL(ICTEXT,NCTEXT,
23120     1              IFONT,IDIR,ANGLE,
23121     1              JFONT,JDIR,ANGLE2,
23122     1              PHEIGH,PWIDTH,PVEGAP,PHOGAP,
23123     1              JSIZE,
23124     1              JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23125     1              PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23126     1              PXLEC,PXLECG,PYLEC,PYLECG)
23127C
23128        CALL GRWRTE(PX1,PY1,ICTEXT,NCTEXT,
23129     1         IPATTT,IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
23130     1         JPATTT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILLT,JCOL,
23131     1         PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
23132     1         JSIZE,
23133     1         JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23134     1         PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23135     1         JTHICK,PTHIC2,
23136     1         PXLEC,PXLECG,PYLEC,PYLECG,
23137     1         ISYMBL,ISPAC,
23138     1         IMPSW2,AMPSCH,AMPSCW,
23139     1         PX99,PY99)
23140C
23141      ENDIF
23142C
23143C     TIC LABELS FOR X3
23144C
23145      AVALUE=X1COOR(NX1COO)
23146      IVALU9=INT(AVALUE+0.5)
23147      IF(AVALUE.LT.0.0)IVALU9=INT(AVALUE-0.5)
23148      NMDID0=IX1ZDP
23149      CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
23150      PX1=PXMAX + PX1ZDS
23151      PY1=PYMIN - PHEIGH/2.0
23152      IF(NCTEXT.GE.1)THEN
23153        CALL GRDETL(ICTEXT,NCTEXT,
23154     1              IFONT,IDIR,ANGLE,
23155     1              JFONT,JDIR,ANGLE2,
23156     1              PHEIGH,PWIDTH,PVEGAP,PHOGAP,
23157     1              JSIZE,
23158     1              JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23159     1              PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23160     1              PXLEC,PXLECG,PYLEC,PYLECG)
23161C
23162        CALL GRWRTE(PX1,PY1,ICTEXT,NCTEXT,
23163     1         IPATTT,IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
23164     1         JPATTT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILLT,JCOL,
23165     1         PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
23166     1         JSIZE,
23167     1         JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23168     1         PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23169     1         JTHICK,PTHIC2,
23170     1         PXLEC,PXLECG,PYLEC,PYLECG,
23171     1         ISYMBL,ISPAC,
23172     1         IMPSW2,AMPSCH,AMPSCW,
23173     1         PX99,PY99)
23174C
23175      ENDIF
23176C
23177      AVALUE=0.0
23178      IVALU9=0
23179      NMDID0=IX1ZDP
23180      CALL DPCON2(IVALU9,AVALUE,ICTEXT,NCTEXT,NMDID0,IBUGG4,IERRG4)
23181      PX1=PXMIN + 0.25*PXRANG
23182      PY1=PYMIN + 0.5*PYRANG
23183      PX1=PX1 - PX1ZDS
23184      IF(NCTEXT.GE.1)THEN
23185        CALL GRDETL(ICTEXT,NCTEXT,
23186     1              IFONT,IDIR,ANGLE,
23187     1              JFONT,JDIR,ANGLE2,
23188     1              PHEIGH,PWIDTH,PVEGAP,PHOGAP,
23189     1              JSIZE,
23190     1              JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23191     1              PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23192     1              PXLEC,PXLECG,PYLEC,PYLECG)
23193C
23194        CALL GRWRTE(PX1,PY1,ICTEXT,NCTEXT,
23195     1         IPATTT,IFONT,ICASE,IJUST,IDIR,ANGLE,IFILLT,ICOL,
23196     1         JPATTT,JFONT,JCASE,JJUST,JDIR,ANGLE2,JFILLT,JCOL,
23197     1         PHEIGH,PWIDTH,PVEGAP,PHOGAP,PTHICK,
23198     1         JSIZE,
23199     1         JHEIG2,JWIDT2,JVEGA2,JHOGA2,
23200     1         PHEIG2,PWIDT2,PVEGA2,PHOGA2,
23201     1         JTHICK,PTHIC2,
23202     1         PXLEC,PXLECG,PYLEC,PYLECG,
23203     1         ISYMBL,ISPAC,
23204     1         IMPSW2,AMPSCH,AMPSCW,
23205     1         PX99,PY99)
23206C
23207      ENDIF
23208C
23209      GOTO9000
23210C
23211C               *****************
23212C               **  STEP 90--  **
23213C               **  EXIT       **
23214C               *****************
23215C
23216 9000 CONTINUE
23217C
23218      IF(IFLAGC.EQ.1)THEN
23219        IENDFI='OFF'
23220        IREWIN='ON'
23221        CALL DPCLFI(IOUNI2,IFILE2,ISTAT2,IFORM2,IACCE2,IPROT2,ICURS2,
23222     1              IENDFI,IREWIN,ISUBN0,IERRF2,IBUGG4,ISUBRO,IERROR)
23223        IZCHCS='CLOSED'
23224      ENDIF
23225C
23226      IF(IBUGG4.EQ.'ON'.OR.ISUBG4.EQ.'WRTL')THEN
23227        WRITE(ICOUT,999)
23228        CALL DPWRST('XXX','BUG ')
23229        WRITE(ICOUT,9011)
23230 9011   FORMAT('***** AT THE END       OF DPWRTL--')
23231        CALL DPWRST('XXX','BUG ')
23232      ENDIF
23233C
23234      RETURN
23235      END
23236      SUBROUTINE DPWSAT(YVAR,YNU,YA,N,IFLAG,UNC,
23237     1                  WSDF,POOLSD,
23238     1                  ISUBRO,IBUGA3,IERROR)
23239C
23240C     PURPOSE--THE WELCH-SAITTERTHWAITE IS USED TO DETERMINE THE
23241C              "EFFECTIVE DEGREES OF FREEDOM" WHEN WE ARE COMBINING
23242C              UNCERTAINTIES FROM MULTIPLE SOURCES.
23243C
23244C              WE CURRENTLY SUPPORT TWO VARIANTS OF
23245C              WELCH-SAITTERTHWAITE.
23246C
23247C              1) FOR THE FIRST METHOD (THIS IS THE METHOD DESCRIBED ON
23248C                 WIKIPEDIA), WE HAVE N VARIANCES WITH THEIR CORRESPONDING
23249C                 DEGREES OF FREEDOM.  THE FORMULA IS THEN GIVEN AS
23250C
23251C                     NU' = (SUM[k(i)*s(i)**2])**2/
23252C                           SUM[(k(i)*s(i)**2)**2/nu(i)]
23253C
23254C                 WHERE
23255C
23256C                     k(i)    = 1/(nu(i)+1)
23257C                     nu(i)   = DEGREES OF FREEDOM FOR i-TH COMPONENT
23258C                     s(i)**2 = VARIANCE OF i-TH COMPONENT
23259C
23260C                 THIS FORM WILL ALSO RETURN THE POOLED STANDARD
23261C                 DEVIATION
23262C
23263C                     POOLSD = SQRT(SUM[i=1 to N][(NU(i)-1)*S(i)**2]/
23264C                                   SUM[i=1 to N][NU(i) - 1]
23265C
23266C                 THIS VERSION OF WELCH SATTERTHWAITE IS OFTEN USED TO
23267C                 POOL THE STANDARD DEVIATION AND DEGREES OF FREEDOM
23268C                 WHEN COMBING TYPE A COMPONENTS.  AN EXAMPLE IS THE
23269C                 TWO-SAMPLE T-TEST WITH UNEQUAL VARIANCES.
23270C
23271C                 NOTE THAT THIS CASE ASSUMES THE VARIANCES ARE
23272C                 INDEPENDENT.
23273C
23274C              2) THE FORMULA GIVEN IN THE GUM IS
23275C
23276C                    NU'= u**4/SUM[i=1 to N][A(i)**4*s(i)**4/nu(i)]
23277C
23278C                 WHERE
23279C
23280C                    U      = THE COMBINED STANDARD UNCERTAINTY
23281C                    S(i)   = THE STANDARD UNCERTAINTY FOR THE i-TH
23282C                             COMPONENT
23283C                    A(i)   = THE SENSITIVTY COMPONENT OF THE i-TH
23284C                             COMPONENT
23285C
23286C                 THE GUM FORMULA IS OFTEN USED WHEN WE ARE COMBINING
23287C                 TYPE A AND TYPE B SOURCES OF UNCERTAINTY.  THE
23288C                 SENSITIVITY COMPONENTS ARE DERIVED FROM PARTIAL
23289C                 DERIVATIVES OF THE MEASUREMENT EQUATION.  WHEN
23290C                 WE HAVE ADDITIVE, INDEPENDENT UNCERTAINTIES, THESE
23291C                 CAN BE SET TO 1.
23292C
23293C                 DEGREES OF FREEDOM FOR TYPE B COMPONENTS ARE OFTEN
23294C                 UNKNOWN AND OFTEN ASSUMED TO BE INFINITE.  FOR THESE
23295C                 CASES, IT IS RECOMMEND SIMPLY ASSIGNING A LARGE VALUE
23296C                 FOR THE DEGREES OF FREEDOM (E.G., 1,000 OR 10,000).
23297C
23298C     INPUT ARGUMENTS--YVAR   = THE SINGLE PRECISION VECTOR OF
23299C                               VARIANCES (OR STANDARD UNCERTAINTIES)
23300C                    --YNU    = THE SINGLE PRECISION VECTOR THAT
23301C                               SPECIFIES THE CORRESPONDING DEGREES
23302C                               OF FREEDOM
23303C                    --YA     = THE SINGLE PRECISION VECTOR THAT
23304C                               CONTAINS THE SENSITIVITY COEFFICIENTS
23305C                    --N      = THE INTEGER NUMBER OF OBSERVATIONS
23306C                               IN THE VECTOR YNU
23307C                    --IFLAG  = 1 => METHOD 1, YVAR CONTAINS VARIANCES
23308C                               2 => METHOD 2, YVAR CONTAINS STANDARD
23309C                                    UNCERTAINTIES
23310C     OUTPUT ARGUMENTS-WSDF   = THE SINGLE PRECISION SCALAR CONTAINING
23311C                               THE WELCH-SAITTERTHWAITE EFFECTIVE
23312C                               DEGREES OF FREEDOM
23313C                     -POOLSD = THE SINGLE PRECISION SCALAR CONTAINING
23314C                               THE POOLED SD BASED ON SUMMING IN
23315C                               QUADRATURE (METHOD 1 ONLY)
23316C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
23317C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
23318C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
23319C     LANGUAGE--ANSI FORTRAN.
23320C     REFERENCES--SATTERTHWAITE (1946), "AN APPROXIMATE DISTRIBUTION OF
23321C                 VARIANCE COMPONENTS", BIOMETRICS BULLETIN, 2: 110-114.
23322C               --WELCH (1947), "THE GENERALIZATION OF "STUDENT'S"
23323C                 PROBLEM WHEN SEVERAL DIFFERENT POPULATION VARIANCES
23324C                 ARE INVOLVED", BIOMETRIKA, 34: 28-35.
23325C               --GUIDE TO THE EXPRESSION OF UNCERTAINTY IN MEASUREMENT,
23326C                 ISO, GENEVA (1993).
23327C     WRITTEN BY--ALAN HECKERT
23328C                 STATISTICAL ENGINEERING LABORATORY
23329C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
23330C                 GAITHERSBURG, MD 20899-8980
23331C                 PHONE--301-975-2899
23332C     ORIGINAL VERSION--JANUARY   2017.
23333C
23334C---------------------------------------------------------------------
23335C
23336      DIMENSION YVAR(*)
23337      DIMENSION YNU(*)
23338      DIMENSION YA(*)
23339C
23340      CHARACTER*4 ISUBRO
23341      CHARACTER*4 IBUGA3
23342      CHARACTER*4 IERROR
23343C
23344      DOUBLE PRECISION DSUM1
23345      DOUBLE PRECISION DSUM2
23346      DOUBLE PRECISION DSUM3
23347      DOUBLE PRECISION DSUM4
23348      DOUBLE PRECISION DTERM1
23349      DOUBLE PRECISION DNU
23350      DOUBLE PRECISION DVI
23351      DOUBLE PRECISION DS2I
23352      DOUBLE PRECISION DSI
23353      DOUBLE PRECISION DAI
23354      DOUBLE PRECISION DKI
23355      DOUBLE PRECISION DNUM
23356C
23357      CHARACTER*4 IWRITE
23358      CHARACTER*4 ISUBN1
23359      CHARACTER*4 ISUBN2
23360      CHARACTER*4 ISTEPN
23361C
23362C-----COMMON----------------------------------------------------------
23363C
23364      INCLUDE 'DPCOP2.INC'
23365C
23366C-----START POINT-----------------------------------------------------
23367C
23368      ISUBN1='WSAT'
23369      ISUBN2='    '
23370      IWRITE='OFF'
23371      IERROR='NO'
23372      WSDF=0.0
23373      POOLSD=0.0
23374C
23375      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WSAT')THEN
23376        WRITE(ICOUT,999)
23377  999   FORMAT(1X)
23378        CALL DPWRST('XXX','WRIT')
23379        WRITE(ICOUT,51)
23380   51   FORMAT('**** AT THE BEGINNING OF DPWSAT--')
23381        CALL DPWRST('XXX','WRIT')
23382        WRITE(ICOUT,52)N,IFLAG,UNC,IBUGA3,ISUBRO
23383   52   FORMAT('N,IFLAG,UNC,IBUGA3,ISUBRO = ',2I8,G15.7,2(2X,A4))
23384        CALL DPWRST('XXX','WRIT')
23385        DO56I=1,N
23386          WRITE(ICOUT,57)I,YVAR(I),YNU(I),YA(I)
23387   57     FORMAT('I,YVAR(I),YNU(I),YA(I) = ',I8,3G15.7)
23388          CALL DPWRST('XXX','WRIT')
23389   56   CONTINUE
23390      ENDIF
23391C
23392C               ********************************************
23393C               **  STEP 11--                             **
23394C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
23395C               ********************************************
23396C
23397      ISTEPN='11'
23398      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WSAT')
23399     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23400C
23401      IF(N.LT.2)THEN
23402        WRITE(ICOUT,999)
23403        CALL DPWRST('XXX','WRIT')
23404        WRITE(ICOUT,101)
23405  101   FORMAT('***** ERROR: WELCH-SATTERTHWAITE DEGREES OF FREEDOM')
23406        CALL DPWRST('XXX','WRIT')
23407        WRITE(ICOUT,102)
23408  102   FORMAT('      THE NUMBER OF VARIANCES/DEGREES OF FREEDOM  ',
23409     1         'IS LESS THAN TWO.')
23410        CALL DPWRST('XXX','WRIT')
23411        WRITE(ICOUT,103)N
23412  103   FORMAT('      NUMBER OF VARIANCE/DEGREES OF FREEDOM = ',I8)
23413        CALL DPWRST('XXX','WRIT')
23414        IERROR='YES'
23415        GOTO9000
23416      ELSEIF(IFLAG.EQ.2 .AND. UNC.LT.0.0)THEN
23417        WRITE(ICOUT,999)
23418        CALL DPWRST('XXX','WRIT')
23419        WRITE(ICOUT,101)
23420        CALL DPWRST('XXX','WRIT')
23421        WRITE(ICOUT,107)
23422  107   FORMAT('      THE COMBINED UNCERTAINTY IS NON-POSITIVE.')
23423        CALL DPWRST('XXX','WRIT')
23424      ENDIF
23425C
23426      DO110I=1,N
23427        IF(YVAR(I).LT.0.0)THEN
23428          WRITE(ICOUT,999)
23429          CALL DPWRST('XXX','WRIT')
23430          WRITE(ICOUT,101)
23431          CALL DPWRST('XXX','WRIT')
23432          WRITE(ICOUT,112)I,YVAR(I)
23433  112     FORMAT('      ROW ',I8,' OF THE VARIANCES IS NEGATIVE ',
23434     1          '(',G15.7,')')
23435          CALL DPWRST('XXX','WRIT')
23436          IERROR='YES'
23437          GOTO9000
23438        ELSEIF(YNU(I).LE.0.0)THEN
23439          WRITE(ICOUT,999)
23440          CALL DPWRST('XXX','WRIT')
23441          WRITE(ICOUT,101)
23442          CALL DPWRST('XXX','WRIT')
23443          WRITE(ICOUT,114)I,YNU(I)
23444  114     FORMAT('      ROW ',I8,' OF THE DEGREES OF FREEDOM IS ',
23445     1          'NON-POSITIVE (',G15.7,')')
23446          CALL DPWRST('XXX','WRIT')
23447          IERROR='YES'
23448          GOTO9000
23449        ENDIF
23450  110 CONTINUE
23451C
23452C               ********************************************
23453C               **  STEP 2---                             **
23454C               **  COMPUTE THE EFFECTIVE DEGREES OF      **
23455C               **  FREEDOM AND THE POOLED SD (METHOD 1)  **
23456C               ********************************************
23457C
23458      IF(IFLAG.EQ.1)THEN
23459C
23460        ISTEPN='3'
23461        IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WSAT')
23462     1     CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23463C
23464        DSUM1=0.0D0
23465        DSUM2=0.0D0
23466        DSUM3=0.0D0
23467        DSUM4=0.0D0
23468        DO210I=1,N
23469          DVI=DBLE(YNU(I))
23470          DS2I=DBLE(YVAR(I))
23471          DKI=1.0D0/(DVI+1.0D0)
23472          DSUM1=DSUM1 + DKI*DS2I
23473          DSUM2=DSUM2 + ((DKI*DS2I)**2)/DVI
23474          DSUM3=DSUM3 + (DVI-1.0D0)*DS2I
23475          DSUM4=DSUM4 + (DVI-1.0D0)
23476  210   CONTINUE
23477        DNUM=DSUM1**2
23478        DNU=DNUM/DSUM2
23479        WSDF=REAL(DNU)
23480        DTERM1=DSQRT(DSUM3/DSUM4)
23481        POOLSD=REAL(DTERM1)
23482C
23483        IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'WSAT')THEN
23484          WRITE(ICOUT,213)DSUM1,DSUM2,DSUM3
23485  213     FORMAT('DSUM1,DSUM2.DUSM3 = ',3G15.7)
23486          CALL DPWRST('XXX','WRIT')
23487          WRITE(ICOUT,215)DNUM,WSDF,POOLSD
23488  215     FORMAT('DNUM,WSDF,POOLSD = ',3G15.7)
23489          CALL DPWRST('XXX','WRIT')
23490        ENDIF
23491C
23492C               ********************************************
23493C               **  STEP 3---                             **
23494C               **  COMPUTE THE EFFECTIVE DEGREES OF      **
23495C               **  FREEDOM (METHOD 2, GUM)               **
23496C               ********************************************
23497C
23498      ELSE
23499C
23500        ISTEPN='3'
23501        IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WSAT')
23502     1     CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23503C
23504        DSUM1=0.0D0
23505        DO301I=1,N
23506          DAI=DBLE(YA(I))
23507          DSI=DBLE(YVAR(I))
23508          DSUM1=DSUM1 + DAI**2*DSI**2
23509  301   CONTINUE
23510        DTERM1=DSQRT(DSUM1)
23511        UNC=REAL(DTERM1)
23512C
23513        DTERM1=DTERM1**4
23514        DSUM1=0.0D0
23515        DO310I=1,N
23516          DVI=DBLE(YNU(I))
23517          DSI=DBLE(YVAR(I))
23518          DAI=DBLE(YA(I))
23519          DTERM2=DAI**4*DSI**4/DVI
23520          DSUM1=DSUM1 + DTERM2
23521  310   CONTINUE
23522        DNU=DTERM1/DSUM1
23523        WSDF=REAL(DNU)
23524C
23525        IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'WSAT')THEN
23526          WRITE(ICOUT,313)DSUM1,DTERM1,DNU
23527  313     FORMAT('DSUM1,DTERM1.DNU = ',3G15.7)
23528          CALL DPWRST('XXX','WRIT')
23529        ENDIF
23530C
23531      ENDIF
23532C
23533 9000 CONTINUE
23534C
23535      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'WSAT')THEN
23536        WRITE(ICOUT,999)
23537        CALL DPWRST('XXX','WRIT')
23538        WRITE(ICOUT,9011)
23539 9011   FORMAT('**** AT THE END OF DPWSAT--')
23540        CALL DPWRST('XXX','WRIT')
23541      ENDIF
23542C
23543      RETURN
23544      END
23545      SUBROUTINE DPWSHA(XTEMP1,MAXNXT,ICASDI,
23546     1                  ICAPSW,ICASAN,IFORSW,ISEED,
23547     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
23548C
23549C     PURPOSE--CARRY OUT EITHER THE WILK-SHAPIRO TEST OR THE
23550C              JARQUE-BERA TEST FOR NORMALITY.
23551C     EXAMPLE--WILKS SHAPIRO NORMALITY TEST Y
23552C            --WILK SHAPIRO TEST Y
23553C            --JARQUE-BERA TEST Y
23554C     REFERENCE--XX, "ALGORITHM AS R94 APPL. STATIST.", (1995)
23555C                VOL.44, NO.4
23556C     REFERENCE--BRANI VIDAKOVIC (2011), "STATISTICS FOR
23557C                BIOENGINEERING SCIENCES: WITH MATLAB AND WINBUGS
23558C                SUPPORT", SPRINGER, PP. 521-522.
23559C     WRITTEN BY--ALAN HECKERT
23560C                 STATISTICAL ENGINEERING DIVISION
23561C                 INFORMATION TECHNOLOGY LABORAOTRY
23562C                 NATIONAL INSTITUTE OF STANDARDS OF TECHNOLOGY
23563C                 GAITHERSBURG, MD 20899-8980
23564C                 PHONE--301-975-2899
23565C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
23566C           OF THE NATIONAL INSTITUTE OF STANDARDS OF TECHNOLOGY.
23567C     LANGUAGE--ANSI FORTRAN (1977)
23568C     VERSION NUMBER--99/3
23569C     ORIGINAL VERSION--MARCH     1999.
23570C     UPDATED         --OCTOBER   2003.
23571C     UPDATED         --MARCH     2011. USE DPPARS ROUTINE
23572C     UPATED          --MARCH     2011. REWRITTEN TO HANDLE MULTIPLE
23573C                                       RESPONSE VARIABLES, GROUP-ID
23574C                                       VARIABLES, OR A LAB-ID VARIABLE
23575C     UPATED          --JUNE      2012. JARQUE-BERA NORMALITY TEST
23576C     UPATED          --JULY      2019. TWEAK SCRATCH SPACE
23577C
23578C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
23579C
23580      CHARACTER*4 ICASDI
23581      CHARACTER*4 ICASAN
23582      CHARACTER*4 ICAPSW
23583      CHARACTER*4 IFORSW
23584      CHARACTER*4 IBUGA2
23585      CHARACTER*4 IBUGA3
23586      CHARACTER*4 IBUGQ
23587      CHARACTER*4 ISUBRO
23588      CHARACTER*4 IFOUND
23589      CHARACTER*4 IERROR
23590C
23591      CHARACTER*4 IDATSW
23592      CHARACTER*4 ISUBN1
23593      CHARACTER*4 ISUBN2
23594      CHARACTER*4 ISTEPN
23595      CHARACTER*4 IREPL
23596      CHARACTER*4 IMULT
23597      CHARACTER*4 ICTMP1
23598      CHARACTER*4 ICTMP2
23599      CHARACTER*4 ICTMP3
23600      CHARACTER*4 ICTMP4
23601      CHARACTER*4 ICASE
23602C
23603      CHARACTER*4 IFLAGU
23604      LOGICAL IFRST
23605      LOGICAL ILAST
23606C
23607      CHARACTER*40 INAME
23608      PARAMETER (MAXSPN=30)
23609      CHARACTER*4 IVARN1(MAXSPN)
23610      CHARACTER*4 IVARN2(MAXSPN)
23611      CHARACTER*4 IVARTY(MAXSPN)
23612      CHARACTER*4 IVARID(1)
23613      CHARACTER*4 IVARI2(1)
23614      REAL PVAR(MAXSPN)
23615      REAL PID(MAXSPN)
23616      INTEGER ILIS(MAXSPN)
23617      INTEGER NRIGHT(MAXSPN)
23618      INTEGER ICOLR(MAXSPN)
23619C
23620C---------------------------------------------------------------------
23621C
23622      INCLUDE 'DPCOPA.INC'
23623C
23624      DIMENSION XTEMP1(*)
23625C
23626      DIMENSION Y1(MAXOBV)
23627      DIMENSION X1(MAXOBV)
23628      DIMENSION XTEMP2(MAXOBV)
23629C
23630      DIMENSION XDESGN(MAXOBV,7)
23631      DIMENSION XIDTEM(MAXOBV)
23632      DIMENSION XIDTE2(MAXOBV)
23633      DIMENSION XIDTE3(MAXOBV)
23634      DIMENSION XIDTE4(MAXOBV)
23635      DIMENSION XIDTE5(MAXOBV)
23636      DIMENSION XIDTE6(MAXOBV)
23637C
23638      DIMENSION TEMP1(MAXOBV)
23639      DIMENSION TEMP2(MAXOBV)
23640C
23641      INCLUDE 'DPCOZZ.INC'
23642C
23643      EQUIVALENCE (GARBAG(IGARB1),Y1(1))
23644      EQUIVALENCE (GARBAG(IGARB2),X1(1))
23645      EQUIVALENCE (GARBAG(IGARB4),XTEMP2(1))
23646      EQUIVALENCE (GARBAG(IGARB5),TEMP1(1))
23647      EQUIVALENCE (GARBAG(IGARB6),TEMP2(1))
23648      EQUIVALENCE (GARBAG(IGARB7),XIDTEM(1))
23649      EQUIVALENCE (GARBAG(IGARB8),XIDTE2(1))
23650      EQUIVALENCE (GARBAG(IGARB9),XIDTE3(1))
23651      EQUIVALENCE (GARBAG(IGAR10),XIDTE4(1))
23652      EQUIVALENCE (GARBAG(JGAR11),XIDTE5(1))
23653      EQUIVALENCE (GARBAG(JGAR12),XIDTE6(1))
23654      EQUIVALENCE (GARBAG(JGAR13),XDESGN(1,1))
23655C
23656C-----COMMON----------------------------------------------------------
23657C
23658      INCLUDE 'DPCOHK.INC'
23659      INCLUDE 'DPCODA.INC'
23660      INCLUDE 'DPCOSU.INC'
23661      INCLUDE 'DPCOS2.INC'
23662      INCLUDE 'DPCOHO.INC'
23663      INCLUDE 'DPCOMC.INC'
23664      INCLUDE 'DPCOST.INC'
23665      INCLUDE 'DPCOP2.INC'
23666C
23667C-----START POINT-----------------------------------------------------
23668C
23669      IERROR='NO'
23670      ICASAN='    '
23671      IREPL='OFF'
23672      IMULT='OFF'
23673      ISUBN1='DPWS'
23674      ISUBN2='HA  '
23675C
23676      MAXCP1=MAXCOL+1
23677      MAXCP2=MAXCOL+2
23678      MAXCP3=MAXCOL+3
23679      MAXCP4=MAXCOL+4
23680      MAXCP5=MAXCOL+5
23681      MAXCP6=MAXCOL+6
23682C
23683C               ***********************************************
23684C               **  TREAT THE WILK SHAPIRO TEST     CASE     **
23685C               ************************************************
23686C
23687      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WSHA')THEN
23688        WRITE(ICOUT,999)
23689  999   FORMAT(1X)
23690        CALL DPWRST('XXX','BUG ')
23691        WRITE(ICOUT,51)
23692   51   FORMAT('***** AT THE BEGINNING OF DPWSHA--')
23693        CALL DPWRST('XXX','BUG ')
23694        WRITE(ICOUT,52)ICASAN,ICASDI,MAXNXT
23695   52   FORMAT('ICASAN,ICASDI,MAXNXT = ',2(A4,2X),I8)
23696        CALL DPWRST('XXX','BUG ')
23697        WRITE(ICOUT,53)IBUGA2,IBUGA3,IBUGQ,ISUBRO
23698   53   FORMAT('IBUGA2,IBUGA3,IBUGQ,ISUBRO = ',3(A4,2X),A4)
23699        CALL DPWRST('XXX','BUG ')
23700      ENDIF
23701C
23702C               *********************************************************
23703C               **  STEP 1--                                           **
23704C               **  EXTRACT THE COMMAND                                **
23705C               **  LOOK FOR ONE OF THE FOLLOWING COMMANDS:            **
23706C               **    1) WILK SHAPIRO TEST Y                           **
23707C               **    2) MULTIPLE WILK SHAPIRO TEST Y1 ... YK          **
23708C               **    3) REPLICATED WILK SHAPIRO TEST Y X1 ... XK      **
23709C               **    4) JARQUE-BERA TEST Y                            **
23710C               **    5) MULTIPLE JARQUE-BERA TEST Y1 ... YK           **
23711C               **    6) REPLICATED JARQUE-BERA TEST Y X1 ... XK       **
23712C               *********************************************************
23713C
23714C     NOTE: THE WORD "TEST" IS OPTIONAL.  ALSO, TREAT
23715C           "WILK SHAPIRO" AND "SHAPIRO WILK" AS SYNONYMS.
23716C
23717      ISTEPN='1'
23718      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')
23719     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23720C
23721      ILASTC=9999
23722      ILASTZ=9999
23723      IFOUND='NO'
23724      ICASAN='WSHA'
23725C
23726      DO100I=0,NUMARG-1
23727C
23728        IF(I.EQ.0)THEN
23729          ICTMP1=ICOM
23730        ELSE
23731          ICTMP1=IHARG(I)
23732        ENDIF
23733        ICTMP2=IHARG(I+1)
23734        ICTMP3=IHARG(I+2)
23735        ICTMP4=IHARG(I+3)
23736C
23737        IF(ICTMP1.EQ.'=')THEN
23738          IFOUND='NO'
23739          GOTO9000
23740        ELSEIF(ICTMP1.EQ.'WILK' .AND. ICTMP2.EQ.'SHAP' .AND.
23741     1         ICTMP3.EQ.'TEST')THEN
23742          IFOUND='YES'
23743          ILASTC=I
23744          ILASTZ=I+2
23745        ELSEIF(ICTMP1.EQ.'WILK' .AND. ICTMP2.EQ.'SHAP' .AND.
23746     1         ICTMP3.EQ.'NORM' .AND. ICTMP4.EQ.'TEST')THEN
23747          IFOUND='YES'
23748          ILASTC=I
23749          ILASTZ=I+3
23750        ELSEIF(ICTMP1.EQ.'SHAP' .AND. ICTMP2.EQ.'WILK' .AND.
23751     1         ICTMP3.EQ.'TEST')THEN
23752          IFOUND='YES'
23753          ILASTC=I
23754          ILASTZ=I+2
23755        ELSEIF(ICTMP1.EQ.'JARQ' .AND. ICTMP2.EQ.'BERA' .AND.
23756     1         ICTMP3.EQ.'TEST')THEN
23757          ICASAN='JABE'
23758          IFOUND='YES'
23759          ILASTC=I
23760          ILASTZ=I+2
23761        ELSEIF(ICTMP1.EQ.'JARQ' .AND. ICTMP2.EQ.'BERA' .AND.
23762     1         ICTMP3.EQ.'NORM' .AND. ICTMP4.EQ.'TEST')THEN
23763          ICASAN='JABE'
23764          IFOUND='YES'
23765          ILASTC=I
23766          ILASTZ=I+3
23767        ELSEIF(ICTMP1.EQ.'SHAP' .AND. ICTMP2.EQ.'WILK' .AND.
23768     1         ICTMP3.EQ.'NORM' .AND. ICTMP4.EQ.'TEST')THEN
23769          IFOUND='YES'
23770          ILASTC=I
23771          ILASTZ=I+3
23772        ELSEIF(ICTMP1.EQ.'WILK' .AND. ICTMP2.EQ.'SHAP')THEN
23773          IFOUND='YES'
23774          ILASTC=I
23775          ILASTZ=I+1
23776        ELSEIF(ICTMP1.EQ.'SHAP' .AND. ICTMP2.EQ.'WILK')THEN
23777          IFOUND='YES'
23778          ILASTC=I
23779          ILASTZ=I+1
23780        ELSEIF(ICTMP1.EQ.'JARQ' .AND. ICTMP2.EQ.'BERA')THEN
23781          ICASAN='JABE'
23782          IFOUND='YES'
23783          ILASTC=I
23784          ILASTZ=I+1
23785        ELSEIF(ICTMP1.EQ.'REPL')THEN
23786          IREPL='ON'
23787          ILASTC=MIN(ILASTC,I)
23788          ILASTZ=MAX(ILASTZ,I)
23789        ELSEIF(ICTMP1.EQ.'MULT')THEN
23790          IMULT='ON'
23791          ILASTC=MIN(ILASTC,I)
23792          ILASTZ=MAX(ILASTZ,I)
23793        ENDIF
23794  100 CONTINUE
23795C
23796      ISHIFT=ILASTZ
23797      CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
23798     1            IBUGA2,IERROR)
23799C
23800      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')THEN
23801        WRITE(ICOUT,91)IMULT,IREPL,ISHIFT
23802   91   FORMAT('DPWSHA: IMULT,IREPL,ISHIFT = ',2(A4,2X),I5)
23803        CALL DPWRST('XXX','BUG ')
23804      ENDIF
23805C
23806      IF(IFOUND.EQ.'NO')GOTO9000
23807      IF(IMULT.EQ.'ON')THEN
23808        IF(IREPL.EQ.'ON')THEN
23809          WRITE(ICOUT,999)
23810          CALL DPWRST('XXX','BUG ')
23811          WRITE(ICOUT,101)
23812  101     FORMAT('***** ERROR IN WILK SHAPIRO TEST--')
23813          CALL DPWRST('XXX','BUG ')
23814          WRITE(ICOUT,102)
23815  102     FORMAT('      YOU CANNOT SPECIFY BOTH "MULTIPLE" AND ',
23816     1           '"REPLICATION" FOR THE WILK SHAPIROS TEST COMMAND.')
23817          CALL DPWRST('XXX','BUG ')
23818          IERROR='YES'
23819          GOTO9000
23820        ENDIF
23821      ENDIF
23822C
23823C               *********************************
23824C               **  STEP 4--                   **
23825C               **  EXTRACT THE VARIABLE LIST  **
23826C               *********************************
23827C
23828      ISTEPN='4'
23829      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')
23830     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23831C
23832      INAME='WILK-SHAPIRO NORMALITY TEST'
23833      IF(ICASAN.EQ.'JABE') INAME='JARQUE-BERA NORMALITY TEST'
23834      MINNA=1
23835      MAXNA=100
23836      MINN2=2
23837      IFLAGE=1
23838      IF(IMULT.EQ.'ON')IFLAGE=0
23839      IFLAGM=1
23840      IF(IREPL.EQ.'ON')IFLAGM=0
23841      IFLAGP=0
23842      JMIN=1
23843      JMAX=NUMARG
23844      MINNVA=-99
23845      MAXNVA=-99
23846C
23847      CALL DPPARS(IHARG,IHARG2,IARGT,ARG,NUMARG,IANS,IWIDTH,
23848     1            IHNAME,IHNAM2,IUSE,NUMNAM,IN,IVALUE,VALUE,
23849     1            JMIN,JMAX,
23850     1            MINN2,MINNA,MAXNA,MAXSPN,IFLAGE,INAME,
23851     1            IVARN1,IVARN2,IVARTY,PVAR,
23852     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,ILOCQ,NUMVAR,
23853     1            MINNVA,MAXNVA,
23854     1            IFLAGM,IFLAGP,
23855     1            IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
23856      IF(IERROR.EQ.'YES')GOTO9000
23857C
23858      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')THEN
23859        WRITE(ICOUT,999)
23860        CALL DPWRST('XXX','BUG ')
23861        WRITE(ICOUT,281)
23862  281   FORMAT('***** AFTER CALL DPPARS--')
23863        CALL DPWRST('XXX','BUG ')
23864        WRITE(ICOUT,282)NQ,NUMVAR
23865  282   FORMAT('NQ,NUMVAR = ',2I8)
23866        CALL DPWRST('XXX','BUG ')
23867        IF(NUMVAR.GT.0)THEN
23868          DO285I=1,NUMVAR
23869            WRITE(ICOUT,287)I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),
23870     1                      ICOLR(I)
23871  287       FORMAT('I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),',
23872     1             'ICOLR(I) = ',I8,2X,A4,A4,2X,3I8)
23873            CALL DPWRST('XXX','BUG ')
23874  285     CONTINUE
23875        ENDIF
23876      ENDIF
23877C
23878C               ***********************************************
23879C               **  STEP 5--                                 **
23880C               **  DETERMINE:                               **
23881C               **  1) NUMBER OF REPLICATION VARIABLES (0-6) **
23882C               **  2) NUMBER OF RESPONSE    VARIABLES (>= 1)**
23883C               ***********************************************
23884C
23885      ISTEPN='5'
23886      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')
23887     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23888C
23889      NRESP=0
23890      NREPL=0
23891      IF(IMULT.EQ.'ON')THEN
23892        NRESP=NUMVAR
23893      ELSEIF(IREPL.EQ.'ON')THEN
23894        NRESP=1
23895        NREPL=NUMVAR-NRESP
23896        IF(NREPL.LT.1 .OR. NREPL.GT.6)THEN
23897          WRITE(ICOUT,999)
23898          CALL DPWRST('XXX','BUG ')
23899          WRITE(ICOUT,101)
23900          CALL DPWRST('XXX','BUG ')
23901          WRITE(ICOUT,511)
23902  511     FORMAT('      FOR THE REPLICATION CASE, THE NUMBER OF ',
23903     1           'REPLICATION VARIABLES')
23904          CALL DPWRST('XXX','BUG ')
23905          WRITE(ICOUT,512)
23906  512     FORMAT('      MUST BE BETWEEN ONE AND SIX.')
23907          CALL DPWRST('XXX','BUG ')
23908          WRITE(ICOUT,513)NREPL
23909  513     FORMAT('      THE NUMBER OF REPLICATION VARIABLES = ',I5)
23910          CALL DPWRST('XXX','BUG ')
23911          IERROR='YES'
23912          GOTO9000
23913        ENDIF
23914      ELSE
23915        NRESP=NUMVAR
23916        IMULT='ON'
23917      ENDIF
23918C
23919      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')THEN
23920        WRITE(ICOUT,521)NRESP,NREPL
23921  521   FORMAT('NRESP,NREPL = ',2I5)
23922        CALL DPWRST('XXX','BUG ')
23923      ENDIF
23924C
23925C               ******************************************************
23926C               **  STEP 6--                                        **
23927C               **  GENERATE THE WILK SHAPIROS TEST FOR THE VARIOUS **
23928C               **  CASES                                           **
23929C               ******************************************************
23930C
23931      ISTEPN='6'
23932      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')
23933     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23934C
23935C               ******************************************
23936C               **  STEP 8A--                           **
23937C               **  CASE 1: NO REPLICATION VARIABLES    **
23938C               ******************************************
23939C
23940      IF(NREPL.LT.1)THEN
23941        ISTEPN='8A'
23942        IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')
23943     1    CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23944C
23945C       LOOP THROUGH EACH OF THE RESPONSE VARIABLES
23946C
23947        NCURVE=0
23948        DO810IRESP=1,NRESP
23949          NCURVE=NCURVE+1
23950C
23951          IINDX=ICOLR(IRESP)
23952          PID(1)=CPUMIN
23953          IVARID(1)=IVARN1(IRESP)
23954          IVARI2(1)=IVARN2(IRESP)
23955C
23956          IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')THEN
23957            WRITE(ICOUT,999)
23958            CALL DPWRST('XXX','BUG ')
23959            WRITE(ICOUT,811)IRESP,NCURVE
23960  811       FORMAT('IRESP,NCURVE = ',2I5)
23961            CALL DPWRST('XXX','BUG ')
23962          ENDIF
23963C
23964          ICOL=IRESP
23965          NUMVA2=1
23966          CALL DPPAR3(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
23967     1                INAME,IVARN1,IVARN2,IVARTY,
23968     1                ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVA2,
23969     1                MAXCOL,MAXCP1,MAXCP2,MAXCP3,
23970     1                MAXCP4,MAXCP5,MAXCP6,
23971     1                V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
23972     1                Y1,XTEMP1,XTEMP1,NLOCAL,NLOCA2,NLOCA3,ICASE,
23973     1                IBUGA3,ISUBRO,IFOUND,IERROR)
23974          IF(IERROR.EQ.'YES')GOTO9000
23975C
23976C         *****************************************************
23977C         **  STEP 8B--                                      **
23978C         *****************************************************
23979C
23980          IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WSHA')THEN
23981            ISTEPN='8B'
23982            CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23983            WRITE(ICOUT,999)
23984            CALL DPWRST('XXX','BUG ')
23985            WRITE(ICOUT,822)
23986  822       FORMAT('***** FROM THE MIDDLE  OF DPWSHA--')
23987            CALL DPWRST('XXX','BUG ')
23988            WRITE(ICOUT,823)ICASAN,NUMVAR,IDATSW,NLOCAL
23989  823       FORMAT('ICASAN,NUMVAR,IDATSW,NQ = ',
23990     1             A4,I8,2X,A4,I8)
23991            CALL DPWRST('XXX','BUG ')
23992            IF(NLOCAL.GE.1)THEN
23993              DO825I=1,NLOCAL
23994                WRITE(ICOUT,826)I,Y1(I)
23995  826           FORMAT('I,Y1(I) = ',I8,G15.7)
23996                CALL DPWRST('XXX','BUG ')
23997  825         CONTINUE
23998            ENDIF
23999          ENDIF
24000C
24001          IF(ICASAN.EQ.'JABE')THEN
24002            CALL DPJAB2(Y1,NLOCAL,
24003     1                  XTEMP1,XTEMP2,MAXOBV,
24004     1                  PID,IVARID,IVARI2,NREPL,
24005     1                  STATVA,PVAL,CDF,
24006     1                  ICAPSW,ICAPTY,IFORSW,ISEED,IRANAL,
24007     1                  ISUBRO,IBUGA3,IERROR)
24008          ELSE
24009            CALL DPWSH2(Y1,NLOCAL,
24010     1                  XTEMP1,MAXOBV,
24011     1                  PID,IVARID,IVARI2,NREPL,
24012     1                  STATVA,PVAL,
24013     1                  ICAPSW,ICAPTY,IFORSW,
24014     1                  ISUBRO,IBUGA3,IERROR)
24015          ENDIF
24016C
24017C               ***************************************
24018C               **  STEP 8C--                        **
24019C               **  COMPUTE WILK SHAPIRO     STAT    **
24020C               **  UPDATE INTERNAL DATAPLOT TABLES  **
24021C               ***************************************
24022C
24023          ISTEPN='8C'
24024          IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')
24025     1      CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
24026C
24027          IF(NRESP.GT.1)THEN
24028            IFLAGU='FILE'
24029          ELSE
24030            IFLAGU='ON'
24031          ENDIF
24032          IFRST=.FALSE.
24033          ILAST=.FALSE.
24034          IF(IRESP.EQ.1)IFRST=.TRUE.
24035          IF(IRESP.EQ.NRESP)ILAST=.TRUE.
24036          CALL DPWSH4(STATVA,PVAL,
24037     1                IFLAGU,IFRST,ILAST,ICASAN,
24038     1                IBUGA2,IBUGA3,ISUBRO,IERROR)
24039C
24040  810   CONTINUE
24041C
24042C               ****************************************************
24043C               **  STEP 9A--                                     **
24044C               **  CASE 3: ONE OR MORE REPLICATION VARIABLES.    **
24045C               **          FOR THIS CASE, THE NUMBER OF RESPONSE **
24046C               **          VARIABLES MUST BE EXACTLY 1.          **
24047C               **          FOR THIS CASE, ALL VARIABLES MUST     **
24048C               **          HAVE THE SAME LENGTH.                 **
24049C               ****************************************************
24050C
24051      ELSEIF(IREPL.EQ.'ON')THEN
24052        ISTEPN='9A'
24053        IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'WSHA')
24054     1    CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
24055C
24056        J=0
24057        IMAX=NRIGHT(1)
24058        IF(NQ.LT.NRIGHT(1))IMAX=NQ
24059        DO910I=1,IMAX
24060          IF(ISUB(I).EQ.0)GOTO910
24061          J=J+1
24062C
24063C         RESPONSE VARIABLE IN Y1
24064C
24065          ICOLC=1
24066          IJ=MAXN*(ICOLR(ICOLC)-1)+I
24067          IF(ICOLR(ICOLC).LE.MAXCOL)Y1(J)=V(IJ)
24068          IF(ICOLR(ICOLC).EQ.MAXCP1)Y1(J)=PRED(I)
24069          IF(ICOLR(ICOLC).EQ.MAXCP2)Y1(J)=RES(I)
24070          IF(ICOLR(ICOLC).EQ.MAXCP3)Y1(J)=YPLOT(I)
24071          IF(ICOLR(ICOLC).EQ.MAXCP4)Y1(J)=XPLOT(I)
24072          IF(ICOLR(ICOLC).EQ.MAXCP5)Y1(J)=X2PLOT(I)
24073          IF(ICOLR(ICOLC).EQ.MAXCP6)Y1(J)=TAGPLO(I)
24074C
24075          IF(NREPL.GE.1)THEN
24076            DO920IR=1,MIN(NREPL,6)
24077              ICOLC=ICOLC+1
24078              ICOLT=ICOLR(ICOLC)
24079              IJ=MAXN*(ICOLT-1)+I
24080              IF(ICOLT.LE.MAXCOL)XDESGN(J,IR)=V(IJ)
24081              IF(ICOLT.EQ.MAXCP1)XDESGN(J,IR)=PRED(I)
24082              IF(ICOLT.EQ.MAXCP2)XDESGN(J,IR)=RES(I)
24083              IF(ICOLT.EQ.MAXCP3)XDESGN(J,IR)=YPLOT(I)
24084              IF(ICOLT.EQ.MAXCP4)XDESGN(J,IR)=XPLOT(I)
24085              IF(ICOLT.EQ.MAXCP5)XDESGN(J,IR)=X2PLOT(I)
24086              IF(ICOLT.EQ.MAXCP6)XDESGN(J,IR)=TAGPLO(I)
24087  920       CONTINUE
24088          ENDIF
24089C
24090  910   CONTINUE
24091        NLOCAL=J
24092C
24093C       *****************************************************
24094C       **  STEP 9B--                                      **
24095C       **  CALL DPWSH2 TO PERFORM WILK SHAPIRO TEST.      **
24096C       *****************************************************
24097C
24098C
24099        IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WSHA')THEN
24100          ISTEPN='9C'
24101          CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
24102          WRITE(ICOUT,999)
24103          CALL DPWRST('XXX','BUG ')
24104          WRITE(ICOUT,941)
24105  941     FORMAT('***** FROM THE MIDDLE  OF DPWSHA--')
24106          CALL DPWRST('XXX','BUG ')
24107          WRITE(ICOUT,942)ICASAN,NUMVAR,IDATSW,NLOCAL,NREPL
24108  942     FORMAT('ICASAN,NUMVAR,IDATSW,NLOCAL,NREPL = ',
24109     1           A4,I8,2X,A4,2I8)
24110          CALL DPWRST('XXX','BUG ')
24111          IF(NLOCAL.GE.1)THEN
24112            DO945I=1,NLOCAL
24113              WRITE(ICOUT,946)I,Y1(I),XDESGN(I,1),XDESGN(I,2)
24114  946         FORMAT('I,Y1(I),XDESGN(I,1),XDESGN(I,2) = ',
24115     1               I8,4F12.5)
24116              CALL DPWRST('XXX','BUG ')
24117  945       CONTINUE
24118          ENDIF
24119        ENDIF
24120C
24121C       *****************************************************
24122C       **  STEP 9C--                                      **
24123C       **  FIND THE DISTINCT VALUES IN EACH OF THE        **
24124C       **  REPLICATION VARIABLES.                         **
24125C       *****************************************************
24126C
24127        CALL DPPP5(XDESGN(1,1),XDESGN(1,2),XDESGN(1,3),
24128     1             XDESGN(1,4),XDESGN(1,5),XDESGN(1,6),
24129     1             NREPL,NLOCAL,MAXOBV,
24130     1             XIDTEM,XIDTE2,XIDTE3,XIDTE4,XIDTE5,XIDTE6,
24131     1             XTEMP1,XTEMP2,
24132     1             NUMSE1,NUMSE2,NUMSE3,NUMSE4,NUMSE5,NUMSE6,
24133     1             IBUGA3,ISUBRO,IERROR)
24134C
24135C       *****************************************************
24136C       **  STEP 9D--                                      **
24137C       **  NOW LOOP THROUGH THE VARIOUS REPLICATIONS      **
24138C       *****************************************************
24139C
24140        NPLOTP=0
24141        NCURVE=0
24142        IADD=1
24143C
24144        IF(NREPL.EQ.1)THEN
24145          J=0
24146          DO1110ISET1=1,NUMSE1
24147            K=0
24148            PID(IADD+1)=XIDTEM(ISET1)
24149            DO1130I=1,NLOCAL
24150              IF(XIDTEM(ISET1).EQ.XDESGN(I,1))THEN
24151                K=K+1
24152                TEMP1(K)=Y1(I)
24153              ENDIF
24154 1130       CONTINUE
24155            NTEMP=K
24156            NCURVE=NCURVE+1
24157            NPLOT1=NPLOTP
24158            IF(NTEMP.GT.0)THEN
24159              IF(ICASAN.EQ.'JABE')THEN
24160                CALL DPJAB2(TEMP1,NTEMP,
24161     1                      XTEMP1,XTEMP2,MAXOBV,
24162     1                      PID,IVARN1,IVARN2,NREPL,
24163     1                      STATVA,PVAL,CDF,
24164     1                      ICAPSW,ICAPTY,IFORSW,ISEED,IRANAL,
24165     1                      ISUBRO,IBUGA3,IERROR)
24166              ELSE
24167                CALL DPWSH2(TEMP1,NTEMP,
24168     1                      XTEMP1,MAXOBV,
24169     1                      PID,IVARN1,IVARN2,NREPL,
24170     1                      STATVA,PVAL,
24171     1                      ICAPSW,ICAPTY,IFORSW,
24172     1                      ISUBRO,IBUGA3,IERROR)
24173              ENDIF
24174            ENDIF
24175            NPLOT2=NPLOTP
24176            IFLAGU='FILE'
24177            IFRST=.FALSE.
24178            ILAST=.FALSE.
24179            IF(NCURVE.EQ.1)IFRST=.TRUE.
24180            IF(NCURVE.EQ.NUMSE1)ILAST=.TRUE.
24181            NPTEMP=NPLOT2-NPLOT1
24182            CALL DPWSH4(STATVA,PVAL,
24183     1                  IFLAGU,IFRST,ILAST,ICASAN,
24184     1                  IBUGA2,IBUGA3,ISUBRO,IERROR)
24185 1110     CONTINUE
24186        ELSEIF(NREPL.EQ.2)THEN
24187          J=0
24188          NTOT=NUMSE1*NUMSE2
24189          DO1210ISET1=1,NUMSE1
24190          DO1220ISET2=1,NUMSE2
24191            K=0
24192            PID(1+IADD)=XIDTEM(ISET1)
24193            PID(2+IADD)=XIDTE2(ISET2)
24194            DO1290I=1,NLOCAL
24195              IF(
24196     1           XIDTEM(ISET1).EQ.XDESGN(I,1) .AND.
24197     1           XIDTE2(ISET2).EQ.XDESGN(I,2)
24198     1          )THEN
24199                K=K+1
24200                TEMP1(K)=Y1(I)
24201              ENDIF
24202 1290       CONTINUE
24203            NTEMP=K
24204            NCURVE=NCURVE+1
24205            NPLOT1=NPLOTP
24206            IF(NTEMP.GT.0)THEN
24207              IF(ICASAN.EQ.'JABE')THEN
24208                CALL DPJAB2(TEMP1,NTEMP,
24209     1                      XTEMP1,XTEMP2,MAXOBV,
24210     1                      PID,IVARN1,IVARN2,NREPL,
24211     1                      STATVA,PVAL,CDF,
24212     1                      ICAPSW,ICAPTY,IFORSW,ISEED,IRANAL,
24213     1                      ISUBRO,IBUGA3,IERROR)
24214              ELSE
24215                CALL DPWSH2(TEMP1,NTEMP,
24216     1                      XTEMP1,MAXOBV,
24217     1                      PID,IVARN1,IVARN2,NREPL,
24218     1                      STATVA,PVAL,
24219     1                      ICAPSW,ICAPTY,IFORSW,
24220     1                      ISUBRO,IBUGA3,IERROR)
24221              ENDIF
24222            ENDIF
24223            NPLOT2=NPLOTP
24224            IFLAGU='FILE'
24225            IFRST=.FALSE.
24226            ILAST=.FALSE.
24227            IF(NCURVE.EQ.1)IFRST=.TRUE.
24228            IF(NCURVE.EQ.NTOT)ILAST=.TRUE.
24229            NPTEMP=NPLOT2-NPLOT1
24230            CALL DPWSH4(STATVA,PVAL,
24231     1                  IFLAGU,IFRST,ILAST,ICASAN,
24232     1                  IBUGA2,IBUGA3,ISUBRO,IERROR)
24233 1220     CONTINUE
24234 1210     CONTINUE
24235        ELSEIF(NREPL.EQ.3)THEN
24236          J=0
24237          NTOT=NUMSE1*NUMSE2*NUMSE3
24238          DO1310ISET1=1,NUMSE1
24239          DO1320ISET2=1,NUMSE2
24240          DO1330ISET3=1,NUMSE3
24241            K=0
24242            PID(1+IADD)=XIDTEM(ISET1)
24243            PID(2+IADD)=XIDTE2(ISET2)
24244            PID(3+IADD)=XIDTE3(ISET3)
24245            DO1390I=1,NLOCAL
24246              IF(
24247     1           XIDTEM(ISET1).EQ.XDESGN(I,1) .AND.
24248     1           XIDTE2(ISET2).EQ.XDESGN(I,2) .AND.
24249     1           XIDTE3(ISET3).EQ.XDESGN(I,3)
24250     1          )THEN
24251                K=K+1
24252                TEMP1(K)=Y1(I)
24253              ENDIF
24254 1390       CONTINUE
24255            NTEMP=K
24256            NCURVE=NCURVE+1
24257            NPLOT1=NPLOTP
24258            IF(NTEMP.GT.0)THEN
24259              IF(ICASAN.EQ.'JABE')THEN
24260                CALL DPJAB2(TEMP1,NTEMP,
24261     1                      XTEMP1,XTEMP2,MAXOBV,
24262     1                      PID,IVARN1,IVARN2,NREPL,
24263     1                      STATVA,PVAL,CDF,
24264     1                      ICAPSW,ICAPTY,IFORSW,ISEED,IRANAL,
24265     1                      ISUBRO,IBUGA3,IERROR)
24266              ELSE
24267                CALL DPWSH2(TEMP1,NTEMP,
24268     1                      XTEMP1,MAXOBV,
24269     1                      PID,IVARN1,IVARN2,NREPL,
24270     1                      STATVA,PVAL,
24271     1                      ICAPSW,ICAPTY,IFORSW,
24272     1                      ISUBRO,IBUGA3,IERROR)
24273              ENDIF
24274            ENDIF
24275            NPLOT2=NPLOTP
24276            IFLAGU='FILE'
24277            IFRST=.FALSE.
24278            ILAST=.FALSE.
24279            IF(NCURVE.EQ.1)IFRST=.TRUE.
24280            IF(NCURVE.EQ.NTOT)ILAST=.TRUE.
24281            NPTEMP=NPLOT2-NPLOT1
24282            CALL DPWSH4(STATVA,PVAL,
24283     1                  IFLAGU,IFRST,ILAST,ICASAN,
24284     1                  IBUGA2,IBUGA3,ISUBRO,IERROR)
24285 1330     CONTINUE
24286 1320     CONTINUE
24287 1310     CONTINUE
24288        ELSEIF(NREPL.EQ.4)THEN
24289          J=0
24290          NTOT=NUMSE1*NUMSE2*NUMSE3*NUMSE4
24291          DO1410ISET1=1,NUMSE1
24292          DO1420ISET2=1,NUMSE2
24293          DO1430ISET3=1,NUMSE3
24294          DO1440ISET4=1,NUMSE4
24295            K=0
24296            PID(1+IADD)=XIDTEM(ISET1)
24297            PID(2+IADD)=XIDTE2(ISET2)
24298            PID(3+IADD)=XIDTE3(ISET3)
24299            PID(4+IADD)=XIDTE4(ISET4)
24300            DO1490I=1,NLOCAL
24301              IF(
24302     1           XIDTEM(ISET1).EQ.XDESGN(I,1) .AND.
24303     1           XIDTE2(ISET2).EQ.XDESGN(I,2) .AND.
24304     1           XIDTE3(ISET3).EQ.XDESGN(I,3) .AND.
24305     1           XIDTE4(ISET4).EQ.XDESGN(I,4)
24306     1          )THEN
24307                K=K+1
24308                TEMP1(K)=Y1(I)
24309              ENDIF
24310 1490       CONTINUE
24311            NTEMP=K
24312            NCURVE=NCURVE+1
24313            NPLOT1=NPLOTP
24314            IF(NTEMP.GT.0)THEN
24315              IF(ICASAN.EQ.'JABE')THEN
24316                CALL DPJAB2(TEMP1,NTEMP,
24317     1                      XTEMP1,XTEMP2,MAXOBV,
24318     1                      PID,IVARN1,IVARN2,NREPL,
24319     1                      STATVA,PVAL,CDF,
24320     1                      ICAPSW,ICAPTY,IFORSW,ISEED,IRANAL,
24321     1                      ISUBRO,IBUGA3,IERROR)
24322              ELSE
24323                CALL DPWSH2(TEMP1,NTEMP,
24324     1                      XTEMP1,MAXOBV,
24325     1                      PID,IVARN1,IVARN2,NREPL,
24326     1                      STATVA,PVAL,
24327     1                      ICAPSW,ICAPTY,IFORSW,
24328     1                      ISUBRO,IBUGA3,IERROR)
24329              ENDIF
24330            ENDIF
24331            NPLOT2=NPLOTP
24332            IFLAGU='FILE'
24333            IFRST=.FALSE.
24334            ILAST=.FALSE.
24335            IF(NCURVE.EQ.1)IFRST=.TRUE.
24336            IF(NCURVE.EQ.NTOT)ILAST=.TRUE.
24337            NPTEMP=NPLOT2-NPLOT1
24338            CALL DPWSH4(STATVA,PVAL,
24339     1                  IFLAGU,IFRST,ILAST,ICASAN,
24340     1                  IBUGA2,IBUGA3,ISUBRO,IERROR)
24341 1440     CONTINUE
24342 1430     CONTINUE
24343 1420     CONTINUE
24344 1410     CONTINUE
24345        ELSEIF(NREPL.EQ.5)THEN
24346          J=0
24347          NTOT=NUMSE1*NUMSE2*NUMSE3*NUMSE4*NUMSE5
24348          DO1510ISET1=1,NUMSE1
24349          DO1520ISET2=1,NUMSE2
24350          DO1530ISET3=1,NUMSE3
24351          DO1540ISET4=1,NUMSE4
24352          DO1550ISET5=1,NUMSE5
24353            K=0
24354            PID(1+IADD)=XIDTEM(ISET1)
24355            PID(2+IADD)=XIDTE2(ISET2)
24356            PID(3+IADD)=XIDTE3(ISET3)
24357            PID(4+IADD)=XIDTE4(ISET4)
24358            PID(5+IADD)=XIDTE5(ISET4)
24359            DO1590I=1,NLOCAL
24360              IF(
24361     1           XIDTEM(ISET1).EQ.XDESGN(I,1) .AND.
24362     1           XIDTE2(ISET2).EQ.XDESGN(I,2) .AND.
24363     1           XIDTE3(ISET3).EQ.XDESGN(I,3) .AND.
24364     1           XIDTE4(ISET4).EQ.XDESGN(I,4) .AND.
24365     1           XIDTE5(ISET5).EQ.XDESGN(I,5)
24366     1          )THEN
24367                K=K+1
24368                TEMP1(K)=Y1(I)
24369              ENDIF
24370 1590       CONTINUE
24371            NTEMP=K
24372            NCURVE=NCURVE+1
24373            NPLOT1=NPLOTP
24374            IF(NTEMP.GT.0)THEN
24375              IF(ICASAN.EQ.'JABE')THEN
24376                CALL DPJAB2(TEMP1,NTEMP,
24377     1                      XTEMP1,XTEMP2,MAXOBV,
24378     1                      PID,IVARN1,IVARN2,NREPL,
24379     1                      STATVA,PVAL,CDF,
24380     1                      ICAPSW,ICAPTY,IFORSW,ISEED,IRANAL,
24381     1                      ISUBRO,IBUGA3,IERROR)
24382              ELSE
24383                CALL DPWSH2(TEMP1,NTEMP,
24384     1                      XTEMP1,MAXOBV,
24385     1                      PID,IVARN1,IVARN2,NREPL,
24386     1                      STATVA,PVAL,
24387     1                      ICAPSW,ICAPTY,IFORSW,
24388     1                      ISUBRO,IBUGA3,IERROR)
24389              ENDIF
24390            ENDIF
24391            NPLOT2=NPLOTP
24392            IFLAGU='FILE'
24393            IFRST=.FALSE.
24394            ILAST=.FALSE.
24395            IF(NCURVE.EQ.1)IFRST=.TRUE.
24396            IF(NCURVE.EQ.NTOT)ILAST=.TRUE.
24397            NPTEMP=NPLOT2-NPLOT1
24398            CALL DPWSH4(STATVA,PVAL,
24399     1                  IFLAGU,IFRST,ILAST,ICASAN,
24400     1                  IBUGA2,IBUGA3,ISUBRO,IERROR)
24401 1550     CONTINUE
24402 1540     CONTINUE
24403 1530     CONTINUE
24404 1520     CONTINUE
24405 1510     CONTINUE
24406        ELSEIF(NREPL.EQ.6)THEN
24407          J=0
24408          NTOT=NUMSE1*NUMSE2*NUMSE3*NUMSE4*NUMSE5*NUMSE6
24409          DO1610ISET1=1,NUMSE1
24410          DO1620ISET2=1,NUMSE2
24411          DO1630ISET3=1,NUMSE3
24412          DO1640ISET4=1,NUMSE4
24413          DO1650ISET5=1,NUMSE5
24414          DO1660ISET6=1,NUMSE6
24415            K=0
24416            PID(1+IADD)=XIDTEM(ISET1)
24417            PID(2+IADD)=XIDTE2(ISET2)
24418            PID(3+IADD)=XIDTE3(ISET3)
24419            PID(4+IADD)=XIDTE4(ISET4)
24420            PID(5+IADD)=XIDTE5(ISET4)
24421            PID(6+IADD)=XIDTE6(ISET4)
24422            DO1690I=1,NLOCAL
24423              IF(
24424     1           XIDTEM(ISET1).EQ.XDESGN(I,1) .AND.
24425     1           XIDTE2(ISET2).EQ.XDESGN(I,2) .AND.
24426     1           XIDTE3(ISET3).EQ.XDESGN(I,3) .AND.
24427     1           XIDTE4(ISET4).EQ.XDESGN(I,4) .AND.
24428     1           XIDTE5(ISET5).EQ.XDESGN(I,5) .AND.
24429     1           XIDTE6(ISET6).EQ.XDESGN(I,6)
24430     1          )THEN
24431                K=K+1
24432                TEMP1(K)=Y1(I)
24433              ENDIF
24434 1690       CONTINUE
24435            NTEMP=K
24436            NCURVE=NCURVE+1
24437            NPLOT1=NPLOTP
24438            IF(NTEMP.GT.0)THEN
24439              IF(ICASAN.EQ.'JABE')THEN
24440                CALL DPJAB2(TEMP1,NTEMP,
24441     1                      XTEMP1,XTEMP2,MAXOBV,
24442     1                      PID,IVARN1,IVARN2,NREPL,
24443     1                      STATVA,PVAL,CDF,
24444     1                      ICAPSW,ICAPTY,IFORSW,ISEED,IRANAL,
24445     1                      ISUBRO,IBUGA3,IERROR)
24446              ELSE
24447                CALL DPWSH2(TEMP1,NTEMP,
24448     1                      XTEMP1,MAXOBV,
24449     1                      PID,IVARN1,IVARN2,NREPL,
24450     1                      STATVA,PVAL,
24451     1                      ICAPSW,ICAPTY,IFORSW,
24452     1                      ISUBRO,IBUGA3,IERROR)
24453              ENDIF
24454            ENDIF
24455            NPLOT2=NPLOTP
24456            IFLAGU='FILE'
24457            IFRST=.FALSE.
24458            ILAST=.FALSE.
24459            IF(NCURVE.EQ.1)IFRST=.TRUE.
24460            IF(NCURVE.EQ.NTOT)ILAST=.TRUE.
24461            NPTEMP=NPLOT2-NPLOT1
24462            CALL DPWSH4(STATVA,PVAL,
24463     1                  IFLAGU,IFRST,ILAST,ICASAN,
24464     1                  IBUGA2,IBUGA3,ISUBRO,IERROR)
24465 1660     CONTINUE
24466 1650     CONTINUE
24467 1640     CONTINUE
24468 1630     CONTINUE
24469 1620     CONTINUE
24470 1610     CONTINUE
24471        ENDIF
24472C
24473      ENDIF
24474C
24475C               *****************
24476C               **  STEP 90--  **
24477C               **  EXIT       **
24478C               *****************
24479C
24480 9000 CONTINUE
24481C
24482      IF(IERROR.EQ.'YES')THEN
24483        IF(IWIDTH.GE.1)THEN
24484          WRITE(ICOUT,9001)(IANS(I),I=1,MIN(100,IWIDTH))
24485 9001     FORMAT(100A1)
24486          CALL DPWRST('XXX','BUG ')
24487        ENDIF
24488      ENDIF
24489C
24490      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WSHA')THEN
24491        WRITE(ICOUT,999)
24492        CALL DPWRST('XXX','BUG ')
24493        WRITE(ICOUT,9011)
24494 9011   FORMAT('***** AT THE END       OF DPWSHA--')
24495        CALL DPWRST('XXX','BUG ')
24496        WRITE(ICOUT,9012)IFOUND,IERROR,ICASAN
24497 9012   FORMAT('IFOUND,IERROR,ICASAN = ',2(A4,2X),A4)
24498        CALL DPWRST('XXX','BUG ')
24499      ENDIF
24500C
24501      RETURN
24502      END
24503      SUBROUTINE DPWSH2(Y,N,
24504     1                  XTEMP,MAXNXT,
24505     1                  PID,IVARID,IVARI2,NREPL,
24506     1                  STATVA,PVAL,
24507     1                  ICAPSW,ICAPTY,IFORSW,
24508     1                  ISUBRO,IBUGA3,IERROR)
24509C
24510C     PURPOSE--THIS ROUTINE CARRIES OUT THE WILKS SHAPIRO TEST
24511C              FOR NORMALITY
24512C     EXAMPLE--WILKS SHAPIRO NORMALITY TEST Y
24513C     REFERENCE--XX, "ALGORITHM AS R94 APPL. STATIST.", (1995)
24514C                VOL.44, NO.4
24515C     WRITTEN BY--ALAN HECKERT
24516C                 STATISTICAL ENGINEERING DIVISION
24517C                 INFORMATION TECHNOLOGY LABORATORY
24518C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
24519C                 GAITHERSBURG, MD 20899-8980
24520C                 PHONE--301-975-2899
24521C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
24522C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
24523C     LANGUAGE--ANSI FORTRAN (1977)
24524C     VERSION NUMBER--99/3
24525C     ORIGINAL VERSION--MARCH     1999.
24526C     UPDATED         --OCTOBER   2003. SUPPORT FOR HTML, LATEX OUTPUT
24527C     UPDATED         --MARCH     2011. USE DPDTA1 AND DPDTA5 TO PRINT
24528C                                       TABLES
24529C
24530C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
24531C
24532      CHARACTER*4 IVARID(*)
24533      CHARACTER*4 IVARI2(*)
24534      CHARACTER*4 ISUBRO
24535      CHARACTER*4 IBUGA3
24536      CHARACTER*4 IERROR
24537C
24538      CHARACTER*4 IWRITE
24539C
24540      CHARACTER*4 ICAPSW
24541      CHARACTER*4 ICAPTY
24542      CHARACTER*4 IFORSW
24543C
24544      CHARACTER*4 ISUBN1
24545      CHARACTER*4 ISUBN2
24546      CHARACTER*4 ISTEPN
24547C
24548C---------------------------------------------------------------------
24549C
24550      DIMENSION Y(*)
24551      DIMENSION XTEMP(*)
24552      DIMENSION PID(*)
24553C
24554      PARAMETER (NUMALP=7)
24555      REAL ALPHA(NUMALP)
24556C
24557      PARAMETER(NUMCLI=4)
24558      PARAMETER(MAXLIN=3)
24559      PARAMETER (MAXROW=NUMALP)
24560      PARAMETER (MAXRO2=20)
24561      CHARACTER*60 ITITLE
24562      CHARACTER*60 ITITLZ
24563      CHARACTER*1  ITITL9
24564      CHARACTER*60 ITEXT(MAXRO2)
24565      CHARACTER*4  ALIGN(NUMCLI)
24566      CHARACTER*4  VALIGN(NUMCLI)
24567      REAL         AVALUE(MAXRO2)
24568      INTEGER      NCTEXT(MAXRO2)
24569      INTEGER      IDIGIT(MAXRO2)
24570      INTEGER      NTOT(MAXRO2)
24571      CHARACTER*60 ITITL2(MAXLIN,NUMCLI)
24572      CHARACTER*15 IVALUE(MAXROW,NUMCLI)
24573      CHARACTER*4  ITYPCO(NUMCLI)
24574      INTEGER      NCTIT2(MAXLIN,NUMCLI)
24575      INTEGER      NCVALU(MAXROW,NUMCLI)
24576      INTEGER      IWHTML(NUMCLI)
24577      INTEGER      IWRTF(NUMCLI)
24578      REAL         AMAT(MAXROW,NUMCLI)
24579      LOGICAL IFRST
24580      LOGICAL ILAST
24581      LOGICAL IFLAGS
24582      LOGICAL IFLAGE
24583C
24584C-----COMMON----------------------------------------------------------
24585C
24586      INCLUDE 'DPCOP2.INC'
24587C
24588C-----DATA STATEMENTS-------------------------------------------------
24589C
24590      DATA ALPHA /50.0, 80.0, 90.0, 95.0, 97.5, 99.0, 99.9/
24591C
24592C-----START POINT-----------------------------------------------------
24593C
24594      ISUBN1='DPWS'
24595      ISUBN2='H2  '
24596C
24597      IWRITE='OFF'
24598      IERROR='NO'
24599C
24600      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WSH2')THEN
24601        WRITE(ICOUT,999)
24602  999   FORMAT(1X)
24603        CALL DPWRST('XXX','WRIT')
24604        WRITE(ICOUT,51)
24605   51   FORMAT('**** AT THE BEGINNING OF DPWSH2--')
24606        CALL DPWRST('XXX','WRIT')
24607        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
24608   52   FORMAT('IBUGA3,ISUBRO,N = ',2(A4,2X),I8)
24609        CALL DPWRST('XXX','WRIT')
24610        DO56I=1,N
24611          WRITE(ICOUT,57)I,Y(I)
24612   57     FORMAT('I,Y(I) = ',I8,G15.7)
24613          CALL DPWRST('XXX','WRIT')
24614   56   CONTINUE
24615      ENDIF
24616C
24617C               ********************************************
24618C               **  STEP 11--                             **
24619C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
24620C               ********************************************
24621C
24622      ISTEPN='11'
24623      IF(IBUGA3.EQ.'ON'.AND.ISUBRO.EQ.'WSH2')
24624     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
24625C
24626      IF(N.LT.3)THEN
24627        WRITE(ICOUT,999)
24628        CALL DPWRST('XXX','WRIT')
24629        WRITE(ICOUT,101)
24630  101   FORMAT('***** ERROR: WILKS-SHAPIRPO TEST--')
24631        CALL DPWRST('XXX','WRIT')
24632        WRITE(ICOUT,102)
24633  102   FORMAT('      THE NUMBER OF OBSERVATIONS MUST BE AT LEAST 3.',
24634     1         '  SUCH WAS NOT THE CASE HERE.')
24635        CALL DPWRST('XXX','WRIT')
24636        WRITE(ICOUT,103)N
24637  103   FORMAT('      SAMPLE SIZE = ',I8)
24638        CALL DPWRST('XXX','WRIT')
24639        IERROR='YES'
24640        GOTO9000
24641      ENDIF
24642C
24643      IF(N.GT.5000)THEN
24644        WRITE(ICOUT,999)
24645        CALL DPWRST('XXX','WRIT')
24646        WRITE(ICOUT,111)
24647  111   FORMAT('***** WARNING: FOR WILKS-SHAPIRPO TEST--')
24648        CALL DPWRST('XXX','WRIT')
24649        WRITE(ICOUT,112)
24650  112   FORMAT('      THE P-VALUE CALCULATION MAY NOT BE ACCURATE ',
24651     1         'FOR SAMPLE SIZES  GREATER THAN 5,000.')
24652        CALL DPWRST('XXX','WRIT')
24653        WRITE(ICOUT,103)N
24654        CALL DPWRST('XXX','WRIT')
24655      ENDIF
24656C
24657      HOLD=Y(1)
24658      DO135I=2,N
24659        IF(Y(I).NE.HOLD)GOTO139
24660  135 CONTINUE
24661      WRITE(ICOUT,999)
24662      CALL DPWRST('XXX','WRIT')
24663      WRITE(ICOUT,101)
24664      CALL DPWRST('XXX','WRIT')
24665      WRITE(ICOUT,131)HOLD
24666  131 FORMAT('      THE RESPONSE VARIABLE HAS ALL ELEMENTS = ',G15.7)
24667      CALL DPWRST('XXX','WRIT')
24668      GOTO9000
24669  139 CONTINUE
24670C
24671C               ******************************
24672C               **  STEP 11--               **
24673C               **  CARRY OUT CALCULATIONS  **
24674C               **  FOR WILKS SHAPIRO       **
24675C               **  TEST                    **
24676C               ******************************
24677C
24678      ISTEPN='11'
24679      IF(IBUGA3.EQ.'ON'.AND.ISUBRO.EQ.'WSH2')
24680     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
24681C
24682      CALL MEAN(Y,N,IWRITE,YMEAN,IBUGA3,IERROR)
24683      CALL SD(Y,N,IWRITE,YSD,IBUGA3,IERROR)
24684      CALL MINIM(Y,N,IWRITE,YMIN,IBUGA3,IERROR)
24685      CALL MAXIM(Y,N,IWRITE,YMAX,IBUGA3,IERROR)
24686C
24687      CALL DPWSH3(Y,N,XTEMP,MAXNXT,
24688     1            STATVA,PVAL,
24689     1            ISUBRO,IBUGA3,IERROR)
24690      CDF=1.0 - PVAL
24691C
24692C               *********************************
24693C               **   STEP 42--                 **
24694C               **   WRITE OUT EVERYTHING      **
24695C               **   FOR WILKS SHAPIRO TEST    **
24696C               *********************************
24697C
24698      ISTEPN='42'
24699      IF(IBUGA3.EQ.'ON'.AND.ISUBRO.EQ.'WSH2')
24700     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
24701C
24702      IF(IPRINT.EQ.'OFF')GOTO9000
24703C
24704      NUMDIG=7
24705      IF(IFORSW.EQ.'1')NUMDIG=1
24706      IF(IFORSW.EQ.'2')NUMDIG=2
24707      IF(IFORSW.EQ.'3')NUMDIG=3
24708      IF(IFORSW.EQ.'4')NUMDIG=4
24709      IF(IFORSW.EQ.'5')NUMDIG=5
24710      IF(IFORSW.EQ.'6')NUMDIG=6
24711      IF(IFORSW.EQ.'7')NUMDIG=7
24712      IF(IFORSW.EQ.'8')NUMDIG=8
24713      IF(IFORSW.EQ.'9')NUMDIG=9
24714      IF(IFORSW.EQ.'0')NUMDIG=0
24715      IF(IFORSW.EQ.'E')NUMDIG=-2
24716      IF(IFORSW.EQ.'-2')NUMDIG=-2
24717      IF(IFORSW.EQ.'-3')NUMDIG=-3
24718      IF(IFORSW.EQ.'-4')NUMDIG=-4
24719      IF(IFORSW.EQ.'-5')NUMDIG=-5
24720      IF(IFORSW.EQ.'-6')NUMDIG=-6
24721      IF(IFORSW.EQ.'-7')NUMDIG=-7
24722      IF(IFORSW.EQ.'-8')NUMDIG=-8
24723      IF(IFORSW.EQ.'-9')NUMDIG=-9
24724C
24725      ITITLE='Wilk-Shapiro Test for Normality'
24726      NCTITL=31
24727      ITITLZ=' '
24728      NCTITZ=0
24729C
24730      ICNT=1
24731      ITEXT(ICNT)=' '
24732      NCTEXT(ICNT)=0
24733      AVALUE(ICNT)=0.0
24734      IDIGIT(ICNT)=-1
24735C
24736      ICNT=ICNT+1
24737      ITEXT(ICNT)='Response Variable: '
24738      WRITE(ITEXT(ICNT)(20:23),'(A4)')IVARID(1)(1:4)
24739      WRITE(ITEXT(ICNT)(24:27),'(A4)')IVARI2(1)(1:4)
24740      NCTEXT(ICNT)=27
24741      AVALUE(ICNT)=0.0
24742      IDIGIT(ICNT)=-1
24743C
24744      IF(NREPL.GT.0)THEN
24745        IADD=1
24746        DO4101I=1,NREPL
24747          ICNT=ICNT+1
24748          ITEMP=I+IADD
24749          ITEXT(ICNT)='Factor Variable  : '
24750          WRITE(ITEXT(ICNT)(17:17),'(I1)')I
24751          WRITE(ITEXT(ICNT)(20:23),'(A4)')IVARID(ITEMP)(1:4)
24752          WRITE(ITEXT(ICNT)(24:27),'(A4)')IVARI2(ITEMP)(1:4)
24753          NCTEXT(ICNT)=27
24754          AVALUE(ICNT)=PID(ITEMP)
24755          IDIGIT(ICNT)=NUMDIG
24756 4101   CONTINUE
24757      ENDIF
24758C
24759      ICNT=ICNT+1
24760      ITEXT(ICNT)=' '
24761      NCTEXT(ICNT)=1
24762      AVALUE(ICNT)=0.0
24763      IDIGIT(ICNT)=-1
24764C
24765      ICNT=ICNT+1
24766      ITEXT(ICNT)='H0: The Data Are Normally Distributed'
24767      NCTEXT(ICNT)=37
24768      AVALUE(ICNT)=0.0
24769      IDIGIT(ICNT)=-1
24770      ICNT=ICNT+1
24771      ITEXT(ICNT)='Ha: The Data Are Not Normally Distributed'
24772      NCTEXT(ICNT)=41
24773      AVALUE(ICNT)=0.0
24774      IDIGIT(ICNT)=-1
24775C
24776      ICNT=ICNT+1
24777      ITEXT(ICNT)=' '
24778      NCTEXT(ICNT)=1
24779      AVALUE(ICNT)=0.0
24780      IDIGIT(ICNT)=-1
24781      ICNT=ICNT+1
24782      ITEXT(ICNT)='Summary Statistics:'
24783      NCTEXT(ICNT)=19
24784      AVALUE(ICNT)=0.0
24785      IDIGIT(ICNT)=-1
24786      ICNT=ICNT+1
24787      ITEXT(ICNT)='Total Number of Observations:'
24788      NCTEXT(ICNT)=29
24789      AVALUE(ICNT)=REAL(N)
24790      IDIGIT(ICNT)=0
24791      ICNT=ICNT+1
24792      ITEXT(ICNT)='Sample Mean:'
24793      NCTEXT(ICNT)=12
24794      AVALUE(ICNT)=YMEAN
24795      IDIGIT(ICNT)=NUMDIG
24796      ICNT=ICNT+1
24797      ITEXT(ICNT)='Sample Standard Deviation:'
24798      NCTEXT(ICNT)=26
24799      AVALUE(ICNT)=YSD
24800      IDIGIT(ICNT)=NUMDIG
24801      ICNT=ICNT+1
24802      ITEXT(ICNT)='Sample Minimum:'
24803      NCTEXT(ICNT)=15
24804      AVALUE(ICNT)=YMIN
24805      IDIGIT(ICNT)=NUMDIG
24806      ICNT=ICNT+1
24807      ITEXT(ICNT)='Sample Maximum:'
24808      NCTEXT(ICNT)=15
24809      AVALUE(ICNT)=YMAX
24810      IDIGIT(ICNT)=NUMDIG
24811      ICNT=ICNT+1
24812      ITEXT(ICNT)=' '
24813      NCTEXT(ICNT)=1
24814      AVALUE(ICNT)=0.0
24815      IDIGIT(ICNT)=-1
24816C
24817      ICNT=ICNT+1
24818      ITEXT(ICNT)='Test Statistic Value:'
24819      NCTEXT(ICNT)=21
24820      AVALUE(ICNT)=STATVA
24821      IDIGIT(ICNT)=NUMDIG
24822CCCCC ICNT=ICNT+1
24823CCCCC ITEXT(ICNT)='CDF Value:'
24824CCCCC NCTEXT(ICNT)=10
24825CCCCC AVALUE(ICNT)=CDF
24826CCCCC IDIGIT(ICNT)=NUMDIG
24827      ICNT=ICNT+1
24828      ITEXT(ICNT)='P-Value:'
24829      NCTEXT(ICNT)=8
24830      AVALUE(ICNT)=PVAL
24831      IDIGIT(ICNT)=NUMDIG
24832C
24833      NUMROW=ICNT
24834      DO5010I=1,NUMROW
24835        NTOT(I)=15
24836 5010 CONTINUE
24837C
24838      IFRST=.TRUE.
24839      ILAST=.TRUE.
24840C
24841      ISTEPN='42A'
24842      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WSH2')
24843     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
24844C
24845      CALL DPDTA1(ITITLE,NCTITL,ITITLZ,NCTITZ,ITEXT,NCTEXT,
24846     1            AVALUE,IDIGIT,
24847     1            NTOT,NUMROW,
24848     1            ICAPSW,ICAPTY,ILAST,IFRST,
24849     1            ISUBRO,IBUGA3,IERROR)
24850C
24851      ISTEPN='42D'
24852      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WSH2')
24853     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
24854C
24855      ITITL9=' '
24856      NCTIT9=0
24857      ITITLE='Conclusions'
24858      NCTITL=11
24859C
24860      DO5030J=1,4
24861        DO5040I=1,3
24862          ITITL2(I,J)=' '
24863          NCTIT2(I,J)=0
24864 5040   CONTINUE
24865 5030 CONTINUE
24866C
24867      ITITL2(2,1)='Null'
24868      NCTIT2(2,1)=4
24869      ITITL2(3,1)='Hypothesis'
24870      NCTIT2(3,1)=10
24871C
24872      ITITL2(2,2)='Confidence'
24873      NCTIT2(2,2)=10
24874      ITITL2(3,2)='Level'
24875      NCTIT2(3,2)=5
24876C
24877      ITITL2(1,3)='Null Hypothesis'
24878      NCTIT2(1,3)=15
24879      ITITL2(2,3)='Acceptance'
24880      NCTIT2(2,3)=10
24881      ITITL2(3,3)='Interval'
24882      NCTIT2(3,3)=8
24883C
24884      ITITL2(1,4)='Null'
24885      NCTIT2(1,4)=4
24886      ITITL2(2,4)='Hypothesis'
24887      NCTIT2(2,4)=10
24888      ITITL2(3,4)='Conclusion'
24889      NCTIT2(3,4)=10
24890C
24891      NMAX=0
24892      NUMCOL=4
24893      DO5050I=1,NUMCOL
24894        VALIGN(I)='b'
24895        ALIGN(I)='r'
24896        NTOT(I)=15
24897        IF(I.EQ.1)NTOT(I)=12
24898        IF(I.EQ.3)NTOT(I)=18
24899        NMAX=NMAX+NTOT(I)
24900        ITYPCO(I)='ALPH'
24901        IDIGIT(I)=NUMDIG
24902        IWHTML(1)=150
24903        IWHTML(2)=125
24904        IWHTML(3)=150
24905        IWHTML(4)=150
24906        IINC=1600
24907        IINC2=1400
24908        IINC3=2200
24909        IWRTF(1)=IINC
24910        IWRTF(2)=IWRTF(1)+IINC
24911        IWRTF(3)=IWRTF(2)+IINC2
24912        IWRTF(4)=IWRTF(3)+IINC
24913C
24914        DO5060J=1,NUMALP
24915C
24916          IVALUE(J,1)='Normal'
24917          NCVALU(J,1)=6
24918          IVALUE(J,4)(1:6)='REJECT'
24919          ALPHAT=ALPHA(J)
24920          ALPHAT=ALPHAT
24921          WRITE(IVALUE(J,2)(1:4),'(F4.1)')ALPHAT
24922          IVALUE(J,2)(5:5)='%'
24923          NCVALU(J,2)=5
24924          ALPHAT=1.0 - (ALPHA(J)/100.0)
24925          IF(PVAL.GE.ALPHAT)THEN
24926            IVALUE(J,4)(1:6)='ACCEPT'
24927          ENDIF
24928          NCVALU(J,4)=6
24929C
24930          IF(J.EQ.1)THEN
24931            IVALUE(J,3)(1:9)='(0.500,1)'
24932          ELSEIF(J.EQ.2)THEN
24933            IVALUE(J,3)(1:9)='(0.200,1)'
24934          ELSEIF(J.EQ.3)THEN
24935            IVALUE(J,3)(1:9)='(0.100,1)'
24936          ELSEIF(J.EQ.4)THEN
24937            IVALUE(J,3)(1:9)='(0.050,1)'
24938          ELSEIF(J.EQ.5)THEN
24939            IVALUE(J,3)(1:9)='(0.025,1)'
24940          ELSEIF(J.EQ.6)THEN
24941            IVALUE(J,3)(1:9)='(0.010,1)'
24942          ELSEIF(J.EQ.7)THEN
24943            IVALUE(J,3)(1:9)='(0.001,1)'
24944          ENDIF
24945          NCVALU(J,3)=9
24946C
24947 5060   CONTINUE
24948C
24949 5050 CONTINUE
24950C
24951      ICNT=NUMALP
24952      NUMLIN=3
24953      NUMCOL=4
24954      IFRST=.TRUE.
24955      ILAST=.TRUE.
24956      IFLAGS=.TRUE.
24957      IFLAGE=.TRUE.
24958      CALL DPDTA5(ITITLE,NCTITL,
24959     1            ITITL9,NCTIT9,ITITL2,NCTIT2,
24960     1            MAXLIN,NUMLIN,NUMCLI,NUMCOL,
24961     1            IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
24962     1            IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
24963     1            ICAPSW,ICAPTY,IFRST,ILAST,
24964     1            IFLAGS,IFLAGE,
24965     1            ISUBRO,IBUGA3,IERROR)
24966C
24967C               *****************
24968C               **  STEP 90--  **
24969C               **  EXIT       **
24970C               *****************
24971C
24972 9000 CONTINUE
24973      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WSH2')THEN
24974        WRITE(ICOUT,999)
24975        CALL DPWRST('XXX','BUG ')
24976        WRITE(ICOUT,9011)
24977 9011   FORMAT('***** AT THE END       OF DPWSH2--')
24978        CALL DPWRST('XXX','BUG ')
24979        WRITE(ICOUT,9012)N,IBUGA3,IERROR
24980 9012   FORMAT('N,IBUGA3,IERROR = ',I8,2X,A4,2X,A4)
24981        CALL DPWRST('XXX','BUG ')
24982        DO9016I=1,N
24983          WRITE(ICOUT,9017)I,Y(I)
24984 9017     FORMAT('I,Y(I) = ',I8,G15.7)
24985          CALL DPWRST('XXX','BUG ')
24986 9016   CONTINUE
24987      ENDIF
24988C
24989      RETURN
24990      END
24991      SUBROUTINE DPWSH3(Y,N,
24992     1                  XTEMP,MAXNXT,
24993     1                  STATVA,PVAL,
24994     1                  ISUBRO,IBUGA3,IERROR)
24995C
24996C     PURPOSE--THIS ROUTINE CARRIES OUT THE WILKS SHAPIRO TEST
24997C              FOR NORMALITY.  EXTRACT FROM DPWSH3 IN ORDER TO
24998C              ALSO CALL BASIC COMPUTATION FROM CMPSTA.
24999C     REFERENCE--XX, "ALGORITHM AS R94 APPL. STATIST.", (1995)
25000C                VOL.44, NO.4
25001C     WRITTEN BY--ALAN HECKERT
25002C                 STATISTICAL ENGINEERING DIVISION
25003C                 INFORMATION TECHNOLOGY LABORATORY
25004C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
25005C                 GAITHERSBURG, MD 20899-8980
25006C                 PHONE--301-975-2899
25007C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
25008C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
25009C     LANGUAGE--ANSI FORTRAN (1977)
25010C     VERSION NUMBER--2011/3
25011C     ORIGINAL VERSION--MARCH     2011. EXTRACTED FROM DPWSH2
25012C
25013C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
25014C
25015      CHARACTER*4 ISUBRO
25016      CHARACTER*4 IBUGA3
25017      CHARACTER*4 IERROR
25018C
25019      CHARACTER*4 IWRITE
25020C
25021      CHARACTER*4 ISUBN1
25022      CHARACTER*4 ISUBN2
25023      CHARACTER*4 ISTEPN
25024C
25025      LOGICAL WGTS
25026C
25027C---------------------------------------------------------------------
25028C
25029      DIMENSION Y(*)
25030      DIMENSION XTEMP(*)
25031C
25032C-----COMMON----------------------------------------------------------
25033C
25034      INCLUDE 'DPCOP2.INC'
25035C
25036C-----START POINT-----------------------------------------------------
25037C
25038      ISUBN1='DPWS'
25039      ISUBN2='H3  '
25040      IWRITE='OFF'
25041      IERROR='NO'
25042C
25043      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WSH3')THEN
25044        WRITE(ICOUT,999)
25045  999   FORMAT(1X)
25046        CALL DPWRST('XXX','WRIT')
25047        WRITE(ICOUT,51)
25048   51   FORMAT('**** AT THE BEGINNING OF DPWSH3--')
25049        CALL DPWRST('XXX','WRIT')
25050        WRITE(ICOUT,52)IBUGA3,ISUBRO,N,MAXNXT
25051   52   FORMAT('IBUGA3,ISUBRO,N,MAXNXT = ',2(A4,2X),2I8)
25052        CALL DPWRST('XXX','WRIT')
25053        DO56I=1,N
25054          WRITE(ICOUT,57)I,Y(I)
25055   57     FORMAT('I,Y(I) = ',I8,G15.7)
25056          CALL DPWRST('XXX','WRIT')
25057   56   CONTINUE
25058      ENDIF
25059C
25060C               ********************************************
25061C               **  STEP 11--                             **
25062C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
25063C               ********************************************
25064C
25065      ISTEPN='11'
25066      IF(IBUGA3.EQ.'ON'.AND.ISUBRO.EQ.'WSH3')
25067     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
25068C
25069      IF(N.LT.3)THEN
25070        WRITE(ICOUT,999)
25071        CALL DPWRST('XXX','WRIT')
25072        WRITE(ICOUT,101)
25073  101   FORMAT('***** ERROR: WILKS-SHAPIRPO TEST--')
25074        CALL DPWRST('XXX','WRIT')
25075        WRITE(ICOUT,102)
25076  102   FORMAT('      THE NUMBER OF OBSERVATIONS MUST BE AT LEAST 3.',
25077     1         '  SUCH WAS NOT THE CASE HERE.')
25078        CALL DPWRST('XXX','WRIT')
25079        WRITE(ICOUT,103)N
25080  103   FORMAT('      SAMPLE SIZE = ',I8)
25081        CALL DPWRST('XXX','WRIT')
25082        IERROR='YES'
25083        GOTO9000
25084      ENDIF
25085C
25086      IF(N.GT.5000)THEN
25087        WRITE(ICOUT,999)
25088        CALL DPWRST('XXX','WRIT')
25089        WRITE(ICOUT,111)
25090  111   FORMAT('***** WARNING: FOR WILKS-SHAPIRPO TEST--')
25091        CALL DPWRST('XXX','WRIT')
25092        WRITE(ICOUT,112)
25093  112   FORMAT('      THE P-VALUE CALCULATION MAY NOT BE ACCURATE ',
25094     1         'FOR SAMPLE SIZES  GREATER THAN 5,000.')
25095        CALL DPWRST('XXX','WRIT')
25096        WRITE(ICOUT,103)N
25097        CALL DPWRST('XXX','WRIT')
25098      ENDIF
25099C
25100      HOLD=Y(1)
25101      DO135I=2,N
25102        IF(Y(I).NE.HOLD)GOTO139
25103  135 CONTINUE
25104      WRITE(ICOUT,999)
25105      CALL DPWRST('XXX','WRIT')
25106      WRITE(ICOUT,101)
25107      CALL DPWRST('XXX','WRIT')
25108      WRITE(ICOUT,131)HOLD
25109  131 FORMAT('      THE RESPONSE VARIABLE HAS ALL ELEMENTS = ',G15.7)
25110      CALL DPWRST('XXX','WRIT')
25111      GOTO9000
25112  139 CONTINUE
25113C
25114C               ******************************
25115C               **  STEP 11--               **
25116C               **  CARRY OUT CALCULATIONS  **
25117C               **  FOR WILKS SHAPIRO       **
25118C               **  TEST                    **
25119C               ******************************
25120C
25121      ISTEPN='11'
25122      IF(IBUGA3.EQ.'ON'.AND.ISUBRO.EQ.'WSH3')
25123     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
25124C
25125      N2=N/2
25126      WGTS=.FALSE.
25127      CALL SORT(Y,N,Y)
25128      STATVA=0.0
25129      PVAL=1.0
25130      CALL SWILK(WGTS,Y,N,N,N2,XTEMP,STATVA,PVAL,IFAULT)
25131C
25132C               *****************
25133C               **  STEP 90--  **
25134C               **  EXIT       **
25135C               *****************
25136C
25137 9000 CONTINUE
25138      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'WSH3')THEN
25139        WRITE(ICOUT,999)
25140        CALL DPWRST('XXX','BUG ')
25141        WRITE(ICOUT,9011)
25142 9011   FORMAT('***** AT THE END       OF DPWSH3--')
25143        CALL DPWRST('XXX','BUG ')
25144        WRITE(ICOUT,9012)N,IBUGA3,IERROR
25145 9012   FORMAT('N,IBUGA3,IERROR = ',I8,2X,A4,2X,A4)
25146        CALL DPWRST('XXX','BUG ')
25147        DO9016I=1,N
25148          WRITE(ICOUT,9017)I,Y(I)
25149 9017     FORMAT('I,Y(I) = ',I8,G15.7)
25150          CALL DPWRST('XXX','BUG ')
25151 9016   CONTINUE
25152      ENDIF
25153C
25154      RETURN
25155      END
25156      SUBROUTINE DPWSH4(STATVA,PVAL,
25157     1                  IFLAGU,IFRST,ILAST,ICASPL,
25158     1                  IBUGA2,IBUGA3,ISUBRO,IERROR)
25159C
25160C     PURPOSE--UTILITY ROUTINE USED BY DPWSHA.  THIS ROUTINE
25161C              UPDATES THE PARAMETERS "STATVAL" AND
25162C              "PVALUE" AFTER A WILK-SHAPIRO TEST.
25163C     WRITTEN BY--ALAN HECKERT
25164C                 STATISTICAL ENGINEERING DIVISION
25165C                 INFORMATION TECHNOLOGY LABORAOTRY
25166C                 NATIONAL INSTITUTE OF STANDARDS OF TECHNOLOGY
25167C                 GAITHERSBURG, MD 20899-8980
25168C                 PHONE--301-975-2899
25169C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
25170C           OF THE NATIONAL INSTITUTE OF STANDARDS OF TECHNOLOGY.
25171C     LANGUAGE--ANSI FORTRAN (1977)
25172C     VERSION NUMBER--2011/3
25173C     ORIGINAL VERSION--MARCH     2011.
25174C
25175C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
25176C
25177      CHARACTER*4 IFLAGU
25178      CHARACTER*4 ICASPL
25179      CHARACTER*4 IBUGA2
25180      CHARACTER*4 IBUGA3
25181      CHARACTER*4 ISUBRO
25182      CHARACTER*4 IERROR
25183C
25184      LOGICAL IFRST
25185      LOGICAL ILAST
25186C
25187      CHARACTER*4 IH
25188      CHARACTER*4 IH2
25189      CHARACTER*4 ISUBN0
25190C
25191      CHARACTER*4 ISUBN1
25192      CHARACTER*4 ISUBN2
25193      CHARACTER*4 ISTEPN
25194C
25195C---------------------------------------------------------------------
25196C
25197      INCLUDE 'DPCOPA.INC'
25198      INCLUDE 'DPCOHK.INC'
25199      INCLUDE 'DPCOHO.INC'
25200C
25201      CHARACTER*4 IOP
25202      SAVE IOUNI1
25203C
25204C-----COMMON----------------------------------------------------------
25205C
25206      INCLUDE 'DPCOP2.INC'
25207C
25208C-----START POINT-----------------------------------------------------
25209C
25210      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WSH4')THEN
25211        ISTEPN='1'
25212        CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
25213        WRITE(ICOUT,999)
25214  999   FORMAT(1X)
25215        CALL DPWRST('XXX','BUG ')
25216        WRITE(ICOUT,51)
25217   51   FORMAT('***** AT THE BEGINNING OF DPWSH4--')
25218        CALL DPWRST('XXX','BUG ')
25219        WRITE(ICOUT,53)ICASPL,STATVA,PVAL
25220   53   FORMAT('ICASPL,STATVA,PVAL = ',A4,2X,2G15.7)
25221        CALL DPWRST('XXX','BUG ')
25222      ENDIF
25223C
25224      IF(IFLAGU.EQ.'FILE')THEN
25225C
25226        IF(IFRST)THEN
25227          IOP='OPEN'
25228          IFLAG1=1
25229          IFLAG2=0
25230          IFLAG3=0
25231          IFLAG4=0
25232          IFLAG5=0
25233          CALL DPAUFI(IOP,IFLAG1,IFLAG2,IFLAG3,IFLAG4,IFLAG5,
25234     1                IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
25235     1                IBUGA3,ISUBRO,IERROR)
25236          IF(IERROR.EQ.'YES')GOTO9000
25237C
25238          WRITE(IOUNI1,295)
25239  295     FORMAT(11X,'STATVAL',8X,'PVALUE')
25240        ENDIF
25241        WRITE(IOUNI1,299)STATVA,PVAL
25242  299   FORMAT(2E15.7)
25243      ELSEIF(IFLAGU.EQ.'ON')THEN
25244        IF(STATVA.NE.CPUMIN)THEN
25245          IH='STAT'
25246          IH2='VAL '
25247          VALUE0=STATVA
25248          CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
25249     1                IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
25250     1                IANS,IWIDTH,IBUGA3,IERROR)
25251        ENDIF
25252C
25253        IF(PVAL.NE.CPUMIN)THEN
25254          IH='PVAL'
25255          IH2='UE  '
25256          VALUE0=PVAL
25257          CALL DPADDP(IH,IH2,VALUE0,IHOST1,ISUBN0,
25258     1                IHNAME,IHNAM2,IUSE,VALUE,IVALUE,NUMNAM,MAXNAM,
25259     1                IANS,IWIDTH,IBUGA3,IERROR)
25260        ENDIF
25261C
25262      ENDIF
25263C
25264      IF(IFLAGU.EQ.'FILE')THEN
25265        IF(ILAST)THEN
25266          IOP='CLOS'
25267          IFLAG1=1
25268          IFLAG2=0
25269          IFLAG3=0
25270          IFLAG4=0
25271          IFLAG5=0
25272          CALL DPAUFI(IOP,IFLAG1,IFLAG2,IFLAG3,IFLAG4,IFLAG5,
25273     1                IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
25274     1                IBUGA3,ISUBRO,IERROR)
25275C
25276          IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WSH4')THEN
25277            ISTEPN='3A'
25278            CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
25279            WRITE(ICOUT,999)
25280            CALL DPWRST('XXX','BUG ')
25281            WRITE(ICOUT,301)IERROR
25282  301       FORMAT('AFTER CALL DPCLFI, IERROR = ',A4)
25283            CALL DPWRST('XXX','BUG ')
25284          ENDIF
25285C
25286          IF(IERROR.EQ.'YES')GOTO9000
25287        ENDIF
25288      ENDIF
25289C
25290C               *****************
25291C               **  STEP 90--  **
25292C               **  EXIT       **
25293C               *****************
25294C
25295 9000 CONTINUE
25296C
25297      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'WSH4')THEN
25298        WRITE(ICOUT,999)
25299        CALL DPWRST('XXX','BUG ')
25300        WRITE(ICOUT,9011)
25301 9011   FORMAT('***** AT THE END OF DPWSH4--')
25302        CALL DPWRST('XXX','BUG ')
25303      ENDIF
25304C
25305      RETURN
25306      END
25307      SUBROUTINE DPW280(ISTRIN,ISTART,ISTOP,ICOL2,IBUGS2,ISUBRO,IERROR)
25308C
25309C     PURPOSE--DETERMINE THE COLUMN NUMBER
25310C              AT THE BEGINNING OF THE SECOND WORD
25311C              IN THE COLUMN INTERVAL ISTART TO ISTOP
25312C              IN THE CHARACTER*80 VARIABLE    ISTRIN   .
25313C              (THIS IS USEFUL FOR EXTRACTING THE FULL SECOND WORD.)
25314C
25315C     WRITTEN BY--JAMES J. FILLIBEN
25316C                 STATISTICAL ENGINEERING DIVISION
25317C                 INFORMATION TECHNOLOGY LABORATORY
25318C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
25319C                 GAITHERSBURG, MD 20899-8980
25320C                 PHONE--301-975-2899
25321C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
25322C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
25323C     LANGUAGE--ANSI FORTRAN (1977)
25324C     VERSION NUMBER--86/1
25325C     ORIGINAL VERSION--DECEMBER  1985.
25326C
25327C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
25328C
25329CCCCC CHARACTER*80 ISTRIN
25330      CHARACTER (LEN=*) :: ISTRIN
25331      CHARACTER*4 IBUGS2
25332      CHARACTER*4 ISUBRO
25333      CHARACTER*4 IERROR
25334C
25335      CHARACTER*4 ISUBN1
25336      CHARACTER*4 ISUBN2
25337      CHARACTER*4 ISTEPN
25338C
25339C-----COMMON VARIABLES (GENERAL)--------------------------------------
25340C
25341      INCLUDE 'DPCOP2.INC'
25342C
25343C-----START POINT-----------------------------------------------------
25344C
25345      ISUBN1='DPW2'
25346      ISUBN2='80  '
25347      IERROR='NO'
25348C
25349      ICOL2=(-999)
25350C
25351      IF(IBUGS2.EQ.'ON' .OR. ISUBRO.EQ.'W280')THEN
25352        WRITE(ICOUT,999)
25353  999   FORMAT(1X)
25354        CALL DPWRST('XXX','BUG ')
25355        WRITE(ICOUT,51)
25356   51   FORMAT('***** AT THE BEGINNING OF DPW280--')
25357        CALL DPWRST('XXX','BUG ')
25358        WRITE(ICOUT,53)IBUGS2,ISUBRO,IERROR
25359   53   FORMAT('IBUGS2,ISUBRO,IERROR = ',2(A4,2X),A4)
25360        CALL DPWRST('XXX','BUG ')
25361        WRITE(ICOUT,54)(ISTRIN(J:J),J=1,80)
25362   54   FORMAT('(ISTRIN(J:J),J=1,80) = ',80A1)
25363        CALL DPWRST('XXX','BUG ')
25364        WRITE(ICOUT,55)ISTART,ISTOP,ICOL2
25365   55   FORMAT('ISTART,ISTOP,ICOL2 = ',3I8)
25366        CALL DPWRST('XXX','BUG ')
25367      ENDIF
25368C
25369C               *******************************************
25370C               **  STEP 1--                             **
25371C               **  DETERMINE THE COLUMN NUMBER          **
25372C               **  AT THE BEGINNING OF THE SECOND WORD  **
25373C               *******************************************
25374C
25375      ISTEPN='1'
25376      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'W280')
25377     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
25378C
25379      IF(ISTART.GE.1.AND.ISTOP.GE.1)THEN
25380        IERROR='YES'
25381        WRITE(ICOUT,999)
25382        CALL DPWRST('XXX','BUG ')
25383        WRITE(ICOUT,1111)
25384 1111   FORMAT('***** ERROR IN DPW280--')
25385        CALL DPWRST('XXX','BUG ')
25386        WRITE(ICOUT,1112)
25387 1112   FORMAT('      ISTART OR ISTOP IS < 1. ')
25388        CALL DPWRST('XXX','BUG ')
25389        WRITE(ICOUT,1113)ISTART
25390 1113   FORMAT('      ISTART  = ',I8)
25391        CALL DPWRST('XXX','BUG ')
25392        WRITE(ICOUT,1114)ISTOP
25393 1114   FORMAT('      ISTOP   = ',I8)
25394        CALL DPWRST('XXX','BUG ')
25395        WRITE(ICOUT,1116)(ISTRIN(I:I),I=1,80)
25396 1116   FORMAT('      (ISTRIN(I:I),I=1,80) = ',80A1)
25397        CALL DPWRST('XXX','BUG ')
25398        GOTO9000
25399      ENDIF
25400C
25401      IF(ISTART.GT.ISTOP)THEN
25402        IERROR='YES'
25403        WRITE(ICOUT,999)
25404        CALL DPWRST('XXX','BUG ')
25405        WRITE(ICOUT,1121)
25406 1121   FORMAT('***** ERROR IN DPW280--')
25407        CALL DPWRST('XXX','BUG ')
25408        WRITE(ICOUT,1122)
25409 1122   FORMAT('      ISTART EXCEEDS ISTOP')
25410        CALL DPWRST('XXX','BUG ')
25411        WRITE(ICOUT,1123)ISTART
25412 1123   FORMAT('      ISTART  = ',I8)
25413        CALL DPWRST('XXX','BUG ')
25414        WRITE(ICOUT,1124)ISTOP
25415 1124   FORMAT('      ISTOP   = ',I8)
25416        CALL DPWRST('XXX','BUG ')
25417        WRITE(ICOUT,1126)(ISTRIN(I:I),I=1,80)
25418 1126   FORMAT('      (ISTRIN(I:I),I=1,80) = ',80A1)
25419        CALL DPWRST('XXX','BUG ')
25420        GOTO9000
25421      ENDIF
25422C
25423      ICOL1=ISTOP+1
25424      DO1210I=ISTART,ISTOP
25425        I2=I
25426        IF(ISTRIN(I:I).EQ.' ')THEN
25427          ICOL1=I2
25428          GOTO1219
25429        ENDIF
25430 1210 CONTINUE
25431      ICOL1=ISTOP+1
25432 1219 CONTINUE
25433C
25434      ICOL2=ISTOP+1
25435      IF(ICOL1.GT.ISTOP)GOTO1229
25436      DO1220I=ICOL1,ISTOP
25437        I2=I
25438        IF(ISTRIN(I:I).NE.' ')THEN
25439          ICOL2=I2
25440          GOTO1229
25441        ENDIF
25442 1220 CONTINUE
25443      ICOL2=ISTOP+1
25444 1229 CONTINUE
25445C
25446C               ****************
25447C               **  STEP 90-- **
25448C               **  EXIT.     **
25449C               ****************
25450C
25451 9000 CONTINUE
25452      IF(IBUGS2.EQ.'ON' .OR. ISUBRO.EQ.'W280')THEN
25453        WRITE(ICOUT,999)
25454        CALL DPWRST('XXX','BUG ')
25455        WRITE(ICOUT,9011)
25456 9011   FORMAT('***** AT THE END       OF DPW280--')
25457        CALL DPWRST('XXX','BUG ')
25458        WRITE(ICOUT,9014)(ISTRIN(J:J),J=1,80)
25459 9014   FORMAT('(ISTRIN(J:J),J=1,80) = ',80A1)
25460        CALL DPWRST('XXX','BUG ')
25461        WRITE(ICOUT,9015)IERROR,ISTART,ISTOP,ICOL1,ICOL2
25462 9015   FORMAT('IERROR,ISTART,ISTOP,ICOL1,ICOL2 = ',A4,2X,4I8)
25463        CALL DPWRST('XXX','BUG ')
25464      ENDIF
25465C
25466      RETURN
25467      END
25468      SUBROUTINE DPW380(ISTRIN,ISTART,ISTOP,ICOL3,IBUGS2,ISUBRO,IERROR)
25469C
25470C     PURPOSE--DETERMINE THE COLUMN NUMBER
25471C              AT THE BEGINNING OF THE THIRD WORD
25472C              IN THE COLUMN INTERVAL ISTART TO ISTOP
25473C              IN THE CHARACTER*80 VARIABLE    ISTRIN   .
25474C              (THIS IS USEFUL FOR EXTRACTING THE FULL THIRD WORD.)
25475C
25476C     WRITTEN BY--JAMES J. FILLIBEN
25477C                 STATISTICAL ENGINEERING DIVISION
25478C                 INFORMATION TECHNOLOGY LABORATORY
25479C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
25480C                 GAITHERSBURG, MD 20899-8980
25481C                 PHONE--301-975-2899
25482C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
25483C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
25484C     LANGUAGE--ANSI FORTRAN (1977)
25485C     VERSION NUMBER--86/7
25486C     ORIGINAL VERSION--JUNE      1986.
25487C
25488C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
25489C
25490CCCCC CHARACTER*80 ISTRIN
25491      CHARACTER (LEN=*) :: ISTRIN
25492      CHARACTER*4 IBUGS2
25493      CHARACTER*4 ISUBRO
25494      CHARACTER*4 IERROR
25495C
25496      CHARACTER*4 ISUBN1
25497      CHARACTER*4 ISUBN2
25498      CHARACTER*4 ISTEPN
25499C
25500C-----COMMON VARIABLES (GENERAL)--------------------------------------
25501C
25502      INCLUDE 'DPCOP2.INC'
25503C
25504C-----START POINT-----------------------------------------------------
25505C
25506      ISUBN1='DPW3'
25507      ISUBN2='80  '
25508      IERROR='NO'
25509C
25510      ICOL2=(-999)
25511      ICOL2B=(-999)
25512      ICOL3=(-999)
25513C
25514      IF(IBUGS2.EQ.'ON' .OR. ISUBRO.EQ.'W380')THEN
25515        WRITE(ICOUT,999)
25516  999   FORMAT(1X)
25517        CALL DPWRST('XXX','BUG ')
25518        WRITE(ICOUT,51)
25519   51   FORMAT('***** AT THE BEGINNING OF DPW380--')
25520        CALL DPWRST('XXX','BUG ')
25521        WRITE(ICOUT,53)IBUGS2,ISUBRO,IERROR
25522   53   FORMAT('IBUGS2,ISUBRO,IERROR = ',2(A4,2X),A4)
25523        CALL DPWRST('XXX','BUG ')
25524        WRITE(ICOUT,54)(ISTRIN(J:J),J=1,80)
25525   54   FORMAT('(ISTRIN(J:J),J=1,80) = ',80A1)
25526        CALL DPWRST('XXX','BUG ')
25527        WRITE(ICOUT,55)ISTART,ISTOP,ICOL2,ICOL2B,ICOL3
25528   55   FORMAT('ISTART,ISTOP,ICOL2,ICOL2B,ICOL3 = ',5I8)
25529        CALL DPWRST('XXX','BUG ')
25530      ENDIF
25531C
25532C               *******************************************
25533C               **  STEP 1--                             **
25534C               **  DETERMINE THE COLUMN NUMBER          **
25535C               **  AT THE BEGINNING OF THE THIRD  WORD  **
25536C               *******************************************
25537C
25538      ISTEPN='1'
25539      IF(IBUGS2.EQ.'ON'.OR.ISUBRO.EQ.'W380')
25540     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
25541C
25542      IF(ISTART.LT.1 .OR. ISTOP.LT.1)THEN
25543        IERROR='YES'
25544        WRITE(ICOUT,999)
25545        CALL DPWRST('XXX','BUG ')
25546        WRITE(ICOUT,1111)
25547 1111   FORMAT('***** ERROR IN DPW380--')
25548        CALL DPWRST('XXX','BUG ')
25549        WRITE(ICOUT,1112)
25550 1112   FORMAT('      ISTART OR ISTOP IS < 1.')
25551        CALL DPWRST('XXX','BUG ')
25552        WRITE(ICOUT,1113)ISTART
25553 1113   FORMAT('      ISTART  = ',I8)
25554        CALL DPWRST('XXX','BUG ')
25555        WRITE(ICOUT,1114)ISTOP
25556 1114   FORMAT('      ISTOP   = ',I8)
25557        CALL DPWRST('XXX','BUG ')
25558        WRITE(ICOUT,1116)(ISTRIN(I:I),I=1,80)
25559 1116   FORMAT('      (ISTRIN(I:I),I=1,80) = ',80A1)
25560        CALL DPWRST('XXX','BUG ')
25561        GOTO9000
25562      ENDIF
25563C
25564      IF(ISTART.GT.ISTOP)THEN
25565        IERROR='YES'
25566        WRITE(ICOUT,999)
25567        CALL DPWRST('XXX','BUG ')
25568        WRITE(ICOUT,1121)
25569 1121   FORMAT('***** ERROR IN DPW380--')
25570        CALL DPWRST('XXX','BUG ')
25571        WRITE(ICOUT,1122)
25572 1122   FORMAT('      ISTART EXCEEDS ISTOP')
25573        CALL DPWRST('XXX','BUG ')
25574        WRITE(ICOUT,1113)ISTART
25575        CALL DPWRST('XXX','BUG ')
25576        WRITE(ICOUT,1114)ISTOP
25577        CALL DPWRST('XXX','BUG ')
25578        WRITE(ICOUT,1116)(ISTRIN(I:I),I=1,80)
25579        CALL DPWRST('XXX','BUG ')
25580        GOTO9000
25581      ENDIF
25582C
25583C     FIND THE FIRST BLANK AT THE END OF WORD 1
25584C
25585      ICOL1=ISTOP+1
25586      DO1210I=ISTART,ISTOP
25587      I2=I
25588      IF(ISTRIN(I:I).EQ.' ')GOTO1215
25589 1210 CONTINUE
25590      ICOL1=ISTOP+1
25591      GOTO1219
25592 1215 CONTINUE
25593      ICOL1=I2
25594      GOTO1219
25595 1219 CONTINUE
25596C
25597C     FIND THE BEGINNING OF WORD 2
25598C
25599      ICOL2=ISTOP+1
25600      IF(ICOL1.GT.ISTOP)GOTO1229
25601      DO1220I=ICOL1,ISTOP
25602      I2=I
25603      IF(ISTRIN(I:I).NE.' ')GOTO1225
25604 1220 CONTINUE
25605      ICOL2=ISTOP+1
25606      GOTO1229
25607 1225 CONTINUE
25608      ICOL2=I2
25609      GOTO1229
25610 1229 CONTINUE
25611C
25612C     FIND THE FIRST BLANK AT THE END OF WORD 2
25613C
25614      ICOL2B=ISTOP+1
25615      IF(ICOL2.GT.ISTOP)GOTO1239
25616      DO1230I=ICOL2,ISTOP
25617      I2=I
25618      IF(ISTRIN(I:I).EQ.' ')GOTO1235
25619 1230 CONTINUE
25620      ICOL2B=ISTOP+1
25621      GOTO1239
25622 1235 CONTINUE
25623      ICOL2B=I2
25624      GOTO1239
25625 1239 CONTINUE
25626C
25627C     FIND THE BEGINNING OF WORD 3
25628C
25629      ICOL3=ISTOP+1
25630      IF(ICOL2B.GT.ISTOP)GOTO1249
25631      DO1240I=ICOL2B,ISTOP
25632      I2=I
25633      IF(ISTRIN(I:I).NE.' ')GOTO1245
25634 1240 CONTINUE
25635      ICOL3=ISTOP+1
25636      GOTO1249
25637 1245 CONTINUE
25638      ICOL3=I2
25639      GOTO1249
25640 1249 CONTINUE
25641C
25642C               ****************
25643C               **  STEP 90-- **
25644C               **  EXIT.     **
25645C               ****************
25646C
25647 9000 CONTINUE
25648      IF(IBUGS2.EQ.'ON' .OR. ISUBRO.EQ.'W380')THEN
25649        WRITE(ICOUT,999)
25650        CALL DPWRST('XXX','BUG ')
25651        WRITE(ICOUT,9011)
25652 9011   FORMAT('***** AT THE END       OF DPW380--')
25653        CALL DPWRST('XXX','BUG ')
25654        WRITE(ICOUT,9014)(ISTRIN(J:J),J=1,80)
25655 9014   FORMAT('(ISTRIN(J:J),J=1,80) = ',80A1)
25656        CALL DPWRST('XXX','BUG ')
25657        WRITE(ICOUT,9015)IERROR,ISTART,ISTOP,ICOL1,ICOL2,ICOL2B,ICOL3
25658 9015   FORMAT('IERROR,ISTART,ISTOP,ICOL1,ICOL2,ICOL2B,ICOL3 = ',
25659     1         A4,2X,6I5)
25660        CALL DPWRST('XXX','BUG ')
25661      ENDIF
25662C
25663      RETURN
25664      END
25665      SUBROUTINE DPXH1H(IWD,ICH,NUMCH,IBUGA3)
25666C
25667C     PURPOSE--DECOMPOSE A WORD (TYPICALLY 4 CHARACTERS
25668C              BUT MORE GENERALLY NUMCPW CHARACTERS PER WORD)
25669C              INTO INDIVIDUAL CHARACTERS--1 CHARACTER PER WORD.
25670C
25671C     NOTE ALSO THE POSSIBLE EXISTENCE OF A6 FORMATS
25672C     RATHER THAN A4 FORMATS FOR THE PRINTING OF
25673C     CERTAIN HOLLERITH (= CHARACTER) VARIABLES.
25674C
25675C     WRITTEN BY--JAMES J. FILLIBEN
25676C                 STATISTICAL ENGINEERING DIVISION
25677C                 INFORMATION TECHNOLOGY LABORATORY
25678C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
25679C                 GAITHERSBURG, MD 20899-8980
25680C                 PHONE--301-975-2899
25681C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
25682C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
25683C     LANGUAGE--ANSI FORTRAN (1977)
25684C     VERSION NUMBER--82/7
25685C     ORIGINAL VERSION--JANUARY   1979.
25686C     UPDATED         --JANUARY   1981.
25687C     UPDATED         --JUNE      1981.
25688C     UPDATED         --JULY      1981.
25689C     UPDATED         --MAY       1982.
25690C
25691C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
25692C
25693      CHARACTER*4 IWD
25694      CHARACTER*4 ICH
25695      CHARACTER*4 IBUGA3
25696C
25697      CHARACTER*4 IX1
25698      CHARACTER*4 IX2
25699C
25700      CHARACTER*4 ISUBN1
25701      CHARACTER*4 ISUBN2
25702      CHARACTER*4 ISTEPN
25703C
25704C---------------------------------------------------------------------
25705C
25706      DIMENSION ICH(*)
25707C
25708C     NUMBPC = NUMBER OF BITS PER CHARACTER.
25709C     NUMCPW = NUMBER OF CHARACTERS PER WORD.
25710C     THESE VALUES WILL CHANGE DEPENDING
25711C     ON THE COMPUTER AND ARE DEFINED IN THE SUBROUTINE INITMC.
25712C
25713C---------------------------------------------------------------------
25714C
25715      INCLUDE 'DPCOP2.INC'
25716C
25717C-----START POINT-----------------------------------------------------
25718C
25719      ISUBN1='DPXH'
25720      ISUBN2='1H  '
25721C
25722C               ****************************************
25723C               **  DECOMPOSE A WORD INTO CHARACTERS  **
25724C               ****************************************
25725C
25726      IF(IBUGA3.EQ.'ON')THEN
25727        WRITE(ICOUT,999)
25728  999   FORMAT(1X)
25729        CALL DPWRST('XXX','BUG ')
25730        WRITE(ICOUT,91)
25731   91   FORMAT('***** AT THE BEGINNING OF DPXH1H--')
25732        CALL DPWRST('XXX','BUG ')
25733        WRITE(ICOUT,92)IWD
25734   92   FORMAT('IWD (IN A4 FORMAT)  = ',A4)
25735        CALL DPWRST('XXX','BUG ')
25736        WRITE(ICOUT,93)IWD
25737   93   FORMAT('IWD (IN A6 FORMAT)  = ',A6)
25738        CALL DPWRST('XXX','BUG ')
25739        WRITE(ICOUT,94)IWD
25740   94   FORMAT('IWD (IN A10 FORMAT) = ',A10)
25741        CALL DPWRST('XXX','BUG ')
25742        WRITE(ICOUT,95)IBUGA3
25743   95   FORMAT('IBUGA3 = ',A4)
25744        CALL DPWRST('XXX','BUG ')
25745      ENDIF
25746C
25747C               **********************************
25748C               **  STEP 1--                    **
25749C               **  INITIALIZE SOME VARIABLES.  **
25750C               **********************************
25751C
25752      ISTEPN='1'
25753      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
25754C
25755      NUMCH=0
25756      DO100I=1,NUMCPW
25757        ICH(I)=' '
25758  100 CONTINUE
25759C
25760C               **************************************************************
25761C               **  STEP 2--                                                **
25762C               **  DECOMPOSE THE   TARGET WORDS INTO INDIVIDUAL CHARACTERS.**
25763C               **************************************************************
25764C
25765      IF(IWD.NE.' ')THEN
25766        IX1=IWD
25767        ISTAR2=0
25768        ILEN1=NUMBPC
25769        ILEN2=ILEN1
25770C
25771        DO200I=1,NUMCPW
25772          IX2=' '
25773          ISTAR1=(I-1)*NUMBPC
25774          CALL DPCHEX(ISTAR1,ILEN1,IX1,ISTAR2,ILEN2,IX2)
25775          ICH(I)=IX2
25776  200   CONTINUE
25777C
25778        K=0
25779        DO300I=1,NUMCPW
25780          K=K+1
25781          IF(ICH(I).EQ.' ')THEN
25782            NUMCH=K-1
25783            GOTO390
25784          ENDIF
25785  300   CONTINUE
25786        NUMCH=K
25787  390   CONTINUE
25788      ENDIF
25789C
25790C               ****************
25791C               **  STEP 3--  **
25792C               **  EXIT.     **
25793C               ****************
25794C
25795      IF(IBUGA3.EQ.'ON')THEN
25796        WRITE(ICOUT,999)
25797        CALL DPWRST('XXX','BUG ')
25798        WRITE(ICOUT,9011)
25799 9011   FORMAT('***** AT THE END       OF DPXH1H--')
25800        CALL DPWRST('XXX','BUG ')
25801        WRITE(ICOUT,9012)ISTAR1,ILEN1,IX1
25802 9012   FORMAT('ISTAR1,ILEN1,IX1 = ',I8,I8,2X,A4)
25803        CALL DPWRST('XXX','BUG ')
25804        WRITE(ICOUT,9013)ISTAR2,ILEN2,IX2
25805 9013   FORMAT('ISTAR2,ILEN2,IX2 = ',I8,I8,2X,A4)
25806        CALL DPWRST('XXX','BUG ')
25807        WRITE(ICOUT,9014)NUMCH
25808 9014   FORMAT('NUMCH = ',I8)
25809        CALL DPWRST('XXX','BUG ')
25810        WRITE(ICOUT,9015)(ICH(I),I=1,MIN(120,NUMCH))
25811 9015   FORMAT('ICH(.) = ',120A1)
25812        CALL DPWRST('XXX','BUG ')
25813      ENDIF
25814C
25815      RETURN
25816      END
25817      SUBROUTINE DPYACB(NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2,
25818     1                  ISUBRO,IBUGG2,IBUGG3,IBUGQ,IFOUND,IERROR)
25819C
25820C     PURPOSE--GENERATE A YATES CUBE PLOT--
25821C              THE COMMAND HAS THE FOLLOWING FORMAT:
25822C                  YATES CUBE PLOT Y X1 X2 X3
25823C              WHERE X1, X2,  AND X3 ARE RESTRICTED TO HAVING VALUES
25824C              IN THE (-1,1) INTERVAL.  IF THEY HAVE 2 DISTINCT
25825C              LEVELS, THESE LEVELS WILL BE CONVERTED TO -1 AND 1.
25826C     EXAMPLE--YATES CUBE PLOT Y X1 X2 X3
25827C     WRITTEN BY--JAMES J. FILLIBEN
25828C                 STATISTICAL ENGINEERING DIVISION
25829C                 INFORMATION TECHNOLOGY LABORATORY
25830C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
25831C                 GAITHERSBURG, MD 20899-8980
25832C                 PHONE--301-975-2855
25833C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
25834C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
25835C     LANGUAGE--ANSI FORTRAN (1977)
25836C     VERSION NUMBER--2000/1
25837C     ORIGINAL VERSION--JANUARY       2000.
25838C     UPDATED         --MARCH         2011.
25839C
25840C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
25841C
25842      CHARACTER*4 ICASPL
25843      CHARACTER*4 IAND1
25844      CHARACTER*4 IAND2
25845      CHARACTER*4 IBUGG2
25846      CHARACTER*4 IBUGG3
25847      CHARACTER*4 IBUGQ
25848      CHARACTER*4 ISUBRO
25849      CHARACTER*4 IFOUND
25850      CHARACTER*4 IERROR
25851C
25852      CHARACTER*4 ISUBN1
25853      CHARACTER*4 ISUBN2
25854      CHARACTER*4 ISTEPN
25855C
25856      CHARACTER*40 INAME
25857      PARAMETER (MAXSPN=10)
25858      CHARACTER*4 IVARN1(MAXSPN)
25859      CHARACTER*4 IVARN2(MAXSPN)
25860      CHARACTER*4 IVARTY(MAXSPN)
25861      REAL PVAR(MAXSPN)
25862      INTEGER ILIS(MAXSPN)
25863      INTEGER NRIGHT(MAXSPN)
25864      INTEGER ICOLR(MAXSPN)
25865C
25866C---------------------------------------------------------------------
25867C
25868      INCLUDE 'DPCOPA.INC'
25869C
25870      DIMENSION YRES(MAXOBV)
25871      DIMENSION X1(MAXOBV)
25872      DIMENSION X2(MAXOBV)
25873      DIMENSION X3(MAXOBV)
25874      DIMENSION TEMP1(MAXOBV)
25875      DIMENSION TEMP2(MAXOBV)
25876      DIMENSION TEMP3(MAXOBV)
25877      DIMENSION TEMP4(MAXOBV)
25878C
25879      INCLUDE 'DPCOZZ.INC'
25880      EQUIVALENCE (GARBAG(IGARB1),YRES(1))
25881      EQUIVALENCE (GARBAG(IGARB2),X1(1))
25882      EQUIVALENCE (GARBAG(IGARB3),X2(1))
25883      EQUIVALENCE (GARBAG(IGARB4),X3(1))
25884      EQUIVALENCE (GARBAG(IGARB5),TEMP1(1))
25885      EQUIVALENCE (GARBAG(IGARB6),TEMP2(1))
25886      EQUIVALENCE (GARBAG(IGARB7),TEMP3(1))
25887      EQUIVALENCE (GARBAG(IGARB8),TEMP4(1))
25888C
25889C-----COMMON----------------------------------------------------------
25890C
25891      INCLUDE 'DPCOHO.INC'
25892      INCLUDE 'DPCOHK.INC'
25893      INCLUDE 'DPCODA.INC'
25894      INCLUDE 'DPCOP2.INC'
25895C
25896C-----START POINT-----------------------------------------------------
25897C
25898      IERROR='NO'
25899      IFOUND='NO'
25900      ISUBN1='DPYA'
25901      ISUBN2='CB  '
25902      ICASPL='YCUB'
25903C
25904      MAXCP1=MAXCOL+1
25905      MAXCP2=MAXCOL+2
25906      MAXCP3=MAXCOL+3
25907      MAXCP4=MAXCOL+4
25908      MAXCP5=MAXCOL+5
25909      MAXCP6=MAXCOL+6
25910C
25911C               ****************************************
25912C               **  TREAT THE YATES CUBE PLOT CASE    **
25913C               ****************************************
25914C
25915      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'YACB')THEN
25916        WRITE(ICOUT,999)
25917  999   FORMAT(1X)
25918        CALL DPWRST('XXX','BUG ')
25919        WRITE(ICOUT,51)
25920   51   FORMAT('***** AT THE BEGINNING OF DPYACB--')
25921        CALL DPWRST('XXX','BUG ')
25922        WRITE(ICOUT,52)IBUGG2,IBUGG3,IBUGQ,ISUBRO
25923   52   FORMAT('IBUGG2,IBUGG3,IBUGQ,ISUBRO = ',3(A4,2X),A4)
25924        CALL DPWRST('XXX','BUG ')
25925        WRITE(ICOUT,53)ICASPL,IAND1,IAND2,MAXN,NS
25926   53   FORMAT('ICASPL,IAND1,IAND2,MAXN,NS = ',3(A4,2X),2I8)
25927        CALL DPWRST('XXX','BUG ')
25928      ENDIF
25929C
25930C               ***************************
25931C               **  STEP 1--             **
25932C               **  EXTRACT THE COMMAND  **
25933C               ***************************
25934C
25935      ISTEPN='11'
25936      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'YACB')
25937     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
25938C
25939      IF(NUMARG.GE.2.AND.IHARG(1).EQ.'CUBE'.AND.
25940     1   IHARG(2).EQ.'PLOT')THEN
25941        IFOUND='YES'
25942        ILASTC=2
25943      ELSE
25944        GOTO9000
25945      ENDIF
25946      CALL ADJUST(ILASTC,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG)
25947C
25948C               ****************************************
25949C               **  STEP 2--                          **
25950C               **  EXTRACT THE VARIABLE LIST         **
25951C               ****************************************
25952C
25953      ISTEPN='2'
25954      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'YACB')
25955     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
25956C
25957      INAME='YATES CUBE PLOT'
25958      MINNA=1
25959      MAXNA=100
25960      MINN2=1
25961      IFLAGE=1
25962      IFLAGM=0
25963      IFLAGP=0
25964      JMIN=1
25965      JMAX=NUMARG
25966      MINNVA=4
25967      MAXNVA=4
25968C
25969      CALL DPPARS(IHARG,IHARG2,IARGT,ARG,NUMARG,IANS,IWIDTH,
25970     1            IHNAME,IHNAM2,IUSE,NUMNAM,IN,IVALUE,VALUE,
25971     1            JMIN,JMAX,
25972     1            MINN2,MINNA,MAXNA,MAXSPN,IFLAGE,INAME,
25973     1            IVARN1,IVARN2,IVARTY,PVAR,
25974     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,ILOCQ,NUMVAR,
25975     1            MINNVA,MAXNVA,
25976     1            IFLAGM,IFLAGP,
25977     1            IBUGG3,IBUGQ,ISUBRO,IFOUND,IERROR)
25978      IF(IERROR.EQ.'YES')GOTO9000
25979C
25980      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'YACB')THEN
25981        WRITE(ICOUT,999)
25982        CALL DPWRST('XXX','BUG ')
25983        WRITE(ICOUT,281)
25984  281   FORMAT('***** AFTER CALL DPPARS--')
25985        CALL DPWRST('XXX','BUG ')
25986        WRITE(ICOUT,282)NQ,NUMVAR
25987  282   FORMAT('NQ,NUMVAR = ',2I8)
25988        CALL DPWRST('XXX','BUG ')
25989        IF(NUMVAR.GT.0)THEN
25990          DO285I=1,NUMVAR
25991            WRITE(ICOUT,287)I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),
25992     1                      ICOLR(I),IVARTY(I)
25993  287       FORMAT('I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),',
25994     1             'ICOLR(I),IVARTY(I) = ',I8,2X,A4,A4,2X,3I8,2X,A4)
25995            CALL DPWRST('XXX','BUG ')
25996  285     CONTINUE
25997        ENDIF
25998      ENDIF
25999C
26000C               **********************************************
26001C               **  STEP 33--                               **
26002C               **  FORM THE SUBSETTED VARIABLES            **
26003C               **********************************************
26004C
26005      ISTEPN='33'
26006      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'YACB')
26007     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
26008C
26009      ICOL=1
26010      CALL DPPAR5(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
26011     1            INAME,IVARN1,IVARN2,IVARTY,
26012     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVAR,
26013     1            MAXCOL,MAXCP1,MAXCP2,MAXCP3,
26014     1            MAXCP4,MAXCP5,MAXCP6,
26015     1            V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
26016     1            YRES,X1,X2,X3,TEMP1,TEMP1,TEMP1,N,
26017     1            IBUGG3,ISUBRO,IFOUND,IERROR)
26018      IF(IERROR.EQ.'YES')GOTO9000
26019C
26020C               *******************************************************
26021C               **  STEP 8--                                         **
26022C               **  FORM THE VERTICAL AND HORIZONTAL AXIS            **
26023C               **  VALUES Y(.) AND X(.) FOR THE PLOT.               **
26024C               **  DEFINE THE NUMBER OF PLOT POINTS    (NPLOTP).    **
26025C               **  DEFINE THE NUMBER OF PLOT VARIABLES (NPLOTV).    **
26026C               *******************************************************
26027C
26028      ISTEPN='5'
26029      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'YACB')THEN
26030        CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
26031        WRITE(ICOUT,5001)N,ICASPL
26032 5001   FORMAT('N,ICASPL=',I8,1X,A4)
26033        CALL DPWRST('XXX','BUG ')
26034      ENDIF
26035C
26036      CALL DPYAC2(YRES,X1,X2,X3,N,ICASPL,NUMV2,
26037     1            TEMP1,TEMP2,TEMP3,TEMP4,
26038     1            Y,X,D,X3D,DSIZE,
26039     1            N2,NPLOTV,IBUGG3,ISUBRO,IERROR)
26040      NPLOTP=N2
26041C
26042C               *****************
26043C               **  STEP 9--   **
26044C               **  EXIT       **
26045C               *****************
26046C
26047 9000 CONTINUE
26048      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'YACB')THEN
26049        WRITE(ICOUT,999)
26050        CALL DPWRST('XXX','BUG ')
26051        WRITE(ICOUT,9011)
26052 9011   FORMAT('***** AT THE END       OF DPYACB--')
26053        CALL DPWRST('XXX','BUG ')
26054        WRITE(ICOUT,9013)IFOUND,IERROR
26055 9013   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
26056        CALL DPWRST('XXX','BUG ')
26057        WRITE(ICOUT,9014)NPLOTV,NPLOTP,N,ICASPL,IAND1,IAND2
26058 9014   FORMAT('NPLOTV,NPLOTP,N,ICASPL,IAND1,IAND2 = ',
26059     1         3I8,2X,2(A4,2X),A4)
26060        CALL DPWRST('XXX','BUG ')
26061      ENDIF
26062C
26063      RETURN
26064      END
26065      SUBROUTINE DPYAC2(YRES,X1,X2,X3,N,ICASPL,NUMV2,
26066     1                  TEMP1,TEMP2,TEMP3,TEMP4,
26067     1                  Y,X,D,X3D,DSIZE,
26068     1                  NPLOTP,NPLOTV,IBUGG3,ISUBRO,IERROR)
26069C
26070C     PURPOSE--GENERATE A PAIR OF COORDINATE VECTORS
26071C              THAT WILL DEFINE
26072C              A YATES CUBE PLOT
26073C     WRITTEN BY--JAMES J. FILLIBEN
26074C                 STATISTICAL ENGINEERING DIVISION
26075C                 INFORMATION TECHNOLOGY LABORATORY
26076C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26077C                 GAITHERSBURG, MD 20899-8980
26078C                 PHONE--301-975-2855
26079C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
26080C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
26081C     LANGUAGE--ANSI FORTRAN (1977)
26082C     VERSION NUMBER--2000/12
26083C     ORIGINAL VERSION--JANUARY   2000.
26084C
26085C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
26086C
26087      CHARACTER*4 ICASPL
26088      CHARACTER*4 IBUGG3
26089      CHARACTER*4 ISUBRO
26090      CHARACTER*4 IERROR
26091C
26092      CHARACTER*4 IWRITE
26093CCCCC CHARACTER*4 ICONC
26094      CHARACTER*4 ISUBN1
26095      CHARACTER*4 ISUBN2
26096C
26097C---------------------------------------------------------------------
26098C
26099      DIMENSION YRES(*)
26100      DIMENSION X1(*)
26101      DIMENSION X2(*)
26102      DIMENSION X3(*)
26103C
26104      DIMENSION TEMP1(*)
26105      DIMENSION TEMP2(*)
26106      DIMENSION TEMP3(*)
26107      DIMENSION TEMP4(*)
26108C
26109      DIMENSION Y(*)
26110      DIMENSION X(*)
26111      DIMENSION D(*)
26112      DIMENSION X3D(*)
26113      DIMENSION DSIZE(*)
26114C
26115      DIMENSION V1(8)
26116      DIMENSION V2(8)
26117      DIMENSION V3(8)
26118      DIMENSION AX1OF(8)
26119      DIMENSION AX2OF(8)
26120      DIMENSION AX3OF(8)
26121      DIMENSION ZX1(8)
26122      DIMENSION ZX2(8)
26123      DIMENSION ZX3(8)
26124C
26125C---------------------------------------------------------------------
26126C
26127      INCLUDE 'DPCOP2.INC'
26128C
26129      DATA V1 /-1.0, +1.0, -1.0, +1.0, -1.0, +1.0, -1.0, +1.0 /
26130      DATA V2 /-1.0, -1.0, +1.0, +1.0, -1.0, -1.0, +1.0, +1.0 /
26131      DATA V3 /-1.0, -1.0, -1.0, -1.0, +1.0, +1.0, +1.0, +1.0 /
26132      DATA AX1OF /-0.1,  0.1, -0.1,  0.1,  0.1,  0.1,  0.1,  0.1 /
26133      DATA AX2OF / 0.1,  0.1,  0.0,  0.0,  0.2,  0.0,  0.0,  0.0 /
26134      DATA AX3OF / 0.0, -0.1,  0.1, -0.1,  0.2,  0.1,  0.1,  0.0 /
26135      DATA ZX1   / 0.0,  1.0,  0.0,  1.0,  0.0,  1.0,  0.0,  1.0 /
26136      DATA ZX2   / 1.0,  1.0,  1.0,  1.0,  0.0,  0.0,  0.0,  0.0 /
26137      DATA ZX3   / 0.0,  0.0,  1.0,  1.0,  0.0,  0.0,  1.0,  1.0 /
26138C
26139C-----START POINT-----------------------------------------------------
26140C
26141      ISUBN1='DPYA'
26142      ISUBN2='C2  '
26143      IWRITE='OFF'
26144C
26145      IERROR='NO'
26146C
26147C               ********************************************
26148C               **  STEP 1--                              **
26149C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
26150C               ********************************************
26151C
26152      IF(N.LT.1)THEN
26153        WRITE(ICOUT,999)
26154  999   FORMAT(1X)
26155        CALL DPWRST('XXX','BUG ')
26156        WRITE(ICOUT,31)
26157   31   FORMAT('***** ERROR IN YATES CUBE PLOT--')
26158        CALL DPWRST('XXX','BUG ')
26159        WRITE(ICOUT,32)
26160   32   FORMAT('      THE NUMBER OF OBSERVATIONS IS NON-POSITIVE.')
26161        CALL DPWRST('XXX','BUG ')
26162        WRITE(ICOUT,34)N
26163   34   FORMAT('      THE ENTERED NUMBER OF OBSERVATIONS HERE = ',I6)
26164        CALL DPWRST('XXX','BUG ')
26165        WRITE(ICOUT,999)
26166        CALL DPWRST('XXX','BUG ')
26167        IERROR='YES'
26168        GOTO9000
26169      ENDIF
26170C
26171      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'YAC2')THEN
26172        WRITE(ICOUT,999)
26173        CALL DPWRST('XXX','BUG ')
26174        WRITE(ICOUT,71)
26175   71   FORMAT('***** AT THE BEGINNING OF DPYAC2--')
26176        CALL DPWRST('XXX','BUG ')
26177        WRITE(ICOUT,72)ICASPL,N,N2,NPLOTV,NUMV2
26178   72   FORMAT('ICASPL,N,N2,NPLOTV,NUMV2 = ',A4,2X,4I8)
26179        CALL DPWRST('XXX','BUG ')
26180      ENDIF
26181C
26182C               ****************************************
26183C               **  STEP 4--                          **
26184C               **  STEP THROUGH EACH FACTOR VARIABLE **
26185C               **  AND DETERMINE IF THERE ARE 2      **
26186C               **  DISTINCT ELEMENTS.                **
26187C               ****************************************
26188C
26189      IERROR='NO'
26190      CALL DISTIN(X1,N,IWRITE,TEMP4,N1,IBUGG3,IERROR)
26191      IF(IERROR.EQ.'YES')GOTO9000
26192      IF(N1.NE.2)THEN
26193        WRITE(ICOUT,999)
26194        CALL DPWRST('XXX','BUG ')
26195        WRITE(ICOUT,31)
26196        CALL DPWRST('XXX','BUG ')
26197        WRITE(ICOUT,103)
26198  103   FORMAT('      FIRST FACTOR VARIABLE HAS ',I8,' DISTINCT ',
26199     1         'VALUES.')
26200        CALL DPWRST('XXX','BUG ')
26201        IERROR='YES'
26202        GOTO9000
26203      ELSE
26204        IF(TEMP4(1).LE.TEMP4(2))THEN
26205          ALOW=TEMP4(1)
26206          AHIGH=TEMP4(2)
26207        ELSE
26208          ALOW=TEMP4(2)
26209          AHIGH=TEMP4(1)
26210        ENDIF
26211        DO109I=1,N
26212          TEMP1(I)=-1.0
26213          ATEMP=ABS(X1(I)-AHIGH)
26214          IF(ATEMP.LE.0.0005)TEMP1(I)=1.0
26215  109   CONTINUE
26216      ENDIF
26217C
26218      IERROR='NO'
26219      CALL DISTIN(X2,N,IWRITE,TEMP4,N2,IBUGG3,IERROR)
26220      IF(IERROR.EQ.'YES')GOTO9000
26221      IF(N2.NE.2)THEN
26222        WRITE(ICOUT,999)
26223        CALL DPWRST('XXX','BUG ')
26224        WRITE(ICOUT,31)
26225        CALL DPWRST('XXX','BUG ')
26226        WRITE(ICOUT,113)
26227  113   FORMAT('      SECOND FACTOR VARIABLE HAS ',I8,' DISTINCT ',
26228     1         'VALUES.')
26229        CALL DPWRST('XXX','BUG ')
26230        IERROR='YES'
26231        GOTO9000
26232      ELSE
26233        IF(TEMP4(1).LE.TEMP4(2))THEN
26234          ALOW=TEMP4(1)
26235          AHIGH=TEMP4(2)
26236        ELSE
26237          ALOW=TEMP4(2)
26238          AHIGH=TEMP4(1)
26239        ENDIF
26240        DO119I=1,N
26241          TEMP2(I)=-1.0
26242          ATEMP=ABS(X2(I)-AHIGH)
26243          IF(ATEMP.LE.0.0005)TEMP2(I)=1.0
26244  119   CONTINUE
26245      ENDIF
26246C
26247      IERROR='NO'
26248      CALL DISTIN(X3,N,IWRITE,TEMP4,N3,IBUGG3,IERROR)
26249      IF(IERROR.EQ.'YES')GOTO9000
26250      IF(N3.NE.2)THEN
26251        WRITE(ICOUT,999)
26252        CALL DPWRST('XXX','BUG ')
26253        WRITE(ICOUT,31)
26254        CALL DPWRST('XXX','BUG ')
26255        WRITE(ICOUT,123)
26256  123   FORMAT('      THIRD FACTOR VARIABLE HAS ',I8,' DISTINCT ',
26257     1         'VALUES.')
26258        CALL DPWRST('XXX','BUG ')
26259        IERROR='YES'
26260        GOTO9000
26261      ELSE
26262        IF(TEMP4(1).LE.TEMP4(2))THEN
26263          ALOW=TEMP4(1)
26264          AHIGH=TEMP4(2)
26265        ELSE
26266          ALOW=TEMP4(2)
26267          AHIGH=TEMP4(1)
26268        ENDIF
26269        DO129I=1,N
26270          TEMP3(I)=-1.0
26271          ATEMP=ABS(X3(I)-AHIGH)
26272          IF(ATEMP.LE.0.0005)TEMP3(I)=1.0
26273  129   CONTINUE
26274      ENDIF
26275C
26276C               ****************************************
26277C               **  STEP 5--                          **
26278C               **  LOOP THROUGH 8 POTENTIAL VERTICES **
26279C               **    -1 -1 -1                        **
26280C               **    -1 -1  1                        **
26281C               **    -1  1 -1                        **
26282C               **    -1  1  1                        **
26283C               **     1 -1 -1                        **
26284C               **     1 -1  1                        **
26285C               **     1  1 -1                        **
26286C               **     1  1  1                        **
26287C               **  AND COMPUTE PLOT POINTS           **
26288C               ****************************************
26289C
26290      ATOL=0.0005
26291      NPLOTP=0
26292      ITAG=0
26293      DO200I=1,8
26294        AX1=V1(I)
26295        AX2=V2(I)
26296        AX3=V3(I)
26297        NMTCH=0
26298        DO210J=1,N
26299          IF(AX1.EQ.TEMP1(J).AND.AX2.EQ.TEMP2(J).AND.AX3.EQ.TEMP3(J))
26300     1      THEN
26301            NMTCH=NMTCH+1
26302            TEMP4(NMTCH)=YRES(J)
26303          ENDIF
26304  210   CONTINUE
26305        IF(NMTCH.GT.0)THEN
26306          CALL MEAN(TEMP4,NMTCH,IWRITE,AMU,IBUGG3,IERROR)
26307CCCCC     ITAG=ITAG+1
26308          NPLOTP=NPLOTP+1
26309          X(NPLOTP)=ZX1(I)+AX1OF(I)
26310          X3D(NPLOTP)=ZX2(I)+AX2OF(I)
26311          Y(NPLOTP)=ZX3(I)+AX3OF(I)
26312          D(NPLOTP)=REAL(ITAG)
26313          DSIZE(NPLOTP)=AMU
26314        ENDIF
26315  200 CONTINUE
26316C
26317C               ****************************************
26318C               **  STEP 5--                          **
26319C               **  GENERATE THE 6 FACES OF THE CUBE **
26320C               ****************************************
26321      ITAG=ITAG+1
26322      NPLOTP=NPLOTP+1
26323      X(NPLOTP)=0.0
26324      Y(NPLOTP)=0.0
26325      X3D(NPLOTP)=0.0
26326      D(NPLOTP)=REAL(ITAG)
26327      NPLOTP=NPLOTP+1
26328      X(NPLOTP)=1.0
26329      X3D(NPLOTP)=0.0
26330      Y(NPLOTP)=0.0
26331      D(NPLOTP)=REAL(ITAG)
26332      NPLOTP=NPLOTP+1
26333      X(NPLOTP)=1.0
26334      X3D(NPLOTP)=0.0
26335      Y(NPLOTP)=1.0
26336      D(NPLOTP)=REAL(ITAG)
26337      NPLOTP=NPLOTP+1
26338      X(NPLOTP)=0.0
26339      X3D(NPLOTP)=0.0
26340      Y(NPLOTP)=1.0
26341      D(NPLOTP)=REAL(ITAG)
26342      NPLOTP=NPLOTP+1
26343      X(NPLOTP)=0.0
26344      X3D(NPLOTP)=0.0
26345      Y(NPLOTP)=0.0
26346      D(NPLOTP)=REAL(ITAG)
26347C
26348      ITAG=ITAG+1
26349      NPLOTP=NPLOTP+1
26350      X(NPLOTP)=0.0
26351      X3D(NPLOTP)=0.0
26352      Y(NPLOTP)=0.0
26353      D(NPLOTP)=REAL(ITAG)
26354      NPLOTP=NPLOTP+1
26355      X(NPLOTP)=0.0
26356      X3D(NPLOTP)=1.0
26357      Y(NPLOTP)=0.0
26358      D(NPLOTP)=REAL(ITAG)
26359      NPLOTP=NPLOTP+1
26360      X(NPLOTP)=0.0
26361      X3D(NPLOTP)=1.0
26362      Y(NPLOTP)=1.0
26363      D(NPLOTP)=REAL(ITAG)
26364      NPLOTP=NPLOTP+1
26365      X(NPLOTP)=0.0
26366      X3D(NPLOTP)=0.0
26367      Y(NPLOTP)=1.0
26368      D(NPLOTP)=REAL(ITAG)
26369      NPLOTP=NPLOTP+1
26370      X(NPLOTP)=0.0
26371      X3D(NPLOTP)=0.0
26372      Y(NPLOTP)=0.0
26373      D(NPLOTP)=REAL(ITAG)
26374C
26375      ITAG=ITAG+1
26376      NPLOTP=NPLOTP+1
26377      X(NPLOTP)=1.0
26378      X3D(NPLOTP)=0.0
26379      Y(NPLOTP)=0.0
26380      D(NPLOTP)=REAL(ITAG)
26381      NPLOTP=NPLOTP+1
26382      X(NPLOTP)=1.0
26383      X3D(NPLOTP)=1.0
26384      Y(NPLOTP)=0.0
26385      D(NPLOTP)=REAL(ITAG)
26386      NPLOTP=NPLOTP+1
26387      X(NPLOTP)=1.0
26388      X3D(NPLOTP)=1.0
26389      Y(NPLOTP)=1.0
26390      D(NPLOTP)=REAL(ITAG)
26391      NPLOTP=NPLOTP+1
26392      X(NPLOTP)=1.0
26393      X3D(NPLOTP)=0.0
26394      Y(NPLOTP)=1.0
26395      D(NPLOTP)=REAL(ITAG)
26396      NPLOTP=NPLOTP+1
26397      X(NPLOTP)=1.0
26398      X3D(NPLOTP)=0.0
26399      Y(NPLOTP)=0.0
26400      D(NPLOTP)=REAL(ITAG)
26401C
26402      ITAG=ITAG+1
26403      NPLOTP=NPLOTP+1
26404      X(NPLOTP)=0.0
26405      X3D(NPLOTP)=1.0
26406      Y(NPLOTP)=0.0
26407      D(NPLOTP)=REAL(ITAG)
26408      NPLOTP=NPLOTP+1
26409      X(NPLOTP)=1.0
26410      X3D(NPLOTP)=1.0
26411      Y(NPLOTP)=0.0
26412      D(NPLOTP)=REAL(ITAG)
26413      NPLOTP=NPLOTP+1
26414      X(NPLOTP)=1.0
26415      X3D(NPLOTP)=1.0
26416      Y(NPLOTP)=1.0
26417      D(NPLOTP)=REAL(ITAG)
26418      NPLOTP=NPLOTP+1
26419      X(NPLOTP)=0.0
26420      X3D(NPLOTP)=1.0
26421      Y(NPLOTP)=1.0
26422      D(NPLOTP)=REAL(ITAG)
26423      NPLOTP=NPLOTP+1
26424      X(NPLOTP)=0.0
26425      X3D(NPLOTP)=1.0
26426      Y(NPLOTP)=0.0
26427      D(NPLOTP)=REAL(ITAG)
26428C
26429      ITAG=ITAG+1
26430      NPLOTP=NPLOTP+1
26431      X(NPLOTP)=0.0
26432      X3D(NPLOTP)=0.0
26433      Y(NPLOTP)=0.0
26434      D(NPLOTP)=REAL(ITAG)
26435      NPLOTP=NPLOTP+1
26436      X(NPLOTP)=1.0
26437      X3D(NPLOTP)=0.0
26438      Y(NPLOTP)=0.0
26439      D(NPLOTP)=REAL(ITAG)
26440      NPLOTP=NPLOTP+1
26441      X(NPLOTP)=1.0
26442      X3D(NPLOTP)=1.0
26443      Y(NPLOTP)=0.0
26444      D(NPLOTP)=REAL(ITAG)
26445      NPLOTP=NPLOTP+1
26446      X(NPLOTP)=0.0
26447      X3D(NPLOTP)=1.0
26448      Y(NPLOTP)=0.0
26449      D(NPLOTP)=REAL(ITAG)
26450      NPLOTP=NPLOTP+1
26451      X(NPLOTP)=0.0
26452      X3D(NPLOTP)=0.0
26453      Y(NPLOTP)=0.0
26454      D(NPLOTP)=REAL(ITAG)
26455C
26456      ITAG=ITAG+1
26457      NPLOTP=NPLOTP+1
26458      X(NPLOTP)=0.0
26459      X3D(NPLOTP)=0.0
26460      Y(NPLOTP)=1.0
26461      D(NPLOTP)=REAL(ITAG)
26462      NPLOTP=NPLOTP+1
26463      X(NPLOTP)=1.0
26464      X3D(NPLOTP)=0.0
26465      Y(NPLOTP)=1.0
26466      D(NPLOTP)=REAL(ITAG)
26467      NPLOTP=NPLOTP+1
26468      X(NPLOTP)=1.0
26469      X3D(NPLOTP)=1.0
26470      Y(NPLOTP)=1.0
26471      D(NPLOTP)=REAL(ITAG)
26472      NPLOTP=NPLOTP+1
26473      X(NPLOTP)=0.0
26474      X3D(NPLOTP)=1.0
26475      Y(NPLOTP)=1.0
26476      D(NPLOTP)=REAL(ITAG)
26477      NPLOTP=NPLOTP+1
26478      X(NPLOTP)=0.0
26479      X3D(NPLOTP)=0.0
26480      Y(NPLOTP)=1.0
26481      D(NPLOTP)=REAL(ITAG)
26482C
26483      NPLOTV=3
26484C
26485C               *****************
26486C               **  STEP 90--  **
26487C               **  EXIT       **
26488C               *****************
26489C
26490 9000 CONTINUE
26491      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'YAC2')THEN
26492        WRITE(ICOUT,999)
26493        CALL DPWRST('XXX','BUG ')
26494        WRITE(ICOUT,9011)
26495 9011   FORMAT('***** AT THE END       OF DPYAC2--')
26496        CALL DPWRST('XXX','BUG ')
26497        WRITE(ICOUT,9012)ICASPL,N,N2,IERROR
26498 9012   FORMAT('ICASPL,N,N2,IERROR = ',A4,2I8,2X,A4)
26499        CALL DPWRST('XXX','BUG ')
26500        DO9035I=1,NPLOTP
26501          WRITE(ICOUT,9036)I,X(I),X3D(I),Y(I),D(I),DSIZE(I)
26502 9036     FORMAT('I,X(I),X3D(I),Y(I),D(I),DSIZE(I) = ',I5,5F10.5)
26503          CALL DPWRST('XXX','BUG ')
26504 9035   CONTINUE
26505      ENDIF
26506C
26507      RETURN
26508      END
26509      SUBROUTINE DPYACU(IHARG,IARGT,ARG,NUMARG,
26510     1YATCCU,YATTCU,YATRCU,IFOUND,IERROR)
26511C
26512C     PURPOSE--DEFINE THE YATES COEF/T/RESSD CUTOFF
26513C              THE SPECIFIED YATES COEF CUTOFF WILL BE PLACED
26514C              IN THE FLOATING POINT VARIABLES
26515C              YATCCU,YATTCU,YATRCU   RESPECTIVELY.
26516C     INPUT  ARGUMENTS--IHARG  (A  HOLLERITH VECTOR)
26517C                     --IARGT  (A  HOLLERITH VECTOR)
26518C                     --ARG    (A FLOATING POINT VECTOR)
26519C                     --NUMARG (AN INTEGER VARIABLE)
26520C     OUTPUT ARGUMENTS--YATCCU (A FLOATING POINT VARIABLE)
26521C                       YATTCU (A FLOATING POINT VARIABLE)
26522C                       YATRCU (A FLOATING POINT VARIABLE)
26523C                     --IFOUND ('YES' OR 'NO' )
26524C                     --IERROR ('YES' OR 'NO' )
26525C     WRITTEN BY--JAMES J. FILLIBEN
26526C                 STATISTICAL ENGINEERING DIVISION
26527C                 INFORMATION TECHNOLOGY LABORATORY
26528C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26529C                 GAITHERSBURG, MD 20899-8980
26530C                 PHONE--301-975-2899
26531C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
26532C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
26533C     LANGUAGE--ANSI FORTRAN (1977)
26534C     VERSION NUMBER--89/12
26535C     ORIGINAL VERSION--NOVEMBER  1989.
26536C
26537C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
26538C
26539      CHARACTER*4 IHARG
26540      CHARACTER*4 IARGT
26541      CHARACTER*4 IFOUND
26542      CHARACTER*4 IERROR
26543C
26544C---------------------------------------------------------------------
26545C
26546      DIMENSION IHARG(*)
26547      DIMENSION IARGT(*)
26548      DIMENSION ARG(*)
26549C
26550C---------------------------------------------------------------------
26551C
26552      INCLUDE 'DPCOP2.INC'
26553C
26554C-----START POINT-----------------------------------------------------
26555C
26556      IFOUND='NO'
26557      IERROR='NO'
26558C
26559      IF(NUMARG.LE.1)GOTO9000
26560      IF(IHARG(1).EQ.'COEF')GOTO1110
26561      IF(IHARG(1).EQ.'T')GOTO1110
26562      IF(IHARG(1).EQ.'RESS')GOTO1110
26563      GOTO9000
26564C
26565 1110 CONTINUE
26566      IF(IHARG(NUMARG).EQ.'CUTO')GOTO1150
26567      IF(IHARG(NUMARG).EQ.'ON')GOTO1150
26568      IF(IHARG(NUMARG).EQ.'OFF')GOTO1150
26569      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150
26570      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150
26571      IF(IARGT(NUMARG).EQ.'NUMB')GOTO1160
26572      IF(IHARG(NUMARG).EQ.'?')GOTO8100
26573      GOTO1120
26574C
26575 1120 CONTINUE
26576      IERROR='YES'
26577      WRITE(ICOUT,1121)
26578 1121 FORMAT('***** ERROR IN DPYACU--')
26579      CALL DPWRST('XXX','BUG ')
26580      WRITE(ICOUT,1122)
26581 1122 FORMAT('      ILLEGAL FORM FOR YATES ... CUTOFF ',
26582     1'COMMAND.')
26583      CALL DPWRST('XXX','BUG ')
26584      WRITE(ICOUT,1124)
26585 1124 FORMAT('      EXAMPLES OF ALLOWABLE FORMS--')
26586      CALL DPWRST('XXX','BUG ')
26587      WRITE(ICOUT,1131)
26588 1131 FORMAT('          YATES COEF  CUTOFF 10')
26589      CALL DPWRST('XXX','BUG ')
26590      WRITE(ICOUT,1132)
26591 1132 FORMAT('          YATES T     CUTOFF 1')
26592      CALL DPWRST('XXX','BUG ')
26593      WRITE(ICOUT,1133)
26594 1133 FORMAT('          YATES RESSD CUTOFF .5')
26595      CALL DPWRST('XXX','BUG ')
26596      WRITE(ICOUT,1134)
26597 1134 FORMAT('      THE DEFAULT YATES COEF  CUTOFF ',
26598     1'IS INFINITY')
26599      CALL DPWRST('XXX','BUG ')
26600      WRITE(ICOUT,1135)
26601 1135 FORMAT('      THE DEFAULT YATES T     CUTOFF ',
26602     1'IS INFINITY')
26603      CALL DPWRST('XXX','BUG ')
26604      WRITE(ICOUT,1136)
26605 1136 FORMAT('      THE DEFAULT YATES RESSD CUTOFF ',
26606     1'IS INFINITY')
26607      CALL DPWRST('XXX','BUG ')
26608      GOTO9000
26609C
26610 1150 CONTINUE
26611      HOLD=CPUMAX
26612      GOTO1180
26613C
26614 1160 CONTINUE
26615      HOLD=ARG(NUMARG)
26616      GOTO1180
26617C
26618 1180 CONTINUE
26619      IFOUND='YES'
26620      IF(IHARG(1).EQ.'COEF')YATCCU=HOLD
26621      IF(IHARG(1).EQ.'T')YATTCU=HOLD
26622      IF(IHARG(1).EQ.'RESS')YATRCU=HOLD
26623C
26624      IF(IFEEDB.EQ.'OFF')GOTO1189
26625      WRITE(ICOUT,999)
26626  999 FORMAT(1X)
26627      CALL DPWRST('XXX','BUG ')
26628      IF(IHARG(1).EQ.'COEF')
26629     1WRITE(ICOUT,1181)YATCCU
26630 1181 FORMAT('THE YATES COEFFICIENT CUTOFF HAS JUST BEEN SET TO ',
26631     1E15.7)
26632      IF(IHARG(1).EQ.'COEF')
26633     1CALL DPWRST('XXX','BUG ')
26634      IF(IHARG(1).EQ.'T')
26635     1WRITE(ICOUT,1182)YATTCU
26636 1182 FORMAT('THE YATES T-VALUE CUTOFF HAS JUST BEEN SET TO ',
26637     1E15.7)
26638      IF(IHARG(1).EQ.'T')
26639     1CALL DPWRST('XXX','BUG ')
26640      IF(IHARG(1).EQ.'RESS')
26641     1WRITE(ICOUT,1183)
26642 1183 FORMAT('THE YATES RESIDUAL STANDARD DEVIATION CUTOFF ')
26643      IF(IHARG(1).EQ.'RESS')
26644     1CALL DPWRST('XXX','BUG ')
26645      IF(IHARG(1).EQ.'RESS')
26646     1WRITE(ICOUT,1184)YATRCU
26647 1184 FORMAT('HAS JUST BEEN SET TO ', E15.7)
26648      IF(IHARG(1).EQ.'RESS')
26649     1CALL DPWRST('XXX','BUG ')
26650 1189 CONTINUE
26651      GOTO9000
26652C
26653C               ********************************************
26654C               **  STEP 81--                             **
26655C               **  TREAT THE    ?    CASE--              **
26656C               **  DUMP OUT CURRENT AND DEFAULT VALUES.  **
26657C               ********************************************
26658C
26659 8100 CONTINUE
26660      IFOUND='YES'
26661      WRITE(ICOUT,999)
26662      CALL DPWRST('XXX','BUG ')
26663C
26664      IF(IHARG(1).EQ.'COEF')
26665     1WRITE(ICOUT,8111)YATCCU
26666 8111 FORMAT('THE CURRENT YATES COEFFICIENT CUTOFF IS ',E15.7)
26667      IF(IHARG(1).EQ.'COEF')
26668     1CALL DPWRST('XXX','BUG ')
26669      IF(IHARG(1).EQ.'COEF')
26670     1WRITE(ICOUT,8112)
26671 8112 FORMAT('THE DEFAULT YATES COEFFICIENT CUTOFF IS INFINITY')
26672      IF(IHARG(1).EQ.'COEF')
26673     1CALL DPWRST('XXX','BUG ')
26674C
26675      IF(IHARG(1).EQ.'T')
26676     1WRITE(ICOUT,8113)YATTCU
26677 8113 FORMAT('THE CURRENT YATES T-VALUE CUTOFF IS ',E15.7)
26678      IF(IHARG(1).EQ.'T')
26679     1CALL DPWRST('XXX','BUG ')
26680      IF(IHARG(1).EQ.'T')
26681     1WRITE(ICOUT,8114)
26682 8114 FORMAT('THE DEFAULT YATES T-VALUE CUTOFF IS INFINITY')
26683      IF(IHARG(1).EQ.'T')
26684     1CALL DPWRST('XXX','BUG ')
26685C
26686      IF(IHARG(1).EQ.'RESS')
26687     1WRITE(ICOUT,8115)YATRCU
26688 8115 FORMAT('THE CURRENT YATES RES. SD. CUTOFF IS ',E15.7)
26689      IF(IHARG(1).EQ.'RESS')
26690     1CALL DPWRST('XXX','BUG ')
26691      IF(IHARG(1).EQ.'RESS')
26692     1WRITE(ICOUT,8116)
26693 8116 FORMAT('THE DEFAULT YATES RES. SD. CUTOFF IS INFINITY')
26694      IF(IHARG(1).EQ.'RESS')
26695     1CALL DPWRST('XXX','BUG ')
26696C
26697      GOTO9000
26698C
26699 9000 CONTINUE
26700      RETURN
26701      END
26702      SUBROUTINE DPYAOU(IHARG,NUMARG,
26703     1IYATOS,IFOUND,IERROR)
26704C
26705C     PURPOSE--DEFINE THE YATES COEF/T/RESSD CUTOFF
26706C              THE SPECIFIED YATES COEF CUTOFF WILL BE PLACED
26707C              IN THE CHARACTER VARIABLE IYATOS.
26708C     INPUT  ARGUMENTS--IHARG  (A  HOLLERITH VECTOR)
26709C                     --NUMARG (AN INTEGER VARIABLE)
26710C     OUTPUT ARGUMENTS--IYATOS (A CHARACTER VARIABLE)
26711C                     --IFOUND ('YES' OR 'NO' )
26712C                     --IERROR ('YES' OR 'NO' )
26713C     WRITTEN BY--JAMES J. FILLIBEN
26714C                 STATISTICAL ENGINEERING DIVISION
26715C                 INFORMATION TECHNOLOGY LABORATORY
26716C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26717C                 GAITHERSBURG, MD 20899-8980
26718C                 PHONE--301-975-2899
26719C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
26720C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
26721C     LANGUAGE--ANSI FORTRAN (1977)
26722C     VERSION NUMBER--89/12
26723C     ORIGINAL VERSION--NOVEMBER  1989.
26724C
26725C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
26726C
26727      CHARACTER*4 IHARG
26728      CHARACTER*4 IYATOS
26729      CHARACTER*4 IHOLD
26730      CHARACTER*4 IFOUND
26731      CHARACTER*4 IERROR
26732C
26733C---------------------------------------------------------------------
26734C
26735      DIMENSION IHARG(*)
26736C
26737C---------------------------------------------------------------------
26738C
26739      INCLUDE 'DPCOP2.INC'
26740C
26741C-----START POINT-----------------------------------------------------
26742C
26743      IFOUND='NO'
26744      IERROR='NO'
26745C
26746      IF(NUMARG.LE.0)GOTO9000
26747      IF(IHARG(1).EQ.'OUTP')GOTO1110
26748      GOTO9000
26749C
26750 1110 CONTINUE
26751      IF(IHARG(NUMARG).EQ.'OUTP')GOTO1150
26752      IF(IHARG(NUMARG).EQ.'ON')GOTO1150
26753      IF(IHARG(NUMARG).EQ.'OFF')GOTO1150
26754      IF(IHARG(NUMARG).EQ.'AUTO')GOTO1150
26755      IF(IHARG(NUMARG).EQ.'DEFA')GOTO1150
26756      IF(IHARG(NUMARG).EQ.'?')GOTO8100
26757      GOTO1160
26758C
26759 1150 CONTINUE
26760      IHOLD='123'
26761      GOTO1180
26762C
26763 1160 CONTINUE
26764      IHOLD=IHARG(NUMARG)
26765      GOTO1180
26766C
26767 1180 CONTINUE
26768      IFOUND='YES'
26769      IYATOS=IHOLD
26770C
26771      IF(IFEEDB.EQ.'OFF')GOTO1189
26772      WRITE(ICOUT,999)
26773  999 FORMAT(1X)
26774      CALL DPWRST('XXX','BUG ')
26775      WRITE(ICOUT,1181)IYATOS
26776 1181 FORMAT('THE YATES SWITCH HAS JUST BEEN SET TO ',A4)
26777      CALL DPWRST('XXX','BUG ')
26778 1189 CONTINUE
26779      GOTO9000
26780C
26781C               ********************************************
26782C               **  STEP 81--                             **
26783C               **  TREAT THE    ?    CASE--              **
26784C               **  DUMP OUT CURRENT AND DEFAULT VALUES.  **
26785C               ********************************************
26786C
26787 8100 CONTINUE
26788      IFOUND='YES'
26789      WRITE(ICOUT,999)
26790      CALL DPWRST('XXX','BUG ')
26791C
26792      WRITE(ICOUT,8111)IYATOS
26793 8111 FORMAT('THE CURRENT   YATES OUTPUT SWITCH IS ',A4)
26794      CALL DPWRST('XXX','BUG ')
26795      WRITE(ICOUT,8112)
26796 8112 FORMAT('THE DEFAULT   YATES OUTPUT SWITCH IS 123')
26797      CALL DPWRST('XXX','BUG ')
26798      WRITE(ICOUT,8113)
26799 8113 FORMAT('THE ALLOWABLE YATES OUTPUT SWITCH SETTINGS ARE')
26800      CALL DPWRST('XXX','BUG ')
26801      WRITE(ICOUT,8121)
26802 8121 FORMAT('    1     TO PRINT YATES OUTPUT SECTION 1 ONLY')
26803      CALL DPWRST('XXX','BUG ')
26804      WRITE(ICOUT,8122)
26805 8122 FORMAT('    2     TO PRINT YATES OUTPUT SECTION 2 ONLY')
26806      CALL DPWRST('XXX','BUG ')
26807      WRITE(ICOUT,8123)
26808 8123 FORMAT('    3     TO PRINT YATES OUTPUT SECTION 3 ONLY')
26809      CALL DPWRST('XXX','BUG ')
26810      WRITE(ICOUT,8124)
26811 8124 FORMAT('    12    TO PRINT YATES OUTPUT SECTIONS 1 & 2 ONLY')
26812      CALL DPWRST('XXX','BUG ')
26813      WRITE(ICOUT,8125)
26814 8125 FORMAT('    13    TO PRINT YATES OUTPUT SECTIONS 1 & 3 ONLY')
26815      CALL DPWRST('XXX','BUG ')
26816      WRITE(ICOUT,8126)
26817 8126 FORMAT('    23    TO PRINT YATES OUTPUT SECTIONS 2 & 3 ONLY')
26818      CALL DPWRST('XXX','BUG ')
26819      WRITE(ICOUT,8127)
26820 8127 FORMAT('    123   TO PRINT ALL 3 YATES OUTPUT SECTIONS')
26821      CALL DPWRST('XXX','BUG ')
26822      GOTO9000
26823C
26824 9000 CONTINUE
26825      RETURN
26826      END
26827      SUBROUTINE DPYATE(ICASAN,
26828     1                  ICAPSW,IFORSW,
26829     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
26830C
26831C     PURPOSE--CARRY OUT A YATES ANALYSIS
26832C              (USEFUL FOR COMPUTING THE EFFECTS IN A 2**K
26833C              AND A 2**(K-P) EXPERIMENT)
26834C     NOTE--THIS CODE ASSUMES THE DATA IS IN
26835C           STANDARD YATES/HUNTER/BOX ORDER.
26836C           FOR EXAMPLE, FOR A 2**3--
26837C                 - - -
26838C                 + - -
26839C                 - + -
26840C                 + + -
26841C                 - - +
26842C                 + - +
26843C                 - + +
26844C                 + + +
26845C     NOTE--IF HAVE REPLICATION, THEN THE REPLICATES
26846C           MAY EITHER BE IMMEDIATELY WITHIN
26847C           OR MAY BE IN BLOCKS AFTER.
26848C     EXAMPLE--YATES Y
26849C              YATES Y SET
26850C              YATES ANALYSIS Y
26851C              YATES ANALYSIS Y SET
26852C              DEX FIT Y
26853C              DEX FIT Y REP
26854C              2**K DEX FIT Y
26855C              2**K DEX FIT Y REP
26856C              + OTHER COMBINATIONS OF SYNONYMS
26857C     NOTE--IF THERE ARE NO REPLICATIONS IN THE DATA,
26858C           THEN THIS COMMAND TAKES 1 ARGUMENT.
26859C           IF HAVE REPLCATION,
26860C           THEN THIS COMMAND TAKES 2 ARGUMENTS
26861C     WRITTEN BY--JAMES J. FILLIBEN
26862C                 STATISTICAL ENGINEERING DIVISION
26863C                 INFORMATION TECHNOLOGY LABORATORY
26864C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26865C                 GAITHERSBURG, MD 20899-8980
26866C                 PHONE--301-975-2899
26867C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
26868C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
26869C     LANGUAGE--ANSI FORTRAN (1977)
26870C     VERSION NUMBER--87/7
26871C     ORIGINAL VERSION--JUNE      1987.
26872C     UPDATED         --JUNE      1989.  SYNONYM = (2**K) DEX FIT
26873C     UPDATED         --NOVEMBER  1989.  SELECTIVE PRINTING OF COEF
26874C     UPDATED         --JUNE      1990.  TEMPORARY ARRAYS TO GARBAGE COMMON
26875C                                        MOVE SOME DPYAT2 DIMENSIONS TO DPYATE
26876C     UPDATED         --NOVEMBER  1991.  ALLOW 2**1 ANALYSIS
26877C     UPDATED         --APRIL     1992. DEFINE CUTOFF
26878C     UPDATED         --APRIL     1992. DELETE MAXNPP
26879C     UPDATED         --APRIL     1992. DELETE NPLOTP,X(.),Y(.),D(.)
26880C     UPDATED         --OCTOBER   2003. SUPPORT FOR HTML, LATEX OUTPUT
26881C     UPDATED         --APRIL     2011. USE DPPARS AND DPPAR3
26882C     UPDATED         --SEPTEMBER 2012. FOLD IN PHD ANALYSIS (THIS DOES
26883C                                       YATES AND THEN SOME EXTRA)
26884C     UPDATED         --JULY      2019. TWEAK SCRATCH SPACE
26885C
26886C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
26887C
26888      CHARACTER*4 ICASAN
26889C
26890CCCCC THE FOLLOWING LINE WAS COMMENTED OUT   APRIL 1992
26891CCCCC CHARACTER*4 IANGLU
26892      CHARACTER*4 ICAPSW
26893      CHARACTER*4 IFORSW
26894      CHARACTER*4 IBUGA2
26895      CHARACTER*4 IBUGA3
26896      CHARACTER*4 IBUGQ
26897      CHARACTER*4 ISUBRO
26898      CHARACTER*4 IFOUND
26899      CHARACTER*4 IERROR
26900C
26901      CHARACTER*4 IH
26902      CHARACTER*4 IH2
26903      CHARACTER*4 IWRITE
26904      CHARACTER*4 ISUBN1
26905      CHARACTER*4 ISUBN2
26906      CHARACTER*4 ISTEPN
26907      CHARACTER*4 IPHDFL
26908C
26909      CHARACTER*4 ICASE
26910      CHARACTER*40 INAME
26911      PARAMETER (MAXSPN=10)
26912      CHARACTER*4 IVARN1(MAXSPN)
26913      CHARACTER*4 IVARN2(MAXSPN)
26914      CHARACTER*4 IVARTY(MAXSPN)
26915      REAL PVAR(MAXSPN)
26916      INTEGER ILIS(MAXSPN)
26917      INTEGER NRIGHT(MAXSPN)
26918      INTEGER ICOLR(MAXSPN)
26919C
26920C---------------------------------------------------------------------
26921C
26922      INCLUDE 'DPCOPA.INC'
26923CCCCC THE FOLLOWING LINE WAS ADDED   APRIL 1992 (ALAN)
26924      INCLUDE 'DPCOHO.INC'
26925CCCCC FOLLOWING LINES ADDED JUNE, 1990
26926      INCLUDE 'DPCOZZ.INC'
26927      INCLUDE 'DPCOZI.INC'
26928C
26929      DIMENSION Y1(MAXOBV)
26930      DIMENSION Y2(MAXOBV)
26931C
26932      DIMENSION COEF(MAXOBV)
26933      DIMENSION SSQCOE(MAXOBV)
26934      DIMENSION TCOEF(MAXOBV)
26935      DIMENSION RSDCOE(MAXOBV)
26936      DIMENSION TAGCOE(MAXOBV)
26937      DIMENSION TAGCO2(MAXOBV)
26938C
26939      DIMENSION REPD(MAXOBV)
26940      DIMENSION RSDCOC(MAXOBV)
26941      DIMENSION YMEAN(MAXOBV)
26942      DIMENSION YVAR(MAXOBV)
26943      DIMENSION DUMMY(MAXOBV)
26944      DIMENSION DUMMY2(MAXOBV)
26945      DIMENSION AINDEX(MAXOBV)
26946      DIMENSION AINDE2(MAXOBV)
26947      DIMENSION TEMP(MAXOBV)
26948C
26949      DIMENSION IFLAG(MAXOBV)
26950      DIMENSION ITAG(MAXOBV)
26951      DIMENSION ITAGCO(MAXOBV)
26952      DIMENSION PHD1(MAXOBV)
26953      DIMENSION PHD2(MAXOBV)
26954      DIMENSION PHD3(MAXOBV)
26955      DIMENSION PHD4(MAXOBV)
26956      DIMENSION PHD5(MAXOBV)
26957      DIMENSION RESLIN(MAXOBV)
26958      DIMENSION PREDLIN(MAXOBV)
26959C
26960      EQUIVALENCE (GARBAG(IGARB1),Y1(1))
26961      EQUIVALENCE (GARBAG(IGARB2),Y2(1))
26962      EQUIVALENCE (GARBAG(IGARB3),COEF(1))
26963      EQUIVALENCE (GARBAG(IGARB4),SSQCOE(1))
26964      EQUIVALENCE (GARBAG(IGARB5),TCOEF(1))
26965      EQUIVALENCE (GARBAG(IGARB6),RSDCOE(1))
26966      EQUIVALENCE (GARBAG(IGARB7),TAGCOE(1))
26967      EQUIVALENCE (GARBAG(IGARB8),TAGCO2(1))
26968      EQUIVALENCE (GARBAG(IGARB9),REPD(1))
26969      EQUIVALENCE (GARBAG(IGAR10),RSDCOC(1))
26970      EQUIVALENCE (GARBAG(JGAR11),YMEAN(1))
26971      EQUIVALENCE (GARBAG(JGAR12),YVAR(1))
26972      EQUIVALENCE (GARBAG(JGAR13),DUMMY(1))
26973      EQUIVALENCE (GARBAG(JGAR14),DUMMY2(1))
26974      EQUIVALENCE (GARBAG(JGAR15),AINDEX(1))
26975      EQUIVALENCE (GARBAG(JGAR16),AINDE2(1))
26976      EQUIVALENCE (GARBAG(JGAR17),TEMP(1))
26977      EQUIVALENCE (GARBAG(JGAR18),PHD1(1))
26978      EQUIVALENCE (GARBAG(JGAR19),PHD2(1))
26979      EQUIVALENCE (GARBAG(JGAR20),PHD3(1))
26980      EQUIVALENCE (GARBAG(IGAR11),PHD4(1))
26981      EQUIVALENCE (GARBAG(IGAR12),PHD5(1))
26982      EQUIVALENCE (GARBAG(IGAR13),RESLIN(1))
26983      EQUIVALENCE (GARBAG(IGAR14),PREDLIN(1))
26984C
26985      EQUIVALENCE (IGARBG(IIGAR1),IFLAG(1))
26986      EQUIVALENCE (IGARBG(IIGAR2),ITAG(1))
26987      EQUIVALENCE (IGARBG(IIGAR3),ITAGCO(1))
26988CCCCC END CHANGE
26989C-----COMMON----------------------------------------------------------
26990C
26991      INCLUDE 'DPCOHK.INC'
26992      INCLUDE 'DPCODA.INC'
26993CCCCC THE FOLLOWING LINE WAS INSERTED NOVEMBER 1989
26994      INCLUDE 'DPCODE.INC'
26995      INCLUDE 'DPCOSU.INC'
26996      INCLUDE 'DPCOP2.INC'
26997C
26998C-----START POINT-----------------------------------------------------
26999C
27000      ISUBN1='DPYA'
27001      ISUBN2='TE  '
27002      IFOUND='NO'
27003      IERROR='NO'
27004      IWRITE='YES'
27005      IPHDFL='OFF'
27006C
27007      MAXCP1=MAXCOL+1
27008      MAXCP2=MAXCOL+2
27009      MAXCP3=MAXCOL+3
27010      MAXCP4=MAXCOL+4
27011      MAXCP5=MAXCOL+5
27012      MAXCP6=MAXCOL+6
27013      IVAL=0
27014      ILASTC=0
27015C
27016CCCCC THE FOLLOWING 4 LINES WERE ADDED   APRIL 1992 (ALAN)
27017      ICUTMX=NUMBPW
27018      IF(IHOST1.EQ.'CDC '.OR.IHOST1.EQ.'CYBE')ICUTMX=48
27019      IF(IHOST1.EQ.'205 ')ICUTMX=48
27020      CUTOFF=2**(ICUTMX-3)
27021C
27022      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'YATE')THEN
27023        WRITE(ICOUT,999)
27024  999   FORMAT(1X)
27025        CALL DPWRST('XXX','BUG ')
27026        WRITE(ICOUT,51)
27027   51   FORMAT('***** AT THE BEGINNING OF DPYATE--')
27028        CALL DPWRST('XXX','BUG ')
27029        WRITE(ICOUT,54)ICASAN,IBUGA2,IBUGA3,IBUGQ,ISUBRO,MAXN
27030   54   FORMAT('ICASAN,IBUGA2,IBUGA3,IBUGQ,ISUBRO,MAXN = ',5(A4,2X),I8)
27031        CALL DPWRST('XXX','BUG ')
27032        WRITE(ICOUT,61)YATCCU,YATTCU,YATRCU,IYATOS,IYATRS
27033   61   FORMAT('YATCCU,YATTCU,YATRCU,IYATOS,IYATRS = ',3G15.7,
27034     1         2X,A4,2X,A4)
27035        CALL DPWRST('XXX','BUG ')
27036      ENDIF
27037C
27038C               *********************************************
27039C               **  TREAT THE YATES ANALYSIS CASE  AND THE **
27040C               **            PHD   ANALYSIS CASE          **
27041C               *********************************************
27042C
27043C               ***************************
27044C               **  STEP 11--            **
27045C               **  EXTRACT THE COMMAND  **
27046C               ***************************
27047C
27048      ISTEPN='11'
27049      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'YATE')
27050     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
27051C
27052      IF(ICOM.EQ.'DEX' .AND. IHARG(1).EQ.'PHD ')THEN
27053        IF(NUMARG.GE.2 .AND. IHARG(2).EQ.'ANAL')THEN
27054          ILASTC=2
27055          IPHDFL='ON'
27056        ELSEIF(NUMARG.GE.2 .AND. IHARG(2).EQ.'FIT')THEN
27057          ILASTC=2
27058          IPHDFL='ON'
27059        ELSE
27060          IPHDFL='ON'
27061          ILASTC=1
27062        ENDIF
27063      ELSEIF(ICOM.EQ.'PHD')THEN
27064        IF(NUMARG.GE.2.AND.
27065     1    IHARG(1).EQ.'DEX' .AND. IHARG(2).EQ.'ANAL')THEN
27066          IPHDFL='ON'
27067          ILASTC=2
27068        ELSEIF(NUMARG.GE.2 .AND. IHARG(1).EQ.'DEX' .AND.
27069     1    IHARG(2).EQ.'FIT')THEN
27070          IPHDFL='ON'
27071          ILASTC=2
27072        ELSEIF(NUMARG.GE.1 .AND. IHARG(1).EQ.'DEX')THEN
27073          IPHDFL='ON'
27074          ILASTC=2
27075        ENDIF
27076      ELSE
27077C
27078        IF(NUMARG.GE.1.AND.
27079     1    IHARG(1).EQ.'ANAL' .AND. IHARG2(1).EQ.'YSIS')THEN
27080          ILASTC=1
27081        ELSEIF(NUMARG.GE.1 .AND. IHARG(1).EQ.'FIT')THEN
27082          ILASTC=1
27083        ELSEIF(NUMARG.GE.2 .AND. IHARG(1).EQ.'DEX' .AND.
27084     1    IHARG(2).EQ.'FIT')THEN
27085          ILASTC=2
27086        ELSE
27087          ILASTC=0
27088        ENDIF
27089      ENDIF
27090C
27091      IF(ILASTC.GT.0)THEN
27092        CALL ADJUST(ILASTC,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG)
27093      ENDIF
27094      IFOUND='YES'
27095      ICASAN='DEXF'
27096C
27097C               ****************************************
27098C               **  STEP 2--                          **
27099C               **  EXTRACT THE VARIABLE LIST         **
27100C               ****************************************
27101C
27102      ISTEPN='2'
27103      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'YATE')
27104     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
27105C
27106      INAME='YATES ANALYSIS'
27107      MINNA=1
27108      MAXNA=100
27109      MINN2=2
27110      IFLAGE=1
27111      IFLAGM=0
27112      MINNVA=1
27113      MAXNVA=2
27114      IFLAGP=0
27115      JMIN=1
27116      JMAX=NUMARG
27117C
27118      CALL DPPARS(IHARG,IHARG2,IARGT,ARG,NUMARG,IANS,IWIDTH,
27119     1            IHNAME,IHNAM2,IUSE,NUMNAM,IN,IVALUE,VALUE,
27120     1            JMIN,JMAX,
27121     1            MINN2,MINNA,MAXNA,MAXSPN,IFLAGE,INAME,
27122     1            IVARN1,IVARN2,IVARTY,PVAR,
27123     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,ILOCQ,NUMVAR,
27124     1            MINNVA,MAXNVA,
27125     1            IFLAGM,IFLAGP,
27126     1            IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
27127      IF(IERROR.EQ.'YES')GOTO9000
27128C
27129      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'YATE')THEN
27130        WRITE(ICOUT,999)
27131        CALL DPWRST('XXX','BUG ')
27132        WRITE(ICOUT,281)
27133  281   FORMAT('***** AFTER CALL DPPARS--')
27134        CALL DPWRST('XXX','BUG ')
27135        WRITE(ICOUT,282)NQ,NUMVAR
27136  282   FORMAT('NQ,NUMVAR = ',2I8)
27137        CALL DPWRST('XXX','BUG ')
27138        IF(NUMVAR.GT.0)THEN
27139          DO285I=1,NUMVAR
27140            WRITE(ICOUT,287)I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),
27141     1                      ICOLR(I)
27142  287       FORMAT('I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),',
27143     1             'ICOLR(I) = ',I8,2X,A4,A4,2X,3I8)
27144            CALL DPWRST('XXX','BUG ')
27145  285     CONTINUE
27146        ENDIF
27147      ENDIF
27148C
27149C               ***************************************
27150C               **  STEP 41--                        **
27151C               **  CARRY OUT THE YATES ANALYSIS     **
27152C               ***************************************
27153C
27154      ISTEPN='41'
27155      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'YATE')
27156     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
27157C
27158      ICOL=1
27159      CALL DPPAR3(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
27160     1            INAME,IVARN1,IVARN2,IVARTY,
27161     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVAR,
27162     1            MAXCOL,MAXCP1,MAXCP2,MAXCP3,
27163     1            MAXCP4,MAXCP5,MAXCP6,
27164     1            V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
27165     1            Y1,Y2,Y2,NS,NLOCAL,NLOCAL,ICASE,
27166     1            IBUGA3,ISUBRO,IFOUND,IERROR)
27167      IF(IERROR.EQ.'YES')GOTO9000
27168      IF(NUMVAR.EQ.1)THEN
27169        DO410I=1,NS
27170          Y2(I)=1.0
27171  410   CONTINUE
27172      ENDIF
27173C
27174      CALL DPYAT2(Y1,Y2,NS,ICASAN,MAXN,IWRITE,
27175     1            YATCCU,YATTCU,YATRCU,IYATOS,IYATRS,
27176     1            COEF,SSQCOE,TCOEF,RSDCOE,TAGCOE,TAGCO2,NCOEF,
27177     1            PRESSD,PRESDF,REPSD,REPDF,REFSD,REFDF,SDCOEF,
27178     1            REPD,IFLAG,RSDCOC,ITAG,ITAGCO,YMEAN,
27179     1            YVAR,DUMMY,DUMMY2,AINDEX,AINDE2,TEMP,
27180     1            PHD1,PHD2,PHD3,PHD4,PHD5,RESLIN,PREDLIN,
27181     1            ICAPSW,ICAPTY,IFORSW,IPHDFL,
27182     1            IBUGA3,ISUBRO,IERROR)
27183C
27184C               ***************************************
27185C               **  STEP 51--                        **
27186C               **  UPDATE INTERNAL DATAPLOT TABLES  **
27187C               ***************************************
27188C
27189      ISTEPN='51'
27190      IF(IBUGA2.EQ.'ON'.OR.ISUBRO.EQ.'YATE')
27191     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
27192      NPASS=7
27193      DO5100IPASS=1,NPASS
27194        IF(IPASS.EQ.1)THEN
27195          IH='PRES'
27196          IH2='SD  '
27197        ELSEIF(IPASS.EQ.2)THEN
27198          IH='PRES'
27199          IH2='DF  '
27200        ELSEIF(IPASS.EQ.3)THEN
27201          IH='REPS'
27202          IH2='D  '
27203        ELSEIF(IPASS.EQ.4)THEN
27204          IH='REPD'
27205          IH2='F   '
27206        ELSEIF(IPASS.EQ.5)THEN
27207          IH='REFS'
27208          IH2='D  '
27209        ELSEIF(IPASS.EQ.6)THEN
27210          IH='REFD'
27211          IH2='F   '
27212        ELSEIF(IPASS.EQ.7)THEN
27213          IH='SDCO'
27214          IH2='EF  '
27215        ENDIF
27216C
27217        DO5150I=1,NUMNAM
27218          I2=I
27219C
27220C         PARAMETER NAME IN NAME TABLE
27221C
27222          IF(IH.EQ.IHNAME(I).AND.IH2.EQ.IHNAM2(I).AND.
27223     1       IUSE(I).EQ.'P')THEN
27224            ILOC=I2
27225            GOTO5170
27226          ENDIF
27227 5150   CONTINUE
27228C
27229C       PARAMETER NAME NOT IN NAME TABLE
27230C
27231        IF(NUMNAM.GE.MAXNAM)THEN
27232          WRITE(ICOUT,5151)
27233 5151     FORMAT('***** ERROR IN YATES ANALYSIS--')
27234          CALL DPWRST('XXX','BUG ')
27235          WRITE(ICOUT,5152)
27236 5152     FORMAT('      THE TOTAL NUMBER OF (VARIABLE + PARAMETER) ',
27237     1           'NAMES MUST')
27238          CALL DPWRST('XXX','BUG ')
27239          WRITE(ICOUT,5154)MAXNAM
27240 5154     FORMAT('      BE AT MOST ',I8,'.  SUCH WAS NOT THE CASE ',
27241     1           'HERE--')
27242          CALL DPWRST('XXX','BUG ')
27243          WRITE(ICOUT,5155)
27244 5155     FORMAT('      THE MAXIMUM ALLOWABLE NUMBER OF NAMES HAS ',
27245     1           'JUST BEEN EXCEEDED.')
27246          CALL DPWRST('XXX','BUG ')
27247          WRITE(ICOUT,5157)
27248 5157     FORMAT('      SUGGESTED ACTION--ENTER     STAT')
27249          CALL DPWRST('XXX','BUG ')
27250          WRITE(ICOUT,5158)
27251 5158     FORMAT('      TO DETERMINE THE IMPORTANT (VERSUS ',
27252     1           'UNIMPORTANT) VARIABLES AND')
27253          CALL DPWRST('XXX','BUG ')
27254          WRITE(ICOUT,5160)
27255 5160     FORMAT('      PARAMETERS, AND THEN REUSE SOME OF THE NAMES.')
27256          CALL DPWRST('XXX','BUG ')
27257          WRITE(ICOUT,5162)
27258 5162     FORMAT('      THE ENTERED COMMAND LINE WAS AS FOLLOWS--')
27259          CALL DPWRST('XXX','BUG ')
27260          IF(IWIDTH.GE.1)THEN
27261            WRITE(ICOUT,5163)(IANS(I),I=1,MIN(80,IWIDTH))
27262 5163       FORMAT('      ',80A1)
27263            CALL DPWRST('XXX','BUG ')
27264          ENDIF
27265          IERROR='YES'
27266          GOTO9000
27267        ENDIF
27268C
27269        NUMNAM=NUMNAM+1
27270        ILOC=NUMNAM
27271C
27272 5170   CONTINUE
27273C
27274        IHNAME(ILOC)=IH
27275        IHNAM2(ILOC)=IH2
27276        IUSE(ILOC)='P'
27277        IF(IPASS.EQ.1)VALUE(ILOC)=PRESSD
27278        IF(IPASS.EQ.2)VALUE(ILOC)=PRESDF
27279        IF(IPASS.EQ.3)VALUE(ILOC)=REPSD
27280        IF(IPASS.EQ.4)VALUE(ILOC)=REPDF
27281        IF(IPASS.EQ.5)VALUE(ILOC)=REFSD
27282        IF(IPASS.EQ.6)VALUE(ILOC)=REFDF
27283        IF(IPASS.EQ.7)VALUE(ILOC)=SDCOEF
27284        VAL=VALUE(ILOC)
27285        IF((-CUTOFF).LE.VAL.AND.VAL.LE.CUTOFF)IVAL=INT(VAL+0.5)
27286        IF(VAL.GT.CUTOFF)IVAL=INT(CUTOFF)
27287        IF(VAL.LT.(-CUTOFF))IVAL=INT(-CUTOFF)
27288        IVALUE(ILOC)=IVAL
27289        GOTO5100
27290C
27291C
27292 5100 CONTINUE
27293C
27294C               *****************
27295C               **  STEP 90--  **
27296C               **  EXIT       **
27297C               *****************
27298C
27299 9000 CONTINUE
27300      IF(IBUGA2.EQ.'ON' .OR. ISUBRO.EQ.'YATE')THEN
27301        WRITE(ICOUT,999)
27302        CALL DPWRST('XXX','BUG ')
27303        WRITE(ICOUT,9011)
27304 9011   FORMAT('***** AT THE END       OF DPYATE--')
27305        CALL DPWRST('XXX','BUG ')
27306        WRITE(ICOUT,9012)IFOUND,IERROR,ICASAN
27307 9012   FORMAT('IFOUND,IERROR,ICASAN = ',2(A4,2X),A4)
27308        CALL DPWRST('XXX','BUG ')
27309        WRITE(ICOUT,9014)MAXN,NUMVAR,NLOCAL,NQ,MINN2,ICOUNT
27310 9014   FORMAT('MAXN,NUMVAR,NLOCAL,NQ,MINN2,ICOUNT = ',6I8)
27311        CALL DPWRST('XXX','BUG ')
27312        WRITE(ICOUT,9061)IHRI11,IHRI12,IHRI21,IHRI22
27313 9061   FORMAT('IHRI11,IHRI12,IHRI21,IHRI22 = ',3(A4,2X),A4)
27314        CALL DPWRST('XXX','BUG ')
27315CCCCC   THE FOLLOWING 2 LINES WERE INSERTED NOVEMBER 1989
27316        WRITE(ICOUT,9071)YATCCU,YATTCU,YATRCU,IYATOS,IYATRS
27317 9071   FORMAT('YATCCU,YATTCU,YATRCU,IYATOS,IYATRS = ',3G15.7,
27318     1         2(2X,A4))
27319        CALL DPWRST('XXX','BUG ')
27320      ENDIF
27321C
27322      RETURN
27323      END
27324      SUBROUTINE DPYAT2(Y,REP,N,ICASPL,MAXN,IWRITE,
27325     1                  YATCCU,YATTCU,YATRCU,IYATOS,IYATRS,
27326     1                  COEF,SSQCOE,TCOEF,RSDCOE,TAGCOE,TAGCO2,NCOEF,
27327     1                  PRESSD,PRESDF,REPSD,REPDF,REFSD,REFDF,SDCOEF,
27328     1                  REPD,IFLAG,RSDCOC,ITAG,ITAGCO,YMEAN,
27329     1                  YVAR,DUMMY,DUMMY2,AINDEX,AINDE2,TEMP,
27330     1                  PHD1,PHD2,PHD3,PHD4,PHD5,RESLIN,PREDLIN,
27331     1                  ICAPSW,ICAPTY,IFORSW,IPHDFL,
27332     1                  IBUGA3,ISUBRO,IERROR)
27333C
27334C     PURPOSE--CARRY OUT A YATES ANALYSIS (DEX FIT FOR 2**K DESIGNS)
27335C              (USEFUL FOR COMPUTING THE EFFECTS IN A 2**K
27336C              AND A 2**(K-P) EXPERIMENT)
27337C     NOTE--THIS CODE ASSUMES THE DATA IS IN
27338C           STANDARD YATES/HUNTER/BOX ORDER.
27339C           FOR EXAMPLE, FOR A 2**3--
27340C                 - - -
27341C                 + - -
27342C                 - + -
27343C                 + + -
27344C                 - - +
27345C                 + - +
27346C                 - + +
27347C                 + + +
27348C     NOTE--IF HAVE REPLICATION, THEN THE REPLICATES
27349C           MAY EITHER BE IMMEDIATELY WITHIN
27350C           OR MAY BE IN BLOCKS AFTER.
27351C     EXAMPLE--YATES Y
27352C              YATES Y REP
27353C              YATES ANALYSIS Y
27354C              YATES ANALYSIS Y REP
27355C              DEX FIT Y
27356C              DEX FIT Y REP
27357C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
27358C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
27359C     LANGUAGE--ANSI FORTRAN (1977)
27360C     VERSION NUMBER--87/7
27361C     ORIGINAL VERSION--JULY      1987.
27362C     UPDATED         --JUNE      1989.  2**K DEX FIT SYNONYM
27363C     UPDATED         --NOVEMBER  1989.  SELECTIVE PRINTING OF COEF
27364C     UPDATED         --JANUARY   1990.  PRINT MEAN IN ORDERED LIST
27365C     UPDATED         --JUNE      1990.  MOVE SOME DIMENSIONS TO DPYATE
27366C     UPDATED         --OCTOBER   1991.  PRINT TO STORAGE FILE
27367C     UPDATED         --NOVEMBER  1991.  FIX BOMB WITH PRINT FOR 2**2
27368C     UPDATED         --NOVEMBER  1991.  FIX BOMB FOR 2**1
27369C     UPDATED         --NOVEMBER  1991.  REMOVE 2 PRINT LINES (RESSD)
27370C     UPDATED         --APRIL     1992.  DELETE IFOUND
27371C     UPDATED         --JUNE      1992.  SKIP PRINTING SECTION 2
27372C     UPDATED         --JUNE      1992.  FIX SD(YBAR)
27373C     UPDATED         --NOVEMBER  1996.  FORMAT CORRECTIONS AFTER 7400 CONTINUE
27374C     UPDATED         --NOVEMBER  1996.  ADD LINES AT END OF OUTPUT (7713)
27375C     UPDATED         --OCTOBER   2003.  SUPPORT FOR HTML, LATEX OUTPUT
27376C     UPDATED         --JUNE      2005.  PRINT OUTPUT TO DPST1F.DAT AND
27377C                                        DPST2F.DAT EVEN IF PRINTING
27378C                                        SWITCH IS OFF
27379C     UPDATED         --OCTOBER   2006.  CALL LIST TO TPPF
27380C
27381C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
27382C
27383      CHARACTER*4 ICASPL
27384      CHARACTER*4 IWRITE
27385      CHARACTER*4 ICAPSW
27386      CHARACTER*4 ICAPTY
27387      CHARACTER*4 IFORSW
27388      CHARACTER*4 IPHDFL
27389C
27390      CHARACTER*4 IBUGA3
27391      CHARACTER*4 ISUBRO
27392      CHARACTER*4 IERROR
27393C
27394      CHARACTER*4 IREP
27395      CHARACTER*4 ICASE
27396CCCCC THE FOLLOWING LINE WAS FIXED NOVEMBER 1991
27397CCCCC BECAUSE THE CALLING ROUTINE (DPYATE) HAD IFLAG NOVEMBER 1991
27398CCCCC EQUIVALANCED TO IGARBG WHICH WAS INTEGER BUT NOVEMBER 1991
27399CCCCC DPYAT2 WAS TRYING TO USE IFLAG AS CHARACTER*2 NOVEMBER 1991
27400CCCCC CHARACTER*2 IFLAG
27401      CHARACTER*2 STAR
27402CCCCC CHARACTER*12 STAR2
27403C
27404      CHARACTER*4 IOP
27405C
27406CCCCC THE FOLLOWING LINE WAS INSERTED NOVEMBER 1989
27407      CHARACTER*4 IYATOS
27408      CHARACTER*4 IYATRS
27409C
27410      CHARACTER*4 ISUBN1
27411      CHARACTER*4 ISUBN2
27412      CHARACTER*4 ISTEPN
27413C
27414      PARAMETER(NUMCLI=6)
27415      PARAMETER(MAXLIN=3)
27416      PARAMETER (MAXROW=200)
27417      PARAMETER (MAXRO2=30)
27418      CHARACTER*60 ITITLE
27419      CHARACTER*60 ITITLZ
27420      CHARACTER*60 ITITL9
27421      CHARACTER*60 ITEXT(MAXRO2)
27422      CHARACTER*4  ALIGN(NUMCLI)
27423      CHARACTER*4  VALIGN(NUMCLI)
27424      REAL         AVALUE(MAXRO2)
27425      INTEGER      NCTEXT(MAXRO2)
27426      INTEGER      IDIGIT(MAXRO2)
27427      INTEGER      NTOT(MAXRO2)
27428      CHARACTER*60 ITITL2(MAXLIN,NUMCLI)
27429      CHARACTER*15 IVALUE(MAXROW,NUMCLI)
27430      CHARACTER*4  ITYPCO(NUMCLI)
27431      INTEGER      NCTIT2(MAXLIN,NUMCLI)
27432      INTEGER      NCVALU(MAXROW,NUMCLI)
27433      INTEGER      IWHTML(NUMCLI)
27434      INTEGER      IWRTF(NUMCLI)
27435      REAL         AMAT(MAXROW,NUMCLI)
27436      LOGICAL IFRST
27437      LOGICAL ILAST
27438      LOGICAL IFLAGS
27439      LOGICAL IFLAGE
27440C
27441C---------------------------------------------------------------------
27442C
27443      INCLUDE 'DPCOPA.INC'
27444      INCLUDE 'DPCOF2.INC'
27445C
27446      DIMENSION Y(*)
27447      DIMENSION REP(*)
27448C
27449      DIMENSION COEF(*)
27450      DIMENSION SSQCOE(*)
27451      DIMENSION TCOEF(*)
27452      DIMENSION RSDCOE(*)
27453      DIMENSION TAGCOE(*)
27454      DIMENSION TAGCO2(*)
27455C
27456      DIMENSION REPD(*)
27457      DIMENSION IFLAG(*)
27458      DIMENSION RSDCOC(*)
27459      DIMENSION ITAG(*)
27460      DIMENSION ITAGCO(*)
27461      DIMENSION YMEAN(*)
27462      DIMENSION YVAR(*)
27463      DIMENSION DUMMY(*)
27464      DIMENSION DUMMY2(*)
27465      DIMENSION AINDEX(*)
27466      DIMENSION AINDE2(*)
27467      DIMENSION TEMP(*)
27468C
27469      DIMENSION PHD1(*)
27470      DIMENSION PHD2(*)
27471      DIMENSION PHD3(*)
27472      DIMENSION PHD4(*)
27473      DIMENSION PHD5(*)
27474      DIMENSION PREDLIN(*)
27475      DIMENSION RESLIN(*)
27476C
27477      PARAMETER (MAXFAC=12)
27478C
27479      DIMENSION AMAIN(MAXFAC)
27480C
27481      DIMENSION A(MAXFAC,MAXFAC)
27482      DIMENSION EIGVAL(MAXFAC)
27483      DIMENSION EIGVA2(MAXFAC)
27484      DIMENSION EIGVA3(MAXFAC)
27485      DIMENSION EIGVEC(MAXFAC,MAXFAC)
27486      DIMENSION ITAG2(MAXFAC)
27487      DIMENSION ITAG3(MAXFAC)
27488      DIMENSION VJUNK(2*MAXFAC)
27489C
27490C-----COMMON----------------------------------------------------------
27491C
27492      INCLUDE 'DPCOP2.INC'
27493C
27494C-----START POINT-----------------------------------------------------
27495C
27496      ISUBN1='DPYA'
27497      ISUBN2='T2  '
27498      IERROR='NO'
27499C
27500      AN=N
27501      CUTOFF=999999.0
27502      NUMDIG=7
27503C
27504      CCUTP=YATCCU
27505      CCUTN=(-YATCCU)
27506      TCUTP=YATTCU
27507      TCUTN=(-YATTCU)
27508      RCUTP=YATRCU
27509      RCUTN=(-YATRCU)
27510C
27511      DO10I=1,MAXFAC
27512        ITAG2(I)=0
27513        ITAG3(I)=0
27514        EIGVAL(I)=0.0
27515        EIGVA2(I)=0.0
27516        EIGVA3(I)=0.0
27517   10 CONTINUE
27518C
27519      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')THEN
27520        WRITE(ICOUT,999)
27521  999   FORMAT(1X)
27522        CALL DPWRST('XXX','BUG ')
27523        WRITE(ICOUT,51)
27524   51   FORMAT('***** AT THE BEGINNING OF DPYAT2--')
27525        CALL DPWRST('XXX','BUG ')
27526        WRITE(ICOUT,52)IBUGA3,ISUBRO,ICASPL,MAXN,N
27527   52   FORMAT('IBUGA3,ISUBRO,ICASPL,MAXN,N = ',3(A4,2X),2I8)
27528        CALL DPWRST('XXX','BUG ')
27529        IF(N.GT.0)THEN
27530          DO61I=1,N
27531            WRITE(ICOUT,62)I,Y(I),REP(I)
27532   62       FORMAT('I,Y(I),REP(I) = ',I8,2G15.7)
27533            CALL DPWRST('XXX','BUG ')
27534   61     CONTINUE
27535        ENDIF
27536        WRITE(ICOUT,71)YATCCU,YATTCU,YATRCU,IYATOS,IYATRS
27537   71   FORMAT('YATCCU,YATTCU,YATRCU,IYATOS,IYATRS = ',3G15.7,
27538     1         2X,A4,2X,A4)
27539        CALL DPWRST('XXX','BUG ')
27540        WRITE(ICOUT,72)CCUTN,CCUTP,TCUTN,TCUTP
27541   72   FORMAT('CCUTN,CCUTP,TCUTN,TCUTP = ',4G15.7)
27542        CALL DPWRST('XXX','BUG ')
27543        WRITE(ICOUT,74)RCUTN,RCUTP,TAGCOE(1),TEMP(1)
27544   74   FORMAT('RCUTN,RCUTP,TAGCOE(1),TEMP(1) = ',4G15.7)
27545        CALL DPWRST('XXX','BUG ')
27546      ENDIF
27547C
27548C               ********************************************
27549C               **  STEP 11--                             **
27550C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
27551C               ********************************************
27552C
27553      IF(N.LE.1)THEN
27554        WRITE(ICOUT,999)
27555        CALL DPWRST('XXX','BUG ')
27556        WRITE(ICOUT,1111)
27557 1111   FORMAT('***** ERROR IN YATES ANAYLYSIS--')
27558        CALL DPWRST('XXX','BUG ')
27559        WRITE(ICOUT,1112)
27560 1112   FORMAT('      THE NUMBER OF OBSERVATIONS MUST BE AT LEAST ',
27561     1         'TWO.')
27562        CALL DPWRST('XXX','BUG ')
27563        WRITE(ICOUT,1114)N
27564 1114   FORMAT('      THE ENTERED NUMBER OF OBSERVATIONS HERE = ',I8)
27565        CALL DPWRST('XXX','BUG ')
27566        IERROR='YES'
27567        GOTO9000
27568      ENDIF
27569C
27570      HOLD=Y(1)
27571      DO1130I=1,N
27572      IF(Y(I).NE.HOLD)GOTO1139
27573 1130 CONTINUE
27574      WRITE(ICOUT,999)
27575      CALL DPWRST('XXX','BUG ')
27576      WRITE(ICOUT,1111)
27577      CALL DPWRST('XXX','BUG ')
27578      WRITE(ICOUT,1132)HOLD
27579 1132 FORMAT('      THE RESPONSE VARIABLE ELEMENTS ARE ALL ',
27580     1       'IDENTICALLY EQUAL TO ',G15.7)
27581      CALL DPWRST('XXX','BUG ')
27582      WRITE(ICOUT,999)
27583      CALL DPWRST('XXX','BUG ')
27584      IERROR='YES'
27585      GOTO9000
27586 1139 CONTINUE
27587C
27588CCCCCC THE FOLLOWING SECTION WAS ADDED OCTOBER 1991
27589C               **************************************************
27590C               **  STEP 15--                                   **
27591C               **   OPEN THE STORAGE FILES                     **
27592C               **************************************************
27593C
27594      ISTEPN='15'
27595      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')
27596     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
27597C
27598      IOP='OPEN'
27599      IFLAG1=1
27600      IFLAG2=1
27601      IF(IPHDFL.EQ.'ON')THEN
27602        IFLAG3=1
27603        IFLAG4=1
27604      ELSE
27605        IFLAG3=0
27606        IFLAG4=0
27607      ENDIF
27608      IFLAG5=0
27609      CALL DPAUFI(IOP,IFLAG1,IFLAG2,IFLAG3,IFLAG4,IFLAG5,
27610     1            IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
27611     1            IBUGA3,ISUBRO,IERROR)
27612      IF(IERROR.EQ.'YES')GOTO9000
27613C
27614C               **************************************************
27615C               **  STEP 20--                                   **
27616C               **  COMPUTE GRAND MEAN                          **
27617C               **  COMPUTE GRAND STANDARD DEVIATION            **
27618C               **************************************************
27619C
27620      SUM=0.0
27621      DO2000I=1,N
27622        SUM=SUM+Y(I)
27623 2000 CONTINUE
27624      GMEAN=SUM/AN
27625C
27626      SUM=0.0
27627      DO2020I=1,N
27628        SUM=SUM+(Y(I)-GMEAN)**2
27629 2020 CONTINUE
27630      GSSQ=SUM
27631      GVAR=GSSQ/(AN-1.0)
27632      GSD=0.0
27633      IF(GVAR.GT.0.0)GSD=SQRT(GVAR)
27634C
27635C               ****************************************************
27636C               **  STEP 21--                                     **
27637C               **  EXTRACT THE DISTINCT REPLICATION VALUES       **
27638C               **  IN ORDER TO                                   **
27639C               **  DETERMINE THE TYPE OF REPLICATION CASE--      **
27640C               **     1) NO REPLICATION                          **
27641C               **     2) REPLICATION 'WITHIN', AS IN             **
27642C               **        (FOR A 2**2 WITH 3 REPLICATIONS)--      **
27643C               **          X1  X2  REP                           **
27644C               **           -   +   1                            **
27645C               **           -   +   2                            **
27646C               **           -   +   3                            **
27647C               **                                                **
27648C               **           +   +   1                            **
27649C               **           +   +   2                            **
27650C               **           +   +   3                            **
27651C               **                                                **
27652C               **           -   -   1                            **
27653C               **           -   -   2                            **
27654C               **           -   -   3                            **
27655C               **                                                **
27656C               **           +   +   1                            **
27657C               **           +   +   2                            **
27658C               **           +   +   3                            **
27659C               **     3) REPLICATION 'BETWEEN', AS IN            **
27660C               **        (FOR A 2**2 WITH 3 REPLICATIONS)--      **
27661C               **          X1  X2  REP                           **
27662C               **           -   +   1                            **
27663C               **           +   +   1                            **
27664C               **           -   -   1                            **
27665C               **           +   +   1                            **
27666C               **                                                **
27667C               **           -   +   2                            **
27668C               **           +   +   2                            **
27669C               **           -   -   2                            **
27670C               **           +   +   2                            **
27671C               **                                                **
27672C               **           -   +   3                            **
27673C               **           +   +   3                            **
27674C               **           -   -   3                            **
27675C               **           +   +   3                            **
27676C               **                                                **
27677C               ****************************************************
27678C
27679      ISTEPN='21'
27680      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')
27681     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
27682C
27683      IWRITE='OFF'
27684      CALL DISTIN(REP,N,IWRITE,REPD,NREPD,IBUGA3,IERROR)
27685C
27686      NUMREP=NREPD
27687      ANUMRE=NUMREP
27688      IREP='NO'
27689      ICASE='-999'
27690      IF(NUMREP.GT.1)THEN
27691        IREP='YES'
27692        ICASE='BETW'
27693        IF(REP(2).NE.REP(1))ICASE='WITH'
27694      ENDIF
27695C
27696      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')THEN
27697        WRITE(ICOUT,2191)REPD(1),REPD(2),REPD(3),REPD(4)
27698 2191   FORMAT('REPD(1),REPD(2),REPD(3),REPD(4) = ',4G15.7)
27699        CALL DPWRST('XXX','BUG ')
27700        WRITE(ICOUT,2192)NREPD,IREP,ICASE
27701 2192   FORMAT('NREPD,IREP,ICASE = ',I8,2X,A4,2X,A4)
27702        CALL DPWRST('XXX','BUG ')
27703      ENDIF
27704C
27705C               **************************************************
27706C               **  STEP 22--                                   **
27707C               **  COMPUTE CELL MEANS                          **
27708C               **************************************************
27709C
27710      IF(IREP.EQ.'NO')THEN
27711        NMEAN=N
27712        ANMEAN=NMEAN
27713        DO2211I=1,N
27714          YMEAN(I)=Y(I)
27715 2211   CONTINUE
27716      ELSEIF(ICASE.EQ.'WITH')THEN
27717        NMEAN=N/NUMREP
27718        ANMEAN=NMEAN
27719        DO2221I=1,NMEAN
27720          SUM=0.0
27721          JMIN=NUMREP*(I-1)+1
27722          JMAX=NUMREP*I
27723          DO2222J=JMIN,JMAX
27724            SUM=SUM+Y(J)
27725 2222     CONTINUE
27726          YMEAN(I)=SUM/ANUMRE
27727 2221   CONTINUE
27728      ELSE
27729        NMEAN=N/NUMREP
27730        ANMEAN=NMEAN
27731        DO2231I=1,NMEAN
27732          SUM=0.0
27733          DO2232J=I,N,NMEAN
27734            SUM=SUM+Y(J)
27735 2232     CONTINUE
27736          YMEAN(I)=SUM/ANUMRE
27737 2231   CONTINUE
27738      ENDIF
27739C
27740      NCOEF=NMEAN
27741C
27742C               **************************************************
27743C               **  STEP 23--                                   **
27744C               **  IF HAVE REPLICATION,                        **
27745C               **  COMPUTE REPLICATION STANDARD DEVIATION      **
27746C               **************************************************
27747C
27748      IREPDF=0
27749      LOFCDF=0
27750      REPDF=0.0
27751      REPVAR=0.0
27752      REPSD=0.0
27753C
27754      IF(IREP.EQ.'NO')GOTO2390
27755      IF(ICASE.EQ.'WITH')THEN
27756        NMEAN=N/NUMREP
27757        ANMEAN=NMEAN
27758        SUMT=0.0
27759        DO2321I=1,NMEAN
27760          SUM=0.0
27761          JMIN=NUMREP*(I-1)+1
27762          JMAX=NUMREP*I
27763          DO2322J=JMIN,JMAX
27764            SUM=SUM+(Y(J)-YMEAN(I))**2
27765            SUMT=SUMT+(Y(J)-YMEAN(I))**2
27766 2322     CONTINUE
27767          YVAR(I)=SUM/(ANUMRE-1.0)
27768 2321   CONTINUE
27769        IREPDF=NMEAN
27770        REPDF=ANMEAN
27771        REPVAR=SUMT/REPDF
27772        REPSD=0.0
27773        IF(REPVAR.GT.0.0)REPSD=SQRT(REPVAR)
27774      ELSE
27775        NMEAN=N/NUMREP
27776        ANMEAN=NMEAN
27777        SUMT=0.0
27778        DO2331I=1,NMEAN
27779          SUM=0.0
27780          DO2332J=I,N,NMEAN
27781            SUM=SUM+(Y(J)-YMEAN(I))**2
27782            SUMT=SUMT+(Y(J)-YMEAN(I))**2
27783 2332     CONTINUE
27784          YVAR(I)=SUM/(ANUMRE-1.0)
27785 2331   CONTINUE
27786        IREPDF=NMEAN
27787        REPDF=ANMEAN
27788        REPVAR=SUMT/REPDF
27789        REPSD=0.0
27790        IF(REPVAR.GT.0.0)REPSD=SQRT(REPVAR)
27791      ENDIF
27792C
27793 2390 CONTINUE
27794      NCOEF=NMEAN
27795C
27796C               **************************************************
27797C               **  STEP 24--                                   **
27798C               **  COMPUTE EFFECTS                             **
27799C               **  (VIA THE YATES ALGORITHM ?)                 **
27800C               **************************************************
27801C
27802      DO2410I=1,NMEAN
27803        COEF(I)=YMEAN(I)
27804 2410 CONTINUE
27805C
27806      NPASS=INT((LOG10(ANMEAN)/0.30103)+0.5)
27807      NUMFAC=NPASS
27808C
27809      DO2420IPASS=1,NPASS
27810C
27811        DO2430I=1,NMEAN
27812         DUMMY(I)=COEF(I)
27813 2430   CONTINUE
27814C
27815        J1=0
27816        J2=NMEAN/2
27817        DO2440I=1,NMEAN,2
27818          IP1=I+1
27819          J1=J1+1
27820          J2=J2+1
27821          COEF(J1)=DUMMY(IP1)+DUMMY(I)
27822          COEF(J2)=DUMMY(IP1)-DUMMY(I)
27823 2440   CONTINUE
27824C
27825 2420 CONTINUE
27826C
27827      COEF(1)=COEF(1)/ANMEAN
27828      DO2450I=2,NMEAN
27829        COEF(I)=COEF(I)/(ANMEAN/2.0)
27830 2450 CONTINUE
27831C
27832C               **************************************************
27833C               **  STEP 24--                                   **
27834C               **  COMPUTE SUM OF SQUARES FOR EACH EFFECT      **
27835C               **  REFERENCE--HUNTER DESIGN OF EXP. COURSE,    **
27836C               **             VOLUME 4, PAGE 71                **
27837C               **************************************************
27838C
27839      SSQCOE(1)=GSSQ
27840      DO2500I=2,NMEAN
27841        SSQCOE(I)=ANMEAN*COEF(I)*COEF(I)/4.0
27842 2500 CONTINUE
27843C
27844C               **************************************************
27845C               **  STEP 26--                                   **
27846C               **  DEFINE IDENTIFIERS                          **
27847C               **************************************************
27848C
27849      J=0
27850      JP1=1
27851CCCCC TAGCOE(JP1)=0.0
27852      ITAGCO(JP1)=0
27853C
27854      J=1
27855      JP1=2
27856      ITAG(J)=1
27857CCCCC TAGCOE(JP1)=ITAG(J)
27858      ITAGCO(JP1)=ITAG(J)
27859C
27860CCCCC THE FOLLOWING LINE WAS ADDED NOVEMBER 1991
27861      IF(NUMFAC.LE.1)GOTO2629
27862      DO2610IFAC=2,NUMFAC
27863        JMIN=2**(IFAC-1)
27864        JMAX=(2**IFAC)-1
27865        K=0
27866        DO2620J=JMIN,JMAX
27867          JP1=J+1
27868          IF(J.EQ.JMIN)ITAG(J)=IFAC
27869CCCCC     IF(J.EQ.JMIN)TAGCOE(JP1)=ITAG(J)
27870          IF(J.EQ.JMIN)ITAGCO(JP1)=ITAG(J)
27871          IF(J.EQ.JMIN.AND.IFAC.GE.10)ITAGCO(JP1)=ITAGCO(JP1)-10
27872          IF(J.EQ.JMIN)GOTO2620
27873          K=K+1
27874          ITAG(J)=10*ITAG(K)+IFAC
27875CCCCC     TAGCOE(JP1)=ITAG(J)
27876          ITAGCO(JP1)=ITAG(J)
27877          IF(IFAC.GE.10)ITAGCO(JP1)=ITAGCO(JP1)-10
27878 2620   CONTINUE
27879 2610 CONTINUE
27880CCCCC THE FOLLOWING LINE WAS ADDED NOVEMBER 1991
27881 2629 CONTINUE
27882C
27883      TAGCO2(1)=0.0
27884      IF(NUMFAC.LE.0)GOTO2639
27885      DO2630I=2,NMEAN
27886        AJUNK=ITAGCO(I)
27887CCCCC   ATEMP=LOG10(TAGCOE(I)+0.5)
27888        ATEMP=LOG10(AJUNK+0.5)
27889        ATEMP=ATEMP+1.0
27890        ITEMP=INT(ATEMP+0.1)
27891        TAGCO2(I)=REAL(ITEMP)
27892 2630 CONTINUE
27893 2639 CONTINUE
27894C
27895C               **************************************************
27896C               **  STEP 27--                                   **
27897C               **  COMPUTE PSEUDO-REPLIC. STANDARD DEVIATION   **
27898C               **************************************************
27899C
27900      SUM=0.0
27901      SUMI=0.0
27902      DO2700I=1,NMEAN
27903        IF(TAGCO2(I).GE.2.5)SUM=SUM+SSQCOE(I)
27904        IF(TAGCO2(I).GE.2.5)SUMI=SUMI+1.0
27905C
27906        IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')THEN
27907          WRITE(ICOUT,2701)I,TAGCO2(I),COEF(I),SSQCOE(I),SUMI,SUM
27908 2701     FORMAT('I,TAGCO2(I),COEF(I),SSQCOE(I),SUMI,SUM = ',I8,5G15.7)
27909          CALL DPWRST('XXX','BUG ')
27910        ENDIF
27911C
27912 2700 CONTINUE
27913      PRESSS=SUM
27914      PRESDF=SUMI
27915      IPRESD=INT(PRESDF+0.5)
27916      PRESVA=0.0
27917      IF(PRESDF.GT.0.1)PRESVA=PRESSS/PRESDF
27918      PRESSD=0.0
27919      IF(PRESVA.GT.0.0)PRESSD=SQRT(PRESVA)
27920C
27921      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')THEN
27922        WRITE(ICOUT,2702)PRESSS,PRESVA,PRESDF,PRESSD
27923 2702   FORMAT('PRESSS,PRESVA,PRESDF,PRESSD = ',4E15.7)
27924        CALL DPWRST('XXX','BUG ')
27925      ENDIF
27926C
27927C               ********************************************************
27928C               **  STEP 28--                                          *
27929C               **  COMPUTE A REFERENCE STANDARD DEVIATION             *
27930C               **  WHICH EQUALS                                       *
27931C               **     THE REPLICATION ST. DEV.  (IF HAVE REPLICATION) *
27932C               **     THE PSEUDO-REPLIC. ST. DEV. (IF NOT HAVE        *
27933C               **         REPLICATION)                                *
27934C               ********************************************************
27935C
27936      IREFDF=0
27937      IF(IREP.EQ.'NO')IREFDF=IPRESD
27938      IF(IREP.EQ.'YES')IREFDF=IREPDF
27939C
27940      REFVAR=0.0
27941      IF(IREP.EQ.'NO')REFVAR=PRESVA
27942C
27943      IF(IREP.EQ.'YES')REFVAR=REPVAR
27944      REFSD=0.0
27945      IF(REFVAR.GT.0.0)REFSD=SQRT(REFVAR)
27946C
27947C               **************************************************
27948C               **  STEP 29--                                   **
27949C               **  COMPUTE STANDARD DEV. FOR EACH COEF         **
27950C               **  REFERENCE--HUNTER DESIGN OF EXP. COURSE,    **
27951C               **             VOLUME 4, PAGE 82                **
27952C               **************************************************
27953C
27954      VCOER=0.0
27955      VCOER=2.0*(REPVAR/(AN/2.0))
27956      SDCOER=0.0
27957      IF(VCOER.GT.0.0)SDCOER=SQRT(VCOER)
27958C
27959      VCOEP=0.0
27960      VCOEP=2.0*(PRESVA/(AN/2.0))
27961      SDCOEP=0.0
27962      IF(VCOEP.GT.0.0)SDCOEP=SQRT(VCOEP)
27963C
27964      VCOEF=0.0
27965      VCOEF=2.0*(REFVAR/(AN/2.0))
27966      SDCOEF=0.0
27967      IF(VCOEF.GT.0.0)SDCOEF=SQRT(VCOEF)
27968C
27969CCCCC THE FOLLOWING 4 LINES WERE ADDED OCTOBER 1991
27970      VGMEAN=0.0
27971      VGMEAN=REFVAR/AN
27972      SDGMEA=0.0
27973      IF(VGMEAN.GT.0.0)SDGMEA=SQRT(VGMEAN)
27974C
27975      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')THEN
27976        WRITE(ICOUT,2903)REFVAR,REFSD,VCOEF,SDCOEF
27977 2903   FORMAT('REFVAR,REFSD,VCOEF,SDCOEF = ',4G15.7)
27978        CALL DPWRST('XXX','BUG ')
27979      ENDIF
27980C
27981C               **************************************************
27982C               **  STEP 30--                                   **
27983C               **  COMPUTE T VALUE FOR EACH COEF               **
27984C               **************************************************
27985C
27986      DO3010I=1,NMEAN
27987        TCOEF(I)=0.0
27988        IF(SDCOEF.GT.0.0)TCOEF(I)=COEF(I)/SDCOEF
27989        IF(SDCOEF.GT.0.0.AND.TCOEF(I).GT.CUTOFF)TCOEF(I)=CUTOFF
27990        IF(SDCOEF.GT.0.0.AND.TCOEF(I).LT.-CUTOFF)TCOEF(I)=(-CUTOFF)
27991 3010 CONTINUE
27992C
27993C               **************************************************
27994C               **  STEP 31--                                   **
27995C               **  COMPUTE A SORT INDEX BASED ON               **
27996C               **  THE MAGNITUDE OF THE EFFECTS                **
27997C               **************************************************
27998C
27999      DO3110I=1,NMEAN
28000        DUMMY(I)=(-ABS(COEF(I)))
28001        AINDEX(I)=I
28002 3110 CONTINUE
28003C
28004      AMIN=DUMMY(1)
28005      DO3120I=1,NMEAN
28006        IF(DUMMY(I).LT.AMIN)AMIN=DUMMY(I)
28007 3120 CONTINUE
28008      DUMMY(1)=AMIN-10.0
28009C
28010      CALL SORTC(DUMMY,AINDEX,NMEAN,DUMMY2,AINDE2)
28011C
28012C               **************************************************
28013C               **  STEP 32--                                   **
28014C               **  COMPUTE THE RESIDUAL STANDARD DEVIATION     **
28015C               **  THAT WOULD RESULT IF FIT EACH TERM          **
28016C               **  INDIVIDUALLY, AS IN                         **
28017C               **  RESPONSE = CONSTANT + TERM + ERROR          **
28018C               **************************************************
28019C
28020CCCCC DO3210I=1,NMEAN
28021CCCCC CALL DMV(TAGCOE(I),NMEAN,TEMP)
28022CCCCC COEFFI=COEF(I)
28023CCCCC SUM=0.0
28024CCCCC DO3220J=1,NMEAN
28025CCCCC PREDJ=GMEAN+COEFFI*TEMP(J)
28026CCCCC RESJ=Y(J)-PREDJ
28027CCCCC SUM=SUM+RESJ*RESJ
28028C3220 CONTINUE
28029CCCCC RESVI=SUM/(AN-2.0)
28030CCCCC RESSDI=0.0
28031CCCCC IF(RESVI.GT.0.0)RESSDI=SQRT(RESVI)
28032CCCCC RSDCOE(I)=RESSDI
28033C3210 CONTINUE
28034C
28035      DO3210I=1,NMEAN
28036CCCCC   THE FOLLOWING LINE WAS INSERTED JUNE 1992 (JJF)
28037        RVAR=0.0
28038CCCCC   IF(I.EQ.1)RVAR=SSQCOE(1)/(ANMEAN-1.0)
28039        IF(I.EQ.1)RVAR=SSQCOE(1)/(AN-1.0)
28040CCCCC   IF(I.GE.2)RVAR=(SSQCOE(1)-SSQCOE(I))/(ANMEAN-1.0-1.0)
28041CCCCC   THE FOLLOWING LINE WAS FIXED NOVEMBER 1991
28042CCCCC   IF(I.GE.2)RVAR=(SSQCOE(1)-SSQCOE(I))/(AN-1.0-1.0)
28043        IDENOM=N-1-1
28044CCCCC   THE FOLLOWING LINE WAS COMMENTED OUT & MOVED UP JUNE 1992 (JJF)
28045CCCCC   RVAR=0.0
28046        IF(I.GE.2.AND.IDENOM.GE.1)RVAR=(SSQCOE(1)-SSQCOE(I))/
28047     1                                 (AN-1.0-1.0)
28048        RSDCOE(I)=0.0
28049        IF(RVAR.GT.0.0)RSDCOE(I)=SQRT(RVAR)
28050 3210 CONTINUE
28051C
28052      DO3220I=1,NMEAN
28053        AI=I
28054        I2=INT(AINDE2(I)+0.5)
28055        IF(I.EQ.1)CUMSSQ=0.0
28056        IF(I.GE.2)CUMSSQ=CUMSSQ+SSQCOE(I2)
28057CCCCC   IF(I.LT.NMEAN)RVAR=(SSQCOE(1)-CUMSSQ)/(ANMEAN-AI)
28058        IF(I.LT.NMEAN)RVAR=(SSQCOE(1)-CUMSSQ)/(AN-AI)
28059        IF(I.EQ.NMEAN.AND.IREP.EQ.'YES')RVAR=(SSQCOE(1)-CUMSSQ)/(AN-AI)
28060        IF(I.EQ.NMEAN.AND.IREP.EQ.'NO')RVAR=0.0
28061        RSDCOC(I2)=0.0
28062        IF(RVAR.GT.0.0)RSDCOC(I2)=SQRT(RVAR)
28063 3220 CONTINUE
28064C
28065C               **************************************************
28066C               **  STEP 33--                                   **
28067C               **  COMPUTE 97.5 AND 99.5 PERCENT POINTS        **
28068C               **  COMPUTE 95% AND 99% CONFIDENCE LIMITS       **
28069C               **************************************************
28070C
28071      NU=IREFDF
28072C
28073      P=0.975
28074      CALL TPPF(P,REAL(NU),T975)
28075      CL95=T975*SDCOEF
28076C
28077      P=0.995
28078      CALL TPPF(P,REAL(NU),T995)
28079      CL99=T995*SDCOEF
28080C
28081C               **************************************************
28082C               **  STEP 34--                                   **
28083C               **  FLAG THOSE EFFECTS WHICH HAVE T VALUES      **
28084C               **  LARGER (IN MAGNITUDE) THAT T975, AND        **
28085C               **  LARGER (IN MAGNITUDE) THAT T995             **
28086C               **************************************************
28087C
28088      DO3400I=1,NMEAN
28089CCCCC   THE FOLLOWING 3 LINES WERE FIXED NOVEMBER 1991
28090CCCCC   IFLAG(I)='  '
28091CCCCC   IF(ABS(TCOEF(I)).GT.T975)IFLAG(I)='* '
28092CCCCC   IF(ABS(TCOEF(I)).GT.T995)IFLAG(I)='**'
28093        IFLAG(I)=0
28094        IF(ABS(TCOEF(I)).GT.T975)IFLAG(I)=1
28095        IF(ABS(TCOEF(I)).GT.T995)IFLAG(I)=2
28096 3400 CONTINUE
28097C
28098C               ****************************
28099C               **  STEP 71--             **
28100C               **  WRITE EVERYTHING OUT  **
28101C               ****************************
28102C
28103      ISTEPN='71'
28104      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')
28105     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
28106C
28107CCCCC 2015/01 BUG: IF PRINTING OFF, STILL NEED TO WRITE TO
28108CCCCC              AUXILLARY FILES AND, OPTIONALLY, PERFORM
28109CCCCC              PHD ANALYSIS
28110C
28111CCCCC IF(IPRINT.EQ.'OFF')GOTO9000
28112      IF(IPRINT.EQ.'OFF')GOTO8000
28113C
28114      NUMDIG=7
28115      IF(IFORSW.EQ.'1')NUMDIG=1
28116      IF(IFORSW.EQ.'2')NUMDIG=2
28117      IF(IFORSW.EQ.'3')NUMDIG=3
28118      IF(IFORSW.EQ.'4')NUMDIG=4
28119      IF(IFORSW.EQ.'5')NUMDIG=5
28120      IF(IFORSW.EQ.'6')NUMDIG=6
28121      IF(IFORSW.EQ.'7')NUMDIG=7
28122      IF(IFORSW.EQ.'8')NUMDIG=8
28123      IF(IFORSW.EQ.'9')NUMDIG=9
28124      IF(IFORSW.EQ.'0')NUMDIG=0
28125      IF(IFORSW.EQ.'E')NUMDIG=-2
28126      IF(IFORSW.EQ.'-2')NUMDIG=-2
28127      IF(IFORSW.EQ.'-3')NUMDIG=-3
28128      IF(IFORSW.EQ.'-4')NUMDIG=-4
28129      IF(IFORSW.EQ.'-5')NUMDIG=-5
28130      IF(IFORSW.EQ.'-6')NUMDIG=-6
28131      IF(IFORSW.EQ.'-7')NUMDIG=-7
28132      IF(IFORSW.EQ.'-8')NUMDIG=-8
28133      IF(IFORSW.EQ.'-9')NUMDIG=-9
28134C
28135      ITITLE='2**K DEX Fit'
28136      NCTITL=12
28137      ITITLZ='(Note--Data Must Be In Standard Order)'
28138      NCTITZ=38
28139C
28140      ICNT=0
28141C
28142      ICNT=ICNT+1
28143      ITEXT(ICNT)='Summary Statistics:'
28144      NCTEXT(ICNT)=19
28145      AVALUE(ICNT)=0.0
28146      IDIGIT(ICNT)=-1
28147      ICNT=ICNT+1
28148      ITEXT(ICNT)='Number of Observations:'
28149      NCTEXT(ICNT)=23
28150      AVALUE(ICNT)=REAL(N)
28151      IDIGIT(ICNT)=0
28152      ICNT=ICNT+1
28153      ITEXT(ICNT)='Number of Factors:'
28154      NCTEXT(ICNT)=23
28155      AVALUE(ICNT)=REAL(NUMFAC)
28156      IDIGIT(ICNT)=0
28157      ICNT=ICNT+1
28158      ITEXT(ICNT)=' '
28159      NCTEXT(ICNT)=1
28160      AVALUE(ICNT)=0.0
28161      IDIGIT(ICNT)=-1
28162      IF(IREP.EQ.'NO')THEN
28163        ICNT=ICNT+1
28164        ITEXT(ICNT)='No Replication Case:'
28165        NCTEXT(ICNT)=20
28166        AVALUE(ICNT)=0.0
28167        IDIGIT(ICNT)=-1
28168      ELSE
28169        ICNT=ICNT+1
28170        ITEXT(ICNT)='Replication Case:'
28171        NCTEXT(ICNT)=17
28172        AVALUE(ICNT)=0.0
28173        IDIGIT(ICNT)=-1
28174        IF(IYATOS.EQ.'1'.OR.IYATOS.EQ.'12'.OR.IYATOS.EQ.'13'.OR.
28175     1    IYATOS.EQ.'123')THEN
28176          ICNT=ICNT+1
28177          ITEXT(ICNT)='Replication Standard Deviation:'
28178          NCTEXT(ICNT)=31
28179          AVALUE(ICNT)=REPSD
28180          IDIGIT(ICNT)=NUMDIG
28181          ICNT=ICNT+1
28182          ITEXT(ICNT)='Replication Degrees of Freedom:'
28183          NCTEXT(ICNT)=31
28184          AVALUE(ICNT)=IREPDF
28185          IDIGIT(ICNT)=0
28186        ENDIF
28187      ENDIF
28188C
28189      IF(IYATOS.EQ.'1'.OR.IYATOS.EQ.'12'.OR.IYATOS.EQ.'13'.OR.
28190     1  IYATOS.EQ.'123')THEN
28191        ICNT=ICNT+1
28192        ITEXT(ICNT)='Psuedo-Replication Standard Deviation:'
28193        NCTEXT(ICNT)=38
28194        AVALUE(ICNT)=PRESSD
28195        IDIGIT(ICNT)=NUMDIG
28196        ICNT=ICNT+1
28197        ITEXT(ICNT)='Psuedo-Degrees of Freedom:'
28198        NCTEXT(ICNT)=26
28199        AVALUE(ICNT)=IPRESD
28200        IDIGIT(ICNT)=0
28201        ICNT=ICNT+1
28202        ITEXT(ICNT)='(The Psuedo-Replication SD Assumes All'
28203        NCTEXT(ICNT)=38
28204        AVALUE(ICNT)=0.0
28205        IDIGIT(ICNT)=-1
28206        ICNT=ICNT+1
28207        ITEXT(ICNT)='3, 4, 5, ...-Term Interactions are not'
28208        NCTEXT(ICNT)=38
28209        AVALUE(ICNT)=0.0
28210        IDIGIT(ICNT)=-1
28211        ICNT=ICNT+1
28212        ITEXT(ICNT)='Real, But Are Manifestations of Random'
28213        NCTEXT(ICNT)=38
28214        AVALUE(ICNT)=0.0
28215        IDIGIT(ICNT)=-1
28216        ICNT=ICNT+1
28217        ITEXT(ICNT)='Error.'
28218        NCTEXT(ICNT)=6
28219        AVALUE(ICNT)=0.0
28220        IDIGIT(ICNT)=-1
28221C
28222        IF(IREP.EQ.'YES')THEN
28223           ICNT=ICNT+1
28224           ITEXT(ICNT)='Standard Deviation of a Coefficent:'
28225           NCTEXT(ICNT)=35
28226           AVALUE(ICNT)=SDCOER
28227           IDIGIT(ICNT)=NUMDIG
28228           ICNT=ICNT+1
28229           ITEXT(ICNT)='(Based On Replication Std. Deviation)'
28230           NCTEXT(ICNT)=37
28231           AVALUE(ICNT)=0.0
28232           IDIGIT(ICNT)=-1
28233        ELSE
28234           ICNT=ICNT+1
28235           ITEXT(ICNT)='Standard Deviation of a Coefficent:'
28236           NCTEXT(ICNT)=35
28237           AVALUE(ICNT)=SDCOEP
28238           IDIGIT(ICNT)=NUMDIG
28239           ICNT=ICNT+1
28240           ITEXT(ICNT)='(Based On Psuedo-Replication Std. Dev.)'
28241           NCTEXT(ICNT)=39
28242           AVALUE(ICNT)=0.0
28243           IDIGIT(ICNT)=-1
28244        ENDIF
28245      ENDIF
28246C
28247      ICNT=ICNT+1
28248      ITEXT(ICNT)=' '
28249      NCTEXT(ICNT)=1
28250      AVALUE(ICNT)=0.0
28251      IDIGIT(ICNT)=-1
28252C
28253      ICNT=ICNT+1
28254      ITEXT(ICNT)='Grand Mean:'
28255      NCTEXT(ICNT)=11
28256      AVALUE(ICNT)=GMEAN
28257      IDIGIT(ICNT)=NUMDIG
28258      ICNT=ICNT+1
28259      ITEXT(ICNT)='Grand Standard Deviation:'
28260      NCTEXT(ICNT)=25
28261      AVALUE(ICNT)=GSD
28262      IDIGIT(ICNT)=NUMDIG
28263      ICNT=ICNT+1
28264      ITEXT(ICNT)=' '
28265      NCTEXT(ICNT)=1
28266      AVALUE(ICNT)=0.0
28267      IDIGIT(ICNT)=-1
28268C
28269      ICNT=ICNT+1
28270      ITEXT(ICNT)='99% Confidence Limits (+-):'
28271      NCTEXT(ICNT)=27
28272      AVALUE(ICNT)=CL99
28273      IDIGIT(ICNT)=NUMDIG
28274      ICNT=ICNT+1
28275      ITEXT(ICNT)='95% Confidence Limits (+-):'
28276      NCTEXT(ICNT)=27
28277      AVALUE(ICNT)=CL95
28278      IDIGIT(ICNT)=NUMDIG
28279      ICNT=ICNT+1
28280      ITEXT(ICNT)='99.5% Point Of T Distribution:'
28281      NCTEXT(ICNT)=30
28282      AVALUE(ICNT)=T995
28283      IDIGIT(ICNT)=NUMDIG
28284      ICNT=ICNT+1
28285      ITEXT(ICNT)='97.5% Point Of T Distribution:'
28286      NCTEXT(ICNT)=30
28287      AVALUE(ICNT)=T975
28288      IDIGIT(ICNT)=NUMDIG
28289      ICNT=ICNT+1
28290      ITEXT(ICNT)=' '
28291      NCTEXT(ICNT)=1
28292      AVALUE(ICNT)=0.0
28293      IDIGIT(ICNT)=-1
28294C
28295      NUMROW=ICNT
28296      DO5010I=1,NUMROW
28297        NTOT(I)=15
28298 5010 CONTINUE
28299C
28300      IFRST=.TRUE.
28301      ILAST=.TRUE.
28302C
28303      ISTEPN='42A'
28304      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')
28305     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
28306C
28307      CALL DPDTA1(ITITLE,NCTITL,ITITLZ,NCTITZ,ITEXT,NCTEXT,
28308     1            AVALUE,IDIGIT,
28309     1            NTOT,NUMROW,
28310     1            ICAPSW,ICAPTY,ILAST,IFRST,
28311     1            ISUBRO,IBUGA3,IERROR)
28312C
28313      ISTEPN='42D'
28314      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')
28315     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
28316C
28317      IF(IYATOS.EQ.'3'.OR.IYATOS.EQ.'13'.OR.IYATOS.EQ.'23'.OR.
28318     1   IYATOS.EQ.'123')THEN
28319C
28320        ITITLE=' '
28321        NCTITL=0
28322        ITITL9=' '
28323        NCTIT9=0
28324        ICNT=0
28325C
28326        DO5030J=1,NUMCLI
28327          DO5040I=1,3
28328            ITITL2(I,J)=' '
28329            NCTIT2(I,J)=0
28330 5040     CONTINUE
28331 5030   CONTINUE
28332C
28333        ITITL2(3,1)='Identifier'
28334        NCTIT2(3,1)=10
28335C
28336        ITITL2(2,2)='Effect'
28337        NCTIT2(2,2)=6
28338        ITITL2(3,2)='Estimate'
28339        NCTIT2(3,2)=8
28340C
28341        ITITL2(3,3)='T Value'
28342        NCTIT2(3,3)=7
28343C
28344        ITITL2(1,4)='RESSD:'
28345        NCTIT2(1,4)=6
28346        ITITL2(2,4)='Mean +'
28347        NCTIT2(2,4)=6
28348        ITITL2(3,4)='Term'
28349        NCTIT2(3,4)=4
28350C
28351        ITITL2(1,5)='RESSD:'
28352        NCTIT2(1,5)=6
28353        ITITL2(2,5)='Mean +'
28354        NCTIT2(2,5)=6
28355        ITITL2(3,5)='Cum Terms'
28356        NCTIT2(3,5)=4
28357C
28358        NMAX=0
28359        NUMCOL=5
28360        DO5050I=1,NUMCOL
28361          VALIGN(I)='b'
28362          ALIGN(I)='r'
28363          NTOT(I)=15
28364          NMAX=NMAX+NTOT(I)
28365          ITYPCO(I)='NUME'
28366          IDIGIT(I)=NUMDIG
28367          IF(I.EQ.1 .OR. I.EQ.3)THEN
28368            ITYPCO(I)='ALPH'
28369          ENDIF
28370 5050   CONTINUE
28371C
28372        IWHTML(1)=125
28373        IWHTML(2)=150
28374        IWHTML(3)=150
28375        IWHTML(4)=150
28376        IWHTML(5)=150
28377        IINC=1800
28378        IINC2=1400
28379        IWRTF(1)=IINC
28380        IWRTF(2)=IWRTF(1)+IINC
28381        IWRTF(3)=IWRTF(2)+IINC
28382        IWRTF(4)=IWRTF(3)+IINC
28383        IWRTF(5)=IWRTF(4)+IINC
28384C
28385        ITAGCO(1)=0
28386        TCOEF(1)=-999.99
28387        IF(SDGMEA.GT.0.0)TCOEF(1)=GMEAN/SDGMEA
28388        IFLAG(1)=0
28389C
28390        IVALUE(1,1)(1:4)='Mean'
28391        NCVALU(1,1)=4
28392        IVALUE(1,3)(1:4)=' '
28393        NCVALU(1,3)=1
28394        AMAT(1,2)=GMEAN
28395        AMAT(1,4)=RSDCOE(1)
28396        AMAT(1,5)=RSDCOE(1)
28397C
28398        ICNT=1
28399        DO5060I=2,NMEAN
28400C
28401          I2=INT(AINDE2(I)+0.5)
28402          IF(CCUTP.LT.CPUMAX.AND.
28403     1       CCUTN.LE.COEF(I2).AND.COEF(I2).LE.CCUTP)GOTO5060
28404          IF(TCUTP.LT.CPUMAX.AND.
28405     1       TCUTN.LE.TCOEF(I2).AND.TCOEF(I2).LE.TCUTP)GOTO5060
28406          IF(RCUTP.LT.CPUMAX.AND.
28407     1       RCUTN.LE.RSDCOC(I2).AND.RSDCOC(I2).LE.RCUTP)GOTO5060
28408C
28409          STAR='  '
28410          IF(IFLAG(I2).EQ.1)STAR='* '
28411          IF(IFLAG(I2).EQ.2)STAR='**'
28412          ICNT=ICNT+1
28413C
28414          AMAT(ICNT,2)=COEF(I2)
28415          AMAT(ICNT,4)=RSDCOE(I2)
28416          AMAT(ICNT,5)=RSDCOC(I2)
28417C
28418          WRITE(IVALUE(ICNT,3)(1:13),'(F13.1)')TCOEF(I2)
28419          ICNT2=0
28420          DO5070II=1,13
28421            IF(IVALUE(ICNT,3)(II:II).NE.' ')THEN
28422              ICNT2=ICNT2+1
28423              IVALUE(ICNT,3)(ICNT2:ICNT2)=IVALUE(ICNT,3)(II:II)
28424            ENDIF
28425 5070     CONTINUE
28426          IF(IFLAG(I2).EQ.1)THEN
28427            ICNT2=ICNT2+1
28428            IVALUE(ICNT,3)(ICNT2:ICNT2)='*'
28429            ICNT2=ICNT2+1
28430            IVALUE(ICNT,3)(ICNT2:ICNT2)=' '
28431          ELSEIF(IFLAG(I2).EQ.2)THEN
28432            ICNT2=ICNT2+1
28433            IVALUE(ICNT,3)(ICNT2:ICNT2)='*'
28434            ICNT2=ICNT2+1
28435            IVALUE(ICNT,3)(ICNT2:ICNT2)='*'
28436          ELSE
28437            ICNT2=ICNT2+1
28438            IVALUE(ICNT,3)(ICNT2:ICNT2)=' '
28439            ICNT2=ICNT2+1
28440            IVALUE(ICNT,3)(ICNT2:ICNT2)=' '
28441          ENDIF
28442          NCVALU(ICNT,3)=ICNT2
28443C
28444          WRITE(IVALUE(ICNT,1)(1:9),'(I9)')ITAGCO(I2)
28445          ICNT2=0
28446          DO5080II=1,9
28447            IF(IVALUE(ICNT,1)(II:II).NE.' ')THEN
28448              ICNT2=ICNT2+1
28449              IVALUE(ICNT,1)(ICNT2:ICNT2)=IVALUE(ICNT,1)(II:II)
28450            ENDIF
28451 5080     CONTINUE
28452          NCVALU(ICNT,1)=ICNT2
28453C
28454 5060   CONTINUE
28455C
28456        NUMLIN=3
28457        NUMCOL=5
28458        IFRST=.TRUE.
28459        ILAST=.TRUE.
28460        IFLAGS=.TRUE.
28461        IFLAGE=.TRUE.
28462        CALL DPDTA5(ITITLE,NCTITL,
28463     1              ITITL9,NCTIT9,ITITL2,NCTIT2,
28464     1              MAXLIN,NUMLIN,NUMCLI,NUMCOL,
28465     1              IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
28466     1              IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
28467     1              ICAPSW,ICAPTY,IFRST,ILAST,
28468     1              IFLAGS,IFLAGE,
28469     1              ISUBRO,IBUGA3,IERROR)
28470C
28471      ENDIF
28472C
28473 8000 CONTINUE
28474C
28475      ITAGCO(1)=0
28476      TCOEF(1)=-999.99
28477      IF(SDGMEA.GT.0.0)TCOEF(1)=GMEAN/SDGMEA
28478      IFLAG(1)=0
28479      WRITE(IOUNI2,7433)ITAGCO(1),GMEAN,SDGMEA,RSDCOE(1),RSDCOE(1)
28480 7433 FORMAT(I9,F14.5,F13.1,'  ',F11.5,F11.5)
28481C
28482      DO7440I=2,NMEAN
28483        I2=INT(AINDE2(I)+0.5)
28484        IF(CCUTP.LT.CPUMAX.AND.
28485     1     CCUTN.LE.COEF(I2).AND.COEF(I2).LE.CCUTP)GOTO7440
28486        IF(TCUTP.LT.CPUMAX.AND.
28487     1     TCUTN.LE.TCOEF(I2).AND.TCOEF(I2).LE.TCUTP)GOTO7440
28488        IF(RCUTP.LT.CPUMAX.AND.
28489     1     RCUTN.LE.RSDCOC(I2).AND.RSDCOC(I2).LE.RCUTP)GOTO7440
28490C
28491        STAR='  '
28492        IF(IFLAG(I2).EQ.1)STAR='* '
28493        IF(IFLAG(I2).EQ.2)STAR='**'
28494        WRITE(IOUNI1,7443)ITAGCO(I2),COEF(I2),TCOEF(I2),
28495     1                    RSDCOE(I2),RSDCOC(I2)
28496        WRITE(IOUNI2,7443)ITAGCO(I2),COEF(I2),TCOEF(I2),
28497     1                    RSDCOE(I2),RSDCOC(I2)
28498 7443   FORMAT(I9,F14.5,F13.1,'  ',F11.5,F11.5)
28499 7440 CONTINUE
28500C
28501C               *******************************************
28502C               **  STEP 75--                            **
28503C               **  GENERATE PHD ANALYSIS IF REQUESTED   **
28504C               *******************************************
28505C
28506      IF(IPHDFL.EQ.'OFF')GOTO8901
28507      IF(NUMFAC.GT.9)GOTO8901
28508C
28509      WRITE(ICOUT,999)
28510      CALL DPWRST('XXX','BUG ')
28511CCCCC WRITE(ICOUT,8201)
28512C8201 FORMAT('***** WARNING--THE PHD ANALYSIS IS STILL UNDER ',
28513CCCCC1       'DEVELOPMENT.')
28514CCCCC CALL DPWRST('XXX','BUG ')
28515CCCCC WRITE(ICOUT,8203)
28516C8203 FORMAT('      OUTPUT GIVEN HERE SHOULD BE CONSIDEREDS TEST ',
28517CCCCC1       'OUTPUT.')
28518CCCCC CALL DPWRST('XXX','BUG ')
28519CCCCC WRITE(ICOUT,999)
28520CCCCC CALL DPWRST('XXX','BUG ')
28521C
28522      REWIND(IOUNI1)
28523      REWIND(IOUNI2)
28524C
28525C     FORM VECTOR OF ESTIMATED MAIN EFFECTS.
28526C
28527      IMAX=2**NUMFAC
28528      DO8100I=1,IMAX
28529         IVAL=ITAGCO(I)
28530         IF(0.LE.IVAL.AND.IVAL.LE.9)THEN
28531            IUNITS=IVAL
28532            IF(IUNITS.LE.0)IUNITS=10
28533            AMAIN(IUNITS)=COEF(I)
28534         ENDIF
28535 8100 CONTINUE
28536C
28537C     FORM PREDICTED VALUES AND RESIDUALS FOR MAIN EFFECTS MODEL
28538C
28539      DO8110I=1,N
28540         SUM=0.0
28541         DO8120J=1,NUMFAC
28542            CALL YATES(I,J,XIJ)
28543            SUM=SUM+AMAIN(J)*XIJ
28544 8120    CONTINUE
28545         SUM=0.5*SUM
28546         SUM=SUM+GMEAN
28547         PREDLIN(I)=SUM
28548         RESLIN(I)=Y(I)-PREDLIN(I)
28549 8110 CONTINUE
28550C
28551C     FORM THE MATRIX OF 2-TERM INTERACTION EFFECTS
28552C
28553      DO8200I=1,NUMFAC
28554        A(I,I)=0.0
28555 8200 CONTINUE
28556C
28557      IMAX=2**NUMFAC
28558      DO8210I=1,IMAX
28559         IVAL=ITAGCO(I)
28560         IF(10.LE.IVAL.AND.IVAL.LE.99)THEN
28561            ITENS=IVAL/10
28562            ITERM=10*ITENS
28563            IUNITS=IVAL-ITERM
28564            IF(ITENS.LE.0)ITENS=10
28565            IF(IUNITS.LE.0)IUNITS=10
28566            A(ITENS,IUNITS)=COEF(I)
28567            A(IUNITS,ITENS)=COEF(I)
28568         ENDIF
28569 8210 CONTINUE
28570C
28571C     PRINT FIRST PHD TABLE
28572C
28573      ITITLE='Dex Principal Hessian Directions (PHD) Analysis'
28574      NCTITL=47
28575      ITITL9=' '
28576      NCTIT9=0
28577      ICNT=0
28578C
28579      DO5130J=1,NUMCLI
28580        DO5140I=1,MAXLIN
28581          ITITL2(I,J)=' '
28582          NCTIT2(I,J)=0
28583 5140   CONTINUE
28584 5130 CONTINUE
28585C
28586      ITITL2(2,1)='I'
28587      NCTIT2(2,1)=1
28588C
28589      ITITL2(2,2)='Identifier'
28590      NCTIT2(2,2)=10
28591C
28592      ITITL2(1,3)='Effect'
28593      NCTIT2(1,3)=6
28594      ITITL2(2,3)='Estimate'
28595      NCTIT2(2,3)=8
28596C
28597      NMAX=0
28598      NUMCOL=3
28599      DO5150I=1,NUMCOL
28600        VALIGN(I)='b'
28601        ALIGN(I)='r'
28602        NTOT(I)=15
28603        NMAX=NMAX+NTOT(I)
28604        ITYPCO(I)='NUME'
28605        IDIGIT(I)=NUMDIG
28606        IF(I.EQ.1 .OR. I.EQ.2)IDIGIT(I)=0
28607 5150 CONTINUE
28608C
28609      IWHTML(1)=125
28610      IWHTML(2)=150
28611      IWHTML(3)=150
28612      IINC=1800
28613      IINC2=1400
28614      IWRTF(1)=IINC
28615      IWRTF(2)=IWRTF(1)+IINC
28616      IWRTF(3)=IWRTF(2)+IINC
28617C
28618      IMAX=2**NUMFAC
28619      DO8250I=1,IMAX
28620        AMAT(I,1)=REAL(I)
28621        AMAT(I,2)=REAL(ITAGCO(I))
28622        AMAT(I,3)=COEF(I)
28623 8250 CONTINUE
28624C
28625      NUMLIN=2
28626      NUMCOL=3
28627      ICNT=IMAX
28628      IFRST=.TRUE.
28629      ILAST=.TRUE.
28630      IFLAGS=.TRUE.
28631      IFLAGE=.TRUE.
28632      CALL DPDTA5(ITITLE,NCTITL,
28633     1            ITITL9,NCTIT9,ITITL2,NCTIT2,
28634     1            MAXLIN,NUMLIN,NUMCLI,NUMCOL,
28635     1            IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
28636     1            IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
28637     1            ICAPSW,ICAPTY,IFRST,ILAST,
28638     1            IFLAGS,IFLAGE,
28639     1            ISUBRO,IBUGA3,IERROR)
28640C
28641      DO8300I=1,NUMFAC
28642        WRITE(IOUNI1,8306)(A(I,J),J=1,NUMFAC)
28643 8306   FORMAT(12(1X,E15.7))
28644 8300 CONTINUE
28645C
28646C     PRINT PHD TABLE  3: TABLE OF 2-TERM INTERACTIONS
28647C
28648      NLOOP=1
28649      IF(NUMFAC.GE.7 .AND. NUMFAC.LE.12)NLOOP=2
28650C
28651      DO5310ILOOP=1,NLOOP
28652C
28653        IFAC1=(ILOOP-1)*6 + 1
28654        IFAC2=ILOOP*6
28655        IF(IFAC2.GT.NUMFAC)IFAC2=NUMFAC
28656        NUMCOL=IFAC2-IFAC1+1
28657        ITITLE='2-Term Interaction Effects Matrix'
28658        NCTITL=33
28659        ITITL9='(Factors x to xx)'
28660        WRITE(ITITL9(10:10),'(I1)')IFAC1
28661        WRITE(ITITL9(15:16),'(I2)')IFAC2
28662        NCTIT9=17
28663        ICNT=0
28664C
28665        DO5330I=1,MAXLIN
28666          DO5340J=1,NUMCOL
28667            ITITL2(I,J)=' '
28668            NCTIT2(I,J)=0
28669            IF(I.EQ.1)THEN
28670              IVAL=IFAC1+J-1
28671              WRITE(ITITL2(1,J)(1:2),'(I2)')IVAL
28672              NCTIT2(I,J)=2
28673            ENDIF
28674 5340     CONTINUE
28675 5330   CONTINUE
28676C
28677        NMAX=0
28678        DO5350I=1,NUMCOL
28679          VALIGN(I)='b'
28680          ALIGN(I)='r'
28681          NTOT(I)=15
28682          NMAX=NMAX+NTOT(I)
28683          ITYPCO(I)='NUME'
28684          IDIGIT(I)=NUMDIG
28685          IWHTML(I)=125
28686 5350   CONTINUE
28687C
28688        IINC=1600
28689        IWRTF(1)=IINC
28690        IWRTF(2)=IWRTF(1)+IINC
28691        IWRTF(3)=IWRTF(2)+IINC
28692        IWRTF(4)=IWRTF(2)+IINC
28693        IWRTF(5)=IWRTF(2)+IINC
28694        IWRTF(6)=IWRTF(2)+IINC
28695C
28696        DO5351J=IFAC1,IFAC2
28697          DO5355I=1,NUMFAC
28698              IVAL=IFAC1+J-1
28699              AMAT(I,IVAL)=A(I,IVAL)
28700 5355     CONTINUE
28701 5351   CONTINUE
28702C
28703        NUMLIN=1
28704        ICNT=NUMFAC
28705        IFRST=.TRUE.
28706        ILAST=.TRUE.
28707        IFLAGS=.TRUE.
28708        IFLAGE=.TRUE.
28709        CALL DPDTA5(ITITLE,NCTITL,
28710     1              ITITL9,NCTIT9,ITITL2,NCTIT2,
28711     1              MAXLIN,NUMLIN,NUMCLI,NUMCOL,
28712     1              IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
28713     1              IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
28714     1              ICAPSW,ICAPTY,IFRST,ILAST,
28715     1              IFLAGS,IFLAGE,
28716     1              ISUBRO,IBUGA3,IERROR)
28717C
28718 5310 CONTINUE
28719C
28720C     DETERMINE THE EIGENVALUES AND EIGENVECTORS OF THE MATRIX
28721C
28722CCCCC AUGUST 1995.  REPLACE NUMERICAL RECIPES ROUTINE WITH
28723CCCCC EISPACK ROUTINE.  SSIEV IS FOR SYMMETRIC CASE.
28724CCCCC CALL JACOBI(A,NUMFAC,MAXCOL,EIGVAL,EIGVEC,JACROT)
28725      IERR2=0
28726      IJOB=1
28727      DO8341JJ=1,MAXFAC
28728      DO8342II=1,MAXFAC
28729        EIGVEC(II,JJ)=A(II,JJ)
28730 8342 CONTINUE
28731 8341 CONTINUE
28732      CALL SSIEV(EIGVEC,MAXFAC,NUMFAC,EIGVAL,VJUNK,IJOB,IERR2)
28733C
28734C     SINCE PRINT SORTED EIGENVALUES LATER, NO NEED TO PRINT HERE
28735C
28736CCCCC WRITE(ICOUT,999)
28737CCCCC CALL DPWRST('XXX','BUG ')
28738CCCCC DO8410I=1,NUMFAC
28739CCCCC   WRITE(ICOUT,8411)EIGVAL(I)
28740C8411   FORMAT(1X,10F10.3)
28741CCCCC   CALL DPWRST('XXX','BUG ')
28742C8410 CONTINUE
28743C
28744      WRITE(ICOUT,999)
28745      CALL DPWRST('XXX','BUG ')
28746      DO8510I=1,NUMFAC
28747        WRITE(IOUNI3,8512)(EIGVEC(I,J),J=1,NUMFAC)
28748 8512   FORMAT(12(1X,E15.7))
28749 8510 CONTINUE
28750C
28751C     PRINT PHD TABLE  4: TABLE OF EIGENVECTORS
28752C
28753      NLOOP=1
28754      IF(NUMFAC.GE.7 .AND. NUMFAC.LE.12)NLOOP=2
28755C
28756      DO5410ILOOP=1,NLOOP
28757C
28758        IFAC1=(ILOOP-1)*6 + 1
28759        IFAC2=ILOOP*6
28760        IF(IFAC2.GT.NUMFAC)IFAC2=NUMFAC
28761        NUMCOL=IFAC2-IFAC1+1
28762        ITITLE='Eigenvectors'
28763        NCTITL=12
28764        ITITL9='(Factors x to xx)'
28765        WRITE(ITITL9(10:10),'(I1)')IFAC1
28766        WRITE(ITITL9(15:16),'(I2)')IFAC2
28767        NCTIT9=17
28768        ICNT=0
28769C
28770        DO5430I=1,MAXLIN
28771          DO5440J=1,NUMCOL
28772            ITITL2(I,J)=' '
28773            NCTIT2(I,J)=0
28774            IF(I.EQ.1)THEN
28775              IVAL=IFAC1+J-1
28776              WRITE(ITITL2(I,J)(1:2),'(I2)')IVAL
28777              NCTIT2(I,J)=2
28778            ENDIF
28779 5440     CONTINUE
28780 5430   CONTINUE
28781C
28782        NMAX=0
28783        DO5450I=1,NUMCOL
28784          VALIGN(I)='b'
28785          ALIGN(I)='r'
28786          NTOT(I)=15
28787          NMAX=NMAX+NTOT(I)
28788          ITYPCO(I)='NUME'
28789          IDIGIT(I)=NUMDIG
28790          IWHTML(I)=125
28791 5450   CONTINUE
28792C
28793        IINC=1600
28794        IWRTF(1)=IINC
28795        IWRTF(2)=IWRTF(1)+IINC
28796        IWRTF(3)=IWRTF(2)+IINC
28797        IWRTF(4)=IWRTF(2)+IINC
28798        IWRTF(5)=IWRTF(2)+IINC
28799        IWRTF(6)=IWRTF(2)+IINC
28800C
28801        DO5451J=IFAC1,IFAC2
28802          DO5455I=1,NUMFAC
28803              IVAL=IFAC1+J-1
28804              AMAT(I,IVAL)=EIGVEC(I,IVAL)
28805 5455     CONTINUE
28806 5451   CONTINUE
28807C
28808        NUMLIN=1
28809        ICNT=NUMFAC
28810        IFRST=.TRUE.
28811        ILAST=.TRUE.
28812        IFLAGS=.TRUE.
28813        IFLAGE=.TRUE.
28814        CALL DPDTA5(ITITLE,NCTITL,
28815     1              ITITL9,NCTIT9,ITITL2,NCTIT2,
28816     1              MAXLIN,NUMLIN,NUMCLI,NUMCOL,
28817     1              IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
28818     1              IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
28819     1              ICAPSW,ICAPTY,IFRST,ILAST,
28820     1              IFLAGS,IFLAGE,
28821     1              ISUBRO,IBUGA3,IERROR)
28822C
28823 5410 CONTINUE
28824C
28825C     DETERMINE THE 2 LARGEST (IN MAGNITUDE) EIGENVALUES
28826C     AND WHAT EIGENVECTORS THEY ARE ASSOCIATED WITH
28827C
28828      DO8600I=1,NUMFAC
28829        EIGVA2(I)=ABS(EIGVAL(I))
28830        EIGVA2(I)=(-EIGVA2(I))
28831        ITAG2(I)=I
28832 8600 CONTINUE
28833C
28834      CALL SORTC3(EIGVA2,ITAG2,NUMFAC,EIGVA3,ITAG3)
28835C
28836      DO8610I=1,NUMFAC
28837        EIGVA2(I)=(-EIGVA2(I))
28838        EIGVA3(I)=(-EIGVA3(I))
28839 8610 CONTINUE
28840C
28841C     COMPUTE PHD'S
28842C
28843      INDEX1=ITAG3(1)
28844      INDEX2=ITAG3(2)
28845      INDEX3=ITAG3(3)
28846      INDEX4=ITAG3(4)
28847CCCCC APRIL 1996.  CHANGE FOLLOWING LINE
28848CCCCC INDEX4=ITAG3(5)
28849      INDEX5=ITAG3(5)
28850      DO8710I=1,N
28851         SUM1=0.0
28852         SUM2=0.0
28853         SUM3=0.0
28854         SUM4=0.0
28855         SUM5=0.0
28856         DO8720J=1,NUMFAC
28857            CALL YATES(I,J,XIJ)
28858            IF(INDEX1.GT.0)SUM1=SUM1+XIJ*EIGVEC(J,INDEX1)
28859            IF(INDEX2.GT.0)SUM2=SUM2+XIJ*EIGVEC(J,INDEX2)
28860            IF(INDEX3.GT.0)SUM3=SUM3+XIJ*EIGVEC(J,INDEX3)
28861            IF(INDEX4.GT.0)SUM4=SUM4+XIJ*EIGVEC(J,INDEX4)
28862            IF(INDEX5.GT.0)SUM5=SUM5+XIJ*EIGVEC(J,INDEX5)
28863 8720    CONTINUE
28864         PHD1(I)=SUM1
28865         PHD2(I)=SUM2
28866         PHD3(I)=SUM3
28867         PHD4(I)=SUM4
28868         PHD5(I)=SUM5
28869 8710 CONTINUE
28870C
28871CCCCC FEBRUARY 1995.  PRINT EIGENVALUES (UNORDERED AND ORDERED) TO
28872CCCCC FILE DPST2F.DAT
28873C
28874      DO8800I=1,NUMFAC
28875        WRITE(IOUNI2,8811)EIGVAL(I),ITAG3(I),EIGVAL(ITAG3(I))
28876 8811   FORMAT(1X,E15.7,1X,I5,1X,E15.7)
28877 8800 CONTINUE
28878C
28879C     PRINT PHD TABLE 5
28880C
28881      ITITLE='Absolute Value of the Sorted Eigenvalues'
28882      NCTITL=40
28883      ITITL9=' '
28884      NCTIT9=0
28885      ICNT=0
28886C
28887      DO5180J=1,NUMCLI
28888        DO5190I=1,3
28889          ITITL2(I,J)=' '
28890          NCTIT2(I,J)=0
28891 5190   CONTINUE
28892 5180 CONTINUE
28893C
28894      ITITL2(1,1)='I'
28895      NCTIT2(1,1)=1
28896C
28897      ITITL2(1,2)='Identifier'
28898      NCTIT2(1,2)=10
28899C
28900      ITITL2(1,3)='Eigenvalue'
28901      NCTIT2(1,3)=10
28902C
28903      NMAX=0
28904      NUMCOL=3
28905      DO5550I=1,NUMCOL
28906        VALIGN(I)='b'
28907        ALIGN(I)='r'
28908        NTOT(I)=15
28909        NMAX=NMAX+NTOT(I)
28910        ITYPCO(I)='NUME'
28911        IDIGIT(I)=NUMDIG
28912        IF(I.EQ.1 .OR. I.EQ.2)IDIGIT(I)=0
28913 5550 CONTINUE
28914C
28915      IWHTML(1)=125
28916      IWHTML(2)=150
28917      IWHTML(3)=150
28918      IINC=1800
28919      IINC2=1400
28920      IWRTF(1)=IINC
28921      IWRTF(2)=IWRTF(1)+IINC
28922      IWRTF(3)=IWRTF(2)+IINC
28923C
28924      DO8810I=1,NUMFAC
28925        AMAT(I,1)=REAL(I)
28926        AMAT(I,2)=REAL(ITAG3(I))
28927        AMAT(I,3)=EIGVA3(I)
28928 8810 CONTINUE
28929C
28930      NUMLIN=1
28931      NUMCOL=3
28932      ICNT=NUMFAC
28933      IFRST=.TRUE.
28934      ILAST=.TRUE.
28935      IFLAGS=.TRUE.
28936      IFLAGE=.TRUE.
28937      CALL DPDTA5(ITITLE,NCTITL,
28938     1            ITITL9,NCTIT9,ITITL2,NCTIT2,
28939     1            MAXLIN,NUMLIN,NUMCLI,NUMCOL,
28940     1            IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
28941     1            IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
28942     1            ICAPSW,ICAPTY,IFRST,ILAST,
28943     1            IFLAGS,IFLAGE,
28944     1            ISUBRO,IBUGA3,IERROR)
28945C
28946C     PRINT PHD TABLE  6
28947C
28948      ITITLE=' '
28949      NCTITL=0
28950      ITITL9=' '
28951      NCTIT9=0
28952      ICNT=0
28953C
28954      DO5630J=1,NUMCLI
28955        DO5640I=1,3
28956          ITITL2(I,J)=' '
28957          NCTIT2(I,J)=0
28958 5640   CONTINUE
28959 5630 CONTINUE
28960C
28961      ITITL2(1,1)='I'
28962      NCTIT2(1,1)=1
28963      ITITL2(1,2)='Y(I)'
28964      NCTIT2(1,2)=4
28965      ITITL2(1,3)='Predicted'
28966      NCTIT2(1,3)=9
28967      ITITL2(1,4)='Residual'
28968      NCTIT2(1,4)=8
28969      ITITL2(1,5)='PHD 1'
28970      NCTIT2(1,5)=5
28971      ITITL2(1,6)='PHD 2'
28972      NCTIT2(1,6)=5
28973C
28974      NMAX=0
28975      NUMCOL=6
28976      DO5650I=1,NUMCOL
28977        VALIGN(I)='b'
28978        ALIGN(I)='r'
28979        NTOT(I)=15
28980        NMAX=NMAX+NTOT(I)
28981        ITYPCO(I)='NUME'
28982        IDIGIT(I)=NUMDIG
28983        IF(I.EQ.1)IDIGIT(I)=0
28984 5650 CONTINUE
28985C
28986      IWHTML(1)=100
28987      IWHTML(2)=150
28988      IWHTML(3)=150
28989      IWHTML(4)=150
28990      IWHTML(5)=150
28991      IWHTML(6)=150
28992      IINC=1800
28993      IINC2=1000
28994      IWRTF(1)=IINC2
28995      IWRTF(2)=IWRTF(1)+IINC
28996      IWRTF(3)=IWRTF(2)+IINC
28997      IWRTF(4)=IWRTF(2)+IINC
28998      IWRTF(5)=IWRTF(2)+IINC
28999      IWRTF(6)=IWRTF(2)+IINC
29000C
29001      DO8820I=1,N
29002        AMAT(I,1)=REAL(I)
29003        AMAT(I,2)=Y(I)
29004        AMAT(I,3)=PREDLIN(I)
29005        AMAT(I,4)=RESLIN(I)
29006        AMAT(I,5)=PHD1(I)
29007        AMAT(I,6)=PHD2(I)
29008 8820 CONTINUE
29009C
29010      NUMLIN=1
29011      NUMCOL=6
29012      ICNT=IMAX
29013      IFRST=.TRUE.
29014      ILAST=.TRUE.
29015      IFLAGS=.TRUE.
29016      IFLAGE=.TRUE.
29017      CALL DPDTA5(ITITLE,NCTITL,
29018     1            ITITL9,NCTIT9,ITITL2,NCTIT2,
29019     1            MAXLIN,NUMLIN,NUMCLI,NUMCOL,
29020     1            IVALUE,NCVALU,AMAT,ITYPCO,MAXROW,ICNT,
29021     1            IDIGIT,NTOT,IWHTML,IWRTF,VALIGN,ALIGN,NMAX,
29022     1            ICAPSW,ICAPTY,IFRST,ILAST,
29023     1            IFLAGS,IFLAGE,
29024     1            ISUBRO,IBUGA3,IERROR)
29025C
29026CCCCC FEBRUARY 1995.  PRINT PRED, RES, AND FIRST 5 PHD EIGENVECTORS
29027CCCCC TO FILE DPST4F.DAT
29028C
29029      DO8860I=1,N
29030        WRITE(IOUNI4,8870)PREDLIN(I),RESLIN(I),PHD1(I),PHD2(I),
29031     1                    PHD3(I),PHD4(I),PHD5(I)
29032 8870   FORMAT(7(1X,E15.7))
29033        CALL DPWRST('XXX','BUG ')
29034 8860 CONTINUE
29035C
29036 8901 CONTINUE
29037C
29038CCCCC THE FOLLOWING WAS ADDED OCTOBER 1991
29039      IF(IFEEDB.EQ.'ON')THEN
29040        WRITE(ICOUT,999)
29041        CALL DPWRST('XXX','BUG ')
29042C
29043        IF(IPHDFL.EQ.'OFF')THEN
29044          WRITE(ICOUT,8902)
29045 8902     FORMAT('NOTE--TAG, COEF, TCOEF, RESSD, AND CUMULATIVE RESSD')
29046          CALL DPWRST('XXX','BUG ')
29047C
29048          WRITE(ICOUT,8903)
29049 8903     FORMAT('      WERE WRITTEN OUT TO FILES DPST1F.DAT AND ',
29050     1           'DPST2F.DAT')
29051          CALL DPWRST('XXX','BUG ')
29052C
29053          WRITE(ICOUT,8904)
29054 8904     FORMAT('      TO READ THESE VARIABLES BACK IN, ENTER   ')
29055          CALL DPWRST('XXX','BUG ')
29056C
29057          WRITE(ICOUT,8905)
29058 8905     FORMAT('         SKIP 0')
29059          CALL DPWRST('XXX','BUG ')
29060C
29061          WRITE(ICOUT,8906)
29062 8906     FORMAT('         READ DPST1F.DAT TAG COEF TCOEF RSD CUMRSD')
29063          CALL DPWRST('XXX','BUG ')
29064        ELSE
29065          WRITE(ICOUT,8891)
29066 8891     FORMAT('NOTE--THE MATRIX OF 2-TERM INTERACTIONS WRITTEN TO ',
29067     1           'FILE DPST1F.DAT')
29068          CALL DPWRST('XXX','BUG ')
29069          WRITE(ICOUT,8892)
29070 8892     FORMAT('    --THE EIGENVALUES OF THE MATRIX WRITTEN TO ',
29071     1           'FILE DPST3F.DAT')
29072          CALL DPWRST('XXX','BUG ')
29073          WRITE(ICOUT,8893)
29074 8893     FORMAT('    --THE EIGENVECTORS OF THE MATRIX WRITTEN TO ',
29075     1           'FILE DPST3F.DAT')
29076          CALL DPWRST('XXX','BUG ')
29077          WRITE(ICOUT,8894)
29078 8894     FORMAT('    --THE PREDICTED, VALUES, RESIDUALS, AND FIRST 5 ',
29079     1           'PHD VECOTRS WRITTEN TO FILE DPST4F.DAT')
29080          CALL DPWRST('XXX','BUG ')
29081C
29082        ENDIF
29083      ENDIF
29084C
29085CCCCCC THE FOLLOWING SECTION WAS ADDED OCTOBER 1991
29086C               **************************************
29087C               **  STEP 89--                       **
29088C               **  CLOSE       THE STORAGE FILES.  **
29089C               **************************************
29090C
29091      ISTEPN='89'
29092      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')
29093     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
29094C
29095      IOP='CLOS'
29096      CALL DPAUFI(IOP,IFLAG1,IFLAG2,IFLAG3,IFLAG4,IFLAG5,
29097     1            IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
29098     1            IBUGA3,ISUBRO,IERROR)
29099      IF(IERROR.EQ.'YES')GOTO9000
29100C
29101C               *****************
29102C               **  STEP 90--  **
29103C               **  EXIT       **
29104C               *****************
29105C
29106 9000 CONTINUE
29107      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'YAT2')THEN
29108        WRITE(ICOUT,999)
29109        CALL DPWRST('XXX','BUG ')
29110        WRITE(ICOUT,9011)
29111 9011   FORMAT('***** AT THE END       OF DPYAT2--')
29112        CALL DPWRST('XXX','BUG ')
29113        WRITE(ICOUT,9012)IERROR
29114 9012   FORMAT('IERROR = ',A4)
29115        CALL DPWRST('XXX','BUG ')
29116        WRITE(ICOUT,9013)N,NUMREP,IREP,ICASE
29117 9013   FORMAT('N,NUMREP,IREP,ICASE = ',2I8,2X,A4,2X,A4)
29118        CALL DPWRST('XXX','BUG ')
29119        WRITE(ICOUT,9014)GMEAN,GSSQ,GVAR,GSD
29120 9014   FORMAT('GMEAN,GSSQ,GVAR,GSD = ',4G15.7)
29121        CALL DPWRST('XXX','BUG ')
29122        WRITE(ICOUT,9015)PRESSD,PRESDF,REPSD,REPDF
29123 9015   FORMAT('PRESSD,PRESDF,REPSD,REPDF = ',4G15.7)
29124        CALL DPWRST('XXX','BUG ')
29125        WRITE(ICOUT,9016)REFDF,REFDF,SDCOEF
29126 9016   FORMAT('REFDF,REFDF,SDCOEF = ',3G15.7)
29127        CALL DPWRST('XXX','BUG ')
29128        DO9021I=1,NMEAN
29129          WRITE(ICOUT,9022)I,YMEAN(I),COEF(I),YVAR(I)
29130 9022     FORMAT('I,YMEAN(I),COEF(I),YVAR(I) = ',I8,3G15.7)
29131          CALL DPWRST('XXX','BUG ')
29132 9021   CONTINUE
29133        WRITE(ICOUT,9031)YATCCU,YATTCU,YATRCU,IYATOS,IYATRS
29134 9031   FORMAT('YATCCU,YATTCU,YATRCU,IYATOS,IYATRS = ',3G15.7,
29135     1         2X,A4,2X,A4)
29136        CALL DPWRST('XXX','BUG ')
29137        WRITE(ICOUT,9032)CCUTN,CCUTP,TCUTN,TCUTP,RCUTN,RCUTP
29138 9032   FORMAT('CCUTN,CCUTP,TCUTN,TCYTP,RCUTN,RCUTP = ',6G15.7)
29139        CALL DPWRST('XXX','BUG ')
29140      ENDIF
29141C
29142      RETURN
29143      END
29144      SUBROUTINE DPZSCC(NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2,
29145     1                  IBUGG2,IBUGG3,IBUGQ,ISUBRO,IFOUND,IERROR)
29146C
29147C     PURPOSE--GIVEN PROFICIENCY DATA
29148C
29149C                 ZSCORE  MATID  ROUNDID  LABID
29150C
29151C              USE MATID AND ROUNDID TO DEFINE A GRID.  IF LABID IS
29152C              GIVEN, THEN COMPUTE AN AVERAGE Z-SCORE FOR EACH
29153C              ROUND/MATERIAL COMBINATION.  THE Z-SCORE WILL BE USED
29154C              TO DEFINE A PLOT SYMBOL BASED ON
29155C
29156C                        Z <= -3
29157C                   -3 < Z <  -2
29158C                   -2 < Z <  +2
29159C                   -2 < Z <  +2
29160C                        Z >= +3
29161C
29162C              THE Z-SCORE IS AN ISO 13528 STANDARD Z-SCORE.  NOTE THAT
29163C              THIS STANDARD ALLOWS FOR SEVERAL DIFFERENT VARIATIONS OF
29164C              THE Z-SCORE, SO THIS COMMAND ASSUMES THE Z-SCORE IS ALREADY
29165C              COMPUTED (I.E., IT IS NOT COMPUTED FROM THE DATA.
29166C
29167C              AN ALTERNATIVE VERSION OF THIS PLOT IS A J-CHART (OR ZONE
29168C              CHART).
29169C
29170C     EXAMPLE--ISO 13528 ZSCORE PLOT Z MATID ROUNDID
29171C              ISO 13528 JSCORE PLOT Z MATID ROUNDID
29172C     WRITTEN BY--ALAN HECKERT
29173C                 STATISTICAL ENGINEERING DIVISION
29174C                 INFORMATION TECHNOLOGY LABORATORY
29175C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
29176C                 GAITHERSBURG, MD 20899-8980
29177C                 PHONE--301-975-2899
29178C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
29179C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
29180C     LANGUAGE--ANSI FORTRAN (1977)
29181C     VERSION NUMBER--2012/2
29182C     ORIGINAL VERSION--FEBRUARY   2012.
29183C
29184C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
29185C
29186      CHARACTER*4 ICASPL
29187      CHARACTER*4 IAND1
29188      CHARACTER*4 IAND2
29189      CHARACTER*4 IBUGG2
29190      CHARACTER*4 IBUGG3
29191      CHARACTER*4 IBUGQ
29192      CHARACTER*4 ISUBRO
29193      CHARACTER*4 IFOUND
29194      CHARACTER*4 IERROR
29195C
29196      CHARACTER*4 ISUBN1
29197      CHARACTER*4 ISUBN2
29198      CHARACTER*4 ISTEPN
29199C
29200      CHARACTER*40 INAME
29201      PARAMETER (MAXSPN=10)
29202      CHARACTER*4 IVARN1(MAXSPN)
29203      CHARACTER*4 IVARN2(MAXSPN)
29204      CHARACTER*4 IVARTY(MAXSPN)
29205      REAL PVAR(MAXSPN)
29206      INTEGER ILIS(MAXSPN)
29207      INTEGER NRIGHT(MAXSPN)
29208      INTEGER ICOLR(MAXSPN)
29209C
29210C---------------------------------------------------------------------
29211C
29212      INCLUDE 'DPCOPA.INC'
29213      INCLUDE 'DPCOZZ.INC'
29214C
29215      REAL Z(MAXOBV)
29216      REAL ROUND(MAXOBV)
29217      REAL MATID(MAXOBV)
29218      REAL XIDTEM(MAXOBV)
29219      REAL XIDTE2(MAXOBV)
29220      REAL TEMP1(MAXOBV)
29221      REAL TEMP2(MAXOBV)
29222      REAL TEMP3(MAXOBV)
29223      REAL TEMP4(MAXOBV)
29224      REAL TEMP5(MAXOBV)
29225C
29226      EQUIVALENCE (GARBAG(IGARB1),Z(1))
29227      EQUIVALENCE (GARBAG(IGARB2),ROUND(1))
29228      EQUIVALENCE (GARBAG(IGARB3),MATID(1))
29229      EQUIVALENCE (GARBAG(IGARB4),XIDTEM(1))
29230      EQUIVALENCE (GARBAG(IGARB5),XIDTE2(1))
29231      EQUIVALENCE (GARBAG(IGARB6),TEMP1(1))
29232      EQUIVALENCE (GARBAG(IGARB7),TEMP2(1))
29233      EQUIVALENCE (GARBAG(IGARB8),TEMP3(1))
29234      EQUIVALENCE (GARBAG(IGARB9),TEMP4(1))
29235      EQUIVALENCE (GARBAG(IGAR10),TEMP5(1))
29236C
29237C-----COMMON----------------------------------------------------------
29238C
29239      INCLUDE 'DPCOST.INC'
29240      INCLUDE 'DPCOHO.INC'
29241      INCLUDE 'DPCOHK.INC'
29242      INCLUDE 'DPCODA.INC'
29243      INCLUDE 'DPCOP2.INC'
29244C
29245C-----START POINT-----------------------------------------------------
29246C
29247      IERROR='NO'
29248      IFOUND='NO'
29249      ISUBN1='DPZS'
29250      ISUBN2='CC  '
29251C
29252      MAXCP1=MAXCOL+1
29253      MAXCP2=MAXCOL+2
29254      MAXCP3=MAXCOL+3
29255      MAXCP4=MAXCOL+4
29256      MAXCP5=MAXCOL+5
29257      MAXCP6=MAXCOL+6
29258C
29259C               ****************************************
29260C               **  TREAT THE DEX CONTOUR PLOT CASE   **
29261C               ****************************************
29262C
29263      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'ZSCC')THEN
29264        WRITE(ICOUT,999)
29265  999   FORMAT(1X)
29266        CALL DPWRST('XXX','BUG ')
29267        WRITE(ICOUT,51)
29268   51   FORMAT('***** AT THE BEGINNING OF DPZSCC--')
29269        CALL DPWRST('XXX','BUG ')
29270        WRITE(ICOUT,52)IBUGG2,IBUGG3,IBUGQ,ISUBRO
29271   52   FORMAT('IBUGG2,IBUGG3,IBUGQ,ISUBRO = ',3(A4,2X),A4)
29272        CALL DPWRST('XXX','BUG ')
29273        WRITE(ICOUT,53)ICASPL,IAND1,IAND2,MAXN
29274   53   FORMAT('ICASPL,IAND1,IAND2,MAXN = ',3(A4,2X),I8)
29275        CALL DPWRST('XXX','BUG ')
29276      ENDIF
29277C
29278C               ***************************
29279C               **  STEP 1--             **
29280C               **  EXTRACT THE COMMAND  **
29281C               ***************************
29282C
29283      ISTEPN='11'
29284      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'ZSCC')
29285     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
29286C
29287      IF(NUMARG.GE.2 .AND. ICOM.EQ.'ISO ' .AND.IHARG(1).EQ.'1352')THEN
29288        IF(IHARG(2).EQ.'ZSCO' .AND. IHARG(3).EQ.'PLOT')THEN
29289          ILASTC=3
29290          ICASPL='ZSCC'
29291        ELSEIF(IHARG(2).EQ.'JSCO' .AND. IHARG(3).EQ.'PLOT')THEN
29292          ILASTC=3
29293          ICASPL='JSCC'
29294        ENDIF
29295        CALL ADJUST(ILASTC,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG)
29296        IFOUND='YES'
29297      ELSE
29298        GOTO9000
29299      ENDIF
29300C
29301C               ****************************************
29302C               **  STEP 2--                          **
29303C               **  EXTRACT THE VARIABLE LIST         **
29304C               ****************************************
29305C
29306      ISTEPN='2'
29307      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'ZSCC')
29308     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
29309C
29310      INAME='ISO 13528 ZSCORE PLOT'
29311      IF(ICASPL.EQ.'JSCC')INAME='ISO 13528 JSCORE PLOT'
29312      MINNA=3
29313      MAXNA=100
29314      MINN2=2
29315      IFLAGE=1
29316      IFLAGM=0
29317      IFLAGP=0
29318      JMIN=1
29319      JMAX=NUMARG
29320      MINNVA=3
29321      MAXNVA=3
29322C
29323      CALL DPPARS(IHARG,IHARG2,IARGT,ARG,NUMARG,IANS,IWIDTH,
29324     1            IHNAME,IHNAM2,IUSE,NUMNAM,IN,IVALUE,VALUE,
29325     1            JMIN,JMAX,
29326     1            MINN2,MINNA,MAXNA,MAXSPN,IFLAGE,INAME,
29327     1            IVARN1,IVARN2,IVARTY,PVAR,
29328     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,ILOCQ,NUMVAR,
29329     1            MINNVA,MAXNVA,
29330     1            IFLAGM,IFLAGP,
29331     1            IBUGG3,IBUGQ,ISUBRO,IFOUND,IERROR)
29332      IF(IERROR.EQ.'YES')GOTO9000
29333C
29334      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'ZSCC')THEN
29335        WRITE(ICOUT,999)
29336        CALL DPWRST('XXX','BUG ')
29337        WRITE(ICOUT,281)
29338  281   FORMAT('***** AFTER CALL DPPARS--')
29339        CALL DPWRST('XXX','BUG ')
29340        WRITE(ICOUT,282)NQ,NUMVAR
29341  282   FORMAT('NQ,NUMVAR = ',2I8)
29342        CALL DPWRST('XXX','BUG ')
29343        IF(NUMVAR.GT.0)THEN
29344          DO285I=1,NUMVAR
29345            WRITE(ICOUT,287)I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),
29346     1                      ICOLR(I),IVARTY(I)
29347  287       FORMAT('I,IVARN1(I),IVARN2(I),ILIS(I),NRIGHT(I),',
29348     1             'ICOLR(I),IVARTY(I) = ',I8,2X,A4,A4,2X,3I8,2X,A4)
29349            CALL DPWRST('XXX','BUG ')
29350  285     CONTINUE
29351        ENDIF
29352      ENDIF
29353C
29354C               **********************************************
29355C               **  STEP 33--                               **
29356C               **  FORM THE SUBSETTED VARIABLES            **
29357C               **       Z(.)                               **
29358C               **       MATID(.)                           **
29359C               **       ROUND(.)                           **
29360C               **  CONTAINING                              **
29361C               **       THE Z-SCORE OF THE RESPONSE        **
29362C               **       THE MATERIAL-ID                    **
29363C               **       THE ROUND-ID                       **
29364C               **  RESPECTIVELY.                           **
29365C               **********************************************
29366C
29367      ISTEPN='33'
29368      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'ZSCC')
29369     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
29370C
29371      ICOL=1
29372      CALL DPPAR5(ICOL,IVALUE,IVALU2,IN,MAXN,MAXOBV,
29373     1            INAME,IVARN1,IVARN2,IVARTY,
29374     1            ILIS,NRIGHT,ICOLR,ISUB,NQ,NUMVAR,
29375     1            MAXCOL,MAXCP1,MAXCP2,MAXCP3,
29376     1            MAXCP4,MAXCP5,MAXCP6,
29377     1            V,PRED,RES,YPLOT,XPLOT,X2PLOT,TAGPLO,
29378     1            Z,MATID,ROUND,XIDTEM,XIDTEM,XIDTEM,XIDTEM,NS,
29379     1            IBUGG3,ISUBRO,IFOUND,IERROR)
29380      IF(IERROR.EQ.'YES')GOTO9000
29381C
29382C               *******************************************************
29383C               **  STEP 8--                                         **
29384C               **  FORM THE VERTICAL AND HORIZONTAL AXIS            **
29385C               **  VALUES Y(.) AND X(.) FOR THE PLOT.               **
29386C               **  DEFINE THE NUMBER OF PLOT POINTS    (NPLOTP).    **
29387C               **  DEFINE THE NUMBER OF PLOT VARIABLES (NPLOTV).    **
29388C               *******************************************************
29389C
29390      ISTEPN='5'
29391      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'ZSCC')
29392     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
29393C
29394      CALL DPZSC2(Z,MATID,ROUND,NS,NUMVAR,ICASPL,
29395     1            XIDTEM,XIDTE2,TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,
29396     1            Y,X,D,
29397     1            NPLOTP,NPLOTV,IBUGG3,ISUBRO,IERROR)
29398C
29399C               *****************
29400C               **  STEP 9--   **
29401C               **  EXIT       **
29402C               *****************
29403C
29404 9000 CONTINUE
29405      IF(IBUGG2.EQ.'ON'.OR.ISUBRO.EQ.'ZSCC')THEN
29406        WRITE(ICOUT,999)
29407        CALL DPWRST('XXX','BUG ')
29408        WRITE(ICOUT,9011)
29409 9011   FORMAT('***** AT THE END       OF DPZSCC--')
29410        CALL DPWRST('XXX','BUG ')
29411        WRITE(ICOUT,9013)IFOUND,IERROR
29412 9013   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
29413        CALL DPWRST('XXX','BUG ')
29414        WRITE(ICOUT,9014)NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2
29415 9014   FORMAT('NPLOTV,NPLOTP,NS,ICASPL,IAND1,IAND2 = ',3I8,3(2X,A4))
29416        CALL DPWRST('XXX','BUG ')
29417      ENDIF
29418C
29419      RETURN
29420      END
29421      SUBROUTINE DPZSC2(Z,MATID,ROUND,N,NUMVAR,ICASPL,
29422     1                  XIDTEM,XIDTE2,TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,
29423     1                  Y,X,D,
29424     1                  NPLOTP,NPLOTV,IBUGG3,ISUBRO,IERROR)
29425C
29426C     PURPOSE--GIVEN PROFICIENCY DATA
29427C
29428C                 ZSCORE  MATID  ROUNDID  LABID
29429C
29430C              USE MATID AND ROUNDID TO DEFINE A GRID.  IF LABID IS
29431C              GIVEN, THEN COMPUTE AN AVERAGE Z-SCORE FOR EACH
29432C              ROUND/MATERIAL COMBINATION.  THE Z-SCORE WILL BE USED
29433C              TO DEFINE A PLOT SYMBOL BASED ON
29434C
29435C                        Z <= -3
29436C                   -3 < Z <  -2
29437C                   -2 < Z <  +2
29438C                   -2 < Z <  +2
29439C                        Z >= +3
29440C
29441C              THE Z-SCORE IS AN ISO 13528 STANDARD Z-SCORE.  NOTE THAT
29442C              THIS STANDARD ALLOWS FOR SEVERAL DIFFERENT VARIATIONS OF
29443C              THE Z-SCORE, SO THIS COMMAND ASSUMES THE Z-SCORE IS ALREADY
29444C              COMPUTED (I.E., IT IS NOT COMPUTED FROM THE DATA.
29445C
29446C              AN ALTERNATIVE VERSION OF THIS PLOT IS A J-CHART (OR ZONE
29447C              CHART).
29448C
29449C     REFERENCE--ISO 13528 (2005), "Statistical Methods for use in
29450C                proficiency testing by interlaboratory comparisons,"
29451C                First Edition, 2005-09-01, pp. 56-57.
29452C              --MICHAEL THOMPSON, STEPHEN ELLISON, ROGER WOOD (2006),
29453C                THE INTERNATIONAL HARMONIZED PROTOCOL FOR THE
29454C                PROFICIENCY TESTING OF ANALYTICAL CHEMISTRY
29455C                LABORATORIES,Pure Applied Chemistry, Vol. 78, No. 1,
29456C                pp. 145-196.
29457C     WRITTEN BY--ALAN HECKERT
29458C                 STATISTICAL ENGINEERING DIVISION
29459C                 INFORMATION TECHNOLOGY LABORATORY
29460C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
29461C                 GAITHERSBURG, MD 20899-8980
29462C                 PHONE--301-975-2899
29463C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
29464C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
29465C     LANGUAGE--ANSI FORTRAN (1977)
29466C     VERSION NUMBER--2012/2
29467C     ORIGINAL VERSION--FEBRUARY  2012.
29468C
29469C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
29470C
29471      CHARACTER*4 ICASPL
29472      CHARACTER*4 IBUGG3
29473      CHARACTER*4 ISUBRO
29474      CHARACTER*4 IERROR
29475C
29476      CHARACTER*4 IWRITE
29477      CHARACTER*4 ISUBN1
29478      CHARACTER*4 ISUBN2
29479C
29480      DOUBLE PRECISION DSUM1
29481C
29482C---------------------------------------------------------------------
29483C
29484      REAL Z(*)
29485      REAL MATID(*)
29486      REAL ROUND(*)
29487      REAL XIDTEM(*)
29488      REAL XIDTE2(*)
29489      REAL TEMP1(*)
29490      REAL TEMP2(*)
29491      REAL TEMP3(*)
29492      REAL TEMP4(*)
29493      REAL TEMP5(*)
29494C
29495      REAL Y(*)
29496      REAL X(*)
29497      REAL D(*)
29498C
29499C-----COMMON----------------------------------------------------------
29500C
29501      INCLUDE 'DPCOP2.INC'
29502C
29503C-----START POINT-----------------------------------------------------
29504C
29505      ISUBN1='DPZS'
29506      ISUBN2='C2  '
29507      IWRITE='OFF'
29508C
29509      IERROR='NO'
29510      NPLOTP=0
29511      NPLOTV=3
29512C
29513      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'ZSC2')THEN
29514        WRITE(ICOUT,999)
29515        CALL DPWRST('XXX','BUG ')
29516        WRITE(ICOUT,71)
29517   71   FORMAT('***** AT THE BEGINNING OF DPZSC2--')
29518        CALL DPWRST('XXX','BUG ')
29519        WRITE(ICOUT,72)IBUGG3,ISUBRO,ICASPL,N,NUMVAR
29520   72   FORMAT('IBUGG3,ISUBRO,ICASPL,N,NUMVAR = ',3(A4,2X),2I8)
29521        CALL DPWRST('XXX','BUG ')
29522        IF(N.GT.0)THEN
29523          DO81I=1,N
29524            WRITE(ICOUT,82)I,Z(I),MATID(I),ROUND(I)
29525   82       FORMAT('I,Z(I),MATID(I),ROUND(I) = ',I8,3G15.7)
29526            CALL DPWRST('XXX','BUG ')
29527   81     CONTINUE
29528        ENDIF
29529      ENDIF
29530C
29531C               ********************************************
29532C               **  STEP 1--                              **
29533C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
29534C               ********************************************
29535C
29536      IF(N.LT.2)THEN
29537        WRITE(ICOUT,999)
29538  999   FORMAT(1X)
29539        CALL DPWRST('XXX','BUG ')
29540        WRITE(ICOUT,31)
29541   31   FORMAT('***** ERROR IN ISO 13528 ZSCORE PLOT--')
29542        CALL DPWRST('XXX','BUG ')
29543        WRITE(ICOUT,32)
29544   32   FORMAT('      THE NUMBER OF OBSERVATIONS MUST BE AT LEAST 2.')
29545        CALL DPWRST('XXX','BUG ')
29546        WRITE(ICOUT,34)N
29547   34   FORMAT('      THE ENTERED NUMBER OF OBSERVATIONS HERE = ',I6)
29548        CALL DPWRST('XXX','BUG ')
29549        WRITE(ICOUT,999)
29550        CALL DPWRST('XXX','BUG ')
29551        IERROR='YES'
29552        GOTO9000
29553      ENDIF
29554C
29555C               ********************************************
29556C               **  STEP 2--                              **
29557C               **  DETERMINE UNIQUE VALUES OF IGINAL     **
29558C               **  UNITS) FOR EACH ROUND OVER ALL LABS.  **
29559C               ********************************************
29560C
29561      IWRITE='OFF'
29562      CALL DISTIN(ROUND,N,IWRITE,XIDTEM,NROUND,IBUGG3,IERROR)
29563      CALL SORT(XIDTEM,NROUND,XIDTEM)
29564      CALL DISTIN(MATID,N,IWRITE,XIDTE2,NMAT,IBUGG3,IERROR)
29565      CALL SORT(XIDTE2,NMAT,XIDTE2)
29566C
29567C
29568C               ********************************************
29569C               **  STEP 3--                              **
29570C               **  GENERATE THE PLOT COORDINATES.        **
29571C               ********************************************
29572C
29573      IF(ICASPL.EQ.'ZSCC')THEN
29574        NPLOTP=0
29575        DO1010J=1,NMAT
29576          HOLD2=XIDTE2(J)
29577          DO1020I=1,NROUND
29578            HOLD=XIDTEM(I)
29579            DSUM1=0.0D0
29580            K=0
29581            DO1030L=1,N
29582              IF(ROUND(L).EQ.HOLD .AND. MATID(L).EQ.HOLD2)THEN
29583                K=K+1
29584                DSUM1=DSUM1 + DBLE(Z(L))
29585              ENDIF
29586 1030       CONTINUE
29587            IF(K.GT.0)THEN
29588              ATEMP=REAL(DSUM1/DBLE(K))
29589              NPLOTP=NPLOTP+1
29590              Y(NPLOTP)=HOLD2
29591              X(NPLOTP)=HOLD
29592              IF(ATEMP.LE.-3.0)THEN
29593                D(NPLOTP)=5.0
29594              ELSEIF(ATEMP.GE.3.0)THEN
29595                D(NPLOTP)=4.0
29596              ELSEIF(ATEMP.LE.-2.0)THEN
29597                D(NPLOTP)=3.0
29598              ELSEIF(ATEMP.GE.2.0)THEN
29599                D(NPLOTP)=2.0
29600              ELSE
29601                D(NPLOTP)=1.0
29602              ENDIF
29603            ENDIF
29604 1020     CONTINUE
29605 1010   CONTINUE
29606C
29607      ELSEIF(ICASPL.EQ.'JSCC')THEN
29608C
29609C       2015/10: USE "JSCORE" ROUTINE.  EXTRACT THE Z-SCORES AND
29610C                ROUND-ID DATA FOR A GIVEN MATERIAL.
29611C
29612        NPLOTP=0
29613        DO2010J=1,NMAT
29614          HOLD2=XIDTE2(J)
29615          K=0
29616          DO2030L=1,N
29617            IF(MATID(L).EQ.HOLD2)THEN
29618              K=K+1
29619              TEMP1(K)=Z(L)
29620              TEMP2(K)=ROUND(L)
29621            ENDIF
29622 2030     CONTINUE
29623          IF(K.LE.0)GOTO2010
29624C
29625          CALL JSCORE(TEMP1,TEMP2,K,IWRITE,TEMP3,TEMP4,TEMP5,NY,
29626     1                IBUGG3,ISUBRO,IERROR)
29627          DO2040JJ=1,NY
29628            NPLOTP=NPLOTP+1
29629            Y(NPLOTP)=HOLD2
29630            X(NPLOTP)=TEMP3(JJ)
29631            ZSCORE=TEMP5(JJ)
29632C
29633            IF(ZSCORE.LE.-8.0)THEN
29634              D(NPLOTP)=9.0
29635            ELSEIF(ZSCORE.LE.-6.0)THEN
29636              D(NPLOTP)=7.0
29637            ELSEIF(ZSCORE.LE.-4.0)THEN
29638              D(NPLOTP)=5.0
29639            ELSEIF(ZSCORE.LE.-2.0)THEN
29640              D(NPLOTP)=3.0
29641            ELSEIF(ZSCORE.GE.8.0)THEN
29642              D(NPLOTP)=8.0
29643            ELSEIF(ZSCORE.GE.6.0)THEN
29644              D(NPLOTP)=6.0
29645            ELSEIF(ZSCORE.GE.4.0)THEN
29646              D(NPLOTP)=4.0
29647            ELSEIF(ZSCORE.GE.2.0)THEN
29648              D(NPLOTP)=2.0
29649            ELSE
29650              D(NPLOTP)=1.0
29651            ENDIF
29652 2040     CONTINUE
29653 2010   CONTINUE
29654C
29655      ENDIF
29656C
29657C               *****************
29658C               **  STEP 90--  **
29659C               **  EXIT       **
29660C               *****************
29661C
29662 9000 CONTINUE
29663      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'ZSC2')THEN
29664        WRITE(ICOUT,999)
29665        CALL DPWRST('XXX','BUG ')
29666        WRITE(ICOUT,9011)
29667 9011   FORMAT('***** AT THE END       OF DPISO2--')
29668        CALL DPWRST('XXX','BUG ')
29669        WRITE(ICOUT,9013)IERROR,NPLOTP,NPLOTV
29670 9013   FORMAT('IERROR,NPLOTP,NPLOTV = ',A4,2X,2I8)
29671        CALL DPWRST('XXX','BUG ')
29672        IF(NPLOTP.GT.0)THEN
29673          DO9035I=1,NPLOTP
29674            WRITE(ICOUT,9036)I,Y(I),X(I),D(I)
29675 9036       FORMAT('I,Y(I),X(I),D(I) = ',I8,2G15.7,F9.2)
29676            CALL DPWRST('XXX','BUG ')
29677 9035     CONTINUE
29678        ENDIF
29679      ENDIF
29680C
29681      RETURN
29682      END
29683