Trailing-Edge
-
PDP-10 Archives
-
decuslib20-04
-
decus/20-0101/remder.pgm
There are 2 other files named remder.pgm in the archive. Click here to see a list.
SUBROUTINE READIN (KTOU,IDENT, Y, X, EQU, BI, NPROB, B, DIFZ, 02RD0010
1 SIGNS,MODEL, KTINED, KTIN, JOMIT, MNOMIT, NVARX, NOBMAX, NEQUNO, 02RD0020
2 NBINO, NNPROB, NOB, NOIND, NPLOT, NCMAX) 02RD0030
C 02RD0040
IMPLICIT REAL*8 (A-H,O-Z) 02RD0050
COMMON /DATA02/ STOPSS, STOPCR, FLAM, FNU, MIT, NC, NEQU, 02RD0060
1 NOMIT, NFOUND 02RD0070
C 02RD0080
C 02RD0090
REAL*8 IDENT, AEND, BLANK, JOMIT(MNOMIT) 02RD0100
REAL*4 FMT(18) 02RD0110
C 02RD0120
DIMENSION IDENT(NOBMAX), Y(NOBMAX), X(NVARX,NOBMAX), EQU(NEQUNO), 02RD0130
1 BI(NBINO), NPROB(NNPROB), B(NCMAX), DIFZ(NCMAX), SIGNS(NCMAX) 02RD0140
C 02RD0150
DATA AEND /8HEND /, BLANK /6H / 02RD0160
C -- 02RD0170
1 N = 0 02RD0180
MNOMTC = MNOMIT/7 02RD0190
MXNEQU = NEQUNO/18 02RD0200
C --- 02RD0210
READ(KTIN,100,END=1000) NPROB, JSAME, NC, NFILE, NOIND, MODEL, 02RD0220
1 FLAM, FNU, MIT, DIFF, STOPSS, STOPCR, NEQU, NAMEBI, NPLOT,NOMITC 02RD0230
100 FORMAT( 5A4,I1 ,1X,3I2,2X,I2,F4.2,F4.0,1X,I3,F4.3,2F8.7,2I2,2I1) 02RD0240
C --- 02RD0250
WRITE(KTOU, 101) NVARX, NCMAX, NOBMAX, NPROB 02RD0260
101 FORMAT(1H1,42X,45HNONLINEAR LEAST-SQUARES CURVE-FITTING PROGRAM// 02RD0270
1 31H 1979 VERSION OF THE NONLINWOOD,I3,10H VARIABLE,,I3, 02RD0280
2 13H COEFFICIENT,,I4,20H OBSERVATION PROGRAM// 02RD0290
3 55H REFER TO FITTING EQUATIONS TO DATA BY DANIEL AND WOOD,, 02RD0300
4 33H SECOND EDITION, WILEY PUBLISHER,/ 02RD0310
5 49H FOR GLOSSARY OF TERMS, USER'S MANUAL, DETAILS OF, 02RD0320
6 44H CALCULATIONS AND INTERPRETATION OF RESULTS.// 1H0,5A4/) 02RD0330
C - 02RD0340
C --- CONTROL CARD AND ORDER OF CARD INFORMATION IN 600 FORMATS. 02RD0350
C - 02RD0360
WRITE(KTOU, 600 ) 02RD0370
600 FORMAT(1H0,25X, 24HCONTROL CARD INFORMATION, 02RD0380
1 39X,14HORDER OF CARDS , 02RD0390
1//1X, 49HCOL. INPUT MAX ITEM (NOTE: BLANK ON CARD = 0),20X , 02RD0400
2 13HFIRST PROBLEM / 2X , 02RD0410
3 4H1-20,12X,26HIDENTIFICATION OF PROBLEM. ,26X , 02RD0420
3 16H1 CONTROL CARD. ) 02RD0430
WRITE(KTOU, 602) JSAME 02RD0440
602 FORMAT(1H ,3X,2H21,I3,9X, 02RD0450
1 40H0 OBSERVATIONS READ FROM CARDS OR FILE. ,12X , 02RD0460
1 53H2 FORMAT CARD (72 COLUMNS, ORDER: IDENT, Y, X(I)'S),/18X , 02RD0470
2 36H1 REUSE DATA FROM PREVIOUS PROBLEM. ,20X , 02RD0480
2 31HE.G. (A6, F6.0, (NOIND*F6.0) ). ) 02RD0490
WRITE(KTOU, 604) NC, NCMAX 02RD0500
604 FORMAT(1H ,5H23-24,I3,5X,I3,1X, 02RD0510
1 39HNUMBER OF COEFFICIENTS TO BE ESTIMATED. ,13X , 02RD0520
1 39H3 DELETE-OBSERVATIONS CARD(S), IF ANY. ) 02RD0530
WRITE(KTOU, 606) NFILE 02RD0540
606 FORMAT(1H ,5H25-26,I3,9X, 02RD0550
1 41HFILE NUMBER IF DATA ARE TO BE READ FROM A ,11X , 02RD0560
1 45H4 STARTING VALUES (GUESSES) OF COEFFICIENTS /19X , 02RD0570
2 42HSEPARATE FILE. NO END CARD(S) IF ONLY ONE ,13X , 02RD0580
2 50H(10 COLUMNS / COEFFICIENT, 7 COEFFICIENTS / CARD). /19X , 02RD0590
3 28HSET OF DATA IS ON EACH FILE. ,23X , 02RD0600
3 42H5 INFORMATION CARDS FOR PRINTOUT, IF ANY. ) 02RD0610
WRITE(KTOU, 608) NOIND, NVARX 02RD0620
608 FORMAT(1H ,5H27-28,I3,5X,I3,1X, 02RD0630
1 46HNUMBER OF INDEPENDENT VARIABLES TO BE READ IN. , 6X , 02RD0640
1 54H6 NAMES OF COEFFICIENTS CARD(S) FOR PRINTOUT, IF ANY. ) 02RD0650
WRITE(KTOU, 610) MODEL 02RD0660
610 FORMAT(1H ,5H31-32,I3,9X, 02RD0670
1 30HNUMBER OF EQUATION TO BE USED. ,22X , 02RD0680
1 40H7 DATA CARDS (IF NOT READ FROM A FILE). /70X , 02RD0690
2 51H8 END CARD (END IN COLUMNS 1 - 3 OF IDENTIFICATION ) 02RD0700
WRITE(KTOU, 612) FLAM 02RD0710
612 FORMAT(1H ,5H33-36,F7.3,5X, 02RD0720
1 44HSTARTING VALUE FOR LAMBDA, F4.2, (E.G. 0.1), ,12X , 02RD0730
1 47HFIELD). THE NUMBER OF END CARDS MUST EQUAL THE /19X , 02RD0740
2 42HUSED AS A MULTIPLIER TO SCALE THE SPACE OR 13X , 02RD0750
2 44HNUMBER OF CARDS PER OBSERVATION. (END CARDS /19X , 02RD0760
3 20HSIZE OF STEPS TAKEN. ,35X , 02RD0770
3 45HARE NOT NEEDED IF DATA ARE READ FROM A FILE). ) 02RD0780
WRITE(KTOU, 614) FNU 02RD0790
614 FORMAT(1H ,5H37-40,F7.3,5X, 02RD0800
1 30HVALUE OF NU, F4.0, (E.G. 10.). /19X , 02RD0810
2 40HDIVISOR AND MULTIPLIER TO CHANGE SIZE OF 11X , 02RD0820
2 14HSECOND PROBLEM /19X , 02RD0830
3 45HLAMBDA DEPENDING ON WHETHER SUM OF SQUARES OF , 9X , 02RD0840
3 38HIF DATA ARE REUSED FROM FIRST PROBLEM, /19X , 02RD0850
4 38HITERATION IS NEAR OR FAR FROM MINIMUM. ,19X , 02RD0860
4 38HDELETE THE FORMAT, DATA AND END CARDS. ) 02RD0870
WRITE(KTOU, 616) MIT 02RD0880
616 FORMAT(1H ,5H43-44,I3,9X, 02RD0890
1 44HMAXIMUM NUMBER OF ITERATIONS, I2, (E.G. 20). ,11X , 02RD0900
1 18HIF DIFFERENT DATA, ) 02RD0910
WRITE(KTOU, 618) DIFF 02RD0920
618 FORMAT(1H ,5H45-48,F7.3,5X, 02RD0930
1 37HMULTIPLIER USED TO INCREMENT VALUE OF ,21X , 02RD0940
1 19HREPEAT 1 - 8 ABOVE. /19X , 02RD0950
2 31HCOEFFICIENTS, F4.3 (E.G. 0.01). //18X , 02RD0960
3 48HNOTE: IF VALUES IN COLUMNS 33-48 ARE NOT DEFINED /24X , 02RD0970
4 41HON THE CONTROL CARD. THEIR LEVEL WILL BE /24X , 02RD0980
5 43HSET AUTOMATICALLY TO THE ABOVE E.G. VALUES. //18X , 02RD0990
6 42HCRITERIA FOR ENDING CONVERGING ITERATIONS. ) 02RD1000
WRITE(KTOU, 620) STOPSS 02RD1010
620 FORMAT(1H ,5H49-56,1PE9.1,3X 02RD1020
1 31HSUM OF SQUARES CRITERION, F8.7, /19X , 02RD1030
2 45H(E.G. 0.0001, A CHANGE OF LESS THAN 0.0001 IN /19X , 02RD1040
3 29HTHE RESIDUAL SUM OF SQUARES). ) 02RD1050
WRITE(KTOU, 622) STOPCR 02RD1060
622 FORMAT(1H ,5H57-64,1PE9.1,3X, 02RD1070
1 38HRATIO OF COEFFICIENTS CRITERION, F8.7, /19X , 02RD1080
2 43H(E.G. 0.001, A CHANGE OF LESS THAN 0.001 IN /19X , 02RD1090
3 43HTHE RATIOS OF ALL COMPARABLE COEFFICIENTS). //18X , 02RD1100
4 47HNOTE: VALUES IN COLUMNS 49-64 CAN BE SET AT 0.0 /24X , 02RD1110
5 44HIF CONTROL OF EITHER OR BOTH IS NOT DESIRED. / ) 02RD1120
WRITE(KTOU, 624) NEQU, MXNEQU 02RD1130
624 FORMAT(1H ,5H65-66,I3,5X,I3,1X, 02RD1140
1 50HNUMBER OF INFORMATION CARDS TO BE READ FOR DISPLAY /19X , 02RD1150
2 40HON PRINTOUT IF DESIRED, 72 COLUMNS EACH. ) 02RD1160
WRITE(KTOU, 626) NAMEBI 02RD1170
626 FORMAT(1H ,3X,2H68,I3,9X 02RD1180
1 44H1 READ NAMES OF COEFFICIENTS FROM CARDS FOR /21X , 02RD1190
2 42HDISPLAY ON PRINTOUT, 1ST 6 OF 10 COLUMNS / /21X , 02RD1200
3 23HCOEFFICIENT, 7 / CARD. ) 02RD1210
WRITE(KTOU, 628) NPLOT 02RD1220
628 FORMAT(1H ,3X,2H69,I3,9X 02RD1230
1 48H3 PLOT RESIDUALS VS. EACH INDEPENDENT VARIABLE. ) 02RD1240
WRITE(KTOU, 630) NOMITC, MNOMTC 02RD1250
630 FORMAT(1H ,3X,2H70,I3,5X,I3,1X, 02RD1260
1 48HNUMBER OF DELETE-OBSERVATIONS CARDS, OBSERVATION /19X , 02RD1270
2 48HIDENTIFICATION IN 1ST 6 OF 10 COLUMNS, 7 / CARD. ) 02RD1280
C - 02RD1290
WRITE(KTOU, 500) MODEL 02RD1300
500 FORMAT(1H0,16X,35HSUBROUTINE ARGUMENTS AND DIMENSIONS/1H , 02RD1310
1 16HSUBROUTINE MODEL,I1,35H (NPROB, B, FY, NOB, NC, X, NVARX, , 02RD1320
2 20HNOBMAX, NCMAX, KTOU)/1X,33HDIMENSION B(NCMAX), FY(NOBMAX), , 02RD1330
3 15HX(NVARX,NOBMAX)//) 02RD1340
C --- 02RD1350
C --- SET VALUES OF FLAM, FNU, MIT AND DIFF IF NOT GIVEN. 02RD1360
C --- 02RD1370
IF(FLAM.EQ.0.) FLAM = 0.1 02RD1380
IF(FNU .EQ.0.) FNU = 10. 02RD1390
IF(MIT .EQ.0 ) MIT = 20 02RD1400
IF(DIFF.EQ.0.) DIFF = 0.01 02RD1410
C --- TRAP IF NUMBER OF COEFFICIENTS ARE GREATER THAN DIMENSIONS 02RD1420
IF(NCMAX.LT.NC) GO TO 3 02RD1430
DO 2 I = 1, NC 02RD1440
C --- SIGNS(I) SIGN OF COEFFICENTS ARE POSITIVE. 02RD1450
SIGNS(I) = 1.0 02RD1460
C --- DIFZ(I) VECTOR OF DIFFERENCES IN TH 02RD1470
2 DIFZ(I) = DIFF 02RD1480
3 IF(JSAME.EQ.1) GO TO 470 02RD1490
C -- 02RD1500
C --- READ DATA FORMAT CARD 02RD1510
C --- COL. 1-72 E.G. (A6, F6.0, (NOIND*F6.0) 02RD1520
C -- 02RD1530
READ(KTIN,114) FMT 02RD1540
114 FORMAT(18A4) 02RD1550
IF (NFILE .EQ. 0) NFILE = KTIN 02RD1560
C 02RD1570
C -- 02RD1580
C --- READ DELETE OBSERVATION CARDS. 02RD1590
C -- 02RD1600
NOMIT = 0 02RD1610
IF(NOMITC.EQ.0) GO TO 468 02RD1620
JC = MNOMTC 02RD1630
IF(NOMITC.LE.JC) JC = NOMITC 02RD1640
DO 460 J = 1, JC 02RD1650
NOMIT = NOMIT + 7 02RD1660
J1 = NOMIT - 6 02RD1670
460 READ(KTIN,461) (JOMIT(I),I=J1,NOMIT) 02RD1680
461 FORMAT( 7(A6,4X) ) 02RD1690
462 IF(JOMIT(NOMIT).NE.BLANK) GO TO 464 02RD1700
NOMIT = NOMIT - 1 02RD1710
IF(NOMIT.NE.0) GO TO 462 02RD1720
WRITE(KTOU, 463) NOMITC 02RD1730
463 FORMAT(1H0//1X,6H******,I2, 32H DELETE CARD(S) WITH (7(A6,4X)) , 02RD1740
1 55HFORMAT REQUESTED, NO OBSERVATION IDENTIFICATION FOUND. , 02RD1750
2 6H******//) 02RD1760
464 IF(NOMITC.LE.MNOMTC) GO TO 468 02RD1770
JC = JC + 1 02RD1780
DO 466 J = JC, NOMITC 02RD1790
466 READ(KTIN,467) J2 02RD1800
467 FORMAT(A6) 02RD1810
468 NFOUND = 0 02RD1820
GO TO 4 02RD1830
470 IF(NOMITC.EQ.0) GO TO 4 02RD1840
DO 471 J=1, NOMITC 02RD1850
471 READ(KTIN,467) J2 02RD1860
WRITE(KTOU, 472 ) 02RD1870
472 FORMAT(1H0//1X,6H******,35HDATA SAME AS PREVIOUS PROBLEM, NEW , 02RD1880
1 31HDELETE CARDS READ BUT NOT USED.,6H******//) 02RD1890
C -- 02RD1900
C --- STARTING VALUES (GUESSES) OF COEFFICENTS, 7/ CARD. 02RD1910
C --- COL.01-72 B(I),I=1 TO NC, NC*F10.0 . 02RD1920
C -- 02RD1930
C --- TRAP IF NUMBER OF COEFFICIENTS ARE GREATER THAN DIMENSIONS 02RD1940
4 IF(NC.LE.NCMAX) GO TO 6 02RD1950
READ(KTIN,112) (DUM, I=1,NC) 02RD1960
GO TO 7 02RD1970
6 J2 = 0 02RD1980
5 J2 = J2 + 7 02RD1990
J1 = J2 - 6 02RD2000
IF(J2.GT.NC) J2 = NC 02RD2010
READ(KTIN,112) ( B(JZ), JZ = J1,J2 ) 02RD2020
112 FORMAT ( 7F10.0 ) 02RD2030
IF(J2.LT.NC) GO TO 5 02RD2040
C -- 02RD2050
C --- READ INFORMATION (EQUATION) CARDS FOR PRINTOUT IF DESIRED. 02RD2060
C -- 02RD2070
7 IF(NEQU.EQ.0) GO TO 105 02RD2080
C --- TRAP IF NUMBER OF INFORMATION CARDS GT. DIMENSIONS. 02RD2090
JC = MXNEQU 02RD2100
J2 = NEQU 02RD2110
IF(NEQU.LE.JC) JC = NEQU 02RD2120
NEQU = JC*18 02RD2130
READ(KTIN,104) (EQU(I), I=1,NEQU) 02RD2140
104 FORMAT( 18A4) 02RD2150
IF(J2.LE.MXNEQU) GO TO 105 02RD2160
JC = J2 - MXNEQU 02RD2170
DO 103 J = 1, JC 02RD2180
103 READ(KTIN,467) J2 02RD2190
105 NBI = 2*NC 02RD2200
IF(NAMEBI.NE.1) GO TO 108 02RD2210
C -- 02RD2220
C --- READ NAMES OF COEFFICIENTS FOR PRINT OUT IF DESIRED. 02RD2230
C -- 02RD2240
C --- TRAP IF NUMBER OF COEFFICIENTS ARE GREATER THAN DIMENSIONS 02RD2250
IF(NC.LE.NCMAX) GO TO 8 02RD2260
READ(KTIN,106) (DUM, I=1,NBI) 02RD2270
GO TO 110 02RD2280
8 READ(KTIN,106) (BI(I),I=1,NBI) 02RD2290
106 FORMAT( 7(A4,A2,4X) ) 02RD2300
GO TO 110 02RD2310
108 DO 109 I = 1, NBI 02RD2320
109 BI(I) = BLANK 02RD2330
C -- 02RD2340
C --- PRINT INFORMATION (EQUATION) CARDS 02RD2350
C -- 02RD2360
110 IF(NEQU.EQ.0) GO TO 118 02RD2370
WRITE(KTOU, 117) (EQU(I), I=1, NEQU ) 02RD2380
117 FORMAT(1H , 18A4 ) 02RD2390
C -- 02RD2400
C --- PRINT FORMAT CARD. 02RD2410
C -- 02RD2420
118 IF (JSAME.EQ.1) GO TO 220 02RD2430
WRITE(KTOU, 122) FMT 02RD2440
122 FORMAT(13H0DATA FORMAT , 18A4// 02RD2450
1 24H OBSV. NO. IDENT. SEQ., 2X, 107H 1-11-21 2-12-22 02RD2460
2 3-13-23 4-14-24 5-15-25 6-16-26 7-17-27 8-18-28 02RD2470
3 9-19-29 10-20-30 ) 02RD2480
IF(NVARX - NOIND) 73,75,75 02RD2490
73 WRITE(KTOU, 74) NVARX, NOIND 02RD2500
74 FORMAT(1H0//////1X,39H******WARNING--THIS VERSION OF PROGRAM , 02RD2510
115HDIMENSIONED FOR,I3,11H VARIABLES,,I3,16H REQUESTED******//////)02RD2520
75 IF(NOIND - 9) 76, 66, 66 02RD2530
76 MNO = NOIND 02RD2540
GO TO 10 02RD2550
66 MNO = 9 02RD2560
C -- 02RD2570
C --- READ DATA 02RD2580
10 N = N + 1 02RD2590
READ(NFILE,FMT,END=190) IDENT(N), Y(N), (X(I,N), I=1,NOIND) 02RD2600
IF (IDENT(N) .EQ. AEND .OR. X(1,N) .EQ. 999.) GO TO 200 02RD2610
C -- 02RD2620
C --- DELETE NOMIT OBSERVATIONS IF REQUESTED 02RD2630
C -- 02RD2640
IF((NOMIT - NFOUND).EQ.0) GO TO 310 02RD2650
J = NFOUND + 1 02RD2660
IF(JOMIT(J).NE.IDENT(N)) GO TO 310 02RD2670
NFOUND = NFOUND + 1 02RD2680
N = N - 1 02RD2690
GO TO 10 02RD2700
C -- 02RD2710
C --- SET UP INDEX TO WRITE FIRST CARD OF DATA GROUP 02RD2720
C -- 02RD2730
310 ISEQ = 1 02RD2740
WRITE(KTOU, 124) N, IDENT(N), ISEQ, Y(N), (X(I,N),I=1,MNO) 02RD2750
124 FORMAT(1H ,2X,I4,5X,A6,1X,I4,10F11.3) 02RD2760
KKK = 9 02RD2770
170 IF (NOIND-KKK) 10, 10, 148 02RD2780
C --- SET UP INDEX TO LIST OTHER VARIABLES IN OBSERVATION. 02RD2790
148 KONE = KKK + 1 02RD2800
IF(NOIND-(KKK+10)) 166,166,165 02RD2810
165 KTWO = KKK + 10 02RD2820
GO TO 167 02RD2830
166 KTWO = NOIND 02RD2840
167 ISEQ = ISEQ + 1 02RD2850
WRITE(KTOU, 126) ISEQ, (X(I,N), I= KONE, KTWO ) 02RD2860
126 FORMAT( 19X, I4, 10F11.3 ) 02RD2870
KKK = KKK + 10 02RD2880
GO TO 170 02RD2890
C -- 02RD2900
190 IF (NFILE .NE. KTIN) REWIND NFILE 02RD2910
200 NOB = N - 1 02RD2920
IF(NOB.LE.NOBMAX) GO TO 312 02RD2930
WRITE(KTOU, 55555) NOBMAX, N 02RD2940
55555 FORMAT( 1H1 //24H0PROGRAM DIMENSIONED FOR,I4,16H OBSERVATIONS. , 02RD2950
1 I4, 8H READ IN/ 17H0PROBLEM SKIPPED. ) 02RD2960
GO TO 1 02RD2970
220 WRITE(KTOU, 222 ) 02RD2980
222 FORMAT( 1H0, 42HOBSERVATIONS THE SAME AS PREVIOUS PROBLEM.) 02RD2990
GO TO 66666 02RD3000
C -- 02RD3010
C --- TRAP IF NUMBER OF COEFFICIENTS ARE GREATER THAN DIMENSIONS 02RD3020
C -- 02RD3030
312 IF(NC.LE.NCMAX) GO TO 320 02RD3040
WRITE(KTOU, 314) NCMAX, NC 02RD3050
314 FORMAT(1H0//////1X, 45H******THIS VERSION OF PROGRAM DIMENSIONED 02RD3060
1FOR,I3,14H COEFFICIENTS,,I3,11H REQUESTED./17H0PROBLEM SKIPPED.) 02RD3070
GO TO 1 02RD3080
C -- 02RD3090
C --- LIST DELETED OBSERVATIONS, IF ANY. 02RD3100
C -- 02RD3110
320 IF(NOMIT.EQ.0) GO TO 66666 02RD3120
IF(NOMITC.LE.MNOMTC) GO TO 323 02RD3130
WRITE(KTOU, 322) MNOMTC, NOMITC 02RD3140
322 FORMAT(1H0//////1X, 45H******THIS VERSION OF PROGRAM DIMENSIONED 02RD3150
1FOR,I2,26H DELETE OBSERVATION CARDS,,I2, 42H REQUESTED. NOT ALL 02RD3160
2OBSERVATIONS DELETED.,6H******//////) 02RD3170
323 IF(NFOUND.EQ.0) GO TO 329 02RD3180
WRITE(KTOU, 327) 02RD3190
327 FORMAT(21H0OBSERVATIONS DELETED) 02RD3200
WRITE(KTOU, 328) (JOMIT(JZ),JZ=1,NFOUND) 02RD3210
328 FORMAT( 10(6X,A6) ) 02RD3220
IF((NOMIT-NFOUND).EQ.0) GO TO 66666 02RD3230
329 WRITE(KTOU, 330 ) 02RD3240
330 FORMAT(23H0OBSERVATIONS NOT FOUND ) 02RD3250
J = NFOUND + 1 02RD3260
WRITE(KTOU, 328) (JOMIT(JZ),JZ=J,NOMIT) 02RD3270
GO TO 66666 02RD3280
C -- 02RD3290
1000 KTINED = 1 02RD3300
66666 RETURN 02RD3310
END 02RD3320
SUBROUTINE MODEL1 (NPROB, B, FY, NOB, NC, X, NVARX, NOBMAX, NCMAX,04M10010
1 KTOU) 04M10011
IMPLICIT REAL*8 (A-H,O-Z) 04M10020
DIMENSION B(NCMAX), FY(NOBMAX), X(NVARX,NOBMAX) 04M10030
C 04M10040
C *** BLANK MODEL1 SUBROUTINE - PRINTS MESSAGE AND STOPS 04M10050
C 04M10060
IF(NC-0) 99, 99, 1 04M10070
1 WRITE(KTOU,2) 04M10080
2 FORMAT(///52H0***** MODEL 1 SPECIFIED BUT FORTRAN SOURCE WAS NOT ,04M10090
1 52HMADE AVAILABLE FOR THIS RUN. EXECUTION STOPS. *****)04M10100
STOP 04M10110
C 04M10120
99 RETURN 04M10130
END 04M10140
SUBROUTINE MODEL2 (NPROB, B, FY, NOB, NC, X, NVARX, NOBMAX, NCMAX,05M20010
1 KTOU) 05M10011
IMPLICIT REAL*8 (A-H,O-Z) 05M20020
DIMENSION B(NCMAX), FY(NOBMAX), X(NVARX,NOBMAX) 05M20030
C 05M20040
C *** BLANK MODEL2 SUBROUTINE - PRINTS MESSAGE AND STOPS 05M20050
C 05M20060
IF(NC-0) 99, 99, 1 05M20070
1 WRITE(KTOU,2) 05M10080
2 FORMAT(///52H0***** MODEL 2 SPECIFIED BUT FORTRAN SOURCE WAS NOT ,05M20090
1 52HMADE AVAILABLE FOR THIS RUN. EXECUTION STOPS. *****)05M20100
STOP 05M20110
C 05M20120
99 RETURN 05M20130
END 05M20140
SUBROUTINE MODEL3 (NPROB, B, FY, NOB, NC, X, NVARX, NOBMAX, NCMAX,06M30010
1 KTOU) 06M10011
IMPLICIT REAL*8 (A-H,O-Z) 06M30020
DIMENSION B(NCMAX), FY(NOBMAX), X(NVARX,NOBMAX) 06M30030
C 06M30040
C *** BLANK MODEL3 SUBROUTINE - PRINTS MESSAGE AND STOPS 06M30050
C 06M30060
IF(NC-0) 99, 99, 1 06M30070
1 WRITE(KTOU,2) 06M10080
2 FORMAT(///52H0***** MODEL 3 SPECIFIED BUT FORTRAN SOURCE WAS NOT ,06M30090
1 52HMADE AVAILABLE FOR THIS RUN. EXECUTION STOPS. *****)06M30100
STOP 06M30110
C 06M30120
99 RETURN 06M30130
END 06M30140
SUBROUTINE MODEL4 (NPROB, B, FY, NOB, NC, X, NVARX, NOBMAX, NCMAX,07M40010
1 KTOU) 07M10011
IMPLICIT REAL*8 (A-H,O-Z) 07M40020
DIMENSION B(NCMAX), FY(NOBMAX), X(NVARX,NOBMAX) 07M40030
C 07M40040
C *** BLANK MODEL4 SUBROUTINE - PRINTS MESSAGE AND STOPS 07M40050
C 07M40060
IF(NC-0) 99, 99, 1 07M40070
1 WRITE(KTOU,2) 07M10080
2 FORMAT(///52H0***** MODEL 4 SPECIFIED BUT FORTRAN SOURCE WAS NOT ,07M40090
1 52HMADE AVAILABLE FOR THIS RUN. EXECUTION STOPS. *****)07M40100
STOP 07M40110
C 07M40120
99 RETURN 07M40130
END 07M40140
SUBROUTINE MODEL5 (NPROB, B, FY, NOB, NC, X, NVARX, NOBMAX, NCMAX,08M50010
1 KTOU) 08M10011
IMPLICIT REAL*8 (A-H,O-Z) 08M50020
DIMENSION B(NCMAX), FY(NOBMAX), X(NVARX,NOBMAX) 08M50030
C 08M50040
C *** BLANK MODEL5 SUBROUTINE - PRINTS MESSAGE AND STOPS 08M50050
C 08M50060
IF(NC-0) 99, 99, 1 08M50070
1 WRITE(KTOU,2) 08M10080
2 FORMAT(///52H0***** MODEL 5 SPECIFIED BUT FORTRAN SOURCE WAS NOT ,08M50090
1 52HMADE AVAILABLE FOR THIS RUN. EXECUTION STOPS. *****)08M50100
STOP 08M50110
C 08M50120
99 RETURN 08M50130
END 08M50140
SUBROUTINE EIGENJ(H,U,D,NP,NS) 09EG0010
IMPLICIT REAL*8(A-H,O-Z) 09EG0020
DIMENSION H(2),U(2) 09EG0030
NDX=NP*NS 09EG0040
NPR=NS+1 09EG0050
LP=NP-1 09EG0060
XN2=NP*NP 09EG0070
DO 1 I=1,NP 09EG0080
DO 1 J=I,NDX,NS 09EG0090
1 U(J)=0.0 09EG0100
DO 2 I=1,NDX,NPR 09EG0110
2 U(I)=1.0 09EG0120
E=D/XN2 09EG0130
ASSIGN 18 TO IND1 09EG0140
14 S2=0.0 09EG0150
J11=1 09EG0160
J12=0 09EG0170
DO 8 I=2,NP 09EG0180
J11=J11+NS 09EG0190
J12=J12+NS+1 09EG0200
DO 8 K=J11,J12 09EG0210
8 S2=S2+H(K)*H(K) 09EG0220
GO TO IND1,(18,15) 09EG0230
18 J1=-NS 09EG0240
DO 5 J=1,LP 09EG0250
J1=J1+NS 09EG0260
JJ=J1+J 09EG0270
I=J+1 09EG0280
K1=J1 09EG0290
DO 5 K=I,NP 09EG0300
K1=K1+NS 09EG0310
KK=K1+K 09EG0320
JK=K1+J 09EG0330
KJ=J1+K 09EG0340
IF(H(JK)*H(JK)-E)5,5,13 09EG0350
13 E1=H(JJ) 09EG0360
E2=H(KK) 09EG0370
E3=H(JK) 09EG0380
Y=E2-E1 09EG0390
R=DSQRT(Y*Y+4.0*E3*E3) 09EG0400
IF(Y)21,22,22 09EG0410
21 R=-R 09EG0420
22 COS2=Y/R 09EG0430
SIN2=2.0*E3/R 09EG0440
COSS=DSQRT(0.5*(1.0+COS2)) 09EG0450
SINS=0.5*SIN2/COSS 09EG0460
A=0.5*(E1+E2) 09EG0470
B=0.5*COS2*(E1-E2)-E3*SIN2 09EG0480
H(JJ)=A+B 09EG0490
H(KK)=A-B 09EG0500
H(JK)=0.0 09EG0510
H(KJ)=0.0 09EG0520
N1=K-NS 09EG0530
L1=J-NS 09EG0540
N=K1 09EG0550
L=J1 09EG0560
DO 10 M=1,NP 09EG0570
N=N+1 09EG0580
L=L+1 09EG0590
N1=N1+NS 09EG0600
L1=L1+NS 09EG0610
U1=U(L)*COSS-U(N)*SINS 09EG0620
U(N)=U(L)*SINS+U(N)*COSS 09EG0630
U(L)=U1 09EG0640
IF((J-M)*(K-M))7,10,7 09EG0650
7 H1=H(L)*COSS-H(N)*SINS 09EG0660
H(N)=H(L)*SINS+H(N)*COSS 09EG0670
H(L)=H1 09EG0680
H(N1)=H(N) 09EG0690
H(L1)=H1 09EG0700
10 CONTINUE 09EG0710
5 CONTINUE 09EG0720
ASSIGN 15 TO IND1 09EG0730
GO TO 14 09EG0740
15 IF(S2-D)17,17,18 09EG0750
17 RETURN 09EG0760
END 09EG0770
SUBROUTINE MATINV(A,NVAR,B,NB,DETERM,MA) 10IN0010
IMPLICIT REAL*8(A-H,O-Z) 10IN0020
DIMENSION A(MA,MA),B(MA,NB),INDEX(100,2) 10IN0030
EQUIVALENCE (T,SWAP,PIVOT),(K,L1) 10IN0040
C 10IN0050
C INITIALIZATION 10IN0060
C 10IN0070
DETERM=1.0 10IN0080
DO 20 J=1,100 10IN0090
20 INDEX(J,1)=0 10IN0100
C 10IN0110
C SEARCH FOR PIVOT ELEMENT 10IN0120
C 10IN0130
I=0 10IN0140
IRANK=0 10IN0150
40 AMAX=-1.0 10IN0160
DO 105 J=1,NVAR 10IN0170
IF(INDEX(J,1))105,60,105 10IN0180
60 DO 100 K=1,NVAR 10IN0190
IF(INDEX(K,1))100,80,100 10IN0200
80 T=DABS(A(J,K)) 10IN0210
IF(T.LE.AMAX) GO TO 100 10IN0220
IROW=J 10IN0230
ICOLUM=K 10IN0240
AMAX=T 10IN0250
100 CONTINUE 10IN0260
105 CONTINUE 10IN0270
IF(AMAX)720,720,110 10IN0280
110 INDEX(ICOLUM,1)=IROW 10IN0290
C 10IN0300
C INTERCHANGE ROWS TO PUT PIVOT ELEMENT ON DIAGONAL 10IN0310
C 10IN0320
IF(IROW.EQ.ICOLUM) GO TO 310 10IN0330
DETERM=-DETERM 10IN0340
DO 200 L=1,NVAR 10IN0350
SWAP=A(IROW,L) 10IN0360
A(IROW,L)=A(ICOLUM,L) 10IN0370
200 A(ICOLUM,L)=SWAP 10IN0380
DO 250 L=1,NB 10IN0390
SWAP=B(IROW,L) 10IN0400
B(IROW,L)=B(ICOLUM,L) 10IN0410
250 B(ICOLUM,L)=SWAP 10IN0420
I=I+1 10IN0430
INDEX(I,2)=ICOLUM 10IN0440
310 PIVOT=A(ICOLUM,ICOLUM) 10IN0450
DETERM=PIVOT*DETERM 10IN0460
IRANK=IRANK+1 10IN0470
C 10IN0480
C DIVIDE PIVOT ROW BY PIVOT ELEMENT 10IN0490
C 10IN0500
A(ICOLUM,ICOLUM)=1.0 10IN0510
PIVOT=A(ICOLUM,ICOLUM)/PIVOT 10IN0520
DO 350 L=1,NVAR 10IN0530
350 A(ICOLUM,L)=A(ICOLUM,L)*PIVOT 10IN0540
DO 370 L=1,NB 10IN0550
370 B(ICOLUM,L)=B(ICOLUM,L)*PIVOT 10IN0560
C 10IN0570
C REDUCE NON-PIVOT ROWS 10IN0580
C 10IN0590
DO 550 L1=1,NVAR 10IN0600
IF(L1.EQ.ICOLUM) GO TO 550 10IN0610
T=A(L1,ICOLUM) 10IN0620
A(L1,ICOLUM)=0.0 10IN0630
DO 450 L=1,NVAR 10IN0640
450 A(L1,L)=A(L1,L)-A(ICOLUM,L)*T 10IN0650
DO 500 L=1,NB 10IN0660
500 B(L1,L)=B(L1,L)-B(ICOLUM,L)*T 10IN0670
550 CONTINUE 10IN0680
GO TO 40 10IN0690
C 10IN0700
C INTERCHANGE COLUMS 10IN0710
C 10IN0720
630 ICOLUM=INDEX(I,2) 10IN0730
IROW=INDEX(ICOLUM,1) 10IN0740
DO 705 K=1,NVAR 10IN0750
SWAP=A(K,IROW) 10IN0760
A(K,IROW)=A(K,ICOLUM) 10IN0770
705 A(K,ICOLUM)=SWAP 10IN0780
I=I-1 10IN0790
720 IF(I)630,740,630 10IN0800
740 NB=NVAR-IRANK 10IN0810
RETURN 10IN0820
END 10IN0830
FUNCTION TTEST(IDF) 11TT0010
IMPLICIT REAL*8(A-H,O-Z) 11TT0020
DIMENSION TA(30) 11TT0030
DATA TA/12.706,4.303,3.182,2.776,2.571,2.447,2.365,2.306,2.262, 11TT0040
12.228,2.201,2.179,2.160,2.145,2.131,2.120,2.110,2.101,2.093,2.086,11TT0050
22.080,2.074,2.069,2.064,2.060,2.056,2.052,2.048,2.045,2.042/ 11TT0060
IF(IDF-30)10,10,11 11TT0070
10 TTEST=TA(IDF) 11TT0080
RETURN 11TT0090
11 IF(IDF-120)12,12,13 11TT0100
13 TTEST=1.96 11TT0110
RETURN 11TT0120
12 IF(IDF-40)14,14,15 11TT0130
14 TTEST=2.042-0.021*FLOAT(IDF-30)/10.0 11TT0140
RETURN 11TT0150
15 IF(IDF-60)16,16,17 11TT0160
16 TTEST=2.021-0.021*FLOAT(IDF-40)/20.0 11TT0170
RETURN 11TT0180
17 TTEST=2.000-0.002*FLOAT(IDF-60)/60.0 11TT0190
RETURN 11TT0200
END 11TT0210
SUBROUTINE SORT (IDENT, Y, NPROB, F, R, LSORT, YCMIN, YCMAX, 12SR0010
1 NOBMAX, NNPROB, NOB, KTOU) 12SR0011
C --- SUBROUTINE SORTS AND PRINTS RESIDUALS IN CHRONOLOGICAL 12SR0020
C --- AND ASCENDING ORDER, THEN CALLS PITCHA TO PLOT RESIDUALS. 12SR0030
IMPLICIT REAL*8(A-H,O-Z) 12SR0040
C 12SR0050
C 12SR0060
REAL*8 IDENT 12SR0070
DIMENSION IDENT(NOBMAX), Y(NOBMAX), NPROB(NNPROB), F(NOBMAX), 12SR0080
1 R(NOBMAX), LSORT(1) 12SR0090
YCMIN = 1E32 12SR0100
YCMAX = -YCMIN 12SR0110
DO 10 IB =1, NOB 12SR0120
CALL MINMAX(YCMIN,YCMAX,F(IB) ) 12SR0130
10 CONTINUE 12SR0140
LSORT(1) = 1 12SR0150
DO 16 ISA = 2, NOB 12SR0160
TEMP = R(ISA) 12SR0170
ISAX = ISA - 1 12SR0180
DO 11 ISB = 1, ISAX 12SR0190
IBB = LSORT(ISB) 12SR0200
IF(TEMP - R(IBB) ) 12,12,11 12SR0210
11 CONTINUE 12SR0220
LSORT(ISA) = ISA 12SR0230
GO TO 16 12SR0240
12 KSA = ISA 12SR0250
13 KSA = KSA - 1 12SR0260
LSORT(KSA + 1) = LSORT(KSA) 12SR0270
IF(KSA - ISB) 15,15,13 12SR0280
15 LSORT(ISB) = ISA 12SR0290
16 CONTINUE 12SR0300
WRITE(6, 1000 ) 12SR
1000 FORMAT(1H0,44H---------ORDERED BY COMPUTER INPUT----------, 12SR0320
1 10X,53H----------------ORDERED BY RESIDUALS-----------------/ 12SR0330
2 9H OBS. NO., 4X, 6HOBS. Y, 5X, 8HFITTED Y, 5X, 12SR0340
3 8HRESIDUAL, 10X, 8HOBS. NO., 4X, 6HOBS. Y, 5X, 8HFITTED Y, 12SR0350
4 2X,20HORDERED RESID. SEQ. ) 12SR0360
NOB1 = NOB + 1 12SR0370
DO 20 IC = 1, NOB 12SR0380
IA = NOB1 - IC 12SR0390
JC = LSORT(IA) 12SR0400
WRITE(KTOU,1002),IDENT(IC), Y(IC), F(IC), R(IC),IDENT(JC), Y(JC), 12SR0410
1 F(JC), R(JC), IC 12SR0420
1002 FORMAT(1H ,1X,A6,F11.3,2F13.3,11X,A6,F11.3,2F13.3,3X,I4) 12SR0430
20 CONTINUE 12SR0440
RETURN 12SR0450
END 12SR0460
SUBROUTINE MINMAX(TMIN,TMAX,T ) 13MM0010
C 13MM0020
C SUBROUTINE TO FIND MINIMUM AND MAXIMUM OF ANY GIVEN ARRAY 13MM0030
C 13MM0040
IMPLICIT REAL*8(A-H,O-Z) 13MM0050
IF (T-TMIN) 2,3,3 13MM0060
2 TMIN = T 13MM0070
3 IF (T-TMAX) 5,5,4 13MM0080
4 TMAX = T 13MM0090
5 RETURN 13MM0100
END 13MM0110
SUBROUTINE PITCHA (X, EQU, BI, YYCC, DELTA, LSORT, NP, YCMIN, 14PC0010
1 YCMAX, GRIDA, GRIDB, KTOU, 14PC0020
2 NVARX, NOBMAX, NEQUNO, NBINO, NNPROB, NOB, NOIND, NPLOT) 14PC0021
C 14PC0030
C SUBROUTINE PLOTS CUMULATIVE FREQUENCY OF RESIDUALS AND 14PC0040
C RESIDUALS VS. FITTED Y 14PC0050
C 14PC0060
C 14PC0070
C 14PC0080
C 14PC0090
DOUBLE PRECISION X(NVARX,NOBMAX), EQU(NEQUNO), BI(NBINO), 14PC0100
1 YYCC(NOBMAX), DELTA(NOBMAX), YCMIN, YCMAX 14PC0110
DOUBLE PRECISION YCAVG, DELP, XMIN, XMAX, YIW, XIW, XAVG, XUQ, 14PC0120
1 XLQ 14PC0130
C 14PC0140
DOUBLE PRECISION AMIN(20), AMAX(20) 14PC0141
DIMENSION NP(NNPROB), LSORT(1) 14PC0150
DIMENSION GRIDA(53,26), GRIDB(53,26), NEG(8), 14PC0160
1 POS(8), PRAX(51), RESID(9) 14PC0170
C 14PC0180
DATA RESID/1HR,1HE,1HS,1HI,1HD,1HU,1HA,1HL,1HS/ 14PC0190
DATA POS/1HP,1HO,1HS,1HI,1HT,1HI,1HV,1HE/ 14PC0200
DATA NEG/1HN,1HE,1HG,1HA,1HT,1HI,1HV,1HE/ 14PC0210
DATA IPLUS/5H+++++/ 14PC0220
DATA PRAX/.000233, .000302, .000390, .000501, .000641, 14PC0230
1 .000816, .001035, .001306, .001641, .002052, 14PC0240
2 .002555, .003167, .003907, .004797, .005868, 14PC0250
3 .007143, .008656, .010444, .012545, .015003, 14PC0260
4 .017864, .021178, .025588, .029379, .034380, 14PC0270
5 .040059, .046479, .053699, .061780, .070781, 14PC0280
6 .080757, .091759, .103835, .117023, .131357, 14PC0290
7 .146859, .163543, .181411, .200454, .220650, 14PC0300
8 .241964, .264347, .287740, .312067, .337243, 14PC0310
9 .363169, .389739, .416834, .444330, .472097, 14PC0320
A .500000/ 14PC0330
C 14PC0340
C --- IDENTIFICATION OF KTOU WRITE FILE. 14PC0350
C 14PC0360
NOOBSV = NOB 14PC0370
KTOU = 6 14PC0380
ITYPE = 1 14PC0390
XNP=NOOBSV 14PC0400
JJC=LSORT(NOOBSV) 14PC0410
DELP=DELTA(JJC) 14PC0420
IIC=LSORT(1) 14PC0430
YIW=(1.005D0*(DELP-DELTA(IIC)))/51. 14PC0440
XIW=(1.005D0*(YCMAX-YCMIN))/101. 14PC0450
DO 2 IA=1,NOOBSV 14PC0460
JAC=LSORT(IA) 14PC0470
IF(DELTA(JAC).LT.0.) GO TO 2 14PC0480
L1 = IDINT((DELP-DELTA(JAC))/YIW)+2 14PC0490
GO TO 4 14PC0500
2 CONTINUE 14PC0510
4 CALL GRID(GRIDA,GRIDB,L1,ITYPE) 14PC0520
DO 30 IA=1,NOOBSV 14PC0530
JAC=LSORT(IA) 14PC0540
LINE = IDINT((DELP-DELTA(JAC))/YIW)+2 14PC0550
IF(LINE.LT.2.OR.LINE.GT.52) GO TO 30 14PC0560
LOCX1=IDINT((YYCC(JAC)-YCMIN)/XIW)+1 14PC0570
IF(LOCX1.LT.1.OR.LOCX1.GT.101) GO TO 10 14PC0580
IF(LOCX1.EQ.1) LOCX1=2 14PC0590
LOCX2=LOCX1+4 14PC0600
LCHAR=MOD(LOCX2,4) 14PC0610
LWORD=LOCX2/4 14PC0620
IF(LCHAR) 8,6,8 14PC0630
6 LCHAR=4 14PC0640
LWORD=LWORD-1 14PC0650
8 CALL PACK(GRIDA(LINE,LWORD),LCHAR,IPLUS) 14PC0660
10 PRLOC=(IA-0.5)/XNP 14PC0670
IF(PRLOC-0.5) 12,12,18 14PC0680
12 DO 14 IB=1,51 14PC0690
IF(PRLOC-PRAX(IB)) 16,16,14 14PC0700
14 CONTINUE 14PC0710
IB=51 14PC0720
16 LOCP1=IB 14PC0730
GO TO 24 14PC0740
18 DO 20 IB=1,51 14PC0750
IC=52-IB 14PC0760
IF(PRLOC+PRAX(IC)-1.) 22,22,20 14PC0770
20 CONTINUE 14PC0780
22 LOCP1=IB+50 14PC0790
24 LOCP2=LOCP1+4 14PC0800
LCHAR=MOD(LOCP2,4) 14PC0810
LWORD=LOCP2/4 14PC0820
IF(LCHAR) 28,26,28 14PC0830
26 LCHAR=4 14PC0840
LWORD=LWORD-1 14PC0850
28 CALL PACK(GRIDB(LINE,LWORD),LCHAR,IPLUS) 14PC0860
30 CONTINUE 14PC0870
WRITE(KTOU,34) NP 14PC0880
34 FORMAT(1H1, 1X,5A4, 33X, 14PC0890
136HCUMULATIVE DISTRIBUTION OF RESIDUALS) 14PC0900
WRITE(KTOU,36) 14PC0910
36 FORMAT(1H ,17X,101H.0002 .001 .005 .01 .02 .05 .1 .2 314PC0920
1 .4 .5 .6 .7 .8 .9 .95 .98 .99 .995 .999) 14PC0930
WRITE(KTOU,38) ((GRIDB(IA,JZ),JZ=1,26),IA=1,3) 14PC0940
38 FORMAT(1H ,19X,25A4,A2) 14PC0950
WRITE(KTOU,40) (POS(IA-3),(GRIDB(IA,JZ),JZ=1,26),IA=4,11) 14PC0960
40 FORMAT(1H ,17X,A1,1X,25A4,A2) 14PC0970
DO 46 IA=12,22 14PC0980
IF(IA.EQ.L1) GO TO 42 14PC0990
WRITE(KTOU,38) (GRIDB(IA,JZ),JZ=1,26) 14PC1000
GO TO 46 14PC1010
42 WRITE(KTOU,44) (GRIDB(IA,JZ),JZ=1,26) 14PC1020
44 FORMAT(1H ,17X,1H0,1X,25A4,A2) 14PC1030
46 CONTINUE 14PC1040
DO 54 IA=23,31 14PC1050
IF(IA.EQ.L1) GO TO 50 14PC1060
WRITE(KTOU,48) RESID(IA-22),(GRIDB(IA,JZ),JZ=1,26) 14PC1070
48 FORMAT(1H ,5X,A1,13X,25A4,A2) 14PC1080
GO TO 54 14PC1090
50 WRITE(KTOU,52) RESID(IA-22),(GRIDB(IA,JZ),JZ=1,26) 14PC1100
52 FORMAT(1H ,5X,A1,11X,1H0,1X,25A4,A2) 14PC1110
54 CONTINUE 14PC1120
DO 58 IA=32,42 14PC1130
IF(IA.EQ.L1) GO TO 56 14PC1140
WRITE(KTOU,38) (GRIDB(IA,JZ),JZ=1,26) 14PC1150
GO TO 58 14PC1160
56 WRITE(KTOU,44) (GRIDB(IA,JZ),JZ=1,26) 14PC1170
58 CONTINUE 14PC1180
WRITE(KTOU,40) (NEG(IA-42),(GRIDB(IA,JZ),JZ=1,26),IA=43,50) 14PC1190
WRITE(KTOU,38) ((GRIDB(IA,JZ),JZ=1,26),IA=51,53) 14PC1200
WRITE(KTOU,36) 14PC1210
WRITE(KTOU,60) 14PC1220
60 FORMAT(1H ,54X,33HCUMULATIVE FREQUENCY, NORMAL GRID) 14PC1230
IF(YCMAX.EQ.YCMIN) GO TO 80 14PC1231
WRITE(KTOU,62) NP 14PC1240
62 FORMAT(1H1, 1X,5A4, 39X, 21HRESIDUAL VS. FITTED Y ) 14PC1250
YCAVG = (YCMAX + YCMIN) / 2. 14PC1260
WRITE(KTOU,64) YCMIN, YCAVG, YCMAX 14PC1270
64 FORMAT(1H ,13X, F10.3, 40X, F10.3, 40X, F10.3) 14PC1280
WRITE(KTOU,38) ((GRIDA(IA,JZ),JZ=1,26),IA=1,3) 14PC1290
WRITE(KTOU,40) (POS(IA-3),(GRIDA(IA,JZ),JZ=1,26),IA=4,11) 14PC1300
DO 68 IA=12,22 14PC1310
IF(IA.EQ.L1) GO TO 66 14PC1320
WRITE(KTOU,38) (GRIDA(IA,JZ),JZ=1,26) 14PC1330
GO TO 68 14PC1340
66 WRITE(KTOU,44) (GRIDA(IA,JZ),JZ=1,26) 14PC1350
68 CONTINUE 14PC1360
DO 72 IA=23,31 14PC1370
IF(IA.EQ.L1) GO TO 70 14PC1380
WRITE(KTOU,48) RESID(IA-22),(GRIDA(IA,JZ),JZ=1,26) 14PC1390
GO TO 72 14PC1400
70 WRITE(KTOU,52) RESID(IA-22),(GRIDA(IA,JZ),JZ=1,26) 14PC1410
72 CONTINUE 14PC1420
DO 76 IA=32,42 14PC1430
IF(IA.EQ.L1) GO TO 74 14PC1440
WRITE(KTOU,38) (GRIDA(IA,JZ),JZ=1,26) 14PC1450
GO TO 76 14PC1460
74 WRITE(KTOU,44) (GRIDA(IA,JZ),JZ=1,26) 14PC1470
76 CONTINUE 14PC1480
WRITE(KTOU,40) (NEG(IA-42),(GRIDA(IA,JZ),JZ=1,26),IA=43,50) 14PC1490
WRITE(KTOU,38) ((GRIDA(IA,JZ),JZ=1,26),IA=51,53) 14PC1500
WRITE(KTOU,64) YCMIN, YCAVG, YCMAX 14PC1510
WRITE(KTOU,78) 14PC1520
78 FORMAT(1H ,66X,8HFITTED Y) 14PC1530
C 14PC1540
C---- PLOT RESIDUALS VS. EACH INDEPENDENT VARIABLES. 14PC1550
C 14PC1560
80 IF (NPLOT .NE. 3) GO TO 9999 14PC1570
ITYPE = 3 14PC1580
DO 200 I=1,NOIND 14PC1590
XMIN=1E32 14PC1600
XMAX=-XMIN 14PC1610
DO 100 J = 1, NOOBSV 14PC1620
XMIN = DMIN1 (XMIN,X(I,J)) 14PC1630
100 XMAX = DMAX1 (XMAX,X(I,J)) 14PC1640
AMIN(I)=XMIN 14PC1650
200 AMAX(I)=XMAX 14PC1660
M = 0 14PC1670
DO 500 I = 1, NOIND 14PC1680
IF(XMIN.EQ.XMAX) GO TO 500 14PC1681
M = M + 1 14PC1690
YIW=(1.0005D0*(DELP-DELTA(IIC)))/51. 14PC1691
XMIN = AMIN(I) 14PC1692
XMAX = AMAX(I) 14PC1693
IF (XMAX .GT. 0.0) GO TO 220 14PC1700
XIW=(1.0005D0*(XMAX-XMIN))/101. 14PC1710
GO TO 240 14PC1720
220 XIW=(1.0005D0*(XMAX-XMIN))/101. 14PC1730
240 CALL GRID (GRIDA, GRIDB, L1, ITYPE) 14PC1740
DO 300 IA = 1, NOOBSV 14PC1750
JAC = LSORT(IA) 14PC1760
LINE = IDINT((DELP-DELTA(JAC)) / YIW) +2 14PC1770
IF (LINE .LT. 2 .OR. LINE .GT. 52) GO TO 300 14PC1780
LOCX1 = IDINT((X(M,JAC)-XMIN) / XIW) + 1 14PC1790
IF (LOCX1 .LT. 1 .OR. LOCX1 .GT. 101) GO TO 300 14PC1800
IF (LOCX1 .EQ. 1) LOCX1 = 2 14PC1810
LOCX2 = LOCX1 +4 14PC1820
LCHAR = MOD(LOCX2,4) 14PC1830
LWORD = LOCX2/4 14PC1840
IF (LCHAR) 280, 260, 280 14PC1850
260 LCHAR = 4 14PC1860
LWORD = LWORD -1 14PC1870
280 CALL PACK (GRIDA(LINE,LWORD), LCHAR, IPLUS) 14PC1880
300 CONTINUE 14PC1890
J = I*2 -1 14PC1900
WRITE (KTOU,320) NP, I 14PC1910
320 FORMAT(1H1,1X,5A4,30X,35HRESIDUALS VS. INDEPENDENT VARIABLE ,I2) 14PC1920
XAVG = (XMAX + XMIN) / 2. 14PC1930
XUQ = (XMAX + XAVG) / 2. 14PC1940
XLQ = (XMIN + XAVG) / 2. 14PC1950
WRITE (KTOU,340) XMIN, XLQ, XAVG, XUQ, XMAX 14PC1960
340 FORMAT(1H ,13X,F10.3,2(14X,F10.3,16X,F10.3)) 14PC1970
WRITE (KTOU,38) ((GRIDA(IA,JZ),JZ=1,26),IA=1,3) 14PC1980
WRITE (KTOU,40) (POS(IA-3), (GRIDA(IA,JZ),JZ=1,26),IA=4,11) 14PC1990
DO 380 IA = 12, 22 14PC2000
IF (IA .EQ. L1) GO TO 360 14PC2010
WRITE (KTOU,38) (GRIDA(IA,JZ),JZ=1,26) 14PC2020
GO TO 380 14PC2030
360 WRITE (KTOU,44) (GRIDA(IA,JZ),JZ=1,26) 14PC2040
380 CONTINUE 14PC2050
DO 420 IA = 23, 31 14PC2060
IF (IA .EQ. L1) GO TO 400 14PC2070
WRITE (KTOU,48) RESID(IA-22), (GRIDA(IA,JZ),JZ=1,26) 14PC2080
GO TO 420 14PC2090
400 WRITE (KTOU,52) RESID(IA-22), (GRIDA(IA,JZ),JZ=1,26) 14PC2100
420 CONTINUE 14PC2110
DO 460 IA = 32, 42 14PC2120
IF (IA .EQ. L1) GO TO 440 14PC2130
WRITE (KTOU,38) (GRIDA(IA,JZ),JZ=1,26) 14PC2140
GO TO 460 14PC2150
440 WRITE (KTOU,44) (GRIDA(IA,JZ),JZ=1,26) 14PC2160
460 CONTINUE 14PC2170
WRITE (KTOU,40) (NEG(IA-42), (GRIDA(IA,JZ),JZ=1,26),IA=43,50) 14PC2180
WRITE (KTOU,38) ((GRIDA(IA,JZ),JZ=1,26),IA=51,53) 14PC2190
WRITE (KTOU,340) XMIN, XLQ, XAVG, XUQ, XMAX 14PC2200
WRITE (KTOU,480) I 14PC2210
480 FORMAT(1H0,58X,20HINDEPENDENT VARIABLE, I2 ) 14PC2220
500 CONTINUE 14PC2230
9999 RETURN 14PC2240
END 14PC2250
SUBROUTINE GRID (GRIDA, GRIDB, L1, ITYPE) 15GR0010
C 15GR0020
C SUBROUTINE MAKES GRIDA FOR RESIDUALS VS. FITTED Y. 15GR0030
C SUBROUTINE MAKES GRIDB FOR CUMULATIVE DISTRIBUTION OF RESIDULS. 15GR0040
C GRIDA IS ALSO USED TO PLOT COMPONENT-PLUS RESIDUALS VS. EACH 15GR0050
C INDEPENDENT VARIABLE. 15GR0060
C WHEN ITYPE = 1 - BOTH GRIDA AND GRIDB PLOTS ARE MADE. 15GR0070
C 2 - GRIDA ALONE IS MADE 15GR0080
C 3 - THE PLOT AREA IS BLANKED OUT, REUSING THE 15GR0090
C OUTLINE FROM A PREVIOUS PLOT 15GR0100
C L1 IS THE LINE AT WHICH THE RESIDUALS CROSS 0, WHEN L1 = 99, 15GR0110
C THE ZERO LINE IS NOT PLOTTED. 15GR0120
C 15GR0130
DIMENSION GRIDA(53,26),GRIDB(53,26),GRDA(7),GRDB(4) 15GR0140
DATA GRDA/4H*---,4H-*--,4H--*-,4H---*,4H----,2H*-,2H--/ 15GR0150
DATA GRDB/4HI ,2H I,4HI---,2H-I/ 15GR0160
DATA BLANK/4H /,BLINK/4H '/ 15GR0170
GO TO (1, 21, 23), ITYPE 15GR0180
1 DO 2 IA = 1, 5 15GR0190
DO 2 IB=1,5 15GR0200
IC=(IA-1)*5+IB 15GR0210
GRIDA(1,IC)=GRDA(IB) 15GR0220
GRIDA(53,IC)=GRDA(IB) 15GR0230
2 CONTINUE 15GR0240
GRIDA(1,26)=GRDA(6) 15GR0250
GRIDA(53,26)=GRDA(6) 15GR0260
GRIDB(1, 1)=GRDA(1) 15GR0270
GRIDB(1, 2)=GRDA(3) 15GR0280
GRIDB(1, 3)=GRDA(5) 15GR0290
GRIDB(1, 4)=GRDA(3) 15GR0300
GRIDB(1, 5)=GRDA(2) 15GR0310
GRIDB(1, 6)=GRDA(2) 15GR0320
GRIDB(1, 7)=GRDA(4) 15GR0330
GRIDB(1, 8)=GRDA(5) 15GR0340
GRIDB(1, 9)=GRDA(1) 15GR0350
GRIDB(1,10)=GRDA(3) 15GR0360
GRIDB(1,11)=GRDA(4) 15GR0370
GRIDB(1,12)=GRDA(4) 15GR0380
GRIDB(1,13)=GRDA(4) 15GR0390
GRIDB(1,14)=GRDA(4) 15GR0400
GRIDB(1,15)=GRDA(4) 15GR0410
GRIDB(1,16)=GRDA(5) 15GR0420
GRIDB(1,17)=GRDA(1) 15GR0430
GRIDB(1,18)=GRDA(3) 15GR0440
GRIDB(1,19)=GRDA(4) 15GR0450
GRIDB(1,20)=GRDA(5) 15GR0460
GRIDB(1,21)=GRDA(2) 15GR0470
GRIDB(1,22)=GRDA(2) 15GR0480
GRIDB(1,23)=GRDA(1) 15GR0490
GRIDB(1,24)=GRDA(5) 15GR0500
GRIDB(1,25)=GRDA(1) 15GR0510
GRIDB(1,26)=GRDA(7) 15GR0520
DO 4 IA=1,26 15GR0530
GRIDB(53,IA)=GRIDB(1,IA) 15GR0540
4 CONTINUE 15GR0550
DO 8 IA=2,52 15GR0560
DO 6 IB=2,25 15GR0570
GRIDA(IA,IB)=BLANK 15GR0580
GRIDB(IA,IB)=BLANK 15GR0590
6 CONTINUE 15GR0600
GRIDB(IA,13)=BLINK 15GR0610
8 CONTINUE 15GR0620
DO 10 IA=2,52 15GR0630
GRIDA(IA,1)=GRDB(1) 15GR0640
GRIDA(IA,26)=GRDB(2) 15GR0650
GRIDB(IA,1)=GRDB(1) 15GR0660
GRIDB(IA,26)=GRDB(2) 15GR0670
10 CONTINUE 15GR0680
DO 12 IA=2,25 15GR0690
GRIDA(L1,IA)=GRDA(5) 15GR0700
GRIDB(L1,IA)=GRDA(5) 15GR0710
12 CONTINUE 15GR0720
GRIDA(L1,1)=GRDB(3) 15GR0730
GRIDA(L1,26)=GRDB(4) 15GR0740
GRIDB(L1,1)= GRDB(3) 15GR0750
GRIDB(L1,26)=GRDB(4) 15GR0760
RETURN 15GR0770
21 DO 22 IA = 1,5 15GR0780
DO 22 IB = 1,5 15GR0790
IC = (IA-1)*5 + IB 15GR0800
GRIDA(1,IC) = GRDA(IB) 15GR0810
22 GRIDA(53,IC) = GRDA(IB) 15GR0820
GRIDA(1,26) = GRDA(6) 15GR0830
GRIDA(53,26) = GRDA(6) 15GR0840
23 DO 24 IA = 2,52 15GR0850
DO 24 IB = 2,25 15GR0860
24 GRIDA(IA,IB) = BLANK 15GR0870
IF (L1 .NE. 99) GO TO 28 15GR0880
DO 26 IA = 2,52 15GR0890
GRIDA(IA,1) = GRDB(1) 15GR0900
26 GRIDA(IA,26) = GRDB(2) 15GR0910
RETURN 15GR0920
28 DO 29 IA = 2,52 15GR0930
GRIDA(IA,1) = GRDB(1) 15GR0940
29 GRIDA(IA,26) = GRDB(2) 15GR0950
DO 30 IA = 2,25 15GR0960
30 GRIDA(L1,IA) = GRDA(5) 15GR0970
GRIDA(L1,1) = GRDB(3) 15GR0980
GRIDA(L1,26) = GRDB(4) 15GR0990
RETURN 15GR1000
END 15GR1010
SUBROUTINE PACK(X,N,C) 16PK0010
C 16PK0020
C SUBROUTINE PLACES THE APPROPRIATE SYMBOLS ON THE PLOTS 16PK0030
C CHARACTER C IS PLACED IN BYTE N OF WORD X, WHERE WORD X IS 16PK0040
C A SIMULATE BYTE IBM 360 WORD, WITH BYTES NUMBERED FROM THE LEFT. 16PK0050
C N TAKES VALUES OF 1, 2, 3 OR 4. PACK IS CALLED FROM PITCHA. 16PK0060
C 16PK0070
Y=X 16PK0110
CALL DEPSIT(C,N,Y) 16PK0120
C 16PK0130
X=Y 16PK0140
RETURN 16PK0150
END 16PK0160
SUBROUTINE OPEN 17OP0010
DOUBLE PRECISION FILIN,FILOU 17OP0020
100 FORMAT(A10) 17OP0030
101 FORMAT(' INPUT THE NAME OF THE OUTPUT FILE') 17OP0040
102 FORMAT(' INPUT THE NAME OF THE INPUT FILE') 17OP0050
TYPE 102 17OP0060
ACCEPT 100,FILIN 17OP0070
TYPE 101 17OP0080
ACCEPT 100,FILOU 17OP0090
OPEN(UNIT=5,DEVICE='DSK:',ACCESS='SEQIN',FILE=FILIN) 17OP0100
OPEN(UNIT=6,DEVICE='DSK:',ACCESS='SEQINOU',FILE=FILOU) 17OP0110
RETURN 17OP0120
END 17OP0130
SUBROUTINE OUTPUT(IDENT,Y,X,FY,B,NOB,NOIND,NC,NOBMAX,NVARX,NCMAX, 180U0010
1 KTOU) 180U0011
IMPLICIT REAL*8 (A-H,O-Z) 18OU0020
REAL*8 IDENT 18OU0030
DIMENSION Y(NOBMAX),X(NVARX,NOBMAX),FY(NOBMAX),B(NCMAX) 18OU0040
C 18OU0050
C *** USER MAY DO WHATEVER IS REQUIRED USING AVAILABLE INFORMATION 18OU0060
C *** KTOU IS THE NAME OF THE WRITE FILE. 18OU0061
C 18OU0070
RETURN 18OU0080
END 18OU0090