Trailing-Edge
-
PDP-10 Archives
-
decuslib20-06
-
decus/20-160/stndrd.lst
There are no other files named stndrd.lst in the archive.
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME - V2R1I1 00000010
00002 C 00000020
00003 C * * * * * N D T R A N * * * * * 00000030
00004 C 00000040
00005 C NDTRAN IS A SYSTEM DYNAMICS CONTINUOUS SIMULATION LANGUAGE 00000050
00006 C DEVELOPED AT THE UNIVERSITY OF NOTRE DAME, FINANCED BY A 00000060
00007 C GRANT FROM THE MAX D. FLEISCHMANN FOUNDATION, UNDER THE 00000070
00008 C DIRECTION OF DR. WILLIAM I. DAVISSON AND DR. JOHN J. UHRAN, JR. 00000080
00009 C THIS INTERPRETER WHICH COMPUTERIZES THE NDTRAN LANGUAGE WAS 00000090
00010 C WRITTEN BY DANIEL A. POYDENCE, THOMAS L. EVERMAN, JR., 00000100
00011 C GARY L. PELKEY, AND TIMOTHY J. MALLOY AS UNDERGRADUATES 00000110
00012 C OF THE UNIVERSITY. 00000120
00013 C 00000130
00014 C 00000140
00015 REAL*8 RMIN,RMAX,LITBL(1024) 00000150
00016 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00000160
00017 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00000170
00018 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00000180
00019 3SYMTB(5,512) 00000190
00020 INTEGER INIT0(5772), INIT1(48),INIT2(48),I,READR,PRNTR, 00000200
00021 1DISK,LINPP,EXPMX,INTYP,PSSWT,SYMND,LITND,VALCT,STPGM, 00000210
00022 2DSKND,VARND,OBJND,PGMCT,CBIT,EOF,ASC1,RRBST,RRBPT,OPTNS 00000220
00023 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00000230
00024 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00000240
00025 2SYMTB,LITBL 00000250
00026 EQUIVALENCE (INIT0(1),PTRS(1)),(INIT1(1),CRSET(1)), 00000260
00027 1(READR,PTRS(1)),(PRNTR,PTRS(2)),(DISK,PTRS(3)),(LINPP,PTRS(6)), 00000270
00028 2(EXPMX,PTRS(9)),(INTYP,PTRS(8)),(PSSWT,PTRS(10)),(SYMND,PTRS(17)),00000280
00029 3(LITND,PTRS(19)),(VALCT,PTRS(20)),(STPGM,PTRS(21)),(DSKND,PTRS(25)00000290
00030 4),(VARND,PTRS(26)),(OBJND,PTRS(27)),(PGMCT,PTRS(22)), 00000300
00031 5(CBIT,TOKEN(2)),(RRBST,PTRS(36)),(RRBPT,PTRS(37)),(OPTNS,PTRS(7)) 00000310
00032 DATA INIT2 /' ','$','#','A','B','C','D','E','F','G','H','I', 00000320
00033 1'J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X', 00000330
00034 2'Y','Z','0','1','2','3','4','5','6','7','8','9','.','+','-', 00000340
00035 3'*','/','=','(',')',','/ 00000350
00036 C 00000360
00037 C 00000370
00038 C DEFINE THE CHARACTERISTICS FOR THE DIRECT ACCESS FILE. 00000380
00039 C 5,000 RECORDS OF 80 INTEGER WORDS ARE REQUIRED. THE 00000390
00040 C RECORDS ARE UNFORMATTED AND 'ASC1' IS THE ASSOCIATED 00000400
00041 C VARIABLE. NDTRAN DOES NOT USE THE ASSOCIATED VARIABLE. 00000410
00042 C ANY UNIT NUMBER MAY BE ASSIGNED FOR THE FILE. 00000420
00043 C 00000430
00044 C 00000440
00045 C DEC / FORDHAM UNIVERSITY /
00046 C DEFINE FILE 1(5000,80,U,ASC1) 00000450
00047 OPEN(UNIT=20,DEVICE='DSK',ACCESS='RANDOM',
00048 1MODE='ASCII',DISPOSE='DELETE',RECORD SIZE=80,FILE='NDTF1')
00049 C DEC / END /
00050 C 00000460
00051 C 00000470
00052 C ALL COMMON STORAGE LOCATIONS MUST BE INITIALIZED FOR 00000480
00053 C THOSE SYSTEMS WHICH PREVENT A REFERENCE TO A STORAGE 00000490
00054 C LOCATION WHICH HAS NOT BEEN ASSIGNED A VALUE. 00000500
00055 C 00000510
00056 C 00000520
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 DO 10 I=1,5772 00000530
00058 10 INIT0(I)=0 00000540
00059 C 00000550
00060 C 00000560
00061 C THE FOLLOWING ASSIGNMENTS ESTABLISH INSTALLATION DEPENDENT 00000570
00062 C PARAMETERS. READR IS THE INPUT DEVICE NUMBER (THE CARD READER 00000580
00063 C OR ANY SEQUENTIAL INPUT FILE), PRNTR IS THE OUTPUT DEVICE 00000590
00064 C NUMBER (LINE PRINTER OR ANY SEQUENTIAL OUTPUT FILE), AND 00000600
00065 C DISK IS THE DIRECT ACCESS FILE NUMBER. LINPP IS THE NUMBER 00000610
00066 C OF LINES PER PAGE OF PRINTED OUTPUT. EXPMX IS THE MAXIMUM 00000620
00067 C EXPONENT PERMITTED DURING EXECUTION AND SHOULD BE SET TO 00000630
00068 C ONE LESS THAN THE SMALLEST OF THE THE ABSOLUTE VALUE OF THE 00000640
00069 C CHARACTERISTICS OF THE FLOATING POINT MINIMUM AND THE MAXIMUM. 00000650
00070 C 00000660
00071 C AS AN EXAMPLE, THE IBM 370 FLOATING POINT MINIMUM AND MAXIMUM 00000670
00072 C VALUES ARE APPROXIMATELY 1E-78 AND 1E75 SO EXPMX IS 74 ON 00000680
00073 C THAT SYSTEM. NDTRAN WILL PERMIT NUMBERS BETWEEN AND INCLUDING 00000690
00074 C 1E-74 AND 1E74 DURING EXECUTION. 00000700
00075 C 00000710
00076 C 00000720
00077 C DEC / FORDHAM UNIVERSITY /
00078 READR=1 00000730
00079 PRNTR=6 00000740
00080 DISK=20 00000750
00081 LINPP=60 00000760
00082 EXPMX=37 00000770
00083 C DEC / END /
00084 C 00000780
00085 C 00000790
00086 C INTYP IS INITIALIZED TO THE DESIRED DEFAULT INTEGRATION 00000800
00087 C TECHNIQUE TO BE USED DURING EXECUTION. INTYP MAY HAVE 00000810
00088 C THE FOLLOWING VALUES: 00000820
00089 C 00000830
00090 C 1 - EULER LOWER SUM 00000840
00091 C 2 - FOURTH ORDER RUNGE-KUTTA 00000850
00092 C 3 - ADAMS-BASHFORTH PREDICTOR 00000860
00093 C 00000870
00094 C 00000880
00095 INTYP=3 00000890
00096 C 00000900
00097 C 00000910
00098 C THE FOLLOWING ASSIGNMENTS ESTABLISH THE LIMITS ON SIZE AND 00000920
00099 C REQUIREMENTS FOR NDTRAN PROGRAMS. SYMND LIMITS THE SYMBOL 00000930
00100 C TABLE SIZE, LITND LIMITS THE NUMBER OF NUMERIC LITERALS, 00000940
00101 C AND DSKND LIMITS THE NUMBER OF RECORDS THAT MAY BE WRITTEN 00000950
00102 C TO AND READ FROM THE DISK FILE. VARND AND OBJND LIMIT THE 00000960
00103 C REAL AND INTEGER STORAGE AVAILABLE DURING EXECUTION. 00000970
00104 C 00000980
00105 C 00000990
00106 SYMND=512 00001000
00107 LITND=1024 00001010
00108 DSKND=5000 00001020
00109 VARND=5000 00001030
00110 OBJND=5154 00001040
00111 C 00001050
00112 C 00001060
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C THE FLOATING POINT MINIMUM AND MAXIMUM VALUES ARE COMPUTED 00001070
00114 C AND THE NDTRAN CHARACTER SET IS INITIALIZED. 00001080
00115 C 00001090
00116 C 00001100
00117 RMAX=10.**EXPMX 00001110
00118 RMIN=10.**(-EXPMX) 00001120
00119 DO 20 I=1,48 00001130
00120 20 INIT1(I)=INIT2(I) 00001140
00121 C 00001150
00122 C 00001160
00123 C NDT03 INITIALIZES THE SYMBOL AND FUNCTION TABLES AND PUTS 00001170
00124 C BUILTIN MACRO RECORDS ON DISK. 00001180
00125 C 00001190
00126 C 00001200
00127 CALL NDT03 00001210
00128 C 00001220
00129 C 00001230
00130 C THE REQUIRED INITIALIZATIONS ARE COMPLETED. STPGM IS 00001240
00131 C THE FIRST RECORD AVAILABLE FOR SOURCE PROGRAM INFORMATION 00001250
00132 C STORAGE. PGMCT POINTS TO THE LAST RECORD USED FOR THAT 00001260
00133 C PURPOSE. ASC1 IS SET TO 1 FOR SYSTEMS THAT REQUIRE THE 00001270
00134 C ASSOCIATED VARIABLE TO BE VALID WHETHER IT IS USED OR NOT. 00001280
00135 C PSSWT, THE PROGRAM STATUS SWITCH IS SET TO BEGIN LOOKING 00001290
00136 C FOR A TITLE CARD DURING INPUT. VALCT, THE VARIABLE 00001300
00137 C ALLOCATION COUNTER, IS SET TO THE LAST STORAGE LOCATION 00001310
00138 C ALLOCATED FOR USE DURING EXECUTION. EOF IS AN END OF FILE 00001320
00139 C FLAG (1 = END OF FILE HAS OCCURRED). CBIT, THE CONTINUATION 00001330
00140 C BIT, INDICATES THAT THE PREVIOUS CARD WAS CONTINUED WITH 00001340
00141 C A VALUE OF 1. IT IS SET TO 1 TO CAUSE 2 CARDS TO BE INPUT 00001350
00142 C INITIALLY. RRBST IS THE FIRST RECORD AVAILABLE FOR RERUN 00001360
00143 C BUFFERS. RRBPT POINTS TO THE LAST RECORD USED FOR THAT PURPOSE. 00001370
00144 C RRBPT IS INITIALIZED TO ALLOW THE RERUN CARD PROCESSOR TO 00001380
00145 C DISTINGUISH THE FIRST RERUN CARD FROM THE OTHERS. 00001390
00146 C 00001400
00147 C 00001410
00148 STPGM=150 00001420
00149 PGMCT=STPGM-1 00001430
00150 C DEC / FORDHAM UNIVERSITY /
00151 C ASC1=1 00001440
00152 C DEC / END /
00153 PSSWT=1 00001450
00154 VALCT=21 00001460
00155 EOF=0 00001470
00156 CBIT=1 00001480
00157 RRBST=53 00001490
00158 RRBPT=-1 00001500
00159 C 00001510
00160 C 00001520
00161 C IF CBIT IS 1 THEN THE PREVIOUS CARD WAS CONTINUED AND 00001530
00162 C BOTH CARDS HAVE BEEN PROCESSED. IN THIS CASE TWO MORE 00001540
00163 C CARDS ARE READ. IF CBIT IS 0 THEN CARD1 WAS PROCESSED. 00001550
00164 C CARD2 MUST BE MOVED TO CARD1 AND ONE CARD MUST BE READ. 00001560
00165 C THIS SCHEME ALLOWS INPUT TO BE PROCESSED FROM CARD1 WITH 00001570
00166 C AN OPTIONAL CONTINUATION IN CARD2. 00001580
00167 C 00001590
00168 C 00001600
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 400 IF(CBIT.EQ.1) GO TO 600 00001610
00170 DO 500 I=1,80 00001620
00171 500 CARD1(I)=CARD2(I) 00001630
00172 READ(READR,700,END=800) CARD2 00001640
00173 GO TO 900 00001650
00174 600 READ(READR,700,END=1400) CARD1 00001660
00175 READ(READR,700,END=800) CARD2 00001670
00176 GO TO 900 00001680
00177 700 FORMAT(80A1) 00001690
00178 C 00001700
00179 C 00001710
00180 C END OF FILE HAS OCCURRED BUT THE LAST CARD NEEDS TO BE 00001720
00181 C PROCESSED SO EOF IS SET. THE CARD CANNOT BE CONTINUED 00001730
00182 C SO THE KEY FIELD OF CARD2 MUST NOT INDICATE A CONTINUATION. 00001740
00183 C 00001750
00184 C 00001760
00185 800 EOF=1 00001770
00186 CARD2(1)=0 00001780
00187 C 00001790
00188 C 00001800
00189 C NDT01 PROCESSES THE INPUT SOURCE CARDS AND UPDATES PSSWT 00001810
00190 C TO INDICATE THE MODE OF INPUT. IF PSSWT IS 6 THEN THE 00001820
00191 C SOURCE CARD REQUESTED A MACRO EXPANSION WHICH IS HANDLED 00001830
00192 C BY NDT02. 00001840
00193 C 00001850
00194 C 00001860
00195 900 CALL NDT01 00001870
00196 IF(PSSWT.EQ.6) CALL NDT02 00001880
00197 IF(EOF.EQ.0) GO TO 400 00001890
00198 C 00001900
00199 C 00001910
00200 C ALL SOURCE STATEMENTS HAVE BEEN INPUT AND PROCESSED. 00001920
00201 C THE CONTEXT ANALYSIS BEGINS AT THIS POINT. 00001930
00202 C 00001940
00203 C 00001950
00204 1400 CALL NDT04 00001960
00205 C 00001970
00206 C 00001980
00207 C THE TABLES REQUESTED BY CONTROL CARDS ARE PRODUCED NEXT. 00001990
00208 C 00002000
00209 C 00002010
00210 CALL NDT61 00002020
00211 C 00002030
00212 C 00002040
00213 C THE EQUATION ORDERING ROUTINE IS CALLED TO RECONSTRUCT THE 00002050
00214 C EQUATION CHAIN TO BE USED BY THE LOADER. 00002060
00215 C 00002070
00216 C 00002080
00217 CALL NDT62 00002090
00218 C 00002100
00219 C 00002110
00220 C THE LOADER IS NOW CALLED TO READ THE OBJECT CODE INTO MEMORY 00002120
00221 C AND INITIALIZE THE DATA BUFFERS REQUIRED FOR EXECUTION. 00002130
00222 C 00002140
00223 C 00002150
00224 CALL NDT75 00002160
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 C 00002170
00226 C 00002180
00227 C THE EXECUTION PHASE IS READY TO BEGIN. CALL THE APPROPRIATE 00002190
00228 C EXECUTION ROUTINE ACCORDING TO THE 'CHECK' OPTION. 00002200
00229 C 00002210
00230 C 00002220
00231 IF(MOD(OPTNS,2).EQ.1) CALL NDT64 00002230
00232 IF(MOD(OPTNS,2).EQ.0) CALL NDT65 00002240
00233 C 00002250
00234 C 00002260
00235 C EXECUTION IS COMPLETE. CALL THE OUTPUT ROUTINE. 00002270
00236 C 00002280
00237 C 00002290
00238 CALL NDT70 00002300
00239 STOP 00002310
00240 END 00002330
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 INIT0 +4 INIT1 +251 READR +4 PRNTR +5
DISK +6 LINPP +11 EXPMX +14 INTYP +13 PSSWT +15
SYMND +24 LITND +26 VALCT +27 STPGM +30 DSKND +34
VARND +35 OBJND +36 PGMCT +31 CBIT +523 RRBST +47
RRBPT +50 OPTNS +12
SUBPROGRAMS CALLED
NDT04 MOD. NDT64 NDT03 NDT02 NDT62
NDT01 NDT61 NDT70 NDT75 NDT65
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
EOF 1 .S0002 2 .S0001 3 .S0000 4 %ASC1
INIT2 5 I 65
TEMPORARIES
.Q0000 70
ASC1 20#
CARD1 16# 23# 171# 174#
CARD2 16# 23# 171 172# 175# 186#
CBIT 20# 26# 156# 169
CRSET 16# 23# 26#
DEF 16# 23#
DISK 20# 26# 80#
DSKND 20# 26# 108#
EOF 20# 155# 185# 197
EQCHN 16# 23#
ERROR 16# 23#
EXPMX 20# 26# 82# 117 118
FCTN 16# 23#
I 20# 57# 58 119# 120 170# 171
INIT0 20# 26# 58#
INIT1 20# 26# 120#
INIT2 20# 32# 120
INTYP 20# 26# 95#
LINPP 20# 26# 81#
LITBL 15# 23#
LITND 20# 26# 107#
MOD. 231 232
NDT01 195
NDT02 196
NDT03 127
NDT04 204
NDT61 210
NDT62 217
NDT64 231
NDT65 232
NDT70 238
NDT75 224
OBJCD 16# 23#
OBJND 20# 26# 110#
OPER 16# 23#
OPTNS 20# 26# 231 232
PGMCT 20# 26# 149#
PRNTR 20# 26# 79#
PSSWT 20# 26# 153# 196
PTRS 16# 23# 26#
READR 20# 26# 78# 172 174 175
RMAX 15# 23# 117#
RMIN 15# 23# 118#
RRBPT 20# 26# 158#
RRBST 20# 26# 157#
STPGM 20# 26# 148# 149
SUBSC 16# 23#
SYM 16# 23#
SYMND 20# 26# 106#
SYMTB 16# 23#
TITLE 16# 23#
TMAP 16# 23#
TOKEN 16# 23# 26#
TYPCT 16# 23#
VALCT 20# 26# 154#
VARND 20# 26# 109#
XREF 16# 23#
10P 57 58#
1400P 174 204#
20P 119 120#
400P 169# 197
500P 170 171#
600P 169 174#
700P 172 174 175 177#
800P 172 175 185#
900P 173 176 195#
MAIN. [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00002340
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00002350
00003 C 00002360
00004 C 00002370
00005 SUBROUTINE NDT01 00002380
00006 C 00002390
00007 C 00002400
00008 C NDT01 IS THE INPUT PROCESSING COORDINATOR. PSSWT IS 00002410
00009 C UPDATED AND MAINTAINED HERE INDICATING THE CURRENT MODE 00002420
00010 C OF SOURCE INPUT. PSSWT MAY HAVE THE FOLLOWING VALUES: 00002430
00011 C 00002440
00012 C 1 - TITLE CARD INPUT 00002450
00013 C 2 - CONTROL CARD INPUT 00002460
00014 C 3 - NORMAL SOURCE INPUT 00002470
00015 C 4 - MARCO GROUP INPUT 00002480
00016 C 5 - RERUN GROUP INPUT 00002490
00017 C 6 - EXPANSION REQUEST 00002500
00018 C 00002510
00019 C INPUT IS PROCESSED ACCORDING TO THE MODE OF INPUT AND 00002520
00020 C THE TYPE OF STATEMENT ENCOUNTERED. 00002530
00021 C 00002540
00022 C 00002550
00023 REAL*8 RMIN,RMAX,LITBL(1024) 00002560
00024 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00002570
00025 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00002580
00026 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00002590
00027 3SYMTB(5,512) 00002600
00028 INTEGER PSSWT,STYPE,EQNCD,PGMCD,DISK,PGMCT,OBJ1(80),OBJ2(80), 00002610
00029 1OPTNS,STPGM,OUT1(80),OUT2(80),OUT3(80),LSTGP,CBIT,SYMND,OBJPT, 00002620
00030 2CRSMT 00002630
00031 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00002640
00032 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00002650
00033 2SYMTB,LITBL 00002660
00034 EQUIVALENCE (PSSWT,PTRS(10)),(STYPE,TOKEN(1)),(EQNCD,ERROR(1)), 00002670
00035 1(PGMCD,PTRS(15)),(DISK,PTRS(3)),(PGMCT,PTRS(22)),(OBJ1(1),OBJPT, 00002680
00036 2OBJCD(1)),(OBJ2(1),OBJCD(81)),(OPTNS,PTRS(7)),(STPGM,PTRS 00002690
00037 3(21)),(OUT1(1),DEF(1)),(OUT2(1),XREF(1)),(OUT3(1),TMAP(1)), 00002700
00038 4(LSTGP,PTRS(35)),(CBIT,TOKEN(2)),(SYMND,PTRS(17)),(CRSMT,TMAP(1)) 00002710
00039 C 00002720
00040 C 00002730
00041 C IF THE PROGRAM IS TOO LARGE TO PROCESS, SIGNAL A SYSTEM ERROR. 00002740
00042 C 00002750
00043 C 00002760
00044 IF((PGMCT-STPGM+1)/9.EQ.SYMND) CALL NDT12 (1) 00002770
00045 1 CONTINUE 00002780
00046 C 00002790
00047 C 00002800
00048 C INITIALIZE ALL STATEMENT DATA AREAS FOR PROCESSING. 00002810
00049 C 00002820
00050 C 00002830
00051 CALL NDT05 00002840
00052 GO TO (100,200,300,400,500),PSSWT 00002850
00053 C 00002860
00054 C 00002870
00055 C TITLE MODE PROCESSING IS REQUESTED. IF A TITLE CARD IS 00002880
00056 C SUPPLIED IT MUST BE THE FIRST CARD IN THE SOURCE DECK. 00002890
NDT01 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C WHETHER ONE IS SUPPLIED OR NOT THE TITLE PROCESSOR MUST 00002900
00058 C BE CALLED TO INITIALIZE THE TITLE BUFFER. 00002910
00059 C 00002920
00060 C 00002930
00061 100 CALL NDT06 00002940
00062 C 00002950
00063 C 00002960
00064 C SET PSSWT TO PROCESS CONTROL CARDS. IF THE USER DID ENTER 00002970
00065 C A TITLE CARD THEN PROCESSING FOR THIS STATEMENT IS FINISHED. 00002980
00066 C IF IT WAS NOT A TITLE CARD NOR A CONTROL CARD THEN SET PSSWT 00002990
00067 C TO PROCESS NORMAL CARD INPUT. OTHERWISE, PROCESS THE CONTROL 00003000
00068 C CARD AND LEAVE PSSWT IN CONTROL CARD MODE. 00003010
00069 C 00003020
00070 C 00003030
00071 PSSWT=2 00003040
00072 IF(STYPE.EQ.19) GO TO 9000 00003050
00073 200 IF(STYPE.NE.10) GO TO 600 00003060
00074 C 00003070
00075 C 00003080
00076 C CONTROL CARD PROCESSING IS REQUESTED. IF THE CONTROL CARD 00003090
00077 C WAS BLANK EQNCD WILL HAVE A VALUE OF 3. NO MODE CHANGE OR 00003100
00078 C CARD PROCESSING WILL BE PERFORMED. 00003110
00079 C 00003120
00080 C 00003130
00081 IF(EQNCD.EQ.3) GO TO 9000 00003140
00082 CALL NDT07 00003150
00083 GO TO 9000 00003160
00084 C 00003170
00085 C 00003180
00086 C AS PSSWT CHANGES TO NORMAL MODE, NDT59 IS CALLED TO COMPLETE 00003190
00087 C THE TITLE BUFFER AND TITLE RELATED INFORMATION. 00003200
00088 C 00003210
00089 C 00003220
00090 600 PSSWT=3 00003230
00091 CALL NDT59 00003240
00092 C 00003250
00093 C 00003260
00094 C NORMAL SOURCE INPUT PROCESSING IS REQUESTED. THIS CONSISTS OF 00003270
00095 C THE EQUATIONS FOR THE MODEL, OUTPUT CARDS, AND PARAMETER 00003280
00096 C SPECIFICATIONS. 00003290
00097 C 00003300
00098 C 00003310
00099 300 IF(EQNCD.EQ.3) GO TO 9000 00003320
00100 GO TO (700,800,800,800,800,800,800,800,9000,1000, 00003330
00101 1 9000,1100,1100,1200,1300,1400,1500,1600,1700,9000),STYPE 00003340
00102 C 00003350
00103 C 00003360
00104 C INVOKE THE TABLE CARD PROCESSOR. 00003370
00105 C 00003380
00106 C 00003390
00107 700 CALL NDT15 00003400
00108 GO TO 900 00003410
00109 C 00003420
00110 C 00003430
00111 C INVOKE THE EQUATION LEXICAL ANALYZER, THE EQUATION COMPILER, 00003440
00112 C AND THE DEFAULT DEFINITION BUILDER. 00003450
NDT01 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C 00003460
00114 C 00003470
00115 800 CALL NDT08 00003480
00116 CALL NDT16 00003490
00117 900 CALL NDT17 00003500
00118 C 00003510
00119 C 00003520
00120 C IF ANY CRITICAL ERRORS HAVE OCCURRED IN THE PROGRAM, EXECUTION 00003530
00121 C WILL BE INHIBITED SO ONLY TABLE AND CONSTANT EQUATION OBJECT 00003540
00122 C CODE NEED BE SAVED FOR RERUN CONTEXT PROCESSING. WRITE ALL 00003550
00123 C EQUATION RELATED DATA AREAS TO DISK. 00003560
00124 C 00003570
00125 C 00003580
00126 IF(PGMCD.EQ.3.AND.STYPE.GT.2) GO TO 910 00003590
00127 WRITE(DISK'PGMCT+5) OBJ1 00003600
00128 IF(OBJPT.GT.80) WRITE(DISK'PGMCT+6) OBJ2 00003610
00129 910 WRITE(DISK'PGMCT+7) DEF 00003620
00130 WRITE(DISK'PGMCT+9) TMAP 00003630
00131 C 00003640
00132 C 00003650
00133 C ADD AN ELEMENT TO THE EQUATION CHAIN. THE FORMAT FOR EACH 00003660
00134 C ELEMENT IS AS FOLLOWS: 00003670
00135 C 00003680
00136 C BIT 0 - RESERVED 00003690
00137 C BITS 1 - 3 - EQUATION TYPE 00003700
00138 C BITS 4 - 15 - DISK EQUATION NUMBER 00003710
00139 C 00003720
00140 C 00003730
00141 CALL NDT21 ((STYPE-1)*4096+CRSMT) 00003740
00142 GO TO 9000 00003750
00143 C 00003760
00144 C 00003770
00145 C A CONTROL CARD WAS ENTERED BUT CONTROL CARD MODE WAS NOT 00003780
00146 C IN EFFECT. PROCESS AS AN ERROR. 00003790
00147 C 00003800
00148 C 00003810
00149 1000 CALL NDT14 (0,107,2) 00003820
00150 GO TO 9000 00003830
00151 C 00003840
00152 C 00003850
00153 C INVOKE THE OUTPUT CARD PROCESSOR AND STORE THE OUTPUT 00003860
00154 C BUFFERS TO DISK. 00003870
00155 C 00003880
00156 C 00003890
00157 1100 CALL NDT09 00003900
00158 WRITE(DISK'PGMCT+7) OUT1 00003910
00159 WRITE(DISK'PGMCT+8) OUT2 00003920
00160 WRITE(DISK'PGMCT+9) OUT3 00003930
00161 GO TO 9000 00003940
00162 C 00003950
00163 C 00003960
00164 C THE FIRST RERUN CARD HAS BEEN ENCOUNTERED. SET PSSWT TO 00003970
00165 C INDICATE RERUN MODE. 00003980
00166 C 00003990
00167 C 00004000
00168 1200 PSSWT=5 00004010
NDT01 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 GO TO 2500 00004020
00170 C 00004030
00171 C 00004040
00172 C CHANGE PSSWT TO MACRO MODE AND INVOKE THE MACRO STATEMENT 00004050
00173 C PROCESSOR. SAVE THE DISK ADDRESS OF THIS STATEMENT FOR 00004060
00174 C ANY GROUP ERROR PROCESSING. 00004070
00175 C 00004080
00176 C 00004090
00177 1300 PSSWT=4 00004100
00178 CALL NDT10 00004110
00179 LSTGP=PGMCT+1 00004120
00180 GO TO 9000 00004130
00181 C 00004140
00182 C 00004150
00183 C AN MEND STATEMENT WAS ENCOUNTERED BUT A MACRO WAS NOT BEING 00004160
00184 C PROCESSED. 00004170
00185 C 00004180
00186 C 00004190
00187 1400 CALL NDT14 (0,103,2) 00004200
00188 GO TO 9000 00004210
00189 C 00004220
00190 C 00004230
00191 C AN EXPANSION OF A MACRO HAS BEEN REQUESTED. SET PSSWT 00004240
00192 C TO INDICATE THIS REQUEST AND RETURN SO THAT THE APPROPRIATE 00004250
00193 C PROCESSOR MAY BE GIVEN CONTROL. 00004260
00194 C 00004270
00195 C 00004280
00196 1500 PSSWT=6 00004290
00197 GO TO 9000 00004300
00198 C 00004310
00199 C 00004320
00200 C INVOKE THE DEF CARD PROCESSOR. 00004330
00201 C 00004340
00202 C 00004350
00203 1600 CALL NDT11 00004360
00204 GO TO 9000 00004370
00205 C 00004380
00206 C 00004390
00207 C A TITLE CARD WAS ENCOUNTERED AS OTHER THAN THE FIRST CARD. 00004400
00208 C 00004410
00209 C 00004420
00210 1700 CALL NDT14 (0,108,2) 00004430
00211 GO TO 9000 00004440
00212 C 00004450
00213 C 00004460
00214 C MACRO MODE IS IN PROGRESS. CARDS FOR THE GROUP ARE NOT 00004470
00215 C PROCESSED, BUT ARE WRITTEN TO DISK. 00004480
00216 C 00004490
00217 C 00004500
00218 400 GO TO (9000,9000,9000,9000,9000,9000,9000,9000,9000,9000, 00004510
00219 1 9000,9000,9000,1800,1900,2000,2100,1600,1700,9000),STYPE 00004520
00220 C 00004530
00221 C 00004540
00222 C RERUN MODE HAS BEEN REQUESTED, BUT A MACRO WAS BEING INPUT. 00004550
00223 C 00004560
00224 C 00004570
NDT01 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 1800 CALL NDT14 (0,104,3) 00004580
00226 GO TO 9000 00004590
00227 C 00004600
00228 C 00004610
00229 C A MACRO STATEMENT WAS ENCOUNTERED BEFORE AN MEND FOR THE 00004620
00230 C PREVIOUS MACRO GROUP. 00004630
00231 C 00004640
00232 C 00004650
00233 1900 CALL NDT14 (0,109,3) 00004660
00234 GO TO 9000 00004670
00235 C 00004680
00236 C 00004690
00237 C AN MEND STATEMENT TERMINATES MACRO MODE. 00004700
00238 C 00004710
00239 C 00004720
00240 2000 PSSWT=3 00004730
00241 GO TO 9000 00004740
00242 C 00004750
00243 C 00004760
00244 C A EXPND STATEMENT WAS ENCOUNTERED BEFORE AN MEND FOR THE 00004770
00245 C MACRO THAT WAS BEING INPUT. 00004780
00246 C 00004790
00247 C 00004800
00248 2100 CALL NDT14 (0,111,3) 00004810
00249 GO TO 9000 00004820
00250 C 00004830
00251 C 00004840
00252 C RERUN MODE IS IN PROGRESS. A BLANK CARD REQUIRES NO PROCESSING. 00004850
00253 C 00004860
00254 C 00004870
00255 500 IF(EQNCD.EQ.3) GO TO 9000 00004880
00256 GO TO (2300,2300,2300,2400,2400,2400,2400,2400,9000,2300, 00004890
00257 1 9000,2400,2400,2500,2400,2400,2400,2400,1700,9000),STYPE 00004900
00258 C 00004910
00259 C 00004920
00260 C A T, C, PARM, OR * CARD REQUIRES RERUN PROCESSING. 00004930
00261 C 00004940
00262 C 00004950
00263 2300 CALL NDT19 00004960
00264 GO TO 9000 00004970
00265 C 00004980
00266 C 00004990
00267 C A CARD TYPE OTHER THAN T, C, PARM, OR * HAS APPEARED IN 00005000
00268 C RERUN MODE AND CANNOT BE PROCESSED. 00005010
00269 C 00005020
00270 C 00005030
00271 2400 CALL NDT14 (0,105,2) 00005040
00272 GO TO 9000 00005050
00273 C 00005060
00274 C 00005070
00275 C ANOTHER RERUN GROUP FOLLOWS. FINISH PROCESSING FOR THE PREVIOUS 00005080
00276 C RERUN AND INITIALIZE BUFFERS FOR THIS RERUN. SET THE GROUP 00005090
00277 C DISK ADDRESS. 00005100
00278 C 00005110
00279 C 00005120
00280 2500 CALL NDT18 00005130
NDT01 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
00281 LSTGP=PGMCT+1 00005140
00282 C 00005150
00283 C 00005160
00284 C WRITE THE REQUIRED DATA AREAS TO DISK AND INCREMENT THE 00005170
00285 C PROGRAM COUNTER TO POINT TO THE LAST RECORD USED. 00005180
00286 C 00005190
00287 C 00005200
00288 9000 WRITE(DISK'PGMCT+1) TOKEN 00005210
00289 WRITE(DISK'PGMCT+2) CARD1 00005220
00290 IF(CBIT.EQ.1) WRITE(DISK'PGMCT+3) CARD2 00005230
00291 WRITE(DISK'PGMCT+4) ERROR 00005240
00292 PGMCT=PGMCT+9 00005250
00293 RETURN 00005260
00294 END 00005310
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 PSSWT +15 STYPE +522 EQNCD +1102 PGMCD +22
DISK +6 PGMCT +31 OBJ1 +1222 OBJPT +1222 OBJ2 +1342
OPTNS +12 STPGM +30 OUT1 +1462 OUT2 +1602 OUT3 +1722
LSTGP +46 CBIT +523 SYMND +24 CRSMT +1722
SUBPROGRAMS CALLED
NDT09 NDT18 NDT12 NDT08 NDT21 NDT17
NDT59 NDT11 NDT07 NDT16 NDT10 NDT06
NDT15 NDT05 NDT14 NDT19
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
TEMPORARIES
.A0016 1 .Q0000 2
CARD1 24# 31# 289
CARD2 24# 31# 290
CBIT 28# 34# 290
CRSET 24# 31#
CRSMT 28# 34# 141
DEF 24# 31# 34# 129
DISK 28# 34# 127 128 129 130 158 159 160 288 289 290 291
EQCHN 24# 31#
EQNCD 28# 34# 81 99 255
ERROR 24# 31# 34# 291
FCTN 24# 31#
LITBL 23# 31#
LSTGP 28# 34# 179# 281#
NDT01 5#
NDT05 51
NDT06 61
NDT07 82
NDT08 115
NDT09 157
NDT10 178
NDT11 203
NDT12 44
NDT14 149 187 210 225 233 248 271
NDT15 107
NDT16 116
NDT17 117
NDT18 280
NDT19 263
NDT21 141
NDT59 91
OBJ1 28# 34# 127
OBJ2 28# 34# 128
OBJCD 24# 31# 34#
OBJPT 28# 34# 128
OPER 24# 31#
OPTNS 28# 34#
OUT1 28# 34# 158
OUT2 28# 34# 159
OUT3 28# 34# 160
PGMCD 28# 34# 126
PGMCT 28# 34# 44 127 128 129 130 158 159 160 179 281 288 289
290 291 292 292#
PSSWT 28# 34# 52 71# 90# 168# 177# 196# 240#
PTRS 24# 31# 34#
RMAX 23# 31#
RMIN 23# 31#
STPGM 28# 34# 44
STYPE 28# 34# 72 73 100 126 141 218 256
SUBSC 24# 31#
SYM 24# 31#
SYMND 28# 34# 44
SYMTB 24# 31#
TITLE 24# 31#
TMAP 24# 31# 34# 130
TOKEN 24# 31# 34# 288
TYPCT 24# 31#
XREF 24# 31# 34#
1000P 100 149#
100P 52 61#
1100P 100 157#
1200P 100 168#
1300P 100 177#
1400P 100 187#
1500P 100 196#
1600P 100 203# 218
1700P 100 210# 218 256
1800P 218 225#
1900P 218 233#
1P 45#
2000P 218 240#
200P 52 73#
2100P 218 248#
2300P 256 263#
2400P 256 271#
2500P 169 256 280#
300P 52 99#
400P 52 218#
500P 52 255#
600P 73 90#
700P 100 107#
800P 100 115#
9000P 72 81 83 99 100 142 150 161 180 188 197 204 211 218
226 234 241 249 255 256 264 272 288#
900P 108 117#
910P 126 129#
NDT01 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00005320
00002 C * 00005330
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00005340
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00005350
00005 C * 00005360
00006 C THIS SUBROUTINE EXPANDS MACROS * 00005370
00007 C * 00005380
00008 C***************************************************************** 00005390
00009 SUBROUTINE NDT02 00005400
00010 REAL*8 RMIN,RMAX,LITBL(1024) 00005410
00011 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00005420
00012 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00005430
00013 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00005440
00014 3SYMTB(5,512) 00005450
00015 INTEGER MACBF(160),MAC1(80),MAC2(80),SUBCD(80),CARD(80,2), 00005460
00016 1SUBFD(78),EXPBF(160),EXP1(80),EXP2(80),TEXP(160),SCD2(80), 00005470
00017 2PSSWT,MCEXP,DISP,DUPFG,REC,ARGIG,ARGPS,I,J,MCARG(144), 00005480
00018 3EXARG(144),FIELD(4),NXTCD,BLANK,CBIT,ARGEG,STYPE,MEND(5), 00005490
00019 4TYPE,INDEX,CDNUM,BLFND,POS,ARGT,LENTH,CHAR,SSPOS,SCBIT, 00005500
00020 5SUBS,DISK,CDPOS,START,PGMCT 00005510
00021 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00005520
00022 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00005530
00023 2SYMTB,LITBL 00005540
00024 EQUIVALENCE (MACBF(1),MAC1(1)),(MACBF(81),MAC2(1)), 00005550
00025 1(EXPBF(1),EXP1(1)),(EXPBF(81),EXP2(1)),(TEXP(1),DEF(1)), 00005560
00026 2(MCARG(1),MACBF(14)),(EXARG(1),EXPBF(14)),(SUBFD(1),TOKEN(3)), 00005570
00027 3(FIELD(1),SUBFD(1)),(PSSWT,PTRS(10)),(MCEXP,PTRS(39)), 00005580
00028 4(CARD(1,1),CARD1(1)),(ARGIG,MACBF(13)),(ARGEG,MACBF(10)), 00005590
00029 5(STYPE,TOKEN(1)),(CBIT,TOKEN(2)),(BLANK,CRSET(1)),(DISK,PTRS(3)) 00005600
00030 EQUIVALENCE (PGMCT,PTRS(22)) 00005610
00031 DATA MEND /'M','E','N','D',' '/ 00005620
00032 C***************************************************************** 00005630
00033 C * 00005640
00034 C SET THE PSSWT TO 3 FOR USE BY NDT01. ASSUME U-D MACRO AND * 00005650
00035 C SET DISP TO 8. INCREMENT THE EXPANSION COUNTER. DUPFG IS * 00005660
00036 C ZERO SO THAT NDT39 DOES NOT CHECK FOR DUPLICATE ARGUMENTS. * 00005670
00037 C THE CONTENTS OF CARD2 ARE SAVED AND RESTORED AT END OF EXPA* 00005680
00038 C NDT39 IS CALLED TO FORM THE EXPANSION DEFINITION BUFFER. * 00005690
00039 C * 00005700
00040 C***************************************************************** 00005710
00041 PSSWT = 3 00005720
00042 DISP = 8 00005730
00043 MCEXP = MCEXP + 1 00005740
00044 DUPFG = 0 00005750
00045 DO 100 I = 1, 80 00005760
00046 100 SCD2(I) = CARD2(I) 00005770
00047 SCBIT = CBIT 00005780
00048 CALL NDT39 (REC, DUPFG) 00005790
00049 C***************************************************************** 00005800
00050 C * 00005810
00051 C IF REC IS ZERO, THE MACRO NAME WAS NEVER DEFINED. * 00005820
00052 C OTHERWISE, REC GIVES THE RECORD NUMBER OF THE MACRO * 00005830
00053 C DEFINITION RECORD. BOTH THE MACRO AND EXPAND DEFINITIONS * 00005840
00054 C ARE CHECKED FOR CRITICAL ERRORS. A CHECK IS ALSO MADE TO * 00005850
00055 C SEE THAT BOTH THE EXPAND AND MACRO DEFINITIONS REFER TO * 00005860
00056 C THE SAME NUMBER OF ARGUMENTS. * 00005870
NDT02 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C * 00005880
00058 C***************************************************************** 00005890
00059 IF (REC .EQ. 0) GO TO 3200 00005900
00060 DO 150 I = 1, 160 00005910
00061 150 EXPBF(I) = TEXP(I) 00005920
00062 READ (DISK'REC) MAC1 00005930
00063 REC = REC + 1 00005940
00064 READ (DISK'REC) MAC2 00005950
00065 NXTCD = MACBF(11) 00005960
00066 IF (MACBF(12) .NE. 0 .OR. EXPBF(12) .NE. 0) GO TO 3400 00005970
00067 IF (ARGEG .NE. EXPBF(10)) GO TO 3300 00005980
00068 WRITE(DISK'PGMCT-5) ERROR 00005990
00069 IF (ARGIG .EQ. 0) GO TO 500 00006000
00070 C***************************************************************** 00006010
00071 C * 00006020
00072 C INSERT THE INTERNALLY GENERATED ARGUMENT NAMES INTO THE * 00006030
00073 C EXPBF. COPY THE DUMMY NAMES FROM MACBF, ADDING THE CHARACT* 00006040
00074 C REPRESENTATION OF THE EXPAND COUNTER TO KEEP THE NAME UNIQU* 00006050
00075 C * 00006060
00076 C***************************************************************** 00006070
00077 DISP = 1 00006080
00078 ARGPS = ARGEG * 8 00006090
00079 DO 400 I = 1, ARGIG 00006100
00080 DO 200 J = 1, 3 00006110
00081 ARGPS = ARGPS + 1 00006120
00082 200 EXARG(ARGPS) = MCARG(ARGPS) 00006130
00083 CALL NDT45 (MCEXP, FIELD, 0) 00006140
00084 DO 300 J = 1,4 00006150
00085 ARGPS = ARGPS + 1 00006160
00086 300 EXARG(ARGPS) = FIELD(J) 00006170
00087 ARGPS = ARGPS + 1 00006180
00088 400 CONTINUE 00006190
00089 C***************************************************************** 00006200
00090 C * 00006210
00091 C ARGT IS THE TOTAL NUMBER OF ARGUMENTS. IT IS NOW NECESSARY* 00006220
00092 C TO READ IN THE CARDS TO BE EXPANDED. THE NEXT CARD (FROM DI* 00006230
00093 C TO BE READ IS POINTED TO BY NXTCD. IF A U-D MACRO IS * 00006240
00094 C BEING EXPANDED, IT IS NECESSARY TO READ A CARD, ITS * 00006250
00095 C TOKEN STRING TO DETERMINE WHETHER THAT CARD IS CONTINUED, * 00006260
00096 C AND ITS CONTINUATION IF IT EXISTS. FOR B-I MACROS, THERE * 00006270
00097 C ARE NO CONTINUATIONS AND NO TOKEN STRING. HENCE, A SEPARAT* 00006280
00098 C CHECK MUST BE MADE FOR THE MEND STATEMENT * 00006290
00099 C * 00006300
00100 C***************************************************************** 00006310
00101 500 ARGT = ARGEG + ARGIG 00006320
00102 510 READ (DISK'NXTCD) CARD1 00006330
00103 IF (DISP .EQ. 1) GO TO 600 00006340
00104 REC = NXTCD - 1 00006350
00105 READ (DISK'REC) TOKEN 00006360
00106 NXTCD = NXTCD + 1 00006370
00107 CARD2(1) = 0 00006380
00108 IF (CBIT .EQ. 0) GO TO 800 00006390
00109 READ (DISK'NXTCD) CARD2 00006400
00110 GO TO 800 00006410
00111 600 CARD2(1) = 0 00006420
00112 CBIT = 0 00006430
NDT02 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 STYPE = 1 00006440
00114 DO 700 I = 1, 5 00006450
00115 IF (CARD1(I) .NE. MEND(I)) GO TO 800 00006460
00116 700 CONTINUE 00006470
00117 STYPE = 16 00006480
00118 C***************************************************************** 00006490
00119 C * 00006500
00120 C INCREMENT NXTCD TO POINT TO THE NEXT MACRO STATEMENT. * 00006510
00121 C CHECK FOR END OF EXPANSION, WHICH MAY BE INDICATED BY * 00006520
00122 C A MEND CARD, OR IGNORE RERUN, MACRO, EXPND. * 00006530
00123 C * 00006540
00124 C***************************************************************** 00006550
00125 800 NXTCD = NXTCD + DISP 00006560
00126 DO 900 TYPE = 14, 17 00006570
00127 INDEX = TYPE - 13 00006580
00128 IF (STYPE .EQ. TYPE) GO TO (510,510,3100,510), INDEX 00006590
00129 900 CONTINUE 00006600
00130 C***************************************************************** 00006610
00131 C * 00006620
00132 C INITIALIZE FOR SYMBOLIC SUBSTITION (SS). CDNUM INDICATES * 00006630
00133 C EITHER CARD1 OR CARD2. SSPOS IS A POINTER FOR ENTERING * 00006640
00134 C A SS INTO SUBCD. BLFND WILL GIVE THE LAST POSITION IN * 00006650
00135 C THE COMMENT FIELD. START IS A POINTER FOR THE OPERATOR * 00006660
00136 C SEARCH SUBROUTINE (NDT29). * 00006670
00137 C * 00006680
00138 C***************************************************************** 00006690
00139 CDNUM = 1 00006700
00140 950 START = 1 00006710
00141 DO 975 I = 1, 80 00006720
00142 975 SUBCD(I) = BLANK 00006730
00143 SSPOS = 0 00006740
00144 BLFND = 0 00006750
00145 C***************************************************************** 00006760
00146 C * 00006770
00147 C COPY THE EQUATION TYPES AND INITIAL BLANKS INTO SUBCD. * 00006780
00148 C * 00006790
00149 C***************************************************************** 00006800
00150 DO 1000 START = 1, 72 00006810
00151 IF (CARD(START,CDNUM) .EQ. BLANK) BLFND = 1 00006820
00152 IF (CARD(START,CDNUM) .NE. BLANK .AND. BLFND .NE. 0) GO TO 1100 00006830
00153 SSPOS = SSPOS + 1 00006840
00154 SUBCD(SSPOS) = CARD(START,CDNUM) 00006850
00155 1000 CONTINUE 00006860
00156 GO TO 2700 00006870
00157 C***************************************************************** 00006880
00158 C * 00006890
00159 C SEARCH FOR AN OPERATOR. WHEN ONE IS FOUND, CHECK THE PRECE* 00006900
00160 C SUBSTRING TO SEE WHETHER IT COMPARES TO ANY OF THE MACRO * 00006910
00161 C ARGUMENTS. IF IT DOES, PLACE THE EXPND ARGUMENT INTO SUBFD* 00006920
00162 C OTHERWISE, LEAVE THE CARD IMAGE DATA IN SUBFD. ALSO PLACE * 00006930
00163 C THE TRAILING OPERATOR IN SUBFD TO INSURE ITS ADDITION TO SU* 00006940
00164 C * 00006950
00165 C***************************************************************** 00006960
00166 1100 SUBS = 0 00006970
00167 BLFND = 0 00006980
00168 1150 CALL NDT29 (TYPE, START, POS, CDNUM) 00006990
NDT02 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 IF (POS .LT. START) GO TO 1700 00007000
00170 IF (SUBS .EQ. 1) GO TO 1800 00007010
00171 IF (TYPE .EQ. 1) SUBS = 1 00007020
00172 LENTH = POS - START + 1 00007030
00173 DO 1300 I = 1, ARGT 00007040
00174 ARGPS = I * 8 - 8 00007050
00175 DO 1200 J = 1, LENTH 00007060
00176 ARGPS = ARGPS + 1 00007070
00177 CDPOS = START + J - 1 00007080
00178 CHAR = CARD(CDPOS,CDNUM) 00007090
00179 IF (CHAR .NE. MCARG(ARGPS)) GO TO 1300 00007100
00180 1200 CONTINUE 00007110
00181 ARGPS = ARGPS + 1 00007120
00182 IF (MCARG(ARGPS) .NE. BLANK) GO TO 1300 00007130
00183 GO TO 1400 00007140
00184 1300 CONTINUE 00007150
00185 LENTH = LENTH + 1 00007160
00186 DO 1350 J = START, POS 00007170
00187 I = J - START + 1 00007180
00188 1350 SUBFD(I) = CARD(J,CDNUM) 00007190
00189 GO TO 1600 00007200
00190 1400 ARGPS = (I - 1) * 8 00007210
00191 DO 1500 LENTH = 1, 7 00007220
00192 ARGPS = ARGPS + 1 00007230
00193 IF (EXARG(ARGPS) .EQ. BLANK) GO TO 1600 00007240
00194 1500 SUBFD(LENTH) = EXARG(ARGPS) 00007250
00195 1600 SUBFD(LENTH) = CARD(POS + 1,CDNUM) 00007260
00196 GO TO 2000 00007270
00197 C***************************************************************** 00007280
00198 C * 00007290
00199 C CONSECUTIVE OPERATORS WERE FOUND. INSERT SECOND INTO * 00007300
00200 C SUBFD AND MAKE SS. * 00007310
00201 C * 00007320
00202 C***************************************************************** 00007330
00203 1700 LENTH = 1 00007340
00204 SUBFD(1) = CARD(START,CDNUM) 00007350
00205 GO TO 2000 00007360
00206 C***************************************************************** 00007370
00207 C * 00007380
00208 C THE CODING BELOW AVOIDS CHECKING FOR A SYMBOLIC SUBSTITUTIO* 00007390
00209 C IN A SUBSCRIPT. * 00007400
00210 C * 00007410
00211 C***************************************************************** 00007420
00212 1800 LENTH = POS - START + 2 00007430
00213 DO 1900 I = 1, LENTH 00007440
00214 CDPOS = START + I - 1 00007450
00215 1900 SUBFD(I) = CARD(CDPOS,CDNUM) 00007460
00216 IF (TYPE .NE. 1) SUBS = 0 00007470
00217 C***************************************************************** 00007480
00218 C * 00007490
00219 C MOVE SUBFD TO SUBCD. CHECK FOR EXCESS LENGTH OF EXPANSION.* 00007500
00220 C * 00007510
00221 C***************************************************************** 00007520
00222 2000 DO 2100 I = 1, LENTH 00007530
00223 SSPOS = SSPOS + 1 00007540
00224 IF (SSPOS .GT. 72) GO TO 2600 00007550
NDT02 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 2100 SUBCD(SSPOS) = SUBFD(I) 00007560
00226 IF (BLFND .NE. 0) GO TO 2400 00007570
00227 IF (TYPE .NE. 0) GO TO 2500 00007580
00228 C***************************************************************** 00007590
00229 C * 00007600
00230 C BLANK DELIMITING END OF STATEMENT HAS BEEN FOUND. LOCATE * 00007610
00231 C THE END OF THE COMMENT FIELD AND SET BLFND. * 00007620
00232 C * 00007630
00233 C***************************************************************** 00007640
00234 DO 2200 I = 1, 72 00007650
00235 J = 73 - I 00007660
00236 IF (CARD(J,CDNUM) .NE. BLANK) GO TO 2300 00007670
00237 2200 CONTINUE 00007680
00238 2300 BLFND = J 00007690
00239 C***************************************************************** 00007700
00240 C * 00007710
00241 C CHECK TO SEE IF ENTIRE COMMENT HAS BEEN COPIED. IF NOT, * 00007720
00242 C CHECK FOR MORE SS'S. * 00007730
00243 C * 00007740
00244 C***************************************************************** 00007750
00245 2400 IF (START .GE. BLFND) GO TO 2700 00007760
00246 2500 START = POS + 2 00007770
00247 GO TO 1150 00007780
00248 C***************************************************************** 00007790
00249 C * 00007800
00250 C GIVE EXCESS LENGTH ERRORS. * 00007810
00251 C 312 - EQUATION TO LONG * 00007820
00252 C 315 - COMMENT TOO LONG * 00007830
00253 C COPY SUBCD INTO THE APPROPRIATE CARD BUFFER, * 00007840
00254 C THEN CHECK TO SEE IF THERE IS A CONINUATION TO EXPAND. * 00007850
00255 C * 00007860
00256 C***************************************************************** 00007870
00257 2600 IF (BLFND .EQ. 0) CALL NDT13 (72, 312, 3) 00007880
00258 IF (BLFND .NE. 0) CALL NDT13 (72, 315, 1) 00007890
00259 2700 DO 2750 I = 1, 80 00007900
00260 2750 CARD(I,CDNUM) = SUBCD(I) 00007910
00261 IF (CDNUM .EQ. 2 .OR. CBIT .EQ. 0) GO TO 2800 00007920
00262 CDNUM = 2 00007930
00263 GO TO 950 00007940
00264 C***************************************************************** 00007950
00265 C * 00007960
00266 C EXPANSION OF A CARD IS COMPLETE. CALL NDT01 FOR FURTHER * 00007970
00267 C ANALYSIS. THEN PROCESS ANOTHER CARD. * 00007980
00268 C * 00007990
00269 C***************************************************************** 00008000
00270 2800 CALL NDT01 00008010
00271 GO TO 510 00008020
00272 C***************************************************************** 00008030
00273 C * 00008040
00274 C MEND STATEMENT HAS BEEN ENCOUNTERED. * 00008050
00275 C UPDATE PSSWT AND CALL NDT01. * 00008060
00276 C BRANCH TO FINAL PROCESSING. * 00008070
00277 C * 00008080
00278 C***************************************************************** 00008090
00279 3100 PSSWT = 4 00008100
00280 CALL NDT01 00008110
NDT02 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
00281 GO TO 3500 00008120
00282 C***************************************************************** 00008130
00283 C * 00008140
00284 C ERROR MESSAGES: * 00008150
00285 C 310 - NO MACRO DEFINITION * 00008160
00286 C 311 - UNEQUAL NUMBER OF ARGUMENTS * 00008170
00287 C 316 - UNABLE TO EXPAND DUE TO MACRO OR EXPAND CRITICALS * 00008180
00288 C * 00008190
00289 C***************************************************************** 00008200
00290 3200 CALL NDT13 (1, 310, 3) 00008210
00291 GO TO 3400 00008220
00292 3300 CALL NDT13 (1, 311, 3) 00008230
00293 3400 CALL NDT13 (0, 316, 3) 00008240
00294 DO 3450 I = 1, 5 00008250
00295 3450 CARD1(I) = MEND(I) 00008260
00296 CARD2(1) = 0 00008270
00297 GO TO 3100 00008280
00298 C***************************************************************** 00008290
00299 C * 00008300
00300 C RECOPY CARD2 FROM SCD2, RESTORE CBIT, AND RETURN * 00008310
00301 C * 00008320
00302 C***************************************************************** 00008330
00303 3500 DO 3600 I = 1, 80 00008340
00304 3600 CARD2(I) = SCD2(I) 00008350
00305 CBIT = SCBIT 00008360
00306 RETURN 00008370
00307 END 00008390
EQUIVALENCED VARIABLES
( MACBF 1 MAC1 1 MAC2 121 MCARG 16 ARGIG 15 ARGEG 12
)
( EXPBF 241 EXP1 241 EXP2 361 EXARG 256 )
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 TEXP +1462 SUBFD +524 PSSWT +15 MCEXP +52
CARD +642 STYPE +522 CBIT +523 BLANK +251 DISK +6
PGMCT +31 FIELD +524
SUBPROGRAMS CALLED
NDT13 NDT45 NDT01 NDT39 NDT29
NDT02 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-6
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
.S0020 501 MACBF 1 CDPOS 502 EXP1 241 BLFND 503
DISP 504 MEND 505 EXPBF 241 POS 512 DUPFG 513
SUBCD 514 CHAR 634 INDEX 635 MCARG 16 EXARG 256
J 636 SCD2 637 .S0007 757 .S0006 760 NXTCD 761
.S0005 762 ARGEG 12 .S0004 763 .S0003 764 LENTH 765
.S0002 766 SCBIT 767 .S0001 770 ARGPS 771 .S0000 772
MAC2 121 ARGT 773 .S0017 774 .S0016 775 CDNUM 776
TYPE 777 .S0015 1000 .S0014 1001 SUBS 1002 .S0013 1003
.S0012 1004 .S0011 1005 MAC1 1 .S0010 1006 .O0007 1007
.O0006 1010 .O0005 1011 I 1012 .O0004 1013 .O0003 1014
.O0002 1015 .O0001 1016 .O0000 1017 EXP2 361 START 1020
SSPOS 1021 ARGIG 15 REC 1022 .S0022 1023 .S0021 1024
TEMPORARIES
.A0016 1025 .Q0001 1026
ARGEG 15# 24# 67 78 101
ARGIG 15# 24# 69 79 101
ARGPS 15# 78# 81 81# 82 85 85# 86 87 87# 174# 176 176# 179
181 181# 182 190# 192 192# 193 194
ARGT 15# 101# 173
BLANK 15# 24# 142 151 152 182 193 236
BLFND 15# 144# 151# 152 167# 226 238# 245 257 258
CARD 15# 24# 151 152 154 178 188 195 204 215 236 260#
CARD1 11# 21# 24# 102# 115 295#
CARD2 11# 21# 46 107# 109# 111# 296# 304#
CBIT 15# 24# 47 108 112# 261 305#
CDNUM 15# 139# 151 152 154 168 168# 178 188 195 204 215 236 260
261 262#
CDPOS 15# 177# 178 214# 215
CHAR 15# 178# 179
CRSET 11# 21# 24#
DEF 11# 21# 24#
DISK 15# 24# 62 64 68 102 105 109
DISP 15# 42# 77# 103 125
DUPFG 15# 44# 48 48#
EQCHN 11# 21#
ERROR 11# 21# 68
EXARG 15# 24# 82# 86# 193 194
EXP1 15# 24#
EXP2 15# 24#
EXPBF 15# 24# 61# 66 67
FCTN 11# 21#
FIELD 15# 24# 83 83# 86
I 15# 45# 46 60# 61 79# 114# 115 141# 142 173# 174 187# 188
190 213# 214 215 222# 225 234# 235 259# 260 294# 295 303# 304
INDEX 15# 127# 128
J 15# 80# 84# 86 175# 177 186# 187 188 235# 236 238
LENTH 15# 172# 175 185 185# 191# 194 195 203# 212# 213 222
LITBL 10# 21#
MAC1 15# 24# 62#
MAC2 15# 24# 64#
MACBF 15# 24# 65 66
MCARG 15# 24# 82 179 182
MCEXP 15# 24# 43 43# 83 83#
MEND 15# 31# 115 295
NDT01 270 280
NDT02 9#
NDT13 257 258 290 292 293
NDT29 168
NDT39 48
NDT45 83
NXTCD 15# 65# 102 104 106 106# 109 125 125#
OBJCD 11# 21#
OPER 11# 21#
PGMCT 15# 30# 68
POS 15# 168 168# 169 172 186 195 212 246
PSSWT 15# 24# 41# 279#
PTRS 11# 21# 24# 30#
REC 15# 48 48# 59 62 63 63# 64 104# 105
RMAX 10# 21#
RMIN 10# 21#
SCBIT 15# 47# 305
SCD2 15# 46# 304
SSPOS 15# 143# 153 153# 154 223 223# 224 225
START 15# 140# 150# 151 152 154 168 168# 169 172 177 186 187 204
212 214 245 246#
STYPE 15# 24# 113# 117# 128
SUBCD 15# 142# 154# 225# 260
SUBFD 15# 24# 188# 194# 195# 204# 215# 225
SUBS 15# 166# 170 171# 216#
SUBSC 11# 21#
SYM 11# 21#
SYMTB 11# 21#
TEXP 15# 24# 61
TITLE 11# 21#
TMAP 11# 21#
TOKEN 11# 21# 24# 105#
TYPCT 11# 21#
TYPE 15# 126# 127 128 168 168# 171 216 227
XREF 11# 21#
1000P 150 155#
100P 45 46#
1100P 152 166#
1150P 168# 247
1200P 175 180#
1300P 173 179 182 184#
1350P 186 188#
1400P 183 190#
1500P 191 194#
150P 60 61#
1600P 189 193 195#
1700P 169 203#
1800P 170 212#
1900P 213 215#
2000P 196 205 222#
200P 80 82#
2100P 222 225#
2200P 234 237#
2300P 236 238#
2400P 226 245#
2500P 227 246#
2600P 224 257#
2700P 156 245 259#
2750P 259 260#
2800P 261 270#
300P 84 86#
3100P 128 279# 297
3200P 59 290#
3300P 67 292#
3400P 66 291 293#
3450P 294 295#
3500P 281 303#
3600P 303 304#
400P 79 88#
500P 69 101#
510P 102# 128 271
600P 103 111#
700P 114 116#
800P 108 110 115 125#
900P 126 129#
950P 140# 263
975P 141 142#
NDT02 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00008400
00002 C * 00008410
00003 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME * 00008420
00004 C WRITTEN BY THOMAS L EVERMAN JR * 00008430
00005 C * 00008440
00006 C***************************************************************** 00008450
00007 SUBROUTINE NDT03 00008460
00008 C***************************************************************** 00008470
00009 C * 00008480
00010 C THIS PROGRAM LOADS THE BUILT-IN MACRO STATEMENTS,DEFINITION* 00008490
00011 C AND THE MACRO DEFINITION TABLE (MDT). IT ALSO LOADS THE FU* 00008500
00012 C TABLE AS WELL AS PARAMETERS INTO THE SYMBOL TABLE. * 00008510
00013 C * 00008520
00014 C***************************************************************** 00008530
00015 REAL*8 RMIN,RMAX,LITBL(1024) 00008540
00016 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00008550
00017 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00008560
00018 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00008570
00019 3SYMTB(5,512) 00008580
00020 INTEGER SM1(30),SM2(10),SM3(14),SM4(13),SM5(5) 00008590
00021 INTEGER D11(23),D12(25),D13(8),D14(12),D15(5) 00008600
00022 INTEGER D31(27),D32(25),D33(8),D34(29),D35(25) 00008610
00023 INTEGER D36(8),D37(29),D38(25),D39(8),D40(12),D41(5) 00008620
00024 INTEGER DY1(30),DY2(12),DY3(21),DY4(32),DY5(12) 00008630
00025 INTEGER DY6(21),DY7(30),DY8(12),DY9(19),DY0(5) 00008640
00026 INTEGER Y11(28),Y12(10),Y13(17),Y14(5) 00008650
00027 INTEGER BIM1(31),C11(18),C12 00008660
00028 INTEGER BIM2(31),C21(18),C22 00008670
00029 INTEGER BIM3(31),C31(20),C32(26),C33(5) 00008680
00030 INTEGER BIM4(31),C41(20),C42(23) 00008690
00031 INTEGER BIM5(31),C51(11) 00008700
00032 INTEGER MCREC(80) 00008710
00033 INTEGER B(898) 00008720
00034 INTEGER I,J,SYMPT,REC,BLANK,DISK,POS 00008730
00035 INTEGER FUN01(5),FUN02(5),FUN03(5),FUN04(5),FUN05(5) 00008740
00036 INTEGER FUN06(5),FUN07(5),FUN08(5),FUN09(5),FUN10(5) 00008750
00037 INTEGER FUN11(5),FUN12(5),FUN13(5),FUN14(5),FUN15(5) 00008760
00038 INTEGER FUN16(5),FUN17(5),FUN18(5),FUN19(5),FUN20(5) 00008770
00039 INTEGER FUN21(5),FUN22(5),FUNS(110) 00008780
00040 INTEGER PARM1(2),PARM2(2),PARM3(2),PARM4(2),PARM5(2) 00008790
00041 INTEGER PARM6(2),PARMS(2,6) 00008800
00042 INTEGER MDT(3,53),MDTL,MDT1(3),MDT2(3),MDT3(3),MDT4(3),MDT5(3) 00008810
00043 INTEGER MDTT(160),MDTT1(80),MDTT2(80) 00008820
00044 INTEGER FUNEQ(110),VTYPE,INTBT,DEFBT,VNUM,VALCT,SYMND 00008830
00045 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00008840
00046 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00008850
00047 2SYMTB,LITBL 00008860
00048 C***************************************************************** 00008870
00049 C * 00008880
00050 C THE EQUIVALENCE STATEMENTS BELOW ENTER DATA FOR THE BUILT-I* 00008890
00051 C MACROS INTO A LARGE ARRAY FROM WHICH DATA IS TAKEN TO FORM * 00008900
00052 C THE DISK RECORDS. * 00008910
00053 C * 00008920
00054 C***************************************************************** 00008930
00055 EQUIVALENCE (SM1(1),B(1)),(SM2(1),B(31)),(SM3(1),B(41)) 00008940
00056 EQUIVALENCE (SM4(1),B(55)),(SM5(1),B(68)) 00008950
NDT03 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 EQUIVALENCE (D11(1),B(73)),(D12(1),B(96)),(D13(1),B(121)) 00008960
00058 EQUIVALENCE (D14(1),B(129)),(D15(1),B(141)) 00008970
00059 EQUIVALENCE (D31(1),B(146)),(D32(1),B(173)),(D33(1),B(198)) 00008980
00060 EQUIVALENCE (D34(1),B(206)),(D35(1),B(235)),(D36(1),B(260)) 00008990
00061 EQUIVALENCE (D37(1),B(268)),(D38(1),B(297)),(D39(1),B(322)) 00009000
00062 EQUIVALENCE (D40(1),B(330)),(D41(1),B(342)) 00009010
00063 EQUIVALENCE (DY1(1),B(347)),(DY2(1),B(377)),(DY3(1),B(389)) 00009020
00064 EQUIVALENCE (DY4(1),B(410)),(DY5(1),B(442)),(DY6(1),B(454)) 00009030
00065 EQUIVALENCE (DY7(1),B(475)),(DY8(1),B(505)),(DY9(1),B(517)) 00009040
00066 EQUIVALENCE (DY0(1),B(536)) 00009050
00067 EQUIVALENCE (Y11(1),B(541)),(Y12(1),B(569)) 00009060
00068 EQUIVALENCE (Y13(1),B(579)),(Y14(1),B(596)) 00009070
00069 EQUIVALENCE (BIM1(1),B(601)),(C11(1),B(632)),(C12,B(650)) 00009080
00070 EQUIVALENCE (BIM2(1),B(651)),(C21(1),B(682)),(C22,B(700)) 00009090
00071 EQUIVALENCE (BIM3(1),B(701)),(C31(1),B(732)),(C32(1),B(752)) 00009100
00072 EQUIVALENCE (C33(1),B(778)) 00009110
00073 EQUIVALENCE (BIM4(1),B(783)),(C41(1),B(814)),(C42(1),B(834)) 00009120
00074 EQUIVALENCE (BIM5(1),B(857)),(C51(1),B(888)) 00009130
00075 EQUIVALENCE (MCREC(1),TOKEN(1)),(BLANK,CRSET(1)),(VTYPE,SYM(7)) 00009140
00076 EQUIVALENCE (INTBT,SYM(13)),(DEFBT,SYM(11)),(VNUM,SYM(14)) 00009150
00077 EQUIVALENCE (DISK,PTRS(3)),(STPGM,PTRS(21)),(VALCT,PTRS(20)) 00009160
00078 EQUIVALENCE (SYMND,PTRS(17)) 00009170
00079 C***************************************************************** 00009180
00080 C * 00009190
00081 C THE STATEMENTS BELOW PLACE INDIVIDUAL FUNCTION TABLE ENTRIE* 00009200
00082 C AND SYMBOL TABLE ENTRIES FOR PARAMETERS INTO LARGER ARRAYS.* 00009210
00083 C THE SAME OPERATION IS PERFORMED FOR THE MDT. * 00009220
00084 C * 00009230
00085 C***************************************************************** 00009240
00086 EQUIVALENCE (FUN01(1),FUNS(1)),(FUN02(1),FUNS(6)) 00009250
00087 EQUIVALENCE (FUN03(1),FUNS(11)),(FUN04(1),FUNS(16)), 00009260
00088 1(FUN05(1),FUNS(21)),(FUN06(1),FUNS(26)),(FUN07(1),FUNS(31)), 00009270
00089 2(FUN08(1),FUNS(36)),(FUN09(1),FUNS(41)),(FUN10(1),FUNS(46)), 00009280
00090 3(FUN11(1),FUNS(51)),(FUN12(1),FUNS(56)),(FUN13(1),FUNS(61)), 00009290
00091 4(FUN14(1),FUNS(66)),(FUN15(1),FUNS(71)),(FUN16(1),FUNS(76)), 00009300
00092 5(FUN17(1),FUNS(81)),(FUN18(1),FUNS(86)),(FUN19(1),FUNS(91)) 00009310
00093 EQUIVALENCE (FUN20(1),FUNS(96)),(FUN21(1),FUNS(101)), 00009320
00094 1(FUN22(1),FUNS(106)) 00009330
00095 EQUIVALENCE (PARM1(1),PARMS(1,1)),(PARM2(1),PARMS(1,2)), 00009340
00096 1(PARM3(1),PARMS(1,3)),(PARM4(1),PARMS(1,4)), 00009350
00097 2(PARM5(1),PARMS(1,5)),(PARM6(1),PARMS(1,6)) 00009360
00098 EQUIVALENCE (MDTL,MDTT(1)),(MDT(1,1),MDTT(2)), 00009370
00099 1(MDTT(1),MDTT1(1)),(MDTT(81),MDTT2(1)) 00009380
00100 EQUIVALENCE (MDT1(1),MDT(1,1)),(MDT2(1),MDT(1,2)), 00009390
00101 1(MDT3(1),MDT(1,3)),(MDT4(1),MDT(1,4)),(MDT5(1),MDT(1,5)) 00009400
00102 EQUIVALENCE (FCTN(1,1),FUNEQ(1)) 00009410
00103 C***************************************************************** 00009420
00104 C * 00009430
00105 C THE DATA STATEMENTS BELOW ARE FOR THE FUNCTION TABLE ENTRIE* 00009440
00106 C THE FORMAT IS AS FOLLOWS: * 00009450
00107 C 1 & 2 - PACKED REPRESENTATION OF FUNCTION NAME. * 00009460
00108 C 3 - OP CODE FOR THE FUNCTION. * 00009470
00109 C 4 - NUMBER OF ARGUMENTS TO THE FUNCTION. * 00009480
00110 C 5 - NUMBER OF SAVE AREAS REQUIRED BY THE FUNCTION. * 00009490
00111 C THE FUNCTIONS ARE REPRESENTED IN THE FOLLOWING ORDER: * 00009500
00112 C 1 - ABS 9 - MIN 16 - SQRT * 00009510
NDT03 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C 2 - CLIP 10 - NOISE 17 - STEP * 00009520
00114 C 3 - COS 11 - NORMRN 18 - SWITCH * 00009530
00115 C 4 - DELAY 12 - PULSE 19 - TABFL * 00009540
00116 C 5 - EXP 13 - RAMP 20 - TABHL * 00009550
00117 C 6 - INTGRL 14 - SAMPLE 21 - TABLE * 00009560
00118 C 7 - LOG 15 - SIN 22 - TABND * 00009570
00119 C 8 - MAX * 00009580
00120 C * 00009590
00121 C***************************************************************** 00009600
00122 DATA FUN01 /-24159,-28899,17,1,0/ 00009610
00123 DATA FUN02 /-20737,-1521,18,4,0/ 00009620
00124 DATA FUN03 /-20610,-28899,19,1,0/ 00009630
00125 DATA FUN04 /-19486,-23283,20,2,1/ 00009640
00126 DATA FUN05 /-17220,-28899,21,1,0/ 00009650
00127 DATA FUN06 /-11522,-14416,16,1,7/ 00009660
00128 DATA FUN07 /-6933,-28899,22,1,0/ 00009670
00129 DATA FUN08 /-5941,-28899,23,2,0/ 00009680
00130 DATA FUN09 /-5639,-28899,24,2,0/ 00009690
00131 DATA FUN10 /-3889,3315,25,1,1/ 00009700
00132 DATA FUN11 /-3880,-5288,26,3,1/ 00009710
00133 DATA FUN12 /-610,3315,27,4,2/ 00009720
00134 DATA FUN13 /1653,-1521,28,2,8/ 00009730
00135 DATA FUN14 /3174,-968,29,2,2/ 00009740
00136 DATA FUN15 /3487,-28899,30,1,0/ 00009750
00137 DATA FUN16 /3803,4563,31,1,0/ 00009760
00138 DATA FUN17 /3907,-1521,32,2,0/ 00009770
00139 DATA FUN18 /4028,4768,33,3,0/ 00009780
00140 DATA FUN19 /4684,-16185,34,4,0/ 00009790
00141 DATA FUN20 /4684,-13143,35,5,0/ 00009800
00142 DATA FUN21 /4684,-7332,36,4,0/ 00009810
00143 DATA FUN22 /4684,-4329,37,4,0/ 00009820
00144 C***************************************************************** 00009830
00145 C * 00009840
00146 C THE FOLLOWING DATA IS FOR THE MDT ENTRIES FOR THE BUILT-IN * 00009850
00147 C MACROS. THE FORMAT IS AS FOLLOWS: * 00009860
00148 C 1 & 2 - PACKED REPRESENTATION OF MACRO NAMES. * 00009870
00149 C 3 - POINTER TO FILE RECORD CONTAINING MACRO DEFINITIO* 00009880
00150 C THE SEQUENCE IS AS FOLLOWS: * 00009890
00151 C 1 - SMOOTH 3 - DLINF3 5 - DELAY1 * 00009900
00152 C 2 - DLINF1 4 - DELAY3 * 00009910
00153 C * 00009920
00154 C***************************************************************** 00009930
00155 DATA MDT1 /3644,-2174,88/ 00009940
00156 DATA MDT2 /-19216,-4221,90/ 00009950
00157 DATA MDT3 /-19216,-4219,92/ 00009960
00158 DATA MDT4 /-19486,-23251,94/ 00009970
00159 DATA MDT5 /-19486,-23253,96/ 00009980
00160 DATA MDTL /5/ 00009990
00161 C***************************************************************** 00010000
00162 C * 00010010
00163 C THE FOLLOWING DATA DEFINES THE STATEMENTS WHICH ARE EXPANDE* 00010020
00164 C TO FORM THE SMOOTH MACRO. * 00010030
00165 C * 00010040
00166 C***************************************************************** 00010050
00167 DATA SM1/'L',' ','$','L','1','.','K','=','I','N','T','G','R','L', 00010060
00168 1'(','B','.','J','K','-','$','R','1','.','J','K',')',' ',' ',100/ 00010070
NDT03 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 DATA SM2/'N',' ','$','L','1','=','B','*','C',100/ 00010080
00170 DATA SM3/'A',' ','A','.','K','=','$','L','1','.','K','/','C',100/ 00010090
00171 DATA SM4/'R',' ','$','R','1','.','K','L','=','A','.','K',100/ 00010100
00172 DATA SM5/'M','E','N','D',100/ 00010110
00173 C***************************************************************** 00010120
00174 C * 00010130
00175 C THE FOLLOWING DATA DEFINES THE STATEMENTS * 00010140
00176 C WHICH ARE EXPANDED TO FORM THE DLINF1 MACRO. * 00010150
00177 C * 00010160
00178 C***************************************************************** 00010170
00179 DATA D11/'R',' ','$','R','1','.','K','L','=','(','B','.','K','-', 00010180
00180 1'$','L','1','.','K',')','/','C',100/ 00010190
00181 DATA D12/'L',' ','$','L','1','.','K','=','I','N','T','G','R', 00010200
00182 1'L','(','$','R','1','.','J','K',')',' ',' ',100/ 00010210
00183 DATA D13/'N',' ','$','L','1','=','B',100/ 00010220
00184 DATA D14/'A',' ','A','.','K','=','$','L','1','.','K',100/ 00010230
00185 DATA D15/'M','E','N','D',100/ 00010240
00186 C***************************************************************** 00010250
00187 C * 00010260
00188 C THE FOLLOWING DATA DEFINES THE STATEMENTS * 00010270
00189 C WHICH ARE EXPANDED TO FORM THE DLINF3 MACRO * 00010280
00190 C * 00010290
00191 C***************************************************************** 00010300
00192 DATA D31/'R',' ','$','R','1','.','K','L','=','(','B','.','K','-', 00010310
00193 1'$','L','1','.','K',')','/','(','C','/','3',')',100/ 00010320
00194 DATA D32/'L',' ','$','L','1','.','K','=','I','N','T','G','R', 00010330
00195 1'L','(','$','R','1','.','J','K',')',' ',' ',100/ 00010340
00196 DATA D33/'N',' ','$','L','1','=','B',100/ 00010350
00197 DATA D34/'R',' ','$','R','2','.','K','L','=','(','$','L','1','.', 00010360
00198 1'K','-','$','L','2','.','K',')','/','(','C','/','3',')',100/ 00010370
00199 DATA D35/'L',' ','$','L','2','.','K','=','I','N','T','G','R', 00010380
00200 1'L','(','$','R','2','.','J','K',')',' ',' ',100/ 00010390
00201 DATA D36/'N',' ','$','L','2','=','B',100/ 00010400
00202 DATA D37/'R',' ','$','R','3','.','K','L','=','(','$','L','2','.', 00010410
00203 1'K','-','$','L','3','.','K',')','/','(','C','/','3',')',100/ 00010420
00204 DATA D38/'L',' ','$','L','3','.','K','=','I','N','T','G','R', 00010430
00205 1'L','(','$','R','3','.','J','K',')',' ',' ',100/ 00010440
00206 DATA D39/'N',' ','$','L','3','=','B',100/ 00010450
00207 DATA D40/'A',' ','A','.','K','=','$','L','3','.','K',100/ 00010460
00208 DATA D41/'M','E','N','D',100/ 00010470
00209 C***************************************************************** 00010480
00210 C * 00010490
00211 C THE FOLLOWING DATA DEFINES THE STATEMENTS * 00010500
00212 C WHICH ARE EXPANDED TO FORM THE DELAY3 MACRO * 00010510
00213 C * 00010520
00214 C***************************************************************** 00010530
00215 DATA DY1/'L',' ','$','L','1','.','K','=','I','N','T','G','R','L', 00010540
00216 1'(','B','.','J','K','-','$','R','1','.','J','K',')',' ',' ',100/ 00010550
00217 DATA DY2/'N',' ','$','L','1','=','B','*','C','/','3',100/ 00010560
00218 DATA DY3/'R',' ','$','R','1','.','K','L','=','$','L','1','.','K', 00010570
00219 1'/','(','C','/','3',')',100/ 00010580
00220 DATA DY4/'L',' ','$','L','2','.','K','=','I','N','T','G','R', 00010590
00221 1'L','(','$','R','1','.','J','K','-','$','R','2','.','J','K', 00010600
00222 2')',' ',' ',100/ 00010610
00223 DATA DY5/'N',' ','$','L','2','=','B','*','C','/','3',100/ 00010620
00224 DATA DY6/'R',' ','$','R','2','.','K','L','=','$','L','2','.','K', 00010630
NDT03 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 1'/','(','C','/','3',')',100/ 00010640
00226 DATA DY7/'L',' ','$','L','3','.','K','=','I','N','T','G','R','L', 00010650
00227 1'(','$','R','2','.','J','K','-','A','.','J','K',')',' ',' ',100/ 00010660
00228 DATA DY8/'N',' ','$','L','3','=','B','*','C','/','3',100/ 00010670
00229 DATA DY9/'R',' ','A','.','K','L','=','$','L','3','.','K','/','(', 00010680
00230 1'C','/','3',')',100/ 00010690
00231 DATA DY0/'M','E','N','D',100/ 00010700
00232 C***************************************************************** 00010710
00233 C * 00010720
00234 C THE FOLLOWING DATA DEFINES THE STATEMENTS * 00010730
00235 C WHICH ARE EXPANDED TO FORM THE DELAY1 MACRO. * 00010740
00236 C * 00010750
00237 C***************************************************************** 00010760
00238 DATA Y11/'L',' ','$','L','1','.','K','=','I','N','T','G','R', 00010770
00239 1'L','(','B','.','J','K','-','A','.','J','K',')',' ',' ',100/ 00010780
00240 DATA Y12/'N',' ','$','L','1','=','B','*','C',100/ 00010790
00241 DATA Y13/'R',' ','A','.','K','L','=','$','L','1','.','K','/','C', 00010800
00242 1' ',' ',100/ 00010810
00243 DATA Y14/'M','E','N','D',100/ 00010820
00244 C***************************************************************** 00010830
00245 C * 00010840
00246 C MACRO DEFINITION FOR SMOOTH. * 00010850
00247 C * 00010860
00248 C***************************************************************** 00010870
00249 DATA BIM1 /'S','M','O','O','T','H',' ',' ',0,3,53,0,2,'A',' ',' ',00010880
00250 1' ',' ',' ',' ',' ','B',' ',' ',' ',' ',' ',' ',' ','C',' '/ 00010890
00251 DATA C11 /' ',' ',' ',' ',' ', 00010900
00252 1' ','$','L','1',' ',' ',' ',' ',' ','$','R','1',100/ 00010910
00253 DATA C12 /100/ 00010920
00254 C***************************************************************** 00010930
00255 C * 00010940
00256 C MACRO DEFINITION FOR DLINF1. * 00010950
00257 C * 00010960
00258 C***************************************************************** 00010970
00259 DATA BIM2 /'D','L','I','N','F','1',' ',' ',0,3,58,0,2,'A',' ',' ',00010980
00260 1' ',' ',' ',' ',' ','B',' ',' ',' ',' ',' ',' ',' ','C',' '/ 00010990
00261 DATA C21 /' ',' ',' ',' ',' ', 00011000
00262 1' ','$','L','1',' ',' ',' ',' ',' ','$','R','1',100/ 00011010
00263 DATA C22 /100/ 00011020
00264 C***************************************************************** 00011030
00265 C * 00011040
00266 C MACRO DEFINITION FOR DLINF3. * 00011050
00267 C * 00011060
00268 C***************************************************************** 00011070
00269 DATA BIM3 /'D','L','I','N','F','3',' ',' ',0,3,63,0,6,'A',' ',' ',00011080
00270 1' ',' ',' ',' ',' ','B',' ',' ',' ',' ',' ',' ',' ','C',' '/ 00011090
00271 DATA C31 /' ',' ',' ',' ',' ', 00011100
00272 1' ','$','L','1',' ',' ',' ',' ',' ','$','R','1',' ',' ',' '/ 00011110
00273 DATA C32 /' ',' ','$','L','2',' ',' ',' ',' ',' ','$','R','2',' ',00011120
00274 1' ',' ',' ',' ','$','L','3',' ',' ',' ',' ',' '/ 00011130
00275 DATA C33 /'$','R','3',100,100/ 00011140
00276 C***************************************************************** 00011150
00277 C * 00011160
00278 C MACRO DEFINITION FOR DELAY3. * 00011170
00279 C * 00011180
00280 C***************************************************************** 00011190
NDT03 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
00281 DATA BIM4 /'D','E','L','A','Y','3',' ',' ',0,3,74,0,5,'A',' ',' ',00011200
00282 1' ',' ',' ',' ',' ','B',' ',' ',' ',' ',' ',' ',' ','C',' '/ 00011210
00283 DATA C41 /' ',' ',' ',' ',' ', 00011220
00284 1' ','$','L','1',' ',' ',' ',' ',' ','$','R','1',' ',' ',' '/ 00011230
00285 DATA C42 /' ',' ','$','L','2',' ',' ',' ',' ',' ','$','R','2',' ',00011240
00286 1' ',' ',' ',' ','$','L','3',100,100/ 00011250
00287 C***************************************************************** 00011260
00288 C * 00011270
00289 C MACRO DEFINTION FOR DELAY1. * 00011280
00290 C * 00011290
00291 C***************************************************************** 00011300
00292 DATA BIM5 /'D','E','L','A','Y','1',' ',' ',0,3,84,0,1,'A',' ',' ',00011310
00293 1' ',' ',' ',' ',' ','B',' ',' ',' ',' ',' ',' ',' ','C',' '/ 00011320
00294 DATA C51 /' ',' ',' ',' ',' ', 00011330
00295 1' ','$','L','1',100,100/ 00011340
00296 C***************************************************************** 00011350
00297 C * 00011360
00298 C THE FOLLOWING DATA IS FOR ENTERING THE PARAMETERS * 00011370
00299 C INTO THE SYMBOL TABLE. PARAMETERS ARE ENTERED IN * 00011380
00300 C THE FOLLOWING ORDER: * 00011390
00301 C 1 - DT 3 - STOP 5 - PRTPER * 00011400
00302 C 2 - TIME 4 - START 6 - PLTPER * 00011410
00303 C * 00011420
00304 C***************************************************************** 00011430
00305 DATA PARM1 /-18915,-28899/ 00011440
00306 DATA PARM2 /5007,-18252/ 00011450
00307 DATA PARM3 /3917,-1521/ 00011460
00308 DATA PARM4 /3903,2379/ 00011470
00309 DATA PARM5 /-719,-1228/ 00011480
00310 DATA PARM6 /-953,-1228/ 00011490
00311 C***************************************************************** 00011500
00312 C * 00011510
00313 C LOAD THE BUILT-IN MACRO STATEMENTS AND DEFINITIONS. * 00011520
00314 C * 00011530
00315 C***************************************************************** 00011540
00316 DO 50 I = 1, 80 00011550
00317 50 MCREC(I) = BLANK 00011560
00318 SYMPT = 0 00011570
00319 REC = 52 00011580
00320 DO 100 I = 1, 898 00011590
00321 IF (B(I) .NE. 100) GO TO 75 00011600
00322 REC = REC + 1 00011610
00323 WRITE (DISK'REC) MCREC 00011620
00324 IF (SYMPT .EQ. 0) GO TO 100 00011630
00325 DO 60 J = 1, SYMPT 00011640
00326 60 MCREC(J) = BLANK 00011650
00327 SYMPT = 0 00011660
00328 GO TO 100 00011670
00329 75 SYMPT = SYMPT + 1 00011680
00330 MCREC(SYMPT) = B(I) 00011690
00331 100 CONTINUE 00011700
00332 C***************************************************************** 00011710
00333 C * 00011720
00334 C LOAD THE FUNCTION TABLE. * 00011730
00335 C * 00011740
00336 C***************************************************************** 00011750
NDT03 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-6
00337 DO 300 I = 1, 110 00011760
00338 300 FUNEQ(I) = FUNS(I) 00011770
00339 C***************************************************************** 00011780
00340 C * 00011790
00341 C LOAD THE MDT. * 00011800
00342 C * 00011810
00343 C***************************************************************** 00011820
00344 WRITE (DISK'98) MDTT1 00011830
00345 WRITE (DISK'99) MDTT2 00011840
00346 C***************************************************************** 00011850
00347 C * 00011860
00348 C LOAD THE PARAMETERS INTO THE SYMBOL TABLE. * 00011870
00349 C * 00011880
00350 C***************************************************************** 00011890
00351 DO 400 J=1, SYMND 00011900
00352 400 SYMTB(1,J)=32767 00011910
00353 VALCT = 10 00011920
00354 DO 600 I = 1, 6 00011930
00355 CALL NDT37 (PARMS(1,I),POS) 00011940
00356 IF (VNUM .NE. 12) GO TO 500 00011950
00357 VTYPE = 5 00011960
00358 INTBT = 1 00011970
00359 DEFBT = 1 00011980
00360 GO TO 600 00011990
00361 500 VTYPE = 3 00012000
00362 600 CALL NDT40 (SYMTB(1,POS)) 00012010
00363 RETURN 00012020
00364 END 00012040
EQUIVALENCED VARIABLES
( SM1 1 B 1 SM2 37 SM3 51 SM4 67 SM5 104
D11 111 D12 140 D13 171 D14 201 D15 215 D31 222
D32 255 D33 306 D34 316 D35 353 D36 404 D37 414
D38 451 D39 502 D40 512 D41 526 DY1 533 DY2 571
DY3 605 DY4 632 DY5 672 DY6 706 DY7 733 DY8 771
DY9 1005 DY0 1030 Y11 1035 Y12 1071 Y13 1103 Y14 1124
BIM1 1131 C11 1170 C12 1212 BIM2 1213 C21 1252 C22 1274
BIM3 1275 C31 1334 C32 1360 C33 1412 BIM4 1417 C41 1456
C42 1502 BIM5 1531 C51 1570 )
( FUN01 1603 FUNS 1603 FUN02 1610 FUN03 1615 FUN04 1622 FUN05 1627
FUN06 1634 FUN07 1641 FUN08 1646 FUN09 1653 FUN10 1660 FUN11 1665
FUN12 1672 FUN13 1677 FUN14 1704 FUN15 1711 FUN16 1716 FUN17 1723
FUN18 1730 FUN19 1735 FUN20 1742 FUN21 1747 FUN22 1754 )
( PARM1 1761 PARMS 1761 PARM2 1763 PARM3 1765 PARM4 1767 PARM5 1771
PARM6 1773 )
( MDTL 1775 MDTT 1775 MDT 1776 MDTT1 1775 MDTT2 2115 MDT1 1776
MDT2 2001 MDT3 2004 MDT4 2007 MDT5 2012 )
NDT03 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-7
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 MCREC +522 BLANK +251 VTYPE +337 INTBT +345
DEFBT +343 VNUM +346 DISK +6 STPGM +30 VALCT +27
SYMND +24 FUNEQ +2042
SUBPROGRAMS CALLED
NDT40 NDT37
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
MDT1 1776 PARMS 1761 DY4 632 SM4 67 D35 353
FUN04 1622 PARM3 1765 C41 1456 FUN13 1677 Y11 1035
FUN09 1653 D14 201 FUN22 1754 DY8 771 FUN18 1730
D39 502 DY1 533 SM1 1 D32 255 B 1
FUN03 1615 MDTT2 2115 C31 1334 PARM2 1763 D11 111
FUN12 1672 FUN08 1646 DY5 672 SM5 104 BIM5 1531
D36 404 FUN21 1747 POS 2235 FUN17 1723 C42 1502
Y12 1071 MDT5 2012 D15 215 DY9 1005 .R0001 2236
.R0000 2237 FUN02 1610 C21 1252 MDTT1 1775 PARM1 1761
BIM4 1417 DY2 571 D40 512 SM2 37 FUN11 1665
D33 306 FUN07 1641 J 2240 PARM6 1773 FUN20 1742
FUN16 1716 MDT4 2007 FUNS 1603 C32 1360 .S0005 2241
D12 140 .S0004 2242 .S0003 2243 MDT 1776 DY6 706
.S0002 2244 D37 414 .S0001 2245 .S0000 2246 BIM3 1275
C11 1170 FUN01 1603 Y13 1103 FUN10 1660 MDTT 1775
FUN06 1634 MDT3 2004 SYMPT 2247 PARM5 1771 FUN15 1711
C22 1274 DY3 605 D41 526 SM3 51 D34 316
BIM2 1213 C33 1412 D13 171 MDT2 2001 I 2250
DY7 733 FUN05 1627 D38 451 MDTL 1775 PARM4 1767
C12 1212 FUN14 1704 C51 1570 DY0 1030 BIM1 1131
D31 222 Y14 1124 FUN19 1735 REC 2251
TEMPORARIES
.A0016 2252 .Q0002 2253
B 33# 55# 56# 57# 58# 59# 60# 61# 62# 63# 64# 65# 66# 67#
68# 69# 70# 71# 72# 73# 74# 321 330
BIM1 27# 69# 249#
BIM2 28# 70# 259#
BIM3 29# 71# 269#
BIM4 30# 73# 281#
BIM5 31# 74# 292#
BLANK 34# 75# 317 326
C11 27# 69# 251#
C12 27# 69# 253#
C21 28# 70# 261#
C22 28# 70# 263#
C31 29# 71# 271#
C32 29# 71# 273#
C33 29# 72# 275#
C41 30# 73# 283#
C42 30# 73# 285#
C51 31# 74# 294#
CARD1 16# 45#
CARD2 16# 45#
CRSET 16# 45# 75#
D11 21# 57# 179#
D12 21# 57# 181#
D13 21# 57# 183#
D14 21# 58# 184#
D15 21# 58# 185#
D31 22# 59# 192#
D32 22# 59# 194#
D33 22# 59# 196#
D34 22# 60# 197#
D35 22# 60# 199#
D36 23# 60# 201#
D37 23# 61# 202#
D38 23# 61# 204#
D39 23# 61# 206#
D40 23# 62# 207#
D41 23# 62# 208#
DEF 16# 45#
DEFBT 44# 76# 359#
DISK 34# 77# 323 344 345
DY0 25# 66# 231#
DY1 24# 63# 215#
DY2 24# 63# 217#
DY3 24# 63# 218#
DY4 24# 64# 220#
DY5 24# 64# 223#
DY6 25# 64# 224#
DY7 25# 65# 226#
DY8 25# 65# 228#
DY9 25# 65# 229#
EQCHN 16# 45#
ERROR 16# 45#
FCTN 16# 45# 102#
FUN01 35# 86# 122#
FUN02 35# 86# 123#
FUN03 35# 87# 124#
FUN04 35# 87# 125#
FUN05 35# 87# 126#
FUN06 36# 87# 127#
FUN07 36# 87# 128#
FUN08 36# 87# 129#
FUN09 36# 87# 130#
FUN10 36# 87# 131#
FUN11 37# 87# 132#
FUN12 37# 87# 133#
FUN13 37# 87# 134#
FUN14 37# 87# 135#
FUN15 37# 87# 136#
FUN16 38# 87# 137#
FUN17 38# 87# 138#
FUN18 38# 87# 139#
FUN19 38# 87# 140#
FUN20 38# 93# 141#
FUN21 39# 93# 142#
FUN22 39# 93# 143#
FUNEQ 44# 102# 338#
FUNS 39# 86# 87# 93# 338
I 34# 316# 317 320# 321 330 337# 338 354# 355
INTBT 44# 76# 358#
J 34# 325# 326 351# 352
LITBL 15# 45#
MCREC 32# 75# 317# 323 326# 330#
MDT 42# 98# 100#
MDT1 42# 100# 155#
MDT2 42# 100# 156#
MDT3 42# 100# 157#
MDT4 42# 100# 158#
MDT5 42# 100# 159#
MDTL 42# 98# 160#
MDTT 43# 98#
MDTT1 43# 98# 344
MDTT2 43# 98# 345
NDT03 7#
NDT37 355
NDT40 362
OBJCD 16# 45#
OPER 16# 45#
PARM1 40# 95# 305#
PARM2 40# 95# 306#
PARM3 40# 95# 307#
PARM4 40# 95# 308#
PARM5 40# 95# 309#
PARM6 41# 95# 310#
PARMS 41# 95# 355 355#
POS 34# 355 355# 362
PTRS 16# 45# 77# 78#
REC 34# 319# 322 322# 323
RMAX 15# 45#
RMIN 15# 45#
SM1 20# 55# 167#
SM2 20# 55# 169#
SM3 20# 55# 170#
SM4 20# 56# 171#
SM5 20# 56# 172#
STPGM 77#
SUBSC 16# 45#
SYM 16# 45# 75# 76#
SYMND 44# 78# 351
SYMPT 34# 318# 324 325 327# 329 329# 330
SYMTB 16# 45# 352# 362 362#
TITLE 16# 45#
TMAP 16# 45#
TOKEN 16# 45# 75#
TYPCT 16# 45#
VALCT 44# 77# 353#
VNUM 44# 76# 356
VTYPE 44# 75# 357# 361#
XREF 16# 45#
Y11 26# 67# 238#
Y12 26# 67# 240#
Y13 26# 68# 241#
Y14 26# 68# 243#
100P 320 324 328 331#
300P 337 338#
400P 351 352#
500P 356 361#
50P 316 317#
600P 354 360 362#
60P 325 326#
75P 321 329#
NDT03 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00012050
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00012060
00003 C 00012070
00004 C 00012080
00005 SUBROUTINE NDT04 00012090
00006 C 00012100
00007 C 00012110
00008 C NDT04 IS THE CONTEXT ANALYSIS PHASE COORDINATOR. LEXICAL AND 00012120
00009 C COMPILE PHASE INFORMATION IS READ IN FOR EACH SOURCE STATEMENT 00012130
00010 C AND CONTEXT DEPENDENT FEATURES ARE CHECKED FOR VALIDITY. 00012140
00011 C 00012150
00012 C 00012160
00013 REAL*8 RMIN,RMAX,LITBL(1024) 00012170
00014 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00012180
00015 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00012190
00016 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00012200
00017 3SYMTB(5,512) 00012210
00018 INTEGER PSSWT,PGMND,PGMCT,RRBND,RRBPT,RUNCT,RRBST,DOC,OCBST, 00012220
00019 1LINCT,OPTNS,PRNTR,STPGM,DISK,CBIT,STYPE,NOTBT,EQPOS,OCBPT, 00012230
00020 2SYMPT,VNUM,CRITS,PGMCD,XRFND,DGMSG,CRSMT,EXCHR,BLANK,OCBND, 00012240
00021 3OBJ2(80),RELOC 00012250
00022 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00012260
00023 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00012270
00024 2SYMTB,LITBL 00012280
00025 EQUIVALENCE (PSSWT,PTRS(10)),(PGMND,PTRS(23)),(PGMCT,PTRS(22)), 00012290
00026 1(RRBND,PTRS(38)),(RRBPT,PTRS(37)),(RUNCT,PTRS(14)),(RRBST, 00012300
00027 2PTRS(36)),(LINCT,PTRS(5)),(OPTNS,PTRS(7)),(PRNTR,PTRS(2)), 00012310
00028 3(STPGM,PTRS(21)),(DISK,PTRS(3)),(CBIT,TOKEN(2)),(STYPE, 00012320
00029 4TOKEN(1)),(NOTBT,OBJCD(1)),(EQPOS,TMAP(3)),(VNUM,SYM(14)) 00012330
00030 EQUIVALENCE (CRITS,PTRS(13)),(PGMCD,PTRS(15)),(XRFND,PTRS(16)), 00012340
00031 1(DGMSG,PTRS(41)),(CRSMT,TMAP(1)),(EXCHR,PTRS(39)), 00012350
00032 2(BLANK,CRSET(1)),(OCBST,PTRS(42)),(OCBPT,PTRS(43)) 00012360
00033 EQUIVALENCE (OCBND,PTRS(44)),(OBJ2(1),OBJCD(81)),(RELOC,PTRS(40)) 00012370
00034 C 00012380
00035 C 00012390
00036 C EXAMINE THE PROGRAM STATUS SWITCH FOR SPECIAL CONDITIONS AT 00012400
00037 C THE END OF THE PROGRAM. IF MACRO MODE IS IN EFFECT THEN 00012410
00038 C AN MEND CARD WAS MISSING AND THE MACRO COULD NOT BE EXPANDED. 00012420
00039 C IF RERUN MODE WAS IN EFFECT THEN THE LAST RERUN BUFFER NEEDS 00012430
00040 C TO BE VALIDITY CHECKED AND WRITTEN TO DISK. THE RERUN 00012440
00041 C PROCESSOR WILL ALSO STOP EQUATION CHAINING AND COMPUTE THE 00012450
00042 C RELOCATING CONSTANT FOR NUMERIC LITERALS IF THIS HAD NOT 00012460
00043 C BEEN DONE PREVIOUSLY. 00012470
00044 C 00012480
00045 C 00012490
00046 IF(PSSWT.EQ.4) CALL NDT20 (112,3) 00012500
00047 CALL NDT18 00012510
00048 C 00012520
00049 C 00012530
00050 C ESTABLISH PROGRAM AND RERUN END OF DATA POINTERS, COMPUTE 00012540
00051 C THE NUMBER OF VALID RUNS, AND INITIALIZE DGMSG TO BEGIN 00012550
00052 C THE SOURCE LISTING. DGMSG HAS 2 VALUES AT THIS POINT: 00012560
00053 C 00012570
00054 C 0 - THE NOSOURCE OPTION IS IN EFFECT AND THE DIAGNOSTIC 00012580
00055 C HEADER HAS NOT PRINTED 00012590
00056 C 1 - THE SOURCE OPTION IS IN EFFECT OR NOSOURCE IS IN 00012600
NDT04 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C EFFECT AND THE DIAGNOSTIC HEADER HAS ALREADY PRINTED 00012610
00058 C 00012620
00059 C 00012630
00060 PGMND=PGMCT 00012640
00061 RRBND=RRBPT 00012650
00062 XRFND=PGMND 00012660
00063 RUNCT=RRBND-RRBST+2 00012670
00064 DGMSG=0 00012680
00065 IF(MOD(OPTNS/1024,2).EQ.0) DGMSG=1 00012690
00066 C 00012700
00067 C 00012710
00068 C INITIALIZE THE POINTERS FOR OUTPUT CONTROL BLOCKS TO BE 00012720
00069 C WRITTEN TO DISK AFTER CONTEXT PROCESSING. 00012730
00070 C 00012740
00071 C 00012750
00072 OCBST=RRBND+1 00012760
00073 OCBPT=RRBND 00012770
00074 C 00012780
00075 C 00012790
00076 C INITIALIZE EXCHR TO A BLANK TO BEGIN THE SOURCE LISTING. 00012800
00077 C 00012810
00078 C 00012820
00079 EXCHR=BLANK 00012830
00080 C 00012840
00081 C 00012850
00082 C INITIALIZE PSSWT FOR THE CONTEXT PHASE. ALL CARDS IN RERUN 00012860
00083 C GROUPS HAVE ALREADY BEEN CONTEXT PROCESSED SO ONCE THE FIRST 00012870
00084 C RERUN CARD IS ENCOUNTERED, PSSWT IS SET AND FURTHER CONTEXT 00012880
00085 C PROCESSING IS SKIPPED. PSSWT HAS 3 VALUES IN THIS PHASE: 00012890
00086 C 00012900
00087 C 3 - NORMAL MAINLINE PROGRAM 00012910
00088 C 4 - MACRO MODE 00012920
00089 C 5 - RERUN MODE 00012930
00090 C 00012940
00091 C 00012950
00092 PSSWT=3 00012960
00093 C 00012970
00094 C 00012980
00095 C SET A FLAG FOR THE DOCUMENTOR OPTION AND SET LINCT TO FORCE 00012990
00096 C PAGING FOR THE FIRST PAGE OF OUTPUT. IF THE SOURCE OPTION 00013000
00097 C IS IN EFFECT THEN PRINT THE SOURCE LISTING HEADER. 00013010
00098 C 00013020
00099 C 00013030
00100 DOC=MOD(OPTNS/4,2) 00013040
00101 LINCT=-1 00013050
00102 IF(MOD(OPTNS/1024,2).EQ.1) GO TO 1200 00013060
00103 CALL NDT57 (2) 00013070
00104 WRITE(PRNTR,1100) 00013080
00105 1100 FORMAT(5X,'* * * * * S O U R C E L I S T I N G * *', 00013090
00106 1' * * *'/) 00013100
00107 C 00013110
00108 C 00013120
00109 C BEGIN THE CONTEXT PHASE. TOKEN, ERROR, CARD IMAGE AND TMAP 00013130
00110 C INFORMATION IS READ FROM DISK. 00013140
00111 C 00013150
00112 C 00013160
NDT04 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 1200 DO 100 PGMCT=STPGM,PGMND,9 00013170
00114 READ(DISK'PGMCT) TOKEN 00013180
00115 READ(DISK'PGMCT+1) CARD1 00013190
00116 IF(CBIT.EQ.1) READ(DISK'PGMCT+2) CARD2 00013200
00117 READ(DISK'PGMCT+3) ERROR 00013210
00118 IF(STYPE.LE.8.AND.PSSWT.EQ.3) READ(DISK'PGMCT+8) TMAP 00013220
00119 C 00013230
00120 C 00013240
00121 C COMPUTE THE CURRENT STATEMENT NUMBER. 00013250
00122 C 00013260
00123 C 00013270
00124 CRSMT=(PGMCT-STPGM)/9+1 00013280
00125 C 00013290
00126 C 00013300
00127 C CONTEXT PROCESSING IS SKIPPED IF PSSWT INDICATES RERUN OR 00013310
00128 C MACRO MODES. SET PSSWT APPROPRIATELY: ONCE A RERUN CARD IS 00013320
00129 C ENCOUNTERED RERUN MODE REMAINS IN EFFECT, MACRO AND MEND CARDS 00013330
00130 C CAUSE MODE CHANGES BETWEEN MACRO AND NORMAL MODES. 00013340
00131 C 00013350
00132 C 00013360
00133 IF(PSSWT.EQ.5) GO TO 800 00013370
00134 IF(STYPE.EQ.14) PSSWT=5 00013380
00135 IF(STYPE.EQ.15) PSSWT=4 00013390
00136 IF(STYPE.EQ.16) PSSWT=3 00013400
00137 IF(PSSWT.EQ.4) GO TO 800 00013410
00138 C 00013420
00139 C 00013430
00140 C IF THE CARD IS NOT A NOTE OR AN OUTPUT CARD THEN INDICATE 00013440
00141 C NO INFORMATION IN THE NOTE ARRAY. 00013450
00142 C 00013460
00143 C 00013470
00144 IF(STYPE.LT.11 .OR. STYPE.GT.13) NOTBT=0 00013480
00145 C 00013490
00146 C 00013500
00147 C CALL THE APPROPRIATE CONTEXT PROCESSORS TO PERFORM THE 00013510
00148 C ANALYSES FOR DIFFERENT CARD TYPES. 00013520
00149 C 00013530
00150 C 00013540
00151 GO TO (210,300,400,300,600,300,300,300,800,800, 00013550
00152 1 900,1000,1000,800,800,800,800,500,800,800),STYPE 00013560
00153 C 00013570
00154 C 00013580
00155 C CONTEXT PROCESSING FOR TABLE CARDS. FIRST THE ADDRESS OF 00013590
00156 C THE TABLE ARRAY WHICH IS IN THE LITERAL TABLE MUST BE 00013600
00157 C RELOCATED. LEFT OF EQUAL SIGN PROCESSING FOLLOWS. 00013610
00158 C 00013620
00159 C 00013630
00160 210 READ(DISK'PGMCT+4) OBJ2 00013640
00161 SYMPT=-OBJ2(6) 00013650
00162 LITBL(SYMPT)=SYMPT+RELOC+1 00013660
00163 GO TO 200 00013670
00164 C 00013680
00165 C 00013690
00166 C CONTEXT PROCESSING FOR PARM CARDS. IF THE EQUATION IS FOR 00013700
00167 C 'DT' THEN NORMAL LEFT AND RIGHT PROCESSING IS REQUIRED. 00013710
00168 C IF THE EQUATION IS NOT FOR 'DT' THEN NUMERIC ONLY AND LEFT 00013720
NDT04 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 C PROCESSING ARE REQUIRED. 00013730
00170 C 00013740
00171 C 00013750
00172 400 IF(EQPOS.NE.5) GO TO 800 00013760
00173 IF(TOKEN(4).LT.0.OR.TOKEN(4).GT.20479) GO TO 800 00013770
00174 SYMPT=MOD(TOKEN(4),4096)+1 00013780
00175 CALL NDT41 (SYMTB(1,SYMPT)) 00013790
00176 IF(VNUM.EQ.11) GO TO 300 00013800
00177 CALL NDT49 00013810
00178 GO TO 200 00013820
00179 C 00013830
00180 C 00013840
00181 C TMAP INFORMATION IS NOT SAVED FOR DEF CARDS SO IT MUST BE 00013850
00182 C SET TO ALLOW PROPER LEFT OF EQUAL SIGN PROCESSING. 00013860
00183 C 00013870
00184 C 00013880
00185 500 EQPOS=5 00013890
00186 TMAP(4)=0 00013900
00187 GO TO 200 00013910
00188 C 00013920
00189 C 00013930
00190 C CONTEXT PROCESS THE LEVEL EQUATIONS. 00013940
00191 C 00013950
00192 C 00013960
00193 600 CALL NDT51 00013970
00194 GO TO 300 00013980
00195 C 00013990
00196 C 00014000
00197 C SAVE NOTE CARD INFORMATION FOR PRINT AND PLOT TITLES. 00014010
00198 C 00014020
00199 C 00014030
00200 900 CALL NDT55 00014040
00201 GO TO 800 00014050
00202 C 00014060
00203 C 00014070
00204 C CONTEXT PROCESS THE OUTPUT CARDS. 00014080
00205 C 00014090
00206 C 00014100
00207 1000 CALL NDT52 00014110
00208 EQPOS=3 00014120
00209 C 00014130
00210 C 00014140
00211 C RIGHT AND LEFT OF EQUAL SIGN VARIABLE USAGE ANALYSIS IS 00014150
00212 C PERFORMED HERE. 00014160
00213 C 00014170
00214 C 00014180
00215 300 CALL NDT48 00014190
00216 200 CALL NDT47 00014200
00217 C 00014210
00218 C 00014220
00219 C AFTER THE CONTEXT PROCESSING, THE SOURCE IS LISTED IF THE 00014230
00220 C OPTION IS IN EFFECT AND ANY DIAGNOSTIC MESSAGES ARE PRINTED. 00014240
00221 C 00014250
00222 C 00014260
00223 800 CALL NDT56 00014270
00224 C 00014280
NDT04 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 C 00014290
00226 C IF THE DOCUMENT OPTION IS IN EFFECT AND THE STATEMENT IS AN 00014300
00227 C EQUATION OR OUTPUT CARD, BUT NOT IN AN EXPND GROUP, CALL 00014310
00228 C THE DOCUMENTOR. 00014320
00229 C 00014330
00230 C 00014340
00231 IF(DOC.EQ.1.AND.EXCHR.EQ.BLANK.AND.PSSWT.NE.4.AND.STYPE.NE.3 00014350
00232 1 .AND.(STYPE.LE.8.OR.STYPE.EQ.12.OR.STYPE.EQ.13)) CALL NDT50 00014360
00233 100 CONTINUE 00014370
00234 C 00014380
00235 C 00014390
00236 C SET THE OUTPUT CONTROL BLOCK GROUP END POINTER. 00014400
00237 C 00014410
00238 C 00014420
00239 OCBND=OCBPT 00014430
00240 C 00014440
00241 C 00014450
00242 C A VALID MODEL MUST HAVE A LEVEL EQUATION AND A PROGRAM 00014460
00243 C MUST CONTAIN A REQUEST FOR OUTPUT. 00014470
00244 C 00014480
00245 C 00014490
00246 IF(TYPCT(5).NE.0) GO TO 1300 00014500
00247 CRITS=CRITS+1 00014510
00248 PGMCD=3 00014520
00249 CALL NDT57 (4) 00014530
00250 WRITE(PRNTR,1400) 00014540
00251 1400 FORMAT(/' A VALID MODEL MUST HAVE AT LEAST ONE LEVEL EQUATION.'/, 00014550
00252 1' THIS PROGRAM HAS NONE SO EXECUTION WILL BE INHIBITED.'/) 00014560
00253 1300 IF(TYPCT(12)+TYPCT(13).NE.0) GO TO 1500 00014570
00254 CRITS=CRITS+1 00014580
00255 PGMCD=3 00014590
00256 CALL NDT57 (4) 00014600
00257 WRITE(PRNTR,1600) 00014610
00258 1600 FORMAT(/' THIS PROGRAM HAS NO PRINT OR PLOT STATEMENTS.'/, 00014620
00259 1' SINCE NO OUTPUT IS REQUESTED, THE MODEL WILL NOT BE RUN.'/) 00014630
00260 C 00014640
00261 C 00014650
00262 C IF CRITICAL ERRORS OCCURRED THEN THE 'GO' AND 'OBJECT' OPTIONS 00014660
00263 C CANNOT BE SUPPORTED. IF THEY ARE IN EFFECT THEN CANCEL THEM. 00014670
00264 C 00014680
00265 C 00014690
00266 1500 IF(MOD(OPTNS/32,2).EQ.0.AND.PGMCD.EQ.3) OPTNS=OPTNS+32 00014700
00267 IF(MOD(OPTNS/512,2).EQ.1.AND.PGMCD.EQ.3) OPTNS=OPTNS-512 00014710
00268 RETURN 00014720
00269 END 00014740
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
NDT04 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 PSSWT +15 PGMND +32 PGMCT +31 RRBND +51
RRBPT +50 RUNCT +21 RRBST +47 LINCT +10 OPTNS +12
PRNTR +5 STPGM +30 DISK +6 CBIT +523 STYPE +522
NOTBT +1222 EQPOS +1724 VNUM +346 CRITS +20 PGMCD +22
XRFND +23 DGMSG +54 CRSMT +1722 EXCHR +52 BLANK +251
OCBST +55 OCBPT +56 OCBND +57 OBJ2 +1342 RELOC +53
SUBPROGRAMS CALLED
NDT50 MOD. NDT55 NDT18 NDT49 NDT20
NDT52 NDT48 NDT57 NDT51 NDT47 NDT56
NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
.S0000 1 SYMPT 2 .O0000 3 DOC 4
TEMPORARIES
.A0016 101 .Q0000 102
BLANK 18# 30# 79 231
CARD1 14# 22# 115#
CARD2 14# 22# 116#
CBIT 18# 25# 116
CRITS 18# 30# 247 247# 254 254#
CRSET 14# 22# 30#
CRSMT 18# 30# 124#
DEF 14# 22#
DGMSG 18# 30# 64# 65#
DISK 18# 25# 114 115 116 117 118 160
DOC 18# 100# 231
EQCHN 14# 22#
EQPOS 18# 25# 172 185# 208#
ERROR 14# 22# 117#
EXCHR 18# 30# 79# 231
FCTN 14# 22#
LINCT 18# 25# 101#
LITBL 13# 22# 162#
MOD. 65 100 102 174 266 267
NDT04 5#
NDT18 47
NDT20 46
NDT41 175
NDT47 216
NDT48 215
NDT49 177
NDT50 231
NDT51 193
NDT52 207
NDT55 200
NDT56 223
NDT57 103 249 256
NOTBT 18# 25# 144#
OBJ2 18# 33# 160# 161
OBJCD 14# 22# 25# 33#
OCBND 18# 33# 239#
OCBPT 18# 30# 73# 239
OCBST 18# 30# 72#
OPER 14# 22#
OPTNS 18# 25# 65 100 102 266 266# 267 267#
PGMCD 18# 30# 248# 255# 266 267
PGMCT 18# 25# 60 113# 114 115 116 117 118 124 160
PGMND 18# 25# 60# 62 113
PRNTR 18# 25# 104 250 257
PSSWT 18# 25# 46 92# 118 133 134# 135# 136# 137 231
PTRS 14# 22# 25# 30# 33#
RELOC 18# 33# 162
RMAX 13# 22#
RMIN 13# 22#
RRBND 18# 25# 61# 63 72 73
RRBPT 18# 25# 61
RRBST 18# 25# 63
RUNCT 18# 25# 63#
STPGM 18# 25# 113 124
STYPE 18# 25# 118 134 135 136 144 151 231
SUBSC 14# 22#
SYM 14# 22# 25#
SYMPT 18# 161# 162 174# 175
SYMTB 14# 22# 175 175#
TITLE 14# 22#
TMAP 14# 22# 25# 30# 118# 186#
TOKEN 14# 22# 25# 114# 173 174
TYPCT 14# 22# 246 253
VNUM 18# 25# 176
XREF 14# 22#
XRFND 18# 30# 62#
1000P 151 207#
100P 113 233#
1100P 104 105#
1200P 102 113#
1300P 246 253#
1400P 250 251#
1500P 253 266#
1600P 257 258#
200P 163 178 187 216#
210P 151 160#
300P 151 176 194 215#
400P 151 172#
500P 151 185#
600P 151 193#
800P 133 137 151 172 173 201 223#
900P 151 200#
NDT04 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00014750
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00014760
00003 C 00014770
00004 C 00014780
00005 SUBROUTINE NDT05 00014790
00006 C 00014800
00007 C 00014810
00008 C NDT05 INITIALIZES THE DATA AREAS REQUIRED BY THE LEXICAL 00014820
00009 C AND SYNTAX PHASES DURING SOURCE CARD INPUT. 00014830
00010 C 00014840
00011 REAL*8 RMIN,RMAX,LITBL(1024) 00014850
00012 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00014860
00013 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00014870
00014 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00014880
00015 3SYMTB(5,512) 00014890
00016 INTEGER EQNCD,ERRPT,CRSMT,PGMCT,STPGM,REFPT,RFCPT, 00014900
00017 1RFDEF,PNT,START,OUTER,STOP,COL,LOOP,CARD(80,2),BLANK, 00014910
00018 2TYPE(2),STYPE,CBIT,PSSWT,CDSTC,FIND,CDATA(144),LENM1(19), 00014920
00019 3PARSE(19),CHAR(53),TOKPT,EQPOS,DISK,OPTNS 00014930
00020 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00014940
00021 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00014950
00022 2SYMTB,LITBL 00014960
00023 EQUIVALENCE (EQNCD,ERROR(1)),(ERRPT,ERROR(2)),(CRSMT,TMAP(1)), 00014970
00024 1(PGMCT,PTRS(22)),(STPGM,PTRS(21)),(REFPT, 00014980
00025 2XREF(1)),(RFCPT,XREF(2)),(RFDEF,XREF(3)),(CARD(1,1),CARD1(1)), 00014990
00026 3(BLANK,CRSET(1)),(TYPE(1),STYPE,TOKEN(1)),(CBIT,TOKEN(2)), 00015000
00027 4(PSSWT,PTRS(10)),(CDSTC,CDATA(143)),(CDATA(1),OBJCD(1)), 00015010
00028 5(TOKPT,TOKEN(3)),(EQPOS,TMAP(3)),(DISK,PTRS(3)),(OPTNS,PTRS(7)) 00015020
00029 DATA LENM1 /0,0,3,0,0,0,0,0,0,0,3,4,3,4,4,3,4,2,4/ 00015030
00030 DATA PARSE /0,0,0,0,0,0,0,0,2,1,2,0,0,2,0,2,0,1,1/ 00015040
00031 DATA CHAR /'T','C','P','A','R','M','N','L','A','R','S','X', 00015050
00032 1'*','N','O','T','E','P','R','I','N','T','P','L','O','T','R', 00015060
00033 2'E','R','U','N','M','A','C','R','O','M','E','N','D','E','X', 00015070
00034 3'P','N','D','D','E','F','T','I','T','L','E'/ 00015080
00035 C 00015090
00036 C 00015100
00037 C INITIALIZE THE ERROR INFORMATION ARRAY. 00015110
00038 C 00015120
00039 C 00015130
00040 EQNCD=0 00015140
00041 ERRPT=2 00015150
00042 C 00015160
00043 C 00015170
00044 C INITIALIZE THE TMAP AND TOKEN INFORMATION ARRAYS. 00015180
00045 C 00015190
00046 C 00015200
00047 CRSMT=(PGMCT-STPGM+1)/9+1 00015210
00048 TOKPT=3 00015220
00049 EQPOS=0 00015230
00050 C 00015240
00051 C 00015250
00052 C INITIALIZE THE XREF INFORMATION ARRAY. 00015260
00053 C 00015270
00054 C 00015280
00055 REFPT=3 00015290
00056 RFCPT=0 00015300
NDT05 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 RFDEF=CRSMT 00015310
00058 IF(MOD(OPTNS/128,2).EQ.1) WRITE(DISK'PGMCT+8) XREF 00015320
00059 C 00015330
00060 C 00015340
00061 C ENTER THE NUMERICAL VALUE ASSOCIATED WITH EACH CARD INTO 00015350
00062 C THE STYPE AND CBIT FIELDS OF THE TOKEN ARRAY. 'TYPE' IS 00015360
00063 C EQUIVALENCED ACROSS THESE LOCATIONS. 00015370
00064 C 00015380
00065 C THE FOLLOWING VALUES ARE ASSIGNED BASED ON CARD TYPE: 00015390
00066 C 00015400
00067 C CARD TYPE VALUE 00015410
00068 C 00015420
00069 C T 1 00015430
00070 C C 2 00015440
00071 C PARM 3 00015450
00072 C N 4 00015460
00073 C L 5 00015470
00074 C A 6 00015480
00075 C R 7 00015490
00076 C S 8 00015500
00077 C X 9 00015510
00078 C * 10 00015520
00079 C NOTE 11 00015530
00080 C PRINT 12 00015540
00081 C PLOT 13 00015550
00082 C RERUN 14 00015560
00083 C MACRO 15 00015570
00084 C MEND 16 00015580
00085 C EXPND 17 00015590
00086 C DEF 18 00015600
00087 C TITLE 19 00015610
00088 C 00015620
00089 C UNRECOGNIZED 20 00015630
00090 C 00015640
00091 C 00015650
00092 DO 400 PNT=1,2 00015660
00093 C 00015670
00094 C 00015680
00095 C THE OUTER LOOP CONTROLLED BY THE INDEX VARIABLE 'OUTER' 00015690
00096 C CAUSES A COMPARISON CHARACTER BY CHARACTER AGAINST THE 00015700
00097 C ARRAY 'CHAR' WITH THE CARD REFERENCED BY 'PNT'. EACH 00015710
00098 C CHARACTER SEQUENCE IS CHECKED UNTIL ONE COMPARES. 00015720
00099 C 00015730
00100 C 00015740
00101 100 START=1 00015750
00102 DO 300 OUTER=1,19 00015760
00103 C 00015770
00104 C 00015780
00105 C COMPUTE 'STOP' FROM THE START OF THE STRING AND THE ARRAY 00015790
00106 C 'LENM1' WHICH CONTAINS THE LENGTH OF THE STRING MINUS ONE. 00015800
00107 C 00015810
00108 C 00015820
00109 STOP=START+LENM1(OUTER) 00015830
00110 C 00015840
00111 C THIS LOOP PERFORMS THE CHARACTER COMPARISON. 00015850
00112 C IF ANY CHARACTER IN THE COMPARITOR SEQUENCE DOES 00015860
NDT05 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C NOT COMPARE, TRY THE NEXT CHARACTER SEQUENCE. 00015870
00114 C 00015880
00115 C 00015890
00116 COL=1 00015900
00117 DO 200 LOOP=START,STOP 00015910
00118 IF(CARD(COL,PNT).NE.CHAR(LOOP)) GO TO 300 00015920
00119 200 COL=COL+1 00015930
00120 C 00015940
00121 C 00015950
00122 C ALL CHARACTERS IN THE SEQUENCE WERE EQUAL TO THE 00015960
00123 C CHARACTERS ON THE INDICATED CARD. CHECK THE NEXT 00015970
00124 C POSITION FOR A BLANK SPACE. 00015980
00125 C 00015990
00126 C 00016000
00127 IF(CARD(COL,PNT).NE.BLANK) GO TO 300 00016010
00128 C 00016020
00129 C 00016030
00130 C THE CARD TYPE KEY IS VALID. SET THE APPROPRIATE TYPE VALUE. 00016040
00131 C 00016050
00132 C 00016060
00133 TYPE(PNT)=OUTER 00016070
00134 GO TO 400 00016080
00135 C 00016090
00136 C 00016100
00137 C BUMP 'START' TO POINT TO THE NEXT CHARACTER STRING. 00016110
00138 C 00016120
00139 C 00016130
00140 300 START=STOP+1 00016140
00141 C 00016150
00142 C 00016160
00143 C THE CARD TYPE KEY FOR THE INDICATED CARD IS UNRECOGNIZED. 00016170
00144 C 00016180
00145 C 00016190
00146 TYPE(PNT)=20 00016200
00147 400 CONTINUE 00016210
00148 C 00016220
00149 C 00016230
00150 C UPDATE THE TYPCT ARRAY WHICH COUNTS THE OCCURRENCE OF EACH 00016240
00151 C CARD TYPE. IF CARD2 IS A CONTINUATION OF CARD1 SET CBIT 00016250
00152 C TO 1. OTHERWISE, SET CBIT TO 0. 00016260
00153 C 00016270
00154 C 00016280
00155 TYPCT(STYPE)=TYPCT(STYPE)+1 00016290
00156 IF(CBIT.NE.9) CBIT=0 00016300
00157 IF(CBIT.EQ.0) GO TO 500 00016310
00158 CBIT=1 00016320
00159 TYPCT(9)=TYPCT(9)+1 00016330
00160 C 00016340
00161 C 00016350
00162 C IF MACRO MODE IS IN EFFECT OR THE CARD REQUIRES NO PARSING 00016360
00163 C IN ANY MODE THEN SKIP THE PARSE STEP. THE ARRAY 'PARSE' 00016370
00164 C INDICATES THE APPROPRIATE ACTION WITH THE FOLLOWING VALUES: 00016380
00165 C 00016390
00166 C 0 - PARSE THE CARD AND THE OPTIONAL CONTINUATION 00016400
00167 C 1 - PARSE THE CARD AND DISALLOW A CONTINUATION 00016410
00168 C 2 - DO NOT PARSE THE CARD AND DISALLOW A CONTINUATION 00016420
NDT05 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 C 00016430
00170 C 00016440
00171 500 IF(PSSWT.EQ.4) GO TO 9000 00016450
00172 C 00016460
00173 C 00016470
00174 C CHECK FOR AN UNRECOGNIZED CARD TYPE OR A CONTINUATION AS 00016480
00175 C THE FIRST CARD. 00016490
00176 C 00016500
00177 C 00016510
00178 IF(STYPE.EQ.20) GO TO 600 00016520
00179 IF(STYPE.EQ.9) GO TO 700 00016530
00180 IF(PARSE(STYPE).EQ.2) GO TO 1400 00016540
00181 C 00016550
00182 C 00016560
00183 C CARD PARSING IS REQUIRED. INITIALIZE THE CONTINUATION 00016570
00184 C START OF DATA POINTER TO POINT TO THE END OF THE BUFFER. 00016580
00185 C 'PNT' WILL POINT TO THE CARD BEING PARSED, AND 'COL' IS 00016590
00186 C THE NEXT AVAILABLE POSITION IN CDATA FOR CARD CHARACTERS. 00016600
00187 C 00016610
00188 C 00016620
00189 CDSTC=142 00016630
00190 PNT=0 00016640
00191 COL=1 00016650
00192 C 00016660
00193 C 00016670
00194 C FIND THE STARTING LOCATION OF THE CARD DATA FIELD. 00016680
00195 C 00016690
00196 C 00016700
00197 800 PNT=PNT+1 00016710
00198 DO 900 FIND=1,72 00016720
00199 IF(CARD(FIND,PNT).EQ.BLANK) GO TO 850 00016730
00200 900 CONTINUE 00016740
00201 C 00016750
00202 C 00016760
00203 C THE END OF THE KEY FIELD HAS BEEN FOUND. THE NEXT NON-BLANK 00016770
00204 C CHARACTER IS THE START OF THE DATA FIELD. 00016780
00205 C 00016790
00206 C 00016800
00207 850 START=FIND+1 00016810
00208 DO 950 FIND=START,72 00016820
00209 IF(CARD(FIND,PNT).NE.BLANK) GO TO 1000 00016830
00210 950 CONTINUE 00016840
00211 C 00016850
00212 C 00016860
00213 C THE CARD DATA FIELD WAS NOT FOUND. THE CARD IS BLANK AND 00016870
00214 C CANNOT BE PROCESSED FURTHER. 00016880
00215 C 00016890
00216 C 00016900
00217 CALL NDT14 (PNT-1,110,3) 00016910
00218 GO TO 1300 00016920
00219 C 00016930
00220 C 00016940
00221 C IF THE CURRENT CARD IS THE CONTINUATION THEN SET THE 00016950
00222 C CONTINUATION STARTING ADDRESS POINTER. THE STARTING LOCATION 00016960
00223 C FOUND PREVIOUSLY IS SAVED FOR THE APPROPRIATE CARD. 00016970
00224 C 00016980
NDT05 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 C 00016990
00226 1000 IF(PNT.EQ.2) CDSTC=COL 00017000
00227 CDATA(2*PNT+140)=FIND 00017010
00228 C 00017020
00229 C 00017030
00230 C COPY THE CARD DATA INTO CDATA. STOP AFTER COPYING THE 00017040
00231 C THE BLANK DELIMITER. 00017050
00232 C 00017060
00233 C 00017070
00234 DO 1100 LOOP=FIND,72 00017080
00235 CDATA(COL)=CARD(LOOP,PNT) 00017090
00236 IF(CDATA(COL).EQ.BLANK) GO TO 1300 00017100
00237 1100 COL=COL+1 00017110
00238 CDATA(COL)=BLANK 00017120
00239 C 00017130
00240 C 00017140
00241 C IF THIS CARD WAS THE CONTINUATION THEN THE JOB IS FINISHED. 00017150
00242 C CHECK PARSE TO VERIFY THE VALIDITY OF A CONTINUATION. 00017160
00243 C IF A CONTINUATION IS ALLOWED AND ONE EXISTS THEN PARSE IT. 00017170
00244 C 00017180
00245 C 00017190
00246 1300 IF(PNT.EQ.2) GO TO 9000 00017200
00247 IF(PARSE(STYPE).NE.0) GO TO 1400 00017210
00248 IF(CBIT.EQ.1) GO TO 800 00017220
00249 GO TO 9000 00017230
00250 C 00017240
00251 C 00017250
00252 C AN UNRECOGNIZED CARD TYPE WAS ENCOUNTERED. 00017260
00253 C 00017270
00254 C 00017280
00255 600 CALL NDT14 (0,100,3) 00017290
00256 GO TO 1400 00017300
00257 C 00017310
00258 C 00017320
00259 C THE FIRST CARD WAS A CONTINUATION. THIS CAN HAPPEN TWO 00017330
00260 C DIFFERENT WAYS: THE FIRST CARD OF THE USER'S SOURCE DECK 00017340
00261 C WAS A CONTINUATION, OR TOO MANY CONTINUATIONS FOLLOWED A CARD. 00017350
00262 C 00017360
00263 C 00017370
00264 700 IF(PGMCT.LT.STPGM) GO TO 1500 00017380
00265 CALL NDT14 (0,102,3) 00017390
00266 IF(CBIT.EQ.1) CALL NDT14 (1,102,3) 00017400
00267 GO TO 9000 00017410
00268 1500 CALL NDT14 (0,106,2) 00017420
00269 C 00017430
00270 C 00017440
00271 C THE FIRST CARD MAY NOT BE CONTINUED. 00017450
00272 C 00017460
00273 C 00017470
00274 1400 IF(CBIT.EQ.1) CALL NDT14 (1,101,2) 00017480
00275 9000 RETURN 00017490
00276 END 00017510
NDT05 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 EQNCD +1102 ERRPT +1103 CRSMT +1722 PGMCT +31
STPGM +30 REFPT +1602 RFCPT +1603 RFDEF +1604 CARD +642
BLANK +251 TYPE +522 STYPE +522 CBIT +523 PSSWT +15
CDATA +1222 TOKPT +524 EQPOS +1724 DISK +6 OPTNS +12
CDSTC +1440
SUBPROGRAMS CALLED
MOD. NDT14
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
LENM1 1 STOP 24 LOOP 25 CHAR 26 .S0005 113
.S0004 114 .S0003 115 .S0002 116 .S0001 117 .S0000 120
PARSE 121 OUTER 144 PNT 145 COL 146 .O0003 147
.O0000 150 START 151 FIND 152
TEMPORARIES
.A0016 153 .Q0000 154
BLANK 16# 23# 127 199 209 236 238
CARD 16# 23# 118 127 199 209 235
CARD1 12# 20# 23#
CARD2 12# 20#
CBIT 16# 23# 156 156# 157 158# 248 266 274
CDATA 16# 23# 227# 235# 236 238#
CDSTC 16# 23# 189# 226#
CHAR 16# 31# 118
COL 16# 116# 118 119 119# 127 191# 226 235 236 237 237# 238
CRSET 12# 20# 23#
CRSMT 16# 23# 47# 57
DEF 12# 20#
DISK 16# 23# 58
EQCHN 12# 20#
EQNCD 16# 23# 40#
EQPOS 16# 23# 49#
ERROR 12# 20# 23#
ERRPT 16# 23# 41#
FCTN 12# 20#
FIND 16# 198# 199 207 208# 209 227 234
LENM1 16# 29# 109
LITBL 11# 20#
LOOP 16# 117# 118 234# 235
MOD. 58
NDT05 5#
NDT14 217 255 265 266 268 274
OBJCD 12# 20# 23#
OPER 12# 20#
OPTNS 16# 23# 58
OUTER 16# 102# 109 133
PARSE 16# 30# 180 247
PGMCT 16# 23# 47 58 264
PNT 16# 92# 118 127 133 146 190# 197 197# 199 209 217 226 227
235 246
PSSWT 16# 23# 171
PTRS 12# 20# 23#
REFPT 16# 23# 55#
RFCPT 16# 23# 56#
RFDEF 16# 23# 57#
RMAX 11# 20#
RMIN 11# 20#
START 16# 101# 109 117 140# 207# 208
STOP 16# 109# 117 140
STPGM 16# 23# 47 264
STYPE 16# 23# 155 178 179 180 247
SUBSC 12# 20#
SYM 12# 20#
SYMTB 12# 20#
TITLE 12# 20#
TMAP 12# 20# 23#
TOKEN 12# 20# 23#
TOKPT 16# 23# 48#
TYPCT 12# 20# 155# 155 159# 159
TYPE 16# 23# 133# 146#
XREF 12# 20# 23# 58
1000P 209 226#
100P 101#
1100P 234 237#
1300P 218 236 246#
1400P 180 247 256 274#
1500P 264 268#
200P 117 119#
300P 102 118 127 140#
400P 92 134 147#
500P 157 171#
600P 178 255#
700P 179 264#
800P 197# 248
850P 199 207#
9000P 171 246 249 267 275#
900P 198 200#
950P 208 210#
NDT05 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00017520
00002 C * 00017530
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00017540
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00017550
00005 C * 00017560
00006 C***************************************************************** 00017570
00007 SUBROUTINE NDT06 00017580
00008 C***************************************************************** 00017590
00009 C * 00017600
00010 C TITLE CARD PROCESSOR * 00017610
00011 C * 00017620
00012 C * 00017630
00013 C THIS PROGRAM SETS UP THE TITLE ARRAY WITH ANY INFORMATION * 00017640
00014 C THAT APPEARS ON A TITLE CARD. * 00017650
00015 C * 00017660
00016 C***************************************************************** 00017670
00017 REAL*8 RMIN,RMAX,LITBL(1024) 00017680
00018 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00017690
00019 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00017700
00020 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00017710
00021 3SYMTB(5,512) 00017720
00022 INTEGER PAGE(4),BLANK,TPNT,STYPE,EQNCD,XCHAR,LSPOS 00017730
00023 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00017740
00024 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00017750
00025 2SYMTB,LITBL 00017760
00026 EQUIVALENCE (BLANK,CRSET(1)),(TPNT,PTRS(30)), 00017770
00027 1(STYPE,TOKEN(1)),(EQNCD,ERROR(1)) 00017780
00028 DATA PAGE /'P','A','G','E'/ 00017790
00029 C***************************************************************** 00017800
00030 C * 00017810
00031 C INITIALLY, SET UP THE TITLE ARRAY WITH ALL BLANKS, AND * 00017820
00032 C "PAGE" AT THE FAR LEFT. SET TPNT TO 10. * 00017830
00033 C * 00017840
00034 C TPNT POINTS TO THE LAST POSITION USED IN TITLE. THE PAGE * 00017850
00035 C DATA TAKES UP THE FIRST 9, SO THE LAST POSITION USED IS * 00017860
00036 C THE BLANK IN POSITION 10. * 00017870
00037 C * 00017880
00038 C***************************************************************** 00017890
00039 DO 100 XCHAR = 1, 4 00017900
00040 100 TITLE(XCHAR) = PAGE(XCHAR) 00017910
00041 DO 200 XCHAR = 5, 120 00017920
00042 200 TITLE(XCHAR) = BLANK 00017930
00043 TPNT = 10 00017940
00044 C***************************************************************** 00017950
00045 C * 00017960
00046 C IF THIS CARD IS NOT A TITLE CARD, OR THE TITLE CARD WAS * 00017970
00047 C BLANK, THE TITLE WILL REMAIN BLANK, SO RETURN. * 00017980
00048 C * 00017990
00049 C***************************************************************** 00018000
00050 IF (STYPE .NE. 19 .OR. EQNCD .EQ. 3) GO TO 600 00018010
00051 C***************************************************************** 00018020
00052 C * 00018030
00053 C FIND THE END OF THE TITLE. BECAUSE THE TITLE CARD IS NOT * 00018040
00054 C BLANK, THIS SEARCH WILL BE SUCCESSFUL. * 00018050
00055 C * 00018060
00056 C***************************************************************** 00018070
NDT06 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 LSPOS = 73 00018080
00058 300 LSPOS = LSPOS - 1 00018090
00059 IF (CARD1(LSPOS) .NE. BLANK) GO TO 400 00018100
00060 GO TO 300 00018110
00061 C***************************************************************** 00018120
00062 C * 00018130
00063 C PUT THE TITLE INTO THE TITLE ARRAY, AND UPDATE TPNT. * 00018140
00064 C * 00018150
00065 C***************************************************************** 00018160
00066 400 DO 500 XCHAR = 7, LSPOS 00018170
00067 500 TITLE(XCHAR+4) = CARD1(XCHAR) 00018180
00068 TPNT = LSPOS + 4 00018190
00069 C***************************************************************** 00018200
00070 C * 00018210
00071 C RETURN SECTION * 00018220
00072 C * 00018230
00073 C***************************************************************** 00018240
00074 600 RETURN 00018250
00075 END 00018270
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 BLANK +251 TPNT +41 STYPE +522 EQNCD +1102
SUBPROGRAMS CALLED
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
XCHAR 1 LSPOS 2 .S0002 3 .S0001 4 .S0000 5
PAGE 6
TEMPORARIES
.A0016 12
BLANK 22# 26# 42 59
CARD1 18# 23# 59 67
CARD2 18# 23#
CRSET 18# 23# 26#
DEF 18# 23#
EQCHN 18# 23#
EQNCD 22# 26# 50
ERROR 18# 23# 26#
FCTN 18# 23#
LITBL 17# 23#
LSPOS 22# 57# 58 58# 59 66 68
NDT06 7#
OBJCD 18# 23#
OPER 18# 23#
PAGE 22# 28# 40
PTRS 18# 23# 26#
RMAX 17# 23#
RMIN 17# 23#
STYPE 22# 26# 50
SUBSC 18# 23#
SYM 18# 23#
SYMTB 18# 23#
TITLE 18# 23# 40# 42# 67#
TMAP 18# 23#
TOKEN 18# 23# 26#
TPNT 22# 26# 43# 68#
TYPCT 18# 23#
XCHAR 22# 39# 40 41# 42 66# 67
XREF 18# 23#
100P 39 40#
200P 41 42#
300P 58# 60
400P 59 66#
500P 66 67#
600P 50 74#
NDT06 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00018280
00002 C * 00018290
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00018300
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00018310
00005 C * 00018320
00006 C THIS PROGRAM PROCESSES CONTROL CARDS. * 00018330
00007 C * 00018340
00008 C***************************************************************** 00018350
00009 SUBROUTINE NDT07 00018360
00010 REAL*8 RMIN,RMAX,LITBL(1024) 00018370
00011 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00018380
00012 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00018390
00013 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00018400
00014 3SYMTB(5,512) 00018410
00015 INTEGER OPTNS,OPTSP,INTYP,CDATA(144),DFLT(12),OPCHR(81),START 00018420
00016 INTEGER STOP,CNT,NO,LOOK,OPT,N,O,LOOP,LOOP2,CDPOS,CHCNT 00018430
00017 INTEGER BLANK,USE,MDVAL 00018440
00018 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00018450
00019 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00018460
00020 2SYMTB,LITBL 00018470
00021 EQUIVALENCE (OPTNS,PTRS(7)),(OPTSP,PTRS(34)),(INTYP,PTRS(8)), 00018480
00022 1(CDATA(1),OBJCD(1)),(N,CRSET(17)),(O,CRSET(18)), 00018490
00023 2(BLANK,CRSET(1)) 00018500
00024 C***************************************************************** 00018510
00025 C * 00018520
00026 C DFLT INDICATES THE DEFAULT ACTION FOR A CONTROL OPTION. * 00018530
00027 C 0 = INVOKE THE OPTION IS THE DEFAULT. * 00018540
00028 C 1 = DO NOT INVOKE THE OPTION IS THE DEFAULT. * 00018550
00029 C THE FOLLOWING IS A LIST OF THE OPTIONS AVAILABLE IN NDTRAN.* 00018560
00030 C THE LIST IS ORDERED BY LEAST SIGNIFICANT BIT IN OPTNS AND * 00018570
00031 C BY LOWEST SUBSCRIPT IN DFLT. THE LIST ALSO INDICATES * 00018580
00032 C THE DEFAULT FOR EACH OPTION. * 00018590
00033 C 1) NOCHECK / CHECK * 00018600
00034 C 2) NOSYSTEM / SYSTEM * 00018610
00035 C 3) NODOCUMENT / DOCUMENT * 00018620
00036 C 4) WIDE / NARROW * 00018630
00037 C 5) STATS / NOSTATS * 00018640
00038 C 6) GO / NOGO * 00018650
00039 C 7) NOSYMBOL / SYMBOL * 00018660
00040 C 8) NOXREF / XREF * 00018670
00041 C 9) WARN / NOWARN * 00018680
00042 C 10) NOOBJECT / OBJECT * 00018690
00043 C 11) SOURCE / NOSOURCE * 00018700
00044 C 12) NOTIME / TIME * 00018710
00045 C OPTNS IS USED TO SET BITS FOR EACH OPTION SPECIFIED WHICH * 00018720
00046 C IS NOT A DEFAULT AND IS REFERENCED BY THE ACTION ROUTINES * 00018730
00047 C FOR EACH OPTION. OPTSP SIMPLY INDICATES WHICH OPTIONS * 00018740
00048 C HAVE ALREADY BEEN SPECIFIED IN ORDER TO CHECK FOR * 00018750
00049 C DUPLICATION. INTYP SPECIFIES THE INTEGRATION METHOD. * 00018760
00050 C THE OPCHR ARRAY CONTAINS A SEQUENTIAL LIST OF THE CHARACTER* 00018770
00051 C WHICH MAKE UP EACH OPTION. * 00018780
00052 C * 00018790
00053 C***************************************************************** 00018800
00054 DATA DFLT /1,1,1,0,0,0,1,1,0,1,0,1/ 00018810
00055 DATA OPCHR /'C','H','E','C','K','S','Y','S','T','E','M', 00018820
00056 1'D','O','C','U','M','E','N','T','W','I','D','E', 00018830
NDT07 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 2'S','T','A','T','S','G','O','S','Y','M','B','O','L', 00018840
00058 3'X','R','E','F','W','A','R','N','O','B','J','E','C','T', 00018850
00059 4'S','O','U','R','C','E','T','I','M','E','N','A','R','R','O','W', 00018860
00060 5'E','U','L','E','R','R','K','I','N','T','A','B','I','N','T'/ 00018870
00061 C***************************************************************** 00018880
00062 C * 00018890
00063 C START IS THE POSITION OF THE INTITIAL CHARACTER IN THE OPCH* 00018900
00064 C ARRAY TO BE COMPARED TO THE PRESENT OPTION. STOP IS THE * 00018910
00065 C POSITION OF THE FINAL CHARACTER. CNT IS THE NUMBER OF * 00018920
00066 C CHARACTERS CONTAINED IN THE OPTION TO COMPARE. NO IS * 00018930
00067 C USED TO INDICATE WHETHER 'NO' WAS SPECIFIED BEFORE THE * 00018940
00068 C OPTION. LOOK IS THE POSITION IN CDATA AT WHICH TO CHECK * 00018950
00069 C FOR THE OPTION TYPE. * 00018960
00070 C * 00018970
00071 C***************************************************************** 00018980
00072 START = 1 00018990
00073 STOP = 0 00019000
00074 CNT = 0 00019010
00075 NO = 0 00019020
00076 LOOK = 1 00019030
00077 C***************************************************************** 00019040
00078 C * 00019050
00079 C CHECK FOR 'NO' PRECEDING THE OPTION. IF FOUND, SET * 00019060
00080 C NO TO 1 AND SET LOOK TO SKIP 'NO' DURING COMPARISON. * 00019070
00081 C * 00019080
00082 C***************************************************************** 00019090
00083 IF (CDATA(1) .EQ. N .AND. CDATA(2) .EQ. O) NO = 1 00019100
00084 IF (NO .EQ. 1) LOOK = 3 00019110
00085 C***************************************************************** 00019120
00086 C * 00019130
00087 C BEGIN CHECKING FOR OPTIONS. COMPARE CHARACTERS IN CDATA * 00019140
00088 C TO ALL POSSIBLE OPTIONS. START IS INCREMENTED BY THE * 00019150
00089 C LENGTH OF THE PREVIOUS COMPARISON STRING TO GET THE * 00019160
00090 C START OF THE NEW STRING. THE LENGTH OF THE STRING IS * 00019170
00091 C DETERMINED AND ADDED TO THE STOP VALUE FOR THE * 00019180
00092 C PREVIOUS STRING. * 00019190
00093 C * 00019200
00094 C***************************************************************** 00019210
00095 DO 650 LOOP = 1, 16 00019220
00096 START = START + CNT 00019230
00097 CNT = 2 00019240
00098 GO TO (300,200,100,400,300,500,200,400,400,200,200,400, 00019250
00099 1200,300,300,300), LOOP 00019260
00100 100 CNT = CNT + 2 00019270
00101 200 CNT = CNT + 1 00019280
00102 300 CNT = CNT + 1 00019290
00103 400 CNT = CNT + 2 00019300
00104 500 STOP = STOP + CNT 00019310
00105 CHCNT = 0 00019320
00106 C***************************************************************** 00019330
00107 C * 00019340
00108 C COMPARE THE CHARACTER STRINGS. CHECK FOR BLANK AFTER 3RD * 00019350
00109 C CHARACTER IN ORDER TO FIND ABBREVIATED NAMES. IF A VALID * 00019360
00110 C COMPARISON IS MADE, MAKE SURE THE NEXT POSITION IN CDATA * 00019370
00111 C CONTAINS A BLANK. IF NO VALID COMPARISONS OCCUR, GIVE * 00019380
00112 C INVALID OPTION ERROR (204). * 00019390
NDT07 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C * 00019400
00114 C***************************************************************** 00019410
00115 DO 600 LOOP2 = START, STOP 00019420
00116 CDPOS = LOOK + LOOP2 - START 00019430
00117 CHCNT = CHCNT + 1 00019440
00118 IF (CDATA(CDPOS) .NE. OPCHR(LOOP2)) GO TO 650 00019450
00119 IF (CHCNT .EQ. 3 .AND. CDATA(CDPOS + 1) .EQ. BLANK) GO TO 700 00019460
00120 600 CONTINUE 00019470
00121 IF (CDATA(CDPOS + 1) .EQ. BLANK) GO TO 700 00019480
00122 650 CONTINUE 00019490
00123 CALL NDT13 (LOOK, 204, 2) 00019500
00124 GO TO 1200 00019510
00125 C***************************************************************** 00019520
00126 C * 00019530
00127 C OPTION HAS BEEN RECOGNIZED AS BEING VALID. * 00019540
00128 C CHECK WID, NAR, EUL, RKI, ABI FOR PRECEDING 'NO' (206). * 00019550
00129 C SET NAR VALUES TO TREAT IT AS A 'NOWID'. * 00019560
00130 C * 00019570
00131 C***************************************************************** 00019580
00132 700 OPT = LOOP - 1 00019590
00133 IF (OPT .LT. 12 .AND. OPT .NE. 3) GO TO 800 00019600
00134 IF (NO .EQ. 1) CALL NDT13 (LOOK, 206, 2) 00019610
00135 IF (OPT .GE. 13) GO TO 900 00019620
00136 IF (OPT .EQ. 12) NO = 1 00019630
00137 OPT = 3 00019640
00138 C***************************************************************** 00019650
00139 C * 00019660
00140 C CHECK FOR PREVIOUS SPECIFICATION OF THE OPTION, THEN MAKE * 00019670
00141 C THE APPROPRIATE BIT SETTING IN OPTSP AND OPTNS. * 00019680
00142 C * 00019690
00143 C***************************************************************** 00019700
00144 800 MDVAL = 2 ** OPT 00019710
00145 USE = MOD (OPTSP / MDVAL, 2) 00019720
00146 IF (USE .NE. 0) GO TO 1100 00019730
00147 OPTSP = OPTSP + MDVAL 00019740
00148 IF (NO .EQ. DFLT(OPT + 1)) GO TO 1200 00019750
00149 OPTNS = OPTNS + MDVAL 00019760
00150 GO TO 1200 00019770
00151 C***************************************************************** 00019780
00152 C * 00019790
00153 C OPTION SPECIFIES AN INTEGRATION TYPE. CHECK FOR PREVIOUS * 00019800
00154 C SPECIFICATION, THEN SET INTYP BASED ON OPT. * 00019810
00155 C * 00019820
00156 C***************************************************************** 00019830
00157 900 IF (OPTSP .GE. 16384) GO TO 1100 00019840
00158 OPTSP = OPTSP + 16384 00019850
00159 INTYP = OPT - 12 00019860
00160 GO TO 1200 00019870
00161 1100 CALL NDT13 (LOOK, 205, 2) 00019880
00162 1200 RETURN 00019890
00163 END 00019910
EQUIVALENCED VARIABLES
NDT07 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OPTNS +12 OPTSP +45 INTYP +13 CDATA +1222
N +271 O +272 BLANK +251
SUBPROGRAMS CALLED
MOD. NDT13
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
USE 1 STOP 2 LOOK 3 CDPOS 4 DFLT 5
CNT 21 LOOP 22 OPCHR 23 .S0001 144 .S0000 145
CHCNT 146 MDVAL 147 OPT 150 NO 151 LOOP2 152
.O0000 153 START 154
TEMPORARIES
.A0016 155
BLANK 17# 21# 119 121
CARD1 11# 18#
CARD2 11# 18#
CDATA 15# 21# 83 118 119 121
CDPOS 16# 116# 118 119 121
CHCNT 16# 105# 117 117# 119
CNT 16# 74# 96 97# 100 100# 101 101# 102 102# 103 103# 104
CRSET 11# 18# 21#
DEF 11# 18#
DFLT 15# 54# 148
EQCHN 11# 18#
ERROR 11# 18#
FCTN 11# 18#
INTYP 15# 21# 159#
LITBL 10# 18#
LOOK 16# 76# 84# 116 123 123# 134 134# 161 161#
LOOP 16# 95# 98 132
LOOP2 16# 115# 116 118
MDVAL 17# 144# 145 147 149
MOD. 145
N 16# 21# 83
NDT07 9#
NDT13 123 134 161
NO 16# 75# 83# 84 134 136# 148
O 16# 21# 83
OBJCD 11# 18# 21#
OPCHR 15# 55# 118
OPER 11# 18#
OPT 16# 132# 133 135 136 137# 144 148 159
OPTNS 15# 21# 149 149#
OPTSP 15# 21# 145 147 147# 157 158 158#
PTRS 11# 18# 21#
RMAX 10# 18#
RMIN 10# 18#
START 15# 72# 96 96# 115 116
STOP 16# 73# 104 104# 115
SUBSC 11# 18#
SYM 11# 18#
SYMTB 11# 18#
TITLE 11# 18#
TMAP 11# 18#
TOKEN 11# 18#
TYPCT 11# 18#
USE 17# 145# 146
XREF 11# 18#
100P 98 100#
1100P 146 157 161#
1200P 124 148 150 160 162#
200P 98 101#
300P 98 102#
400P 98 103#
500P 98 104#
600P 115 120#
650P 95 118 122#
700P 119 121 132#
800P 133 144#
900P 135 157#
NDT07 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00019920
00002 C PROGRAM AUTHOR - GARY PELKEY 00019930
00003 C 00019940
00004 C 00019950
00005 SUBROUTINE NDT08 00019960
00006 REAL*8 RMIN,RMAX,LITBL(1024) 00019970
00007 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00019980
00008 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00019990
00009 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00020000
00010 3SYMTB(5,512) 00020010
00011 INTEGER POS,EQOCC,PNT1,PNT2,CHAR,BLANK,TOKPT,I,NMBIT,EQPOS 00020020
00012 1,NMSET(11),RTC,CDATA(144),N,LASTI 00020030
00013 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00020040
00014 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00020050
00015 2SYMTB,LITBL 00020060
00016 EQUIVALENCE (BLANK,CRSET(1)),(TOKPT,TOKEN(3)), 00020070
00017 1(NMSET(1),CRSET(30)),(POS,OBJCD(145)),(EQOCC,OBJCD(146)), 00020080
00018 2(PNT1,OBJCD(147)),(PNT2,OBJCD(148)),(CHAR,OBJCD(149)), 00020090
00019 3(I,OBJCD(150)),(NMBIT,OBJCD(151)),(RTC,OBJCD(152)) 00020100
00020 4,(CDATA(1),OBJCD(1)),(EQPOS,TMAP(3)) 00020110
00021 C 00020120
00022 C 00020130
00023 C POS AND EQOCC ARE INITIALIZED HERE. POS IS THE POSITION 00020140
00024 C IN CDATA CURRENTLY UNDER SCRUTINY. EQOCC IS AN INDICATOR 00020150
00025 C TO THE VARIABLE CHECKER. IT IS SET TO 3 IF AN '=' HAS 00020160
00026 C BEEN ENCOUNTERED. 00020170
00027 C 00020180
00028 C 00020190
00029 POS=1 00020200
00030 EQOCC=0 00020210
00031 C 00020220
00032 C 00020230
00033 C STATEMENT LABEL 100 HERE IS THE ADDRESS AT WHICH THE SEARCH 00020240
00034 C FOR A NEW TOKEN BEGINS. PNT1 AND PNT2 ARE INDICATORS TO 00020250
00035 C THE VARIOUS PROCESSORS AS TO THE STARTING AND STOPPING POS 00020260
00036 C ITIONS OF STRINGS. A BLANK IN CDATA DELIMITS DATA. 00020270
00037 C CDATA(141) HAS ALREADY BEEN SET TO A BLANK TO INSURE THAT 00020280
00038 C THIS ROUTINE DOES NOT PROCESS FARTHER THAN 140. 00020290
00039 C 00020300
00040 C 00020310
00041 100 PNT1=POS 00020320
00042 CHAR=CDATA(POS) 00020330
00043 IF(CHAR.EQ.BLANK) GO TO 1000 00020340
00044 DO 150 I=2,9 00020350
00045 IF(CHAR.EQ.OPER(I)) GO TO 200 00020360
00046 150 CONTINUE 00020370
00047 GO TO 400 00020380
00048 C 00020390
00049 C 00020400
00050 C THIS SECTION ENTERS THE TOKEN FOR AN OPERATOR WITH 00020410
00051 C THE FORMULA: TOKEN=28672+OPNUM. '**' IS ONE TOKEN WITH AN 00020420
00052 C OPNUM OF 10. ')(' IS THREE TOKENS, THE '*' BEING IMPLIED. 00020430
00053 C 00020440
00054 C 00020450
00055 200 IF(I.NE.6) GO TO 250 00020460
00056 EQOCC=3 00020470
NDT08 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 IF(EQPOS.EQ.0) EQPOS=TOKPT+1 00020480
00058 C 00020490
00059 C 00020500
00060 C A SERIES OF TESTS ARE PERFORMED TO DETERMINE IF THE INCOMING 00020510
00061 C CHARACTER SHOULD BE CONSIDERED AS A UNARY OPERATOR. IF IT 00020520
00062 C PASSES THESE TESTS, THE OPERATOR IS CONSIDERED PART OF THE 00020530
00063 C NUMBER AND CONTROL IS PASSED TO THE NUMERIC PROCESSING PART 00020540
00064 C OF THIS ROUTINE. 00020550
00065 C 00020560
00066 C 00020570
00067 250 IF(I.NE.2.AND.I.NE.3) GO TO 290 00020580
00068 LASTI=MOD(TOKEN(TOKPT),4096) 00020590
00069 IF(LASTI.NE.6.AND.LASTI.NE.7.AND.LASTI.NE.9) GO TO 290 00020600
00070 DO 260 N=1,11 00020610
00071 IF(CDATA(POS+1).EQ.NMSET(N)) GO TO 270 00020620
00072 260 CONTINUE 00020630
00073 GO TO 290 00020640
00074 270 POS=POS+1 00020650
00075 NMBIT=2 00020660
00076 GO TO 500 00020670
00077 C 00020680
00078 C 00020690
00079 C THE OPERATOR IS NOT UNARY, PROCESSING CONTINUES. 00020700
00080 C 00020710
00081 C 00020720
00082 290 TOKPT=TOKPT+1 00020730
00083 IF(TOKPT.GT.80) CALL NDT12(2) 00020740
00084 IF(I.EQ.4.AND.CDATA(POS+1).EQ.OPER(4)) GO TO 300 00020750
00085 TOKEN(TOKPT)=28672+I 00020760
00086 POS=POS+1 00020770
00087 IF(I.NE.8.OR.CDATA(POS).NE.OPER(7)) GO TO 350 00020780
00088 TOKPT=TOKPT+1 00020790
00089 IF(TOKPT.GT.80) CALL NDT12(2) 00020800
00090 TOKEN(TOKPT)=28676 00020810
00091 GO TO 350 00020820
00092 300 TOKEN(TOKPT)=28682 00020830
00093 POS=POS+2 00020840
00094 350 CALL NDT23(PNT1,TMAP(TOKPT)) 00020850
00095 GO TO 100 00020860
00096 C 00020870
00097 C 00020880
00098 C THIS SECTION ASSUMES A VARIABLE IS BEING SCANNED IF THE 00020890
00099 C STARTING POSITION IS NOT A 'NUM' OR 'POINT'. IT FINDS 00020900
00100 C THE END OF THE STRING (DELIMITED BY AN 'OPER'), AND CALLS 00020910
00101 C THE APPROPRIATE ROUTINE. 00020920
00102 C 00020930
00103 C 00020940
00104 400 NMBIT=1 00020950
00105 DO 450 I=1,11 00020960
00106 IF(CHAR.EQ.NMSET(I)) NMBIT=2 00020970
00107 450 CONTINUE 00020980
00108 500 POS=POS+1 00020990
00109 CHAR=CDATA(POS) 00021000
00110 IF(CHAR.EQ.BLANK) GO TO 600 00021010
00111 DO 570 I=NMBIT,9 00021020
00112 PNT2=POS-1 00021030
NDT08 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 IF(CHAR.EQ.OPER(I).AND.(CDATA(PNT2).NE.CRSET(8).OR.(I.NE.2. 00021040
00114 1 AND.I.NE.3).OR.NMBIT.EQ.1)) GO TO 600 00021050
00115 570 CONTINUE 00021060
00116 GO TO 500 00021070
00117 600 PNT2=POS-1 00021080
00118 IF(NMBIT.EQ.1) GO TO 620 00021090
00119 CALL NDT22(PNT1,PNT2) 00021100
00120 GO TO 100 00021110
00121 620 CALL NDT24(PNT1,PNT2,RTC) 00021120
00122 C 00021130
00123 C 00021140
00124 C IF THE NEXT CHARACTER AFTER A VARIABLE-TYPE STRING IS AN 00021150
00125 C '(' NDT25 IS CALLED. IF NOT IT IS ASSUMED TO BE A VARIABLE. 00021160
00126 C 00021170
00127 C 00021180
00128 IF(CHAR.NE.OPER(7)) GO TO 800 00021190
00129 CALL NDT25 (PNT1,PNT2,RTC) 00021200
00130 GO TO 100 00021210
00131 800 IF(RTC.EQ.0) GO TO 900 00021220
00132 TOKPT=TOKPT+1 00021230
00133 IF(TOKPT.GT.80) CALL NDT12(2) 00021240
00134 TOKEN(TOKPT)=24576 00021250
00135 GO TO 950 00021260
00136 900 CALL NDT27 (PNT1,EQOCC) 00021270
00137 950 IF(CHAR.NE.OPER(1)) GO TO 100 00021280
00138 C 00021290
00139 C 00021300
00140 C IF A VARIABLE IS FOLLOWED BY A 'POINT' THE SUBSCRIPT CHECKER 00021310
00141 C IS CALLED TO UPDATE THE ALREADY EXITING TOKEN AND PRODUCE 00021320
00142 C ANY ASSOCIATED ERROR MESSAGES. 00021330
00143 C 00021340
00144 C 00021350
00145 POS=POS+1 00021360
00146 CALL NDT26 (POS) 00021370
00147 GO TO 100 00021380
00148 C 00021390
00149 C 00021400
00150 C THE TOKEN PROCESSING FOR THIS EQUATION HAS BEEN COMPLETED. 00021410
00151 C WHAT FOLLOWS IS A SIMPLE SCAN OVER THE TOKEN RECORD TO LOCATE 00021420
00152 C ERRORS SUCH AS A MISSING OR MISPLACED EQUALS SIGN OR MISSING 00021430
00153 C BEGINNING VARIABLE. 00021440
00154 C 00021450
00155 C 00021460
00156 1000 CALL NDT38 00021470
00157 RETURN 00021480
00158 END 00021500
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
NDT08 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 BLANK +251 TOKPT +524 NMSET +306 POS +1442
EQOCC +1443 PNT1 +1444 PNT2 +1445 CHAR +1446 I +1447
NMBIT +1450 RTC +1451 CDATA +1222 EQPOS +1724
SUBPROGRAMS CALLED
MOD. NDT22 NDT27 NDT12 NDT26 NDT25
NDT24 NDT38 NDT23
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
N 1 LASTI 2 .S0003 3 .S0002 4 .S0001 5
.S0000 6
TEMPORARIES
.A0016 7 .Q0000 10
BLANK 11# 16# 43 110
CARD1 7# 13#
CARD2 7# 13#
CDATA 11# 16# 42 71 84 87 109 113
CHAR 11# 16# 42# 43 45 106 109# 110 113 128 137
CRSET 7# 13# 16# 113
DEF 7# 13#
EQCHN 7# 13#
EQOCC 11# 16# 30# 56# 136 136#
EQPOS 11# 16# 57 57#
ERROR 7# 13#
FCTN 7# 13#
I 11# 16# 44# 45 55 67 84 85 87 105# 106 111# 113
LASTI 11# 68# 69
LITBL 6# 13#
MOD. 68
N 11# 70# 71
NDT08 5#
NDT12 83 89 133
NDT22 119
NDT23 94
NDT24 121
NDT25 129
NDT26 146
NDT27 136
NDT38 156
NMBIT 11# 16# 75# 104# 106# 111 113 118
NMSET 11# 16# 71 106
OBJCD 7# 13# 16#
OPER 7# 13# 45 84 87 113 128 137
PNT1 11# 16# 41# 94 94# 119 119# 121 121# 129 129# 136 136#
PNT2 11# 16# 112# 113 117# 119 119# 121 121# 129 129#
POS 11# 16# 29# 41 42 71 74 74# 84 86 86# 87 93 93#
108 108# 109 112 117 145 145# 146 146#
PTRS 7# 13#
RMAX 6# 13#
RMIN 6# 13#
RTC 11# 16# 121 121# 129 129# 131
SUBSC 7# 13#
SYM 7# 13#
SYMTB 7# 13#
TITLE 7# 13#
TMAP 7# 13# 16# 94 94#
TOKEN 7# 13# 16# 68 85# 90# 92# 134#
TOKPT 11# 16# 57 68 82 82# 83 85 88 88# 89 90 92 94
132 132# 133 134
TYPCT 7# 13#
XREF 7# 13#
1000P 43 156#
100P 41# 95 120 130 137 147
150P 44 46#
200P 45 55#
250P 55 67#
260P 70 72#
270P 71 74#
290P 67 69 73 82#
300P 84 92#
350P 87 91 94#
400P 47 104#
450P 105 107#
500P 76 108# 116
570P 111 115#
600P 110 113 117#
620P 118 121#
800P 128 131#
900P 131 136#
950P 135 137#
NDT08 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00021510
00002 C * 00021520
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00021530
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00021540
00005 C * 00021550
00006 C***************************************************************** 00021560
00007 SUBROUTINE NDT09 00021570
00008 C***************************************************************** 00021580
00009 C * 00021590
00010 C OUTPUT LEXICAL ANALYZER / COMPILER * 00021600
00011 C * 00021610
00012 C * 00021620
00013 C THIS PROGRAM ANALYZES AN OUTPUT REQUEST FOR SYNTACTICAL * 00021630
00014 C ERRORS AND BUILDS THE OUTPUT BUFFER. NDT09 IS CALLED BY * 00021640
00015 C NDT01, AND IN TURN CALLS NDT30 THROUGH NDT34, AND NDT13. * 00021650
00016 C * 00021660
00017 C * 00021670
00018 C * 00021680
00019 C OUTPT, AN ARRAY OF LENGTH 240, IS THE OUTPUT BUFFER. IT * 00021690
00020 C CONTAINS INFORMATION USED BY THE OUTPUT PHASE TO DETERMINE * 00021700
00021 C THE TYPE AND FORMAT OF THE OUTPUT. THE FOLLOWING VARIABLES* 00021710
00022 C ARE STORED IN THIS ARRAY: * 00021720
00023 C * 00021730
00024 C POSITION VARI- DESCRIPTION * 00021740
00025 C IN OUTPT ABLE * 00021750
00026 C --------- ----- -----------------------------------------* 00021760
00027 C 1 VARCT NUMBER OF VARIABLES ON THE OUTPUT CARD * 00021770
00028 C 2 TYPE TYPE INDICATES A PRINT OR A PLOT. * 00021780
00029 C 3 RUNNO THE HIGHEST RUN NUMBER REQUESTED * 00021790
00030 C 4 - 91 VNAM EACH VARIABLE NAME (UP TO 6 CHARACTERS * 00021800
00031 C PLUS THE RUN NUMBER) IS PLACED HERE, * 00021810
00032 C CENTERED. THE INDEPENDENT VARIABLE NAME * 00021820
00033 C FIELD STARTS AT POSITION 4. * 00021830
00034 C 92 - 102 VNUM EACH VARIABLE NUMBER IS PLACED HERE; THE * 00021840
00035 C INDEPENDENT VARIABLE NUMBER IS IN * 00021850
00036 C VNUM(1), OUTPT(92). * 00021860
00037 C 103 - 124 LOW A REAL ARRAY, LOW CONTAINS THE LOW VALUE * 00021870
00038 C FOR THE RANGE OF EACH VARIABLE. * 00021880
00039 C 125 - 146 HIGH A REAL ARRAY, HIGH CONTAINS THE HIGH * 00021890
00040 C VALUE FOR THE RANGE OF EACH VARIABLE. * 00021900
00041 C 147 - 157 FLAG FLAG CONTAINS DEFAULT INFORMATION FOR A * 00021910
00042 C PLOT VARIABLE'S RANGE. * 00021920
00043 C ONE'S DIGIT - 0,1,2,3 * 00021930
00044 C 0 - NO DEFAULTS * 00021940
00045 C 1 - LOW DEFAULT * 00021950
00046 C 2 - HIGH DEFAULT * 00021960
00047 C 3 - BOTH DEFAULTS * 00021970
00048 C TEN'S DIGIT * 00021980
00049 C THERE IS ONE CLAUSE IN EACH * 00021990
00050 C SERIES WHICH CONTAINS THE RANGE * 00022000
00051 C FOR THAT SERIES. THIS DIGIT * 00022010
00052 C POINTS TO IT. * 00022020
00053 C 158 IVPLT A FLAG TO DENOTE AN INDEP. VAR. PLOT * 00022030
00054 C 159 - 177 ----- RESERVED * 00022040
00055 C 178 SRCNT THE NUMBER OF SERIES ON THIS OUTPUT CARD.* 00022050
00056 C 179 - 189 RUN THE RUN NUMBER OF THE VARIABLE TO BE USED* 00022060
NDT09 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C ON THE OUTPUT IS STORED HERE. IT MUST BE* 00022070
00058 C BETWEEN 1 AND THE NUMBER OF RERUNS. * 00022080
00059 C 190 - 199 CHAR NOT USED FOR A PRINT, THE CHARACTER IS * 00022090
00060 C USED ON THE PLOT FOR ITS VARIABLE. * 00022100
00061 C 200 CFLAG CFLAG INDICATES THE PRESCENCE OF ANY * 00022110
00062 C TITLE INFO IN THE USER'S COMMENT FIELD. * 00022120
00063 C * 00022130
00064 C***************************************************************** 00022140
00065 REAL*8 RMIN,RMAX,LITBL(1024) 00022150
00066 REAL*8 LOW(11),HIGH(11) 00022160
00067 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00022170
00068 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00022180
00069 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00022190
00070 3SYMTB(5,512) 00022200
00071 INTEGER CDATA(144),OUTPT(240),VARCT,TYPE,RUNNO,VNUM(11), 00022210
00072 1FLAG(11),RUN(11),CHAR(10),CFLAG,SRCNT,IVPLT 00022220
00073 INTEGER DMODE,RMODE,SMODE,LOOP,CLNUM,BGF(4),NDF(4), 00022230
00074 1SRNUM,CLFST,SLASH,BLANK,VMAX,SFLAG, 00022240
00075 2NARO,XCHAR,OPTNS,TIME(8) 00022250
00076 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00022260
00077 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00022270
00078 2SYMTB,LITBL 00022280
00079 EQUIVALENCE (OUTPT(1),DEF(1),VARCT),(OUTPT(2),TYPE), 00022290
00080 1(OUTPT(3),RUNNO),(OUTPT(92),VNUM(1)),(OUTPT(103),LOW(1)), 00022300
00081 2(OUTPT(125),HIGH(1)),(OUTPT(147),FLAG(1)),(OUTPT(158),IVPLT), 00022310
00082 3(OUTPT(178),SRCNT),(OUTPT(179),RUN(1)),(OUTPT(190),CHAR(1)), 00022320
00083 4(OUTPT(200),CFLAG),(CDATA(1),OBJCD(1)) 00022330
00084 EQUIVALENCE (DMODE,OUTPT(201)),(RMODE,OUTPT(202)), 00022340
00085 1(SMODE,OUTPT(203)),(LOOP,OUTPT(204)),(CLNUM,OUTPT(205)), 00022350
00086 2(BGF(1),OUTPT(206)),(NDF(1),OUTPT(210)),(OPTNS,PTRS(7)), 00022360
00087 3(SRNUM,OUTPT(220)),(CLFST,OUTPT(221)),(VMAX,OUTPT(223)) 00022370
00088 EQUIVALENCE (SLASH,OPER(5)),(BLANK,CRSET(1)) 00022380
00089 EQUIVALENCE (SFLAG,OUTPT(222)) 00022390
00090 DATA TIME /'T','I','M','E',' ',' ',' ',' '/ 00022400
00091 C***************************************************************** 00022410
00092 C * 00022420
00093 C THIS FIRST SECTION INITIALIZES SOME OF THE VARIABLES USED. * 00022430
00094 C * 00022440
00095 C DMODE DATA MODE -1 BEGINNING DATA MODE * 00022450
00096 C (BEFORE A LEGAL CHARACTER OCCURS)* 00022460
00097 C 0 INTERIOR MODE * 00022470
00098 C 1 END MODE - END OF DATA * 00022480
00099 C 2 END MODE - INDEPENDENT VARIABLE * 00022490
00100 C * 00022500
00101 C SMODE SERIES MODE -1 NO RANGE DEFINED * 00022510
00102 C 0 FIRST RANGE DEFINITION * 00022520
00103 C 1 RANGE PREVIOUSLY DEFINED * 00022530
00104 C * 00022540
00105 C ZERO OUT THE OUTPT ARRAY. * 00022550
00106 C * 00022560
00107 C***************************************************************** 00022570
00108 DO 50 XCHAR = 1, 157 00022580
00109 50 OUTPT(XCHAR) = 0 00022590
00110 DO 60 XCHAR = 179, 200 00022600
00111 60 OUTPT(XCHAR) = 0 00022610
00112 DMODE = -1 00022620
NDT09 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 SMODE = -1 00022630
00114 SRCNT = 1 00022640
00115 C***************************************************************** 00022650
00116 C * 00022660
00117 C CLNUM, CURRENT CLAUSE NUMBER, AND CLFST, THE FIRST CLAUSE * 00022670
00118 C IN THE CURRENT SERIES, ARE SET FOR THE FIRST CLAUSE. * 00022680
00119 C * 00022690
00120 C***************************************************************** 00022700
00121 CLNUM = 2 00022710
00122 CLFST = 2 00022720
00123 C***************************************************************** 00022730
00124 C * 00022740
00125 C NARO IS 1 FOR THE NARROW OUTPUT OPTION, 0 FOR WIDE. * 00022750
00126 C * 00022760
00127 C TYPE IS SET TO DENOTE PRINT OR PLOT, 12 OR 13. * 00022770
00128 C * 00022780
00129 C VMAX, THE MAXIMUM NUMBER OF VARIABLES ALLOWED, IS SET TO * 00022790
00130 C 10 FOR WIDE OUTPUT, 5 FOR A NARROW PRINT, AND 6 FOR A * 00022800
00131 C NARROW PLOT. * 00022810
00132 C * 00022820
00133 C***************************************************************** 00022830
00134 TYPE = TOKEN(1) 00022840
00135 NARO = MOD(OPTNS/8,2) 00022850
00136 VMAX = 11 - NARO*(TYPE-8) 00022860
00137 C***************************************************************** 00022870
00138 C * 00022880
00139 C IVPRT WILL BE 0 FOR A REGULAR PLOT, * 00022890
00140 C AND 1 FOR AN INDEPENDENT VARIABLE PLOT. * 00022900
00141 C * 00022910
00142 C LOOP, THE CURRENT CHARACTER POSITION IN CDATA, IS SET TO 0.* 00022920
00143 C * 00022930
00144 C***************************************************************** 00022940
00145 IVPLT = 0 00022950
00146 LOOP = 0 00022960
00147 C***************************************************************** 00022970
00148 C * 00022980
00149 C EACH SEARCH FOR A NEW CLAUSE BEGINS HERE. * 00022990
00150 C * 00023000
00151 C * 00023010
00152 C CALL THE OUTPUT FIELD PROCESSOR TO GET THE BEGINNING AND * 00023020
00153 C END FIELDS FOR THIS CLAUSE. * 00023030
00154 C IF BGF(1) INDICATES THAT NDT30 FOUND NO VARIABLE, * 00023040
00155 C GO TO THE RETURN SECTION. * 00023050
00156 C THEN PROCESS THESE FIELDS BY CALLING THE OUTPUT VARIABLE * 00023060
00157 C PROCESSOR, AND IF THE CARD IS A PLOT CARD, THE PLOT * 00023070
00158 C CHARACTER PROCESSOR AND THE OUTPUT RANGE ANALYZER. * 00023080
00159 C * 00023090
00160 C***************************************************************** 00023100
00161 100 CALL NDT30 00023110
00162 IF (BGF(1) .LT. 0) GO TO 800 00023120
00163 CALL NDT31 00023130
00164 IF (TYPE .EQ. 12) GO TO 150 00023140
00165 CALL NDT32 00023150
00166 CALL NDT33 00023160
00167 C***************************************************************** 00023170
00168 C * 00023180
NDT09 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 C IF THE CLAUSE JUST PROCESSED WAS THE INDEPENDENT VARIABLE, * 00023190
00170 C GO TO THE RETURN SECTION. * 00023200
00171 C * 00023210
00172 C***************************************************************** 00023220
00173 150 IF (CLNUM .EQ. 1) GO TO 800 00023230
00174 C***************************************************************** 00023240
00175 C * 00023250
00176 C GO TO END OF DATA SECTION IF DMODE INDICATES END OF DATA. * 00023260
00177 C * 00023270
00178 C CHECK FOR AN AUTOPLOT OUTPUT CARD. * 00023280
00179 C * 00023290
00180 C***************************************************************** 00023300
00181 IF (CLNUM .GT. VMAX) GO TO 200 00023310
00182 IF (DMODE .GT. 0) GO TO 500 00023320
00183 IF (RUNNO .NE. 0) GO TO 175 00023330
00184 CALL NDT13(LOOP,724,2) 00023340
00185 GO TO 250 00023350
00186 C***************************************************************** 00023360
00187 C * 00023370
00188 C CHECK FOR MORE VARIABLES THAN PERMITTED. * 00023380
00189 C IF LESS THAN VMAX, SEARCH FOR A NEW CLAUSE. * 00023390
00190 C AN ERROR OCCURS IF CLNUM GREATER THAN VMAX. * 00023400
00191 C * 00023410
00192 C***************************************************************** 00023420
00193 175 CLNUM = CLNUM + 1 00023430
00194 GO TO 100 00023440
00195 200 CALL NDT13(LOOP,6*NARO+711,2) 00023450
00196 C***************************************************************** 00023460
00197 C * 00023470
00198 C THE END OF THE CARD HAS NOT OCCURED, SO * 00023480
00199 C SEARCH FOR INDEPENDENT VARIABLE. * 00023490
00200 C * 00023500
00201 C A DOUBLE SLASH DENOTES AN INDEPENDENT VARIABLE. * 00023510
00202 C SINCE A PRINT IS NOT ALLOWED TO HAVE AN INDEPENDENT VARIBLE* 00023520
00203 C DO NOT LOOK FOR ONE. * 00023530
00204 C * 00023540
00205 C***************************************************************** 00023550
00206 250 IF (TYPE .EQ. 12) GO TO 500 00023560
00207 300 LOOP = LOOP + 1 00023570
00208 IF (CDATA(LOOP) .EQ. SLASH) GO TO 400 00023580
00209 IF (CDATA(LOOP) .EQ. BLANK) GO TO 500 00023590
00210 GO TO 300 00023600
00211 400 IF (CDATA(LOOP+1) .NE. SLASH) GO TO 300 00023610
00212 C***************************************************************** 00023620
00213 C * 00023630
00214 C IF AN INDEPENDENT VARIABLE IS FOUND, SET DMODE TO * 00023640
00215 C INDEPENDENT VARIABLE MODE. * 00023650
00216 C * 00023660
00217 C***************************************************************** 00023670
00218 DMODE = 2 00023680
00219 LOOP = LOOP + 1 00023690
00220 C***************************************************************** 00023700
00221 C * 00023710
00222 C END OF CARD * 00023720
00223 C * 00023730
00224 C * 00023740
NDT09 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 C SET VARCT TO THE NUMBER OF VARIABLES. * 00023750
00226 C IF IN INDEPENDENT VARIABLE MODE, SEARCH FOR A CLAUSE. * 00023760
00227 C * 00023770
00228 C***************************************************************** 00023780
00229 500 VARCT = CLNUM 00023790
00230 SRCNT = SRCNT - 1 00023800
00231 IF (DMODE .LE. 1) GO TO 600 00023810
00232 CLNUM = 1 00023820
00233 GO TO 100 00023830
00234 C***************************************************************** 00023840
00235 C * 00023850
00236 C TIME IS THE DEFAULT FOR INDEPENDENT VARIABLE, * 00023860
00237 C FILL IN THE NAME, RUN NO. AND VAR NO. IN OUTPT FOR TIME. * 00023870
00238 C * 00023880
00239 C***************************************************************** 00023890
00240 600 DO 700 XCHAR = 1,8 00023900
00241 700 OUTPT(XCHAR+3) = TIME(XCHAR) 00023910
00242 VNUM(1) = 12 00023920
00243 FLAG(1) = 13 00023930
00244 RUN(1) = 1 00023940
00245 C***************************************************************** 00023950
00246 C * 00023960
00247 C ASSIGN ANY PLOT CHARACTER DEFAULTS BY CALLING THE * 00023970
00248 C PLOT CHARACTER DEFAULT ASSIGNMENT ROUTINE. * 00023980
00249 C * 00023990
00250 C***************************************************************** 00024000
00251 800 IF (RUNNO .NE. 0) CALL NDT34 00024010
00252 C***************************************************************** 00024020
00253 C * 00024030
00254 C RETURN TO NDT01 * 00024040
00255 C * 00024050
00256 C***************************************************************** 00024060
00257 RETURN 00024070
00258 END 00024090
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OUTPT +1462 VARCT +1462 CDATA +1222 OPTNS +12
SLASH +324 BLANK +251 TYPE +1463 RUNNO +1464 VNUM +1615
LOW +1630 HIGH +1656 FLAG +1704 IVPLT +1717 SRCNT +1743
RUN +1744 CHAR +1757 CFLAG +1771 DMODE +1772 RMODE +1773
SMODE +1774 LOOP +1775 CLNUM +1776 BGF +1777 NDF +2003
SRNUM +2015 CLFST +2016 VMAX +2020 SFLAG +2017
NDT09 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
SUBPROGRAMS CALLED
NDT13 MOD. NDT31 NDT30 NDT34 NDT33
NDT32
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
NARO 1 XCHAR 2 .S0002 3 .S0001 4 .S0000 5
TIME 6
TEMPORARIES
.A0016 16 .Q0000 17
BGF 73# 84# 162
BLANK 73# 88# 209
CARD1 67# 76#
CARD2 67# 76#
CDATA 71# 79# 208 209 211
CFLAG 71# 79#
CHAR 71# 79#
CLFST 73# 84# 122#
CLNUM 73# 84# 121# 173 181 193 193# 229 232#
CRSET 67# 76# 88#
DEF 67# 76# 79#
DMODE 73# 84# 112# 182 218# 231
EQCHN 67# 76#
ERROR 67# 76#
FCTN 67# 76#
FLAG 71# 79# 243#
HIGH 66# 79#
IVPLT 71# 79# 145#
LITBL 65# 76#
LOOP 73# 84# 146# 184 184# 195 195# 207 207# 208 209 211 219 219#
LOW 66# 79#
MOD. 135
NARO 73# 135# 136 195
NDF 73# 84#
NDT09 7#
NDT13 184 195
NDT30 161
NDT31 163
NDT32 165
NDT33 166
NDT34 251
OBJCD 67# 76# 79#
OPER 67# 76# 88#
OPTNS 73# 84# 135
OUTPT 71# 79# 84# 89# 109# 111# 241#
PTRS 67# 76# 84#
RMAX 65# 76#
RMIN 65# 76#
RMODE 73# 84#
RUN 71# 79# 244#
RUNNO 71# 79# 183 251
SFLAG 73# 89#
SLASH 73# 88# 208 211
SMODE 73# 84# 113#
SRCNT 71# 79# 114# 230 230#
SRNUM 73# 84#
SUBSC 67# 76#
SYM 67# 76#
SYMTB 67# 76#
TIME 73# 90# 241
TITLE 67# 76#
TMAP 67# 76#
TOKEN 67# 76# 134
TYPCT 67# 76#
TYPE 71# 79# 134# 136 164 206
VARCT 71# 79# 229#
VMAX 73# 84# 136# 181
VNUM 71# 79# 242#
XCHAR 73# 108# 109 110# 111 240# 241
XREF 67# 76#
100P 161# 194 233
150P 164 173#
175P 183 193#
200P 181 195#
250P 185 206#
300P 207# 210 211
400P 208 211#
500P 182 206 209 229#
50P 108 109#
600P 231 240#
60P 110 111#
700P 240 241#
800P 162 173 251#
NDT09 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00024100
00002 C * 00024110
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00024120
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00024130
00005 C * 00024140
00006 C THIS PROGRAM STORES THE MACRO DEFINITION BUFFER BUILT BY * 00024150
00007 C NDT39 ONTO THE SPECIFIED DISK RECORD. * 00024160
00008 C * 00024170
00009 C***************************************************************** 00024180
00010 SUBROUTINE NDT10 00024190
00011 REAL*8 RMIN,RMAX,LITBL(1024) 00024200
00012 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00024210
00013 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00024220
00014 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00024230
00015 3SYMTB(5,512) 00024240
00016 INTEGER REC,DUPFG,DISK,MAC1(80),MAC2(80) 00024250
00017 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00024260
00018 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00024270
00019 2SYMTB,LITBL 00024280
00020 EQUIVALENCE (DISK,PTRS(3)),(MAC1(1),DEF(1)), 00024290
00021 1(MAC2(1),XREF(1)) 00024300
00022 C***************************************************************** 00024310
00023 C * 00024320
00024 C SET DUPFG TO 1 SO THAT NDT39 CHECKS FOR DUPLICATE ARGUMENTS* 00024330
00025 C CALL NDT39 TO BUILD BUFFER. IF REC IS RETURNED AS 0, THEN * 00024340
00026 C THE MACRO WAS ALREADY DEFINED AND NO NEW RECORD SHOULD * 00024350
00027 C BE WRITTEN. * 00024360
00028 C * 00024370
00029 C***************************************************************** 00024380
00030 DUPFG = 1 00024390
00031 CALL NDT39 (REC, DUPFG) 00024400
00032 IF (REC .EQ. 0) GO TO 100 00024410
00033 WRITE (DISK'REC) MAC1 00024420
00034 REC = REC + 1 00024430
00035 WRITE (DISK'REC) MAC2 00024440
00036 100 RETURN 00024450
00037 END 00024470
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 DISK +6 MAC1 +1462 MAC2 +1602
NDT10 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
SUBPROGRAMS CALLED
NDT39
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
DUPFG 1 REC 2
TEMPORARIES
.A0016 3
CARD1 12# 17#
CARD2 12# 17#
CRSET 12# 17#
DEF 12# 17# 20#
DISK 16# 20# 33 35
DUPFG 16# 30# 31 31#
EQCHN 12# 17#
ERROR 12# 17#
FCTN 12# 17#
LITBL 11# 17#
MAC1 16# 20# 33
MAC2 16# 20# 35
NDT10 10#
NDT39 31
OBJCD 12# 17#
OPER 12# 17#
PTRS 12# 17# 20#
REC 16# 31 31# 32 33 34 34# 35
RMAX 11# 17#
RMIN 11# 17#
SUBSC 12# 17#
SYM 12# 17#
SYMTB 12# 17#
TITLE 12# 17#
TMAP 12# 17#
TOKEN 12# 17#
TYPCT 12# 17#
XREF 12# 17# 20#
100P 32 36#
NDT10 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00024480
00002 C * 00024490
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00024500
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00024510
00005 C * 00024520
00006 C***************************************************************** 00024530
00007 SUBROUTINE NDT11 00024540
00008 C***************************************************************** 00024550
00009 C * 00024560
00010 C DEF CARD PROCESSOR * 00024570
00011 C * 00024580
00012 C * 00024590
00013 C THIS PROGRAM PROCESSES DEF CARDS. * 00024600
00014 C THE DEF CARD, WHICH WILL BE USED ONLY WHEN THE DOCUMENTER * 00024610
00015 C OPTION IS IN EFFECT, CONTAINS A DEFINITION FOR A VARIABLE. * 00024620
00016 C * 00024630
00017 C THE DEFINITION FOR EACH VARIABLE IS PUT INTO THE DEF * 00024640
00018 C ARRAY, WHICH IS THEN WRITTEN OUT TO DISK. * 00024650
00019 C * 00024660
00020 C***************************************************************** 00024670
00021 REAL*8 RMIN,RMAX,LITBL(1024) 00024680
00022 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00024690
00023 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00024700
00024 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00024710
00025 3SYMTB(5,512) 00024720
00026 INTEGER CDATA(144),DASH(3),BLANK,POINT,DOCBT,CDST1,PGMCT, 00024730
00027 1DISK,LOOP,RTC,PNTR,XCHAR,LENTH,POS,RECNO,BUFFR(5),TOKPT 00024740
00028 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00024750
00029 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00024760
00030 2SYMTB,LITBL 00024770
00031 EQUIVALENCE (CDATA(1),OBJCD(1)),(PGMCT,PTRS(22)), 00024780
00032 1(DISK,PTRS(3)),(DOCBT,SYM(12)),(BLANK,CRSET(1)), 00024790
00033 2(CDST1,CDATA(142)),(RECNO,SYM(15)),(POINT,OPER(1)), 00024800
00034 3(TOKPT,TOKEN(3)) 00024810
00035 DATA DASH /' ','-',' '/ 00024820
00036 C***************************************************************** 00024830
00037 C * 00024840
00038 C BEFORE THE VARIABLE SYNTAX CHECKER CAN BE CALLED, THE * 00024850
00039 C STARTING AND STOPPING ADDRESSES OF THE VARIABLE MUST BE * 00024860
00040 C DETERMINED. ON A DEF CARD, SUBSCRIPTING IS NOT ALLOWED. * 00024870
00041 C * 00024880
00042 C BLANK OUT DEF ARRAY. * 00024890
00043 C * 00024900
00044 C***************************************************************** 00024910
00045 DO 50 XCHAR = 1, 80 00024920
00046 50 DEF(XCHAR) = BLANK 00024930
00047 LOOP = 0 00024940
00048 100 LOOP = LOOP + 1 00024950
00049 IF (CDATA(LOOP) .EQ. BLANK) GO TO 200 00024960
00050 IF (CDATA(LOOP) .NE. POINT) GO TO 100 00024970
00051 CALL NDT13(LOOP, 530, 1) 00024980
00052 C***************************************************************** 00024990
00053 C * 00025000
00054 C CHECK THE VARIABLE FOR PROPER SYNTAX. IF IT IS ILLEGAL, * 00025010
00055 C RETURN. THEN CALL THE HASH ENTRY ROUTINE TO GET ITS * 00025020
00056 C TOKEN. * 00025030
NDT11 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C * 00025040
00058 C***************************************************************** 00025050
00059 200 CALL NDT24(1, LOOP-1, RTC) 00025060
00060 IF (RTC .GT. 0) GO TO 1400 00025070
00061 CALL NDT40(BUFFR) 00025080
00062 CALL NDT37(BUFFR,PNTR) 00025090
00063 TOKEN(4) = PNTR - 1 00025100
00064 TOKPT = 4 00025110
00065 C***************************************************************** 00025120
00066 C * 00025130
00067 C THE DOCUMENTER BIT, DOCBT, WILL BE 1 IF A DEF CARD FOR * 00025140
00068 C THIS VARIABLE HAS EXISTED PREVIOUSLY. IF SO, RETURN. * 00025150
00069 C * 00025160
00070 C***************************************************************** 00025170
00071 IF (DOCBT .EQ. 0) GO TO 300 00025180
00072 CALL NDT14(0,152,2) 00025190
00073 GO TO 1400 00025200
00074 C***************************************************************** 00025210
00075 C * 00025220
00076 C SEARCH THE CARD FOR THE COMMENT FIELD. IT BEGINS WITH * 00025230
00077 C THE FIRST NON-BLANK CHARACTER AFTER THE FIRST BLANK * 00025240
00078 C AFTER THE VARIABLE. * 00025250
00079 C * 00025260
00080 C***************************************************************** 00025270
00081 300 DO 400 LOOP = CDST1, 72 00025280
00082 IF (CARD1(LOOP) .EQ. BLANK) GO TO 500 00025290
00083 400 CONTINUE 00025300
00084 GO TO 700 00025310
00085 500 DO 600 LOOP1 = LOOP, 72 00025320
00086 IF (CARD1(LOOP1) .NE. BLANK) GO TO 800 00025330
00087 600 CONTINUE 00025340
00088 C***************************************************************** 00025350
00089 C * 00025360
00090 C THE SEARCH FAILED; NO DEFINITION EXISTS FOR THIS VARIABLE.* 00025370
00091 C * 00025380
00092 C***************************************************************** 00025390
00093 700 CALL NDT14(0, 153, 2) 00025400
00094 GO TO 1400 00025410
00095 C***************************************************************** 00025420
00096 C * 00025430
00097 C THE DEFINTION FIELD HAS BEEN FOUND. SET THE DOCBT, AND * 00025440
00098 C BUILD THE DEF ARRAY. * 00025450
00099 C * 00025460
00100 C***************************************************************** 00025470
00101 800 DOCBT = 1 00025480
00102 DO 900 XCHAR = 1, 6 00025490
00103 900 DEF(XCHAR) = SYM(XCHAR) 00025500
00104 DO 1000 XCHAR = 1, 3 00025510
00105 1000 DEF(XCHAR+6) = DASH(XCHAR) 00025520
00106 LENTH = 73 - LOOP1 00025530
00107 DO 1100 XCHAR = 1, LENTH 00025540
00108 POS = XCHAR + LOOP1 - 1 00025550
00109 1100 DEF(XCHAR+9) = CARD1(POS) 00025560
00110 C***************************************************************** 00025570
00111 C * 00025580
00112 C IF THIS IS THE FIRST OCCURRENCE OF THIS VARIABLE, WRITE * 00025590
NDT11 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C OUT THE DEF ARRAY TO THE DISK AND SET THE RECORD NUMBER * 00025600
00114 C (RECNO) TO THIS LOCATION. IF THIS VARIABLE WAS ALREADY * 00025610
00115 C DEFINED, WRITE THE DEF ARRAY TO THE OLD LOCATION. * 00025620
00116 C * 00025630
00117 C***************************************************************** 00025640
00118 IF (RECNO .EQ. 0) GO TO 1200 00025650
00119 WRITE (DISK'RECNO+6) DEF 00025660
00120 GO TO 1300 00025670
00121 1200 WRITE (DISK'PGMCT+7) DEF 00025680
00122 RECNO = PGMCT + 1 00025690
00123 C***************************************************************** 00025700
00124 C * 00025710
00125 C PACK THE SYMBOL TABLE INFORMATION WHENCE IT CAME. * 00025720
00126 C * 00025730
00127 C***************************************************************** 00025740
00128 1300 CALL NDT40(SYMTB(1,PNTR)) 00025750
00129 C***************************************************************** 00025760
00130 C * 00025770
00131 C RETURN 00025780
00132 C * 00025790
00133 C***************************************************************** 00025800
00134 1400 RETURN 00025810
00135 END 00025830
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 CDATA +1222 PGMCT +31 DISK +6 DOCBT +344
BLANK +251 RECNO +347 POINT +320 TOKPT +524 CDST1 +1437
SUBPROGRAMS CALLED
NDT13 NDT40 NDT24 NDT14 NDT37
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
*LOOP1 1 XCHAR 2 BUFFR 3 PNTR 10 LOOP 11
RTC 12 POS 13 .S0005 14 .S0004 15 .S0003 16
LENTH 17 .S0002 20 .S0001 21 .S0000 22 DASH 23
TEMPORARIES
.A0016 26 .Q0000 27
BLANK 26# 31# 46 49 82 86
BUFFR 26# 61 61# 62 62#
CARD1 22# 28# 82 86 109
CARD2 22# 28#
CDATA 26# 31# 49 50
CDST1 26# 31# 81
CRSET 22# 28# 31#
DASH 26# 35# 105
DEF 22# 28# 46# 103# 105# 109# 119 121
DISK 26# 31# 119 121
DOCBT 26# 31# 71 101#
EQCHN 22# 28#
ERROR 22# 28#
FCTN 22# 28#
LENTH 26# 106# 107
LITBL 21# 28#
LOOP 26# 47# 48 48# 49 50 51 51# 59 81# 82 85
LOOP1 85# 86 106 108
NDT11 7#
NDT13 51
NDT14 72 93
NDT24 59
NDT37 62
NDT40 61 128
OBJCD 22# 28# 31#
OPER 22# 28# 31#
PGMCT 26# 31# 121 122
PNTR 26# 62 62# 63 128
POINT 26# 31# 50
POS 26# 108# 109
PTRS 22# 28# 31#
RECNO 26# 31# 118 119 122#
RMAX 21# 28#
RMIN 21# 28#
RTC 26# 59 59# 60
SUBSC 22# 28#
SYM 22# 28# 31# 103
SYMTB 22# 28# 128 128#
TITLE 22# 28#
TMAP 22# 28#
TOKEN 22# 28# 31# 63#
TOKPT 26# 31# 64#
TYPCT 22# 28#
XCHAR 26# 45# 46 102# 103 104# 105 107# 108 109
XREF 22# 28#
1000P 104 105#
100P 48# 50
1100P 107 109#
1200P 118 121#
1300P 120 128#
1400P 60 73 94 134#
200P 49 59#
300P 71 81#
400P 81 83#
500P 82 85#
50P 45 46#
600P 85 87#
700P 84 93#
800P 86 101#
900P 102 103#
NDT11 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00025840
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00025850
00003 C 00025860
00004 C 00025870
00005 SUBROUTINE NDT12 (CODE) 00025880
00006 REAL*8 RMIN,RMAX,LITBL(1024) 00025890
00007 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00025900
00008 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00025910
00009 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00025920
00010 3SYMTB(5,512) 00025930
00011 INTEGER CODE 00025940
00012 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00025950
00013 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00025960
00014 2SYMTB,LITBL 00025970
00015 WRITE(6,100) CODE 00025980
00016 100 FORMAT(' SYSTEM ERROR:',I2) 00025990
00017 STOP 00026000
00018 END 00026010
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220
SUBPROGRAMS CALLED
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
CODE 1
TEMPORARIES
.A0016 7
CARD1 7# 12#
CARD2 7# 12#
CODE 5# 11# 15
CRSET 7# 12#
DEF 7# 12#
EQCHN 7# 12#
ERROR 7# 12#
FCTN 7# 12#
LITBL 6# 12#
NDT12 5#
OBJCD 7# 12#
OPER 7# 12#
PTRS 7# 12#
RMAX 6# 12#
RMIN 6# 12#
SUBSC 7# 12#
SYM 7# 12#
SYMTB 7# 12#
TITLE 7# 12#
TMAP 7# 12#
TOKEN 7# 12#
TYPCT 7# 12#
XREF 7# 12#
100P 15 16#
NDT12 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00026020
00002 C PROGRAM AUTHOR - GARY PELKEY 00026030
00003 C 00026040
00004 C 00026050
00005 SUBROUTINE NDT13 (POS,CODE,SEVER) 00026060
00006 C 00026070
00007 C 00026080
00008 C THIS ROUTINE PROCESSES ERRORS IN THE LEXICAL PHASE. THE 00026090
00009 C ONLY DIFFERENCE BETWEEN THIS ROUTINE AND NDT14 IS NDT14 00026100
00010 C REQUIRES THE FIRST ARGUMENT (DESIGNATING POSITION ON THE 00026110
00011 C CARD WHERE THE ERROR OCCURED), TO BE IN THE PACKED FORM 00026120
00012 C COMPATIBLE WITH AN ERROR ARRAY ENTRY. THEREFORE, THIS ROUTINE 00026130
00013 C SIMPLY CALLS NDT23 TO PACK THE POSITION IN THE COMPATIBLE 00026140
00014 C FORM AND THEN CALLS NDT14 TO FINISH. 00026150
00015 C 00026160
00016 C 00026170
00017 REAL*8 RMIN,RMAX,LITBL(1024) 00026180
00018 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00026190
00019 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00026200
00020 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00026210
00021 3SYMTB(5,512) 00026220
00022 INTEGER POS,CODE,SEVER,PNT 00026230
00023 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00026240
00024 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00026250
00025 2SYMTB,LITBL 00026260
00026 CALL NDT23 (POS,PNT) 00026270
00027 CALL NDT14 (PNT,CODE,SEVER) 00026280
00028 RETURN 00026290
00029 END 00026310
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220
SUBPROGRAMS CALLED
NDT14 NDT23
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
POS 1 PNT 2 SEVER 3 CODE 4
TEMPORARIES
.A0016 5
CARD1 18# 23#
CARD2 18# 23#
CODE 5# 22# 27 27#
CRSET 18# 23#
DEF 18# 23#
EQCHN 18# 23#
ERROR 18# 23#
FCTN 18# 23#
LITBL 17# 23#
NDT13 5#
NDT14 27
NDT23 26
OBJCD 18# 23#
OPER 18# 23#
PNT 22# 26 26# 27 27#
POS 5# 22# 26 26#
PTRS 18# 23#
RMAX 17# 23#
RMIN 17# 23#
SEVER 5# 22# 27 27#
SUBSC 18# 23#
SYM 18# 23#
SYMTB 18# 23#
TITLE 18# 23#
TMAP 18# 23#
TOKEN 18# 23#
TYPCT 18# 23#
XREF 18# 23#
NDT13 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00026320
00002 C PROGRAM AUTHOR - GARY PELKEY 00026330
00003 C 00026340
00004 C 00026350
00005 SUBROUTINE NDT14 (LOC,CODE,SEVER) 00026360
00006 C 00026370
00007 C 00026380
00008 C THIS ROUTINE PROCESSES ALL CONTEXT ERRORS. THE INCOMING 00026390
00009 C ARGUMENT LOC CONTAINS INFORMATION AS TO WHICH CARD AND 00026400
00010 C WHICH POSITION ON THE CARD THE ERROR OCCURED; ALL IN A FORM 00026410
00011 C COMPATIBLE WITH THE FIRST WORD OF AN ERROR ENTRY. EACH 00026420
00012 C ERROR ENTRY CONSISTS OF 2 CONSECUTIVE WORDS IN THE ERROR 00026430
00013 C ARRAY STARTING WITH ERROR(3). ERROR(2) OR ERRPT POINTS TO 00026440
00014 C THE LAST WORD USED IN THE ERROR ARRAY. IN ADDITION TO THE 00026450
00015 C ABOVE, THE FIRST WORD OF AN ERROR ENTRY CONTAIN INFORMATION 00026460
00016 C AS TO THE SEVERITY OF THE ERROR. THE SECOND WORD IS A CODE 00026470
00017 C USED TO SPECIFY WHICH ERROR HAS OCCURED. PROCESSING OF ERRORS 00026480
00018 C IS SKIPPED IF ERRPT IS 80 OR IF THE INCOMING ERROR IS A 00026490
00019 C WARNING AND THE NOWARN OPTION HAS BEEN SPECIFIED. EQCND AND 00026500
00020 C PGMCD ARE UPDATED IF THE ERROR IS OF HIGHER SEVERITY THAN 00026510
00021 C ANY IN THIS EQUATION THUS FAR OR IN THE PROGRAM THUS FAR, 00026520
00022 C RESPECTIVLY. WARNS, ERRS, AND CRITS ARE INCRIMENTED DEPENDING 00026530
00023 C ON WHETHER THE ERROR WAS A WARNING, ERROR OR CRITICAL. 00026540
00024 C 00026550
00025 C 00026560
00026 REAL*8 RMIN,RMAX,LITBL(1024) 00026570
00027 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00026580
00028 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00026590
00029 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00026600
00030 3SYMTB(5,512) 00026610
00031 INTEGER ERRPT,LOC,SEVER,CODE,EQNCD,PGMCD,DINOG(3),OPTNS,PSSWT 00026620
00032 INTEGER BADNS 00026630
00033 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00026640
00034 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00026650
00035 2SYMTB,LITBL 00026660
00036 EQUIVALENCE (ERRPT,ERROR(2)),(EQNCD,ERROR(1)),(OPTNS,PTRS(7)) 00026670
00037 EQUIVALENCE (PGMCD,PTRS(15)),(DINOG(1),PTRS(11)) 00026680
00038 EQUIVALENCE (PSSWT,PTRS(10)) 00026690
00039 IF((MOD(OPTNS/256,2).EQ.1.AND.SEVER.EQ.1).OR.ERRPT.EQ.80)GOTO 100000026700
00040 BADNS=SEVER 00026710
00041 IF(PSSWT.EQ.5.AND.BADNS.EQ.3) BADNS=2 00026720
00042 ERROR(ERRPT+1)=LOC+2*BADNS 00026730
00043 ERROR(ERRPT+2)=CODE 00026740
00044 ERRPT=ERRPT+2 00026750
00045 IF(BADNS.GT.EQNCD) EQNCD=BADNS 00026760
00046 IF(BADNS.GT.PGMCD) PGMCD=BADNS 00026770
00047 DINOG(BADNS)=DINOG(BADNS)+1 00026780
00048 1000 RETURN 00026790
00049 END 00026810
EQUIVALENCED VARIABLES
NDT14 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 ERRPT +1103 EQNCD +1102 OPTNS +12 PGMCD +22
DINOG +16 PSSWT +15
SUBPROGRAMS CALLED
MOD.
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
LOC 1 BADNS 2 SEVER 3 CODE 4
TEMPORARIES
.A0016 5
BADNS 32# 40# 41 41# 42 45 46 47
CARD1 27# 33#
CARD2 27# 33#
CODE 5# 31# 43
CRSET 27# 33#
DEF 27# 33#
DINOG 31# 37# 47# 47
EQCHN 27# 33#
EQNCD 31# 36# 45 45#
ERROR 27# 33# 36# 42# 43#
ERRPT 31# 36# 39 42 43 44 44#
FCTN 27# 33#
LITBL 26# 33#
LOC 5# 31# 42
MOD. 39
NDT14 5#
OBJCD 27# 33#
OPER 27# 33#
OPTNS 31# 36# 39
PGMCD 31# 37# 46 46#
PSSWT 31# 38# 41
PTRS 27# 33# 36# 37# 38#
RMAX 26# 33#
RMIN 26# 33#
SEVER 5# 31# 39 40
SUBSC 27# 33#
SYM 27# 33#
SYMTB 27# 33#
TITLE 27# 33#
TMAP 27# 33#
TOKEN 27# 33#
TYPCT 27# 33#
XREF 27# 33#
1000P 39 48#
NDT14 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00026820
00002 C PROGRAM AUTHOR - GARY PELKEY 00026830
00003 C 00026840
00004 C 00026850
00005 SUBROUTINE NDT15 00026860
00006 C 00026870
00007 C 00026880
00008 C THIS PROGRAM PROCESSES TABLE STATEMENTS. TABLES ARE HANDLED 00026890
00009 C BY LOADING THE ELEMENTS SEQUENTIALLY INTO THE LITERAL TABLE 00026900
00010 C AFTER A POINTER TO THE ENTRY AND ONE WORD SPECIFYING THE 00026910
00011 C NUMBER OF ELEMENTS IN THE TABLE. TWO INSTRUCTIONS OF OBJECT 00026920
00012 C CODE ARE THEN PRODUCED TO LOAD THE -POINTER AND STORE IT 00026930
00013 C INTO THE VNUM OF THE TABLE VARIABLE. IN THIS WAY, AFTER 00026940
00014 C RELOCATION, THE TABLE EXECUTION INSTRUCTIONS CAN FIND THEIR 00026950
00015 C WAY BACK TO THE TABLE DATA THAT THEY MUST OPERATE ON. 00026960
00016 C 00026970
00017 C 00026980
00018 REAL*8 RMIN,RMAX,LITBL(1024) 00026990
00019 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00027000
00020 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00027010
00021 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00027020
00022 3SYMTB(5,512) 00027030
00023 INTEGER COUNT,SAVE,LITCT,POS,TOKPT,START,CRSMT,OBJPT,EQPOS, 00027040
00024 1PNTR,PSSWT 00027050
00025 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00027060
00026 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00027070
00027 2SYMTB,LITBL 00027080
00028 EQUIVALENCE (LITCT,PTRS(18)),(TOKPT,TOKEN(3)),(CRSMT,TMAP(1)) 00027090
00029 EQUIVALENCE (OBJPT,OBJCD(1)),(PSSWT,PTRS(10)),(EQPOS,TMAP(3)) 00027100
00030 C 00027110
00031 C 00027120
00032 C COUNT IS THE NUMBER OF NUMERICS ON THE RIGHT OF THE '='. 00027130
00033 C SAVE SAVES THE NEXT AVAILABLE ADDRESS IN THE LITBL FOR 00027140
00034 C FUTURE REFERENCE. LITCT IS BUMPED BY 2 TO RESERVE 2 LOC- 00027150
00035 C ATIONS IN LITBL BEFORE THE ELEMENTS OF THIS TABLE CARD ARE 00027160
00036 C ENTERED. NDT08 IS CALLED TO BREAK THE CARD INTO TOKENS AND 00027170
00037 C TO ENTER THE ENTRYS INTO THE LITBL. 00027180
00038 C 00027190
00039 C 00027200
00040 COUNT=0 00027210
00041 SAVE=LITCT+1 00027220
00042 LITCT=LITCT+2 00027230
00043 CALL NDT08 00027240
00044 C 00027250
00045 C 00027260
00046 C THE NEWLY FORMED TOKENS ARE SEARCHED FOR AN EQUALS SIGN. 00027270
00047 C IF NOT FOUND, THE ASSOCIATED ERRORS HAVE ALREADY BEEN 00027280
00048 C FLAGGED AND THERE IS NOTHING MORE FOR THIS ROUTINE TO DO. 00027290
00049 C OTHERWISE THE TOKENS FROM POS+1 TO TOKPT SEARCHING AND 00027300
00050 C COUNTING THE LITERALS. COMMAS ARE IGNORED UNLESS THEY 00027310
00051 C BEGIN OR END THIS STRING OR UNLESS THEY ARE CONSECUTIVE. 00027320
00052 C ALL OTHER TOKEN TYPES ARE FLAGGED. 00027330
00053 C 00027340
00054 C 00027350
00055 IF(EQPOS.EQ.0) GO TO 900 00027360
00056 POS=EQPOS 00027370
NDT15 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 150 START=POS+1 00027380
00058 200 POS=POS+1 00027390
00059 IF(POS.GT.TOKPT) GO TO 600 00027400
00060 IF(TOKEN(POS).GT.0) GO TO 300 00027410
00061 C 00027420
00062 C 00027430
00063 C A LITERAL HAS BEEN FOUND. COUNT IS INCREMENTED AND A NEW 00027440
00064 C LITERAL IS SEARCHED FOR. 00027450
00065 C 00027460
00066 C 00027470
00067 COUNT=COUNT+1 00027480
00068 GO TO 200 00027490
00069 300 IF(TOKEN(POS).EQ.28681) GO TO 400 00027500
00070 C 00027510
00071 C 00027520
00072 C AN OPERATOR, VARIABLE, OR FUNCTION HAS BEEN ENCOUNTERED. 00027530
00073 C IT IS FLAGGED AND THE SEARCH CONTINUES. 00027540
00074 C 00027550
00075 C 00027560
00076 CALL NDT14 (TMAP(POS),804,2) 00027570
00077 GO TO 200 00027580
00078 C 00027590
00079 C 00027600
00080 C A COMMA HAS BEEN ENCOUNTERED. IT IS FLAGGED AS UNNECESSARY 00027610
00081 C IF IT STARTS OR STOPS THIS STRING (IT DELIMITS NOTHING), OR 00027620
00082 C IF IT IS FOLLOWED BY ANOTHER COMMA (CONSECUTIVE DELIMETER). 00027630
00083 C 00027640
00084 C 00027650
00085 400 IF(POS.NE.START.AND.POS.NE.TOKPT) GO TO 500 00027660
00086 CALL NDT14 (TMAP(POS),718,1) 00027670
00087 GO TO 200 00027680
00088 500 IF(TOKEN(POS+1).NE.28681) GO TO 200 00027690
00089 CALL NDT14 (TMAP(POS),701,1) 00027700
00090 POS=POS+1 00027710
00091 GO TO 200 00027720
00092 C 00027730
00093 C 00027740
00094 C IF NO LITERALS WERE FOUND, THE CARD IS BOMBED AND THIS 00027750
00095 C ROUTINE RETURNS. IF ONLY 1 WAS FOUND, AN ERROR IS ISSUED 00027760
00096 C AND PROCESSING CONTINUES. 00027770
00097 C 00027780
00098 C 00027790
00099 600 IF(COUNT.GT.0) GO TO 700 00027800
00100 CALL NDT14 (0,802,3) 00027810
00101 GO TO 900 00027820
00102 700 IF(COUNT.EQ.1.AND.PSSWT.NE.5) CALL NDT14 (0,803,1) 00027830
00103 C 00027840
00104 C 00027850
00105 C THE TWO RESERVED WORDS OF LITBL ARE SET HERE. THE FIRST 00027860
00106 C SIMPLY POINTS TO THE SECOND AND THE SECOND CONTAINS THE 00027870
00107 C NUMBER OF ENTRIES IN THIS TABLE CARD. 00027880
00108 C 00027890
00109 C 00027900
00110 900 LITBL(SAVE+1)=COUNT 00027910
00111 LITBL(SAVE)=SAVE+1 00027920
00112 C 00027930
NDT15 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C 00027940
00114 C TWO INSTRUCTIONS OF OBJECT CODE ARE PRODUCED HERE: 00027950
00115 C L -SAVE 00027960
00116 C S VNUM (OF THIS TABLE VARIABLE) 00027970
00117 C THIS PREVENTS THE TABLE FROM BEING LOST DURING RELOCATION 00027980
00118 C AND PROVIDES A METHOD BY WHICH THE TABLE INSTRUCTION CAN 00027990
00119 C REFERENCE THE DATA. OBJECT CODE IS NOT PRODUCED IF IN RERUN 00028000
00120 C MODE. 00028010
00121 C 00028020
00122 C 00028030
00123 IF(PSSWT.EQ.5.OR.TOKEN(4).EQ.24576) GO TO 1000 00028040
00124 OBJPT=8 00028050
00125 OBJCD(3)=15 00028060
00126 OBJCD(4)=CRSMT 00028070
00127 OBJCD(5)=1 00028080
00128 OBJCD(6)=-SAVE 00028090
00129 OBJCD(7)=2 00028100
00130 PNTR=MOD(TOKEN(4),4096)+1 00028110
00131 CALL NDT41 (SYMTB(1,PNTR)) 00028120
00132 OBJCD(8)=SYM(14) 00028130
00133 1000 RETURN 00028140
00134 END 00028160
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 LITCT +25 TOKPT +524 CRSMT +1722 OBJPT +1222
PSSWT +15 EQPOS +1724
SUBPROGRAMS CALLED
MOD. NDT08 NDT14 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
SAVE 1 PNTR 2 POS 3 COUNT 4 .O0000 5
START 6
TEMPORARIES
.A0016 7 .Q0000 10
CARD1 19# 25#
CARD2 19# 25#
COUNT 23# 40# 67 67# 99 102 110
CRSET 19# 25#
CRSMT 23# 28# 126
DEF 19# 25#
EQCHN 19# 25#
EQPOS 23# 29# 55 56
ERROR 19# 25#
FCTN 19# 25#
LITBL 18# 25# 110# 111#
LITCT 23# 28# 41 42 42#
MOD. 130
NDT08 43
NDT14 76 86 89 100 102
NDT15 5#
NDT41 131
OBJCD 19# 25# 29# 125# 126# 127# 128# 129# 132#
OBJPT 23# 29# 124#
OPER 19# 25#
PNTR 23# 130# 131
POS 23# 56# 57 58 58# 59 60 69 76 85 86 88 89 90
90#
PSSWT 23# 29# 102 123
PTRS 19# 25# 28# 29#
RMAX 18# 25#
RMIN 18# 25#
SAVE 23# 41# 110 111 128
START 23# 57# 85
SUBSC 19# 25#
SYM 19# 25# 132
SYMTB 19# 25# 131 131#
TITLE 19# 25#
TMAP 19# 25# 28# 29# 76 76# 86 86# 89 89#
TOKEN 19# 25# 28# 60 69 88 123 130
TOKPT 23# 28# 59 85
TYPCT 19# 25#
XREF 19# 25#
1000P 123 133#
150P 57#
200P 58# 68 77 87 88 91
300P 60 69#
400P 69 85#
500P 85 88#
600P 59 99#
700P 99 102#
900P 55 101 110#
NDT15 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00028170
00002 C * 00028180
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00028190
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00028200
00005 C * 00028210
00006 C THIS PROGRAM PRODUCES OBJECT CODE FOR EQUATIONS. * 00028220
00007 C * 00028230
00008 C***************************************************************** 00028240
00009 SUBROUTINE NDT16 00028250
00010 REAL*8 RMIN,RMAX,LITBL(1024) 00028260
00011 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00028270
00012 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00028280
00013 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00028290
00014 3SYMTB(5,512) 00028300
00015 INTEGER OPSTK(50),HISTK(50),VASTK(50),NEWOP,NEWHI,OBJPT,EQNCD 00028310
00016 INTEGER CRSMT,STYPE,TOKPT,VAPNT,OHPNT,FNON,PNEST,LAST,EQOCC,PNT 00028320
00017 INTEGER TOKE1,TOKE2,VNUM,NXTOP(10),NXTHI(10),NXLST(10),CKLST(10) 00028330
00018 INTEGER UMIN,FUNC,ACC,OPCOD,TEMP,BRNCH,OPRND,I,STARG,ARGNM,POS 00028340
00019 INTEGER COMMA,SA,VALCT,CBIT 00028350
00020 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00028360
00021 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00028370
00022 2SYMTB,LITBL 00028380
00023 EQUIVALENCE (OBJPT,OBJCD(1)),(EQNCD,ERROR(1)),(CRSMT,TMAP(1)), 00028390
00024 1(STYPE,TOKEN(1)),(TOKPT,TOKEN(3)),(VNUM,SYM(14)), 00028400
00025 2(I,BRNCH),(VASTK(1),XREF(1)),(CBIT,TOKEN(2)) 00028410
00026 EQUIVALENCE (VALCT,PTRS(20)) 00028420
00027 C***************************************************************** 00028430
00028 C * 00028440
00029 C OPSTK IS THE OPERATION STACK * 00028450
00030 C HISTK IS THE ASSOCIATED HIERARCHY STACK * 00028460
00031 C VASTK IS THE VARIABLE STACK * 00028470
00032 C NEWOP IS THE LATEST OPERATION ENCOUNTERED. * 00028480
00033 C NEWHI IS THE HIERARCHY OF THE NEW OPERATION. * 00028490
00034 C THE DATA AREAS HAVE VALUES FOR THEIR ELEMENTS WHICH ARE IN * 00028500
00035 C ONE TO ONE CORRESPONDENCE TO THE OPERS ARRAY. * 00028510
00036 C NXTOP CONTAINS A CODE FOR THE OPERATOR. * 00028520
00037 C NXTHI CONTAINS A HIERARCHY FOR THE OPERATOR. * 00028530
00038 C CKLST IS USED AS A COMPARISON FOR CONTEXT ANALYSIS. * 00028540
00039 C NXLST IS USED TO SET UP FOR FUTURE CONTEXT ANALYSIS. * 00028550
00040 C THE ASSOCIATION OF THESE ELEMENTS IS AS FOLLOWS: * 00028560
00041 C 1 - '.' 4 - '*' 7 - '(' 9 - ',' * 00028570
00042 C 2 - '+' 5 - '/' 8 - ')' 10 - 'EXP' * 00028580
00043 C 3 - '-' 6 - '=' * 00028590
00044 C UMIN REPRESENTS THE UNARY MINUS OPERATION * 00028600
00045 C FUNC REPRESENTS A PERFORM FUNCTION OPERATION * 00028610
00046 C ACC IS USED TO DENOTE A RESULT IN THE ACCUMULATOR. * 00028620
00047 C * 00028630
00048 C***************************************************************** 00028640
00049 DATA NXTOP /0,3,4,5,6,2,0,0,1,7/ 00028650
00050 DATA NXTHI /0,2,2,3,3,1,0,0,1,5/ 00028660
00051 DATA CKLST /0,2,2,1,1,3,0,0,1,2/ 00028670
00052 DATA NXLST /0,2,2,2,2,1,0,0,1,2/ 00028680
00053 DATA COMMA /1/, UMIN /8/, FUNC /9/, ACC /0/ 00028690
00054 C***************************************************************** 00028700
00055 C * 00028710
00056 C INITIALIZATION OCCURS BELOW: * 00028720
NDT16 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C OBJPT IS THE OBJCD BUFFER POINTER. * 00028730
00058 C NDT46 IS CALLED TO PLACE THE STATEMENT NUMBER IN OBJCD. * 00028740
00059 C OPSTK AND HISTK ARE SET TO INDICATE EQUATION START. * 00028750
00060 C OHPNT IS THE LENGTH OF OPSTK AND HISTK * 00028760
00061 C TEMP IS THE NUMBER OF TEMPORARY LOCATION ALLOCATED. * 00028770
00062 C FNON IS A FUNCTION NESTING COUNTER. * 00028780
00063 C VAPNT IS THE LENGTH OF THE VARIABLE STACK * 00028790
00064 C PNEST IS THE DEPTH OF PAREN NESTING. * 00028800
00065 C LAST IS THE TYPE OF THE LAST TOKEN ENCOUNTERED. * 00028810
00066 C 0 - NEXT TOKEN MUST BE OPERATION. * 00028820
00067 C 1 - LEFT PAREN OR COMMA, ALLOW UNARY - OPERATION. * 00028830
00068 C 2 - OPERATOR, NO OPERATORS MAY FOLLOW. * 00028840
00069 C EQOCC DENOTES THE OCCURRENCE OF DUPLICATE EQUAL SIGNS. * 00028850
00070 C PNT IS A POINTER TO THE CURRENT TOKEN. * 00028860
00071 C * 00028870
00072 C***************************************************************** 00028880
00073 OBJPT = 2 00028890
00074 CALL NDT46 (15, CRSMT) 00028900
00075 OPSTK(1) = 1 00028910
00076 HISTK(1) = 0 00028920
00077 OHPNT = 1 00028930
00078 FNON = 0 00028940
00079 VAPNT = 0 00028950
00080 PNEST = 0 00028960
00081 LAST = 2 00028970
00082 EQOCC = 1 00028980
00083 PNT = 3 00028990
00084 TEMP = 0 00029000
00085 C***************************************************************** 00029010
00086 C * 00029020
00087 C DETERMINE WHAT ACTION TO TAKE FOR NEXT TOKEN. * 00029030
00088 C SEPARATE TOKEN INTO TOKE1 AND TOKE2. TOKE1 INDICATES TOKEN * 00029040
00089 C TYPE. TOKE2 IS THE TOKEN POINTER. * 00029050
00090 C * 00029060
00091 C***************************************************************** 00029070
00092 100 PNT = PNT + 1 00029080
00093 IF (PNT .GT. TOKPT) GO TO 200 00029090
00094 TOKE1 = TOKEN(PNT) / 4096 00029100
00095 TOKE2 = MOD (TOKEN(PNT), 4096) 00029110
00096 C***************************************************************** 00029120
00097 C * 00029130
00098 C TOKEN IS AN OPERATOR. BRANCH TO THE APPROPRIATE OPERATOR * 00029140
00099 C ACTION ROUTINE. * 00029150
00100 C * 00029160
00101 C***************************************************************** 00029170
00102 IF (TOKE1 .EQ. 7) GO TO (100,400,400,700,700,500,800, 00029180
00103 11100,600,700), TOKE2 00029190
00104 C***************************************************************** 00029200
00105 C * 00029210
00106 C TOKEN IS NOT OPERATOR, THEREFORE IT SHOULD BE ENTERED INTO * 00029220
00107 C THE VARIABLE STACK. IF TOKEN IS NEGATIVE, SET VNUM TO * 00029230
00108 C TOKEN FOR NUMERIC LITERAL. * 00029240
00109 C * 00029250
00110 C***************************************************************** 00029260
00111 IF (TOKEN(PNT) .GE. 0) GO TO 125 00029270
00112 VNUM = TOKEN(PNT) 00029280
NDT16 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 GO TO 160 00029290
00114 C***************************************************************** 00029300
00115 C * 00029310
00116 C TOKEN INDICATES VARIABLE OR FUNCTION. ADD 1 TO TOKE1 TO * 00029320
00117 C OBTAIN APPROPRIATE INDEX FOR COMPUTED GO TO. TOKE1 VALUES * 00029330
00118 C ARE AS FOLLOWS: * 00029340
00119 C 1 - 5: VALID VARIABLES OF VARIOUS SUBSCRIPTS. * 00029350
00120 C 6: FUNCTION * 00029360
00121 C 7: INVALID VARIABLE * 00029370
00122 C IF INVALID VARIABLE OR FUNCTION, SET VNUM TO 4999. * 00029380
00123 C FOR FUNCTION, SET VNUM TO INDICATE BOTH FUNCTION OPCODE * 00029390
00124 C AND THE NUMBER OF REQUIRED SAVE AREAS, THEN INCREMENT BY * 00029400
00125 C 5000 FOR IDENTIFICATION IN VASTK. IF VALID VARIABLE, * 00029410
00126 C VNUM WILL BE SET IN UNPACK SUBROUTINE. AFTER VNUM IS * 00029420
00127 C DETERMINED, ENTER IT IN VASTK. ALSO CHECK FOR MISSING * 00029430
00128 C OPERATOR ERROR. * 00029440
00129 C * 00029450
00130 C***************************************************************** 00029460
00131 125 TOKE1 = TOKE1 + 1 00029470
00132 GO TO (150,150,150,150,150,140,130), TOKE1 00029480
00133 130 VNUM = 4999 00029490
00134 GO TO 160 00029500
00135 140 IF (TOKE2 .EQ. 0) GO TO 130 00029510
00136 VNUM = FCTN(5,TOKE2) * 100 + FCTN(3,TOKE2) + 5000 00029520
00137 GO TO 160 00029530
00138 150 CALL NDT41 (SYMTB(1,TOKE2 + 1)) 00029540
00139 160 VAPNT = VAPNT + 1 00029550
00140 VASTK(VAPNT) = VNUM 00029560
00141 IF (LAST .EQ. 0) CALL NDT14 (TMAP(PNT), 406, 3) 00029570
00142 LAST = 0 00029580
00143 GO TO 100 00029590
00144 C***************************************************************** 00029600
00145 C * 00029610
00146 C END OF TOKEN STRING HAS BEEN ENCOUNTERED. * 00029620
00147 C SET NEWOP AND NEWHI TO 1 TO FORCE COMPILATION OF STACKS. * 00029630
00148 C CHECK FOR PAREN BALANCE (403). * 00029640
00149 C MAKE SURE SOMETHING FOLLOWS EQUAL SIGN (404). * 00029650
00150 C DO NOT COMPILE IF THERE HAVE BEEN CRITICAL ERRORS. * 00029660
00151 C BRANCH TO COMPILATION ROUTINES. * 00029670
00152 C * 00029680
00153 C***************************************************************** 00029690
00154 200 NEWOP = 1 00029700
00155 NEWHI = 0 00029710
00156 IF (TOKEN(PNT - 1) .EQ. 28678 .AND. EQOCC .EQ. 2) GO TO 300 00029720
00157 IF (LAST .NE. 0) CALL NDT14 (TMAP(PNT - 1), 402, 3) 00029730
00158 IF (PNEST .GT. 0) CALL NDT14 (CBIT, 403, 3) 00029740
00159 IF (EQNCD .GE. 3) GO TO 1500 00029750
00160 GO TO 1200 00029760
00161 300 CALL NDT14 (TMAP(PNT - 1), 404, 3) 00029770
00162 GO TO 1500 00029780
00163 C***************************************************************** 00029790
00164 C * 00029800
00165 C THE FOLLOWING STATEMENTS ARE EXECUTED WHEN A + OR - SIGN * 00029810
00166 C IS ENCOUNTERED. A CHECK IS MADE TO DETERMINE WHETHER THE * 00029820
00167 C SIGN IS A UNARY OPERATOR. IF A UNARY + OCCURS, IT IS * 00029830
00168 C IGNORED. A UNARY - CAUSES THE SETTING OF NEWOP AND NEWHI * 00029840
NDT16 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 C AND A BRANCH TO THE COMPILATION ROUTINES. * 00029850
00170 C IF THE OPERATOR IS NOT UNARY, THE ORDINARY OPERATOR * 00029860
00171 C ROUTINE IS EXECUTED. * 00029870
00172 C * 00029880
00173 C***************************************************************** 00029890
00174 400 IF (LAST .NE. 1) GO TO 700 00029900
00175 LAST = 2 00029910
00176 IF (TOKE2 .EQ. 2) GO TO 100 00029920
00177 NEWOP = UMIN 00029930
00178 NEWHI = 4 + PNEST 00029940
00179 GO TO 1200 00029950
00180 C***************************************************************** 00029960
00181 C * 00029970
00182 C THE CODING BELOW IS EXECUTED TO DETERMINE THE EXISTENCE * 00029980
00183 C OF DUPLICATE EQUAL SIGNS. * 00029990
00184 C * 00030000
00185 C***************************************************************** 00030010
00186 500 IF (EQOCC .NE. 1) CALL NDT14 (TMAP(PNT), 401, 3) 00030020
00187 EQOCC = EQOCC + 1 00030030
00188 GO TO 700 00030040
00189 C***************************************************************** 00030050
00190 C * 00030060
00191 C THE CODING BELOW GIVES AN ERROR WHEN A COMMA OCCURS OUTSIDE* 00030070
00192 C THE ARGUMENT LIST OF A FUNCTION. * 00030080
00193 C * 00030090
00194 C***************************************************************** 00030100
00195 600 IF (FNON .LE. 0) CALL NDT14 (TMAP(PNT), 407, 3) 00030110
00196 C***************************************************************** 00030120
00197 C * 00030130
00198 C THE FOLLOWING CODE IS EXECUTED FOR ALL OPERATORS BUT PARENS* 00030140
00199 C A COMPARISON TO CKLST RAISES ERROR CONDITIONS FOR IMPROPER * 00030150
00200 C OPERATOR SEQUENCES. NEWOP AND NEWHI ARE SET TO THE PROPER * 00030160
00201 C VALUES FOR THE GIVEN OPERATOR. THE VALUE OF LAST IS THEN * 00030170
00202 C SET FOR EVALUATION WHEN THE NEXT TOKEN IS ENCOUNTERED. * 00030180
00203 C * 00030190
00204 C***************************************************************** 00030200
00205 700 IF (LAST .GE. CKLST(TOKE2)) CALL NDT14 (TMAP(PNT), 402, 3) 00030210
00206 NEWOP = NXTOP(TOKE2) 00030220
00207 NEWHI = NXTHI(TOKE2) + PNEST 00030230
00208 LAST = NXLST(TOKE2) 00030240
00209 GO TO 1200 00030250
00210 C***************************************************************** 00030260
00211 C * 00030270
00212 C A LEFT PAREN HAS BEEN ENCOUNTERED. INCREMENT FNON IF IT * 00030280
00213 C IS ALREADY IN FUNCTION MODE. IF LAST IS 0, THERE IS A * 00030290
00214 C POSSIBLE FUNCTION. * 00030300
00215 C * 00030310
00216 C***************************************************************** 00030320
00217 800 IF (FNON .GT. 0) FNON = FNON + 1 00030330
00218 IF (LAST .EQ. 0) GO TO 900 00030340
00219 C***************************************************************** 00030350
00220 C * 00030360
00221 C NO FUNCTION HAS OCCURED. SET LAST TO 1 TO ALLOW UNARY OP. * 00030370
00222 C INCREMENT PAREN NESTING AND GET NEXT TOKEN. (THE PAREN * 00030380
00223 C NESTING INCREMENT IS 10 SO THAT IT IS GREATER THAN THE * 00030390
00224 C HIERARCHY OF ANY OPERATION. THEREFORE, WHEN PNEST IS ADDED* 00030400
NDT16 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 C TO THE HIERARCHY OF ANY OPERATION, AN OPERATION WITHIN * 00030410
00226 C PARENS WILL HAVE A GREATER HIERARCHY.) * 00030420
00227 C * 00030430
00228 C***************************************************************** 00030440
00229 850 LAST = 1 00030450
00230 PNEST = PNEST + 10 00030460
00231 GO TO 100 00030470
00232 C***************************************************************** 00030480
00233 C * 00030490
00234 C DETERMINE WHETHER A FUNCTION EXISTS BY CHECKING VASTK. * 00030500
00235 C PREVIOUS TOKEN MAY BE VARIABLE OR LITERAL. * 00030510
00236 C * 00030520
00237 C***************************************************************** 00030530
00238 900 IF (VASTK(VAPNT) .GE. 4999) GO TO 1000 00030540
00239 CALL NDT14 (TMAP(PNT), 406, 3) 00030550
00240 GO TO 850 00030560
00241 C***************************************************************** 00030570
00242 C * 00030580
00243 C PAREN HAS BEEN DETERMINED TO INDICATE FUNCTION. * 00030590
00244 C ENTER IT IN OPSTK AND HISTK, INCREMENT PAREN NESTING, * 00030600
00245 C AND SET FNON IF IT IS NOT ALREADY SET. * 00030610
00246 C * 00030620
00247 C***************************************************************** 00030630
00248 1000 OHPNT = OHPNT + 1 00030640
00249 OPSTK(OHPNT) = FUNC 00030650
00250 HISTK(OHPNT) = 6 + PNEST 00030660
00251 PNEST = PNEST + 10 00030670
00252 IF (FNON .EQ. 0) FNON = 1 00030680
00253 LAST = 1 00030690
00254 GO TO 100 00030700
00255 C***************************************************************** 00030710
00256 C * 00030720
00257 C TOKEN INDICATES A RIGHT PAREN. DECREMENT NESTING. DECREMEN* 00030730
00258 C FNON IF NECESSARY. GIVE PAREN IMBALANCE ERROR (405) AND * 00030740
00259 C INVALID SEQUENCE ERROR(402). * 00030750
00260 C * 00030760
00261 C***************************************************************** 00030770
00262 1100 PNEST = PNEST - 10 00030780
00263 IF (FNON .GT. 0) FNON = FNON - 1 00030790
00264 IF (PNEST .LT. 0) CALL NDT14 (TMAP(PNT), 405, 3) 00030800
00265 IF (LAST .GE. 1) CALL NDT14 (TMAP(PNT), 402, 3) 00030810
00266 LAST = 0 00030820
00267 GO TO 100 00030830
00268 C***************************************************************** 00030840
00269 C * 00030850
00270 C THE FOLLOWING PROGRAM SECTION PRODUCES OBJECT CODE FROM THE* 00030860
00271 C STACK INFORMATION. THE HIERARCHY OF THE NEW OPERATION IS * 00030870
00272 C COMPARED TO THE HIERARCHY OF THE TOP STACK OPERATION. IF * 00030880
00273 C NEWHI IS LESS OR EQUAL THE OPERATIONS IN THE STACK ARE * 00030890
00274 C COMPILED UNTIL NEWHI IS GREATER THAN THE TOP STACK ELEMENT.* 00030900
00275 C WHEN NEWHI IS GREATER, NEWOP AND NEWHI ARE ADDED TO THE * 00030910
00276 C RESPECTIVE STACKS. * 00030920
00277 C * 00030930
00278 C***************************************************************** 00030940
00279 1200 IF (EQNCD .GE. 3) GO TO 100 00030950
00280 IF (NEWHI .GT. HISTK(OHPNT)) GO TO 1400 00030960
NDT16 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
00281 BRNCH = OPSTK(OHPNT) 00030970
00282 GO TO (1500,1600,1700,1700,1700,1700,1700,2000,2100), BRNCH 00030980
00283 1400 IF (NEWOP .EQ. COMMA) GO TO 100 00030990
00284 OHPNT = OHPNT + 1 00031000
00285 OPSTK(OHPNT) = NEWOP 00031010
00286 HISTK(OHPNT) = NEWHI 00031020
00287 GO TO 100 00031030
00288 1500 CALL NDT85 00031040
00289 RETURN 00031050
00290 C***************************************************************** 00031060
00291 C * 00031070
00292 C COMPILE = * 00031080
00293 C FIRST CHECK TO SEE IF ACC MUST BE LOADED. THIS OCCURS ONLY * 00031090
00294 C IN THE CASE A=B. STORE THE CONTENTS OF THE ACCUMULATOR IN * 00031100
00295 C THE FIRST ADDRESS IN THE STACK. * 00031110
00296 C * 00031120
00297 C***************************************************************** 00031130
00298 1600 IF (VASTK(2) .NE. ACC) CALL NDT46 (1, VASTK(2)) 00031140
00299 CALL NDT46 (2, VASTK(1)) 00031150
00300 OHPNT = OHPNT - 1 00031160
00301 GO TO 1200 00031170
00302 C***************************************************************** 00031180
00303 C * 00031190
00304 C COMPILE + - * / OR ** * 00031200
00305 C INITIAL OPCODE IS EQUAL TO THE BRNCH VALUE FROM COMP GO TO.* 00031210
00306 C NDT28 DETERMINES WHETHER TEMPORARY STORAGE IS NEEDED. AFTE* 00031220
00307 C NDT28 IS CALLED THE ACCUMULATOR WILL APPEAR IN VASTK AT THE* 00031230
00308 C TOP, 2ND FROM THE TOP, OR NOT AT ALL. * 00031240
00309 C FOR ACC AT TOP OF VASTK: * 00031250
00310 C 1) CHANGE OPCODE OF - / OR ** TO A REVERSE OPERATION. * 00031260
00311 C 2) OPERAND IS ADDRESS 2ND FROM TOP OF VASTK. * 00031270
00312 C FOR ACC AT 2ND POSITION FROM THE TOP: * 00031280
00313 C 1) NORMAL OPERATION IS COMPILED. * 00031290
00314 C 2) OPERAND IS ADDRESS AT TOP OF VASTK. * 00031300
00315 C WHEN ACC DOES NOT OCCUR IN TOP TWO POSITIONS: * 00031310
00316 C 1) GENERATE A LOAD INSTRUCTION WHOSE OPERAND IS THE * 00031320
00317 C ADDRESS SECOND FROM THE TOP OF VASTK. * 00031330
00318 C 2) GENERATE A NORMAL OPERATION FOR THE ADDRESS AT THE * 00031340
00319 C TOP OF VASTK. * 00031350
00320 C OPCOD IS THE OP CODE. * 00031360
00321 C OPRND IS THE OPERAND. * 00031370
00322 C WHEN FINISHED, DECREMENT ALL STACK POINTERS AND PLACE * 00031380
00323 C ACC INDICATOR AT THE TOP OF VASTK. * 00031390
00324 C * 00031400
00325 C***************************************************************** 00031410
00326 1700 OPCOD = BRNCH 00031420
00327 CALL NDT28 (TEMP, VAPNT - 2) 00031430
00328 IF (VASTK(VAPNT) .EQ. ACC) GO TO 1800 00031440
00329 IF (VASTK(VAPNT - 1) .NE. ACC) CALL NDT46 (1, VASTK(VAPNT - 1)) 00031450
00330 OPRND = VASTK(VAPNT) 00031460
00331 GO TO 1900 00031470
00332 1800 IF (OPCOD .EQ. 4) OPCOD = 8 00031480
00333 IF (OPCOD .EQ. 6) OPCOD = 9 00031490
00334 IF (OPCOD .EQ. 7) OPCOD = 10 00031500
00335 OPRND = VASTK(VAPNT - 1) 00031510
00336 1900 CALL NDT46 (OPCOD, OPRND) 00031520
NDT16 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-6
00337 VAPNT = VAPNT - 1 00031530
00338 VASTK(VAPNT) = ACC 00031540
00339 OHPNT = OHPNT - 1 00031550
00340 GO TO 1200 00031560
00341 C***************************************************************** 00031570
00342 C * 00031580
00343 C COMPILE UNARY * 00031590
00344 C NDT28 IS CALLED FOR TEMPORARY STORAGE ALLOCATION. * 00031600
00345 C STORE INSTRUCTION GENERATED IN NDT28 WILL ZERO ACC. * 00031610
00346 C NEGATION OCCURS BY SUBTRACTING DATA FROM ACC. * 00031620
00347 C OPSTK IS DECREMENTED AND RESULT IS IN ACC AT TOP OF VASTK. * 00031630
00348 C * 00031640
00349 C***************************************************************** 00031650
00350 2000 CALL NDT28 (TEMP, VAPNT) 00031660
00351 CALL NDT46 (4, VASTK(VAPNT)) 00031670
00352 VASTK(VAPNT) = ACC 00031680
00353 OHPNT = OHPNT - 1 00031690
00354 GO TO 1200 00031700
00355 C***************************************************************** 00031710
00356 C * 00031720
00357 C COMPILE FUNCTIONS * 00031730
00358 C NDT28 IS CALLED TO GENERATE REQUIRED TEMPORARY STORAGE. * 00031740
00359 C THE VARIABLE STACK IS SEARCHED DOWNWARD FROM THE TOP * 00031750
00360 C UNTIL AN ADDRESS GREATER THAN 5000 INDICATES A FUNCTION. * 00031760
00361 C THE FUNCTION ARGUMENTS ARE CONTAINED IN THE ADDRESSES * 00031770
00362 C IN VASTK ABOVE THE FUNCTION. THEY ARE LOADED AND STORED * 00031780
00363 C IN VARIABLE ARRAY LOCATIONS 17 - 21, AS NEEDED. THE * 00031790
00364 C VASTK IS DEMODULATED TO OBTAIN THE FUNCTION OPCODE AND * 00031800
00365 C THE SAVE AREA ADDRESS AS THE OPRND. INCREMENT THE VALCT * 00031810
00366 C TO THE END OF THE FUNCTION'S SAVE AREA. * 00031820
00367 C * 00031830
00368 C***************************************************************** 00031840
00369 2100 CALL NDT28 (TEMP, VAPNT) 00031850
00370 DO 2200 I = 1, VAPNT 00031860
00371 POS = VAPNT + 1 - I 00031870
00372 IF (VASTK(POS) .GE. 5000) GO TO 2300 00031880
00373 2200 CONTINUE 00031890
00374 2300 STARG = POS + 1 00031900
00375 ARGNM = 16 00031910
00376 DO 2400 I = STARG, VAPNT 00031920
00377 ARGNM = ARGNM + 1 00031930
00378 CALL NDT46 (1, VASTK(I)) 00031940
00379 2400 CALL NDT46 (2, ARGNM) 00031950
00380 OPCOD = VASTK(POS) - 5000 00031960
00381 SA = OPCOD / 100 00031970
00382 OPCOD = MOD (OPCOD, 100) 00031980
00383 IF (SA .EQ. 0) CALL NDT46 (OPCOD, 0) 00031990
00384 IF (SA .NE. 0) CALL NDT46 (OPCOD, VALCT + 1) 00032000
00385 VALCT = VALCT + SA 00032010
00386 VAPNT = POS 00032020
00387 VASTK(VAPNT) = ACC 00032030
00388 OHPNT = OHPNT - 1 00032040
00389 GO TO 1200 00032050
00390 END 00032070
NDT16 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-7
EQUIVALENCED VARIABLES
( I 1 BRNCH 1 )
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OBJPT +1222 EQNCD +1102 CRSMT +1722 STYPE +522
TOKPT +524 VNUM +346 VASTK +1602 CBIT +523 VALCT +27
SUBPROGRAMS CALLED
NDT46 MOD. NDT85 NDT14 NDT28 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
COMMA 2 NEWHI 3 ARGNM 4 OPCOD 5 VAPNT 6
HISTK 7 ACC 71 UMIN 72 OHPNT 73 BRNCH 1
LAST 74 POS 75 OPRND 76 STARG 77 OPSTK 100
NXTOP 162 SA 174 .S0001 175 .S0000 176 NEWOP 177
EQOCC 200 TOKE2 201 TEMP 202 PNT 203 FNON 204
NXTHI 205 I 1 NXLST 217 TOKE1 231 .O0000 232
CKLST 233 FUNC 245 PNEST 246
TEMPORARIES
.A0016 247 .Q0000 250
ACC 18# 53# 298 328 329 338 352 387
ARGNM 18# 375# 377 377# 379 379#
BRNCH 18# 23# 281# 282 326
CARD1 11# 20#
CARD2 11# 20#
CBIT 19# 23# 158 158#
CKLST 17# 51# 205
COMMA 19# 53# 283
CRSET 11# 20#
CRSMT 16# 23# 74 74#
DEF 11# 20#
EQCHN 11# 20#
EQNCD 15# 23# 159 279
EQOCC 16# 82# 156 186 187 187#
ERROR 11# 20# 23#
FCTN 11# 20# 136
FNON 16# 78# 195 217 217# 252 252# 263 263#
FUNC 18# 53# 249
HISTK 15# 76# 250# 280 286#
I 18# 23# 370# 371 376# 378
LAST 16# 81# 141 142# 157 174 175# 205 208# 218 229# 253# 265 266#
LITBL 10# 20#
MOD. 95 382
NDT14 141 157 158 161 186 195 205 239 264 265
NDT16 9#
NDT28 327 350 369
NDT41 138
NDT46 74 298 299 329 336 351 378 379 383 384
NDT85 288
NEWHI 15# 155# 178# 207# 280 286
NEWOP 15# 154# 177# 206# 283 285
NXLST 17# 52# 208
NXTHI 17# 50# 207
NXTOP 17# 49# 206
OBJCD 11# 20# 23#
OBJPT 15# 23# 73#
OHPNT 16# 77# 248 248# 249 250 280 281 284 284# 285 286 300 300#
339 339# 353 353# 388 388#
OPCOD 18# 326# 332 332# 333 333# 334 334# 336 336# 380# 381 382 382#
383 383# 384 384#
OPER 11# 20#
OPRND 18# 330# 335# 336 336#
OPSTK 15# 75# 249# 281 285#
PNEST 16# 80# 158 178 207 230 230# 250 251 251# 262 262# 264
PNT 16# 83# 92 92# 93 94 95 111 112 141 156 157 161 186
195 205 239 264 265
POS 18# 371# 372 374 380 386
PTRS 11# 20# 26#
RMAX 10# 20#
RMIN 10# 20#
SA 19# 381# 383 384 385
STARG 18# 374# 376
STYPE 16# 23#
SUBSC 11# 20#
SYM 11# 20# 23#
SYMTB 11# 20# 138 138#
TEMP 18# 84# 327 327# 350 350# 369 369#
TITLE 11# 20#
TMAP 11# 20# 23# 141 141# 157 157# 161 161# 186 186# 195 195# 205
205# 239 239# 264 264# 265 265#
TOKE1 17# 94# 102 131 131# 132
TOKE2 17# 95# 102 135 136 138 176 205 206 207 208
TOKEN 11# 20# 23# 94 95 111 112 156
TOKPT 16# 23# 93
TYPCT 11# 20#
UMIN 18# 53# 177
VALCT 19# 26# 384 385 385#
VAPNT 16# 79# 139 139# 140 238 327 328 329 330 335 337 337# 338
350 350# 351 352 369 369# 370 371 376 386# 387
VASTK 15# 23# 140# 238 298 298# 299 299# 328 329 329# 330 335 338#
351 351# 352# 372 378 378# 380 387#
VNUM 17# 23# 112# 133# 136# 140
XREF 11# 20# 23#
1000P 238 248#
100P 92# 102 143 176 231 254 267 279 283 287
1100P 102 262#
1200P 160 179 209 279# 301 340 354 389
125P 111 131#
130P 132 133# 135
1400P 280 283#
140P 132 135#
1500P 159 162 282 288#
150P 132 138#
1600P 282 298#
160P 113 134 137 139#
1700P 282 326#
1800P 328 332#
1900P 331 336#
2000P 282 350#
200P 93 154#
2100P 282 369#
2200P 370 373#
2300P 372 374#
2400P 376 379#
300P 156 161#
400P 102 174#
500P 102 186#
600P 102 195#
700P 102 174 188 205#
800P 102 217#
850P 229# 240
900P 218 238#
NDT16 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00032080
00002 C * 00032090
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00032100
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00032110
00005 C * 00032120
00006 C***************************************************************** 00032130
00007 SUBROUTINE NDT17 00032140
00008 C***************************************************************** 00032150
00009 C * 00032160
00010 C DEFAULT DOCUMENTATION GENERATOR * 00032170
00011 C * 00032180
00012 C * 00032190
00013 C THIS PROGRAM PREPARES THE DOCUMENTATION AREAS FOR THE CARD * 00032200
00014 C CURRENTLY IN CARD1. IT TAKES THE USER'S COMMENT FIELD AND * 00032210
00015 C PUTS IT IN THE DEF ARRAY. IF THE COMMENT FIELD IS BLANK, * 00032220
00016 C "NO DEFINITION PROVIDED" IS INSERTED. * 00032230
00017 C * 00032240
00018 C***************************************************************** 00032250
00019 REAL*8 RMIN,RMAX,LITBL(1024) 00032260
00020 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00032270
00021 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00032280
00022 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00032290
00023 3SYMTB(5,512) 00032300
00024 INTEGER DEFBT,DOCBT,DASH(3),NODEF(22),BLANK,CDST1, 00032310
00025 1LENTH,LOOP,LOOP1,XCHAR,POS,PNTR,CDATA(144),STYPE 00032320
00026 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00032330
00027 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00032340
00028 2SYMTB,LITBL 00032350
00029 EQUIVALENCE (DEFBT,SYM(11)),(DOCBT,SYM(12)),(BLANK,DASH(1)), 00032360
00030 1(CDST1,CDATA(142)),(STYPE,TOKEN(1)) 00032370
00031 EQUIVALENCE (CDATA(1),OBJCD(1)) 00032380
00032 DATA DASH /' ','-',' '/ 00032390
00033 DATA NODEF /'N','O',' ','D','E','F','I','N','I','T','I','O', 00032400
00034 1 'N',' ','P','R','O','V','I','D','E','D'/ 00032410
00035 C***************************************************************** 00032420
00036 C * 00032430
00037 C THE FORMAT OF THE DEF ARRAY IS AS FOLLOWS: * 00032440
00038 C * 00032450
00039 C POSITION IN DEF * 00032460
00040 C 1 -- 6 10 --- 80 * 00032470
00041 C VARIABLE - DEFINITION FIELD * 00032480
00042 C * 00032490
00043 C * 00032500
00044 C FIRST, THE TOKEN MUST BE A LEGAL VARIABLE. TOKEN(4) WILL * 00032510
00045 C INDICATE IF THE TOKEN IS A VARIABLE. UNPACK THE TOKEN FROM* 00032520
00046 C THE SYMBOL TABLE, AND THE DEFINE BIT WILL TELL IF THE * 00032530
00047 C VARIBLE IS LEGAL. * 00032540
00048 C * 00032550
00049 C***************************************************************** 00032560
00050 IF (TOKEN(4) .LT. 0 .OR. TOKEN(4) .GT. 20479) GO TO 1100 00032570
00051 PNTR = MOD(TOKEN(4),4096) + 1 00032580
00052 CALL NDT41(SYMTB(1,PNTR)) 00032590
00053 IF (DEFBT .EQ. 0) GO TO 1100 00032600
00054 C***************************************************************** 00032610
00055 C * 00032620
00056 C IF A DEF CARD FOR THIS VARIABLE HAS BEEN ENCOUNTERED, OR * 00032630
NDT17 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C THE EQUATION IS FOR AN INITIAL VALUE AND THE DEFINING * 00032640
00058 C EQUATION'S COMMENT FIELD HAS ALREADY BEEN USED, DO * 00032650
00059 C NOT PROCESS THIS CARD'S COMMENT FIELD. * 00032660
00060 C * 00032670
00061 C BEGIN PROCESSING BY PUTTING THE VARIABLE NAME INTO THE * 00032680
00062 C DEF ARRAY, ALONG WITH THE DASH. * 00032690
00063 C * 00032700
00064 C***************************************************************** 00032710
00065 IF (DOCBT.EQ.1.OR.(STYPE.EQ.4.AND.DEF(10).NE.0)) GO TO 1100 00032720
00066 DO 50 XCHAR = 1, 80 00032730
00067 50 DEF(XCHAR) = BLANK 00032740
00068 DO 100 XCHAR = 1, 6 00032750
00069 100 DEF(XCHAR) = SYM(XCHAR) 00032760
00070 DO 200 XCHAR = 1, 3 00032770
00071 200 DEF(XCHAR + 6) = DASH(XCHAR) 00032780
00072 C***************************************************************** 00032790
00073 C * 00032800
00074 C THE USER'S COMMENT FIELD BEGINS AT THE FIRST NON-BLANK * 00032810
00075 C CHARACTER AFTER THE FIRST BLANK AFTER THE EQUATION ON * 00032820
00076 C THIS CARD. * 00032830
00077 C * 00032840
00078 C***************************************************************** 00032850
00079 DO 400 LOOP = CDST1, 72 00032860
00080 IF (CARD1(LOOP) .EQ. BLANK) GO TO 500 00032870
00081 400 CONTINUE 00032880
00082 GO TO 700 00032890
00083 500 DO 600 LOOP1 = LOOP, 72 00032900
00084 IF (CARD1(LOOP1) .NE. BLANK) GO TO 900 00032910
00085 600 CONTINUE 00032920
00086 C***************************************************************** 00032930
00087 C * 00032940
00088 C IF THE FIELD IS BLANK, PUT THE DEFAULT MESSAGE INTO DEF. * 00032950
00089 C * 00032960
00090 C***************************************************************** 00032970
00091 700 DO 800 XCHAR = 1, 22 00032980
00092 800 DEF(XCHAR + 9) = NODEF(XCHAR) 00032990
00093 GO TO 1100 00033000
00094 C***************************************************************** 00033010
00095 C * 00033020
00096 C IF THE FIELD DID INDEED EXIST, PUT THE FIELD INTO DEF. * 00033030
00097 C * 00033040
00098 C***************************************************************** 00033050
00099 900 LENTH = 73 - LOOP1 00033060
00100 DO 1000 XCHAR = 1, LENTH 00033070
00101 POS = LOOP1 + XCHAR - 1 00033080
00102 1000 DEF(XCHAR + 9) = CARD1(POS) 00033090
00103 C***************************************************************** 00033100
00104 C * 00033110
00105 C RETURN SECTION * 00033120
00106 C * 00033130
00107 C***************************************************************** 00033140
00108 1100 RETURN 00033150
00109 END 00033170
NDT17 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
EQUIVALENCED VARIABLES
( BLANK 1 DASH 1 )
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 DEFBT +343 DOCBT +344 STYPE +522 CDATA +1222
CDST1 +1437
SUBPROGRAMS CALLED
MOD. NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
NODEF 4 LOOP1 32 XCHAR 33 PNTR 34 LOOP 35
POS 36 BLANK 1 .S0006 37 .S0005 40 .S0004 41
.S0003 42 LENTH 43 .S0002 44 .S0001 45 .S0000 46
DASH 1 .O0000 47
TEMPORARIES
.A0016 50 .Q0000 51
BLANK 24# 29# 67 80 84
CARD1 20# 26# 80 84 102
CARD2 20# 26#
CDATA 24# 29# 31#
CDST1 24# 29# 79
CRSET 20# 26#
DASH 24# 29# 32# 71
DEF 20# 26# 65 67# 69# 71# 92# 102#
DEFBT 24# 29# 53
DOCBT 24# 29# 65
EQCHN 20# 26#
ERROR 20# 26#
FCTN 20# 26#
LENTH 24# 99# 100
LITBL 19# 26#
LOOP 24# 79# 80 83
LOOP1 24# 83# 84 99 101
MOD. 51
NDT17 7#
NDT41 52
NODEF 24# 33# 92
OBJCD 20# 26# 31#
OPER 20# 26#
PNTR 24# 51# 52
POS 24# 101# 102
PTRS 20# 26#
RMAX 19# 26#
RMIN 19# 26#
STYPE 24# 29# 65
SUBSC 20# 26#
SYM 20# 26# 29# 69
SYMTB 20# 26# 52 52#
TITLE 20# 26#
TMAP 20# 26#
TOKEN 20# 26# 29# 50 51
TYPCT 20# 26#
XCHAR 24# 66# 67 68# 69 70# 71 91# 92 100# 101 102
XREF 20# 26#
1000P 100 102#
100P 68 69#
1100P 50 53 65 93 108#
200P 70 71#
400P 79 81#
500P 80 83#
50P 66 67#
600P 83 85#
700P 82 91#
800P 91 92#
900P 84 99#
NDT17 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00033180
00002 C PROGRAM AUTHOR - GARY PELKEY 00033190
00003 C 00033200
00004 C 00033210
00005 SUBROUTINE NDT18 00033220
00006 C 00033230
00007 C 00033240
00008 C THIS ROUTINE PROCESSES RERUN CARDS. ITS MAIN FUNCTIONS ARE 00033250
00009 C TO TIE OFF AND WRITE OUT PREVIOUSLY BUILT RERUN BUFFERS AND 00033260
00010 C TO INITIALIZE THE BUFFER FOR THE NEXT BATCH OF RERUN CHANGES. 00033270
00011 C 00033280
00012 C 00033290
00013 REAL*8 RMIN,RMAX,LITBL(1024) 00033300
00014 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00033310
00015 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00033320
00016 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00033330
00017 3SYMTB(5,512) 00033340
00018 INTEGER RRBPT,RRBST,RELOC,VALCT,INTBT,RBFPT 00033350
00019 INTEGER RERUN(80),DISK 00033360
00020 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00033370
00021 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00033380
00022 2SYMTB,LITBL 00033390
00023 EQUIVALENCE (RRBPT,PTRS(37)),(RRBST,PTRS(36)),(RELOC,PTRS(40)) 00033400
00024 EQUIVALENCE (VALCT,PTRS(20)),(INTBT,RERUN(1),DEF(1)) 00033410
00025 EQUIVALENCE (RBFPT,RERUN(2)),(DISK,PTRS(3)) 00033420
00026 C 00033430
00027 C 00033440
00028 C A NEGATIVE RRBPT INDICATES THAT THIS IS THE FIRST RERUN CARD 00033450
00029 C THUS FAR ENCOUNTERED. NO TIE OFF IS NECESSARY BUT EQUATION 00033460
00030 C CHAINING MUST BE TERMINATED BY CALLING NDT21 WITH A 0. 00033470
00031 C RELOC IS SET HERE THUS DEFINING THE END OF THE MAINLINE VAR 00033480
00032 C IABLES AND THE BEGINNING OF THE LITBL AFTER RELOCATION. 00033490
00033 C RRBPT IS SET SO AS TO BE CORRECT WHEN THIS PROGRAM IS CALLED 00033500
00034 C NEXT. 00033510
00035 C 00033520
00036 C 00033530
00037 IF(RRBPT.GT.0) GO TO 100 00033540
00038 CALL NDT21 (0) 00033550
00039 RELOC=VALCT 00033560
00040 RRBPT=RRBST-1 00033570
00041 GO TO 300 00033580
00042 C 00033590
00043 C 00033600
00044 C IF A RERUN NEEDS TO BE TIED OFF, A GROUP ERROR IS ISSUED IF 00033610
00045 C THERE HAVE BEEN NO VALID RERUN CHANGES REQUESTED SINCE THE 00033620
00046 C LAST RERUN CARD WAS ENCOUNTERED. OTHERWISE THE RERUN BUFFER 00033630
00047 C IS WRITTEN OUT TO DISK AND RRBPT IS INCREMENTED. 00033640
00048 C 00033650
00049 C 00033660
00050 100 IF(INTBT.NE.0.OR.RBFPT.NE.2) GO TO 200 00033670
00051 CALL NDT20 (113,2) 00033680
00052 GO TO 300 00033690
00053 200 WRITE(DISK'RRBPT+1) RERUN 00033700
00054 RRBPT=RRBPT+1 00033710
00055 C 00033720
00056 C 00033730
NDT18 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C IN ALL CASES THE RERUN BUFFER IS INITIALIZED. INTBT IS SET 00033740
00058 C TO ZERO (IF IT COMES BACK AT ZERO, NO INTEGRATION CHANGE WAS 00033750
00059 C REQUESTED), RBFPT IS SET TO 2 (THE LAST USED POSITION OF A 00033760
00060 C RERUN PARM,C OR T CHANGE). POSITIONS 7 THRU 72 OF CARD1 ARE 00033770
00061 C COPIED ONTO THE HIGH END OF THE RERUN BUFFER. 00033780
00062 C 00033790
00063 C 00033800
00064 300 INTBT=0 00033810
00065 RBFPT=2 00033820
00066 RETURN 00033830
00067 END 00033850
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 RRBPT +50 RRBST +47 RELOC +53 VALCT +27
INTBT +1462 RERUN +1462 DISK +6 RBFPT +1463
SUBPROGRAMS CALLED
NDT21 NDT20
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
TEMPORARIES
.A0016 1 .Q0000 2
CARD1 14# 20#
CARD2 14# 20#
CRSET 14# 20#
DEF 14# 20# 24#
DISK 19# 25# 53
EQCHN 14# 20#
ERROR 14# 20#
FCTN 14# 20#
INTBT 18# 24# 50 64#
LITBL 13# 20#
NDT18 5#
NDT20 51
NDT21 38
OBJCD 14# 20#
OPER 14# 20#
PTRS 14# 20# 23# 24# 25#
RBFPT 18# 25# 50 65#
RELOC 18# 23# 39#
RERUN 19# 24# 25# 53
RMAX 13# 20#
RMIN 13# 20#
RRBPT 18# 23# 37 40# 53 54 54#
RRBST 18# 23# 40
SUBSC 14# 20#
SYM 14# 20#
SYMTB 14# 20#
TITLE 14# 20#
TMAP 14# 20#
TOKEN 14# 20#
TYPCT 14# 20#
VALCT 18# 24# 39
XREF 14# 20#
100P 37 50#
200P 50 53#
300P 41 52 64#
NDT18 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00033860
00002 C PROGRAM AUTHOR - GARY PELKEY 00033870
00003 C 00033880
00004 C 00033890
00005 SUBROUTINE NDT19 00033900
00006 C 00033910
00007 C 00033920
00008 C THIS SUBROUTINE PROCESSES CARDS IN RERUN MODE. THE ONLY 00033930
00009 C TYPES OF CARDS PARSED IN CDATA WHEN THIS IS CALLED ARE C,*, 00033940
00010 C T, AND PARM. CONSTANTS MUST BE CHECKED FOR NUMERIC ONLY 00033950
00011 C AND ALL OTHER SYNTAX RULES AS IN THE MAINLINE PROGRAM. 00033960
00012 C THE ONLY CONTROL CARD ALLOWED IS ONE SPECIFYING INTEGRATION 00033970
00013 C TYPE. TABLES MUST HAVE THE SAME NUMBER OF ENTRIES AS ITS 00033980
00014 C DEFINITION IN THE MAINLINE. THE ONLY PARAMATER CHANGE ALLOWED 00033990
00015 C IS DT. DT MUST ALSO BE NUMERIC ONLY IN RERUNS. 00034000
00016 C RERUN CHANGES ARE SAVED IN A RERUN BUFFER. INTEGRATOR CHANGES 00034010
00017 C ARE SAVED IN THE FIRST WORD OF THE BUFFER BUT ALL OTHER 00034020
00018 C CHANGES ARE SAVED AS FOUR CONSECUTIVE WORDS; RBFPT POINTING 00034030
00019 C TO THE LAST CHANGE MADE. THE FIRST TWO OF THE FOUR WORDS IS 00034040
00020 C THE PACKED NAME OF THE VARIABLE. THE NEXT WORD IS STYPE*4096+ 00034050
00021 C VNUM. THE FOURTH WORD IS THE ABSOLUTE LITBL LOCATION OF THE 00034060
00022 C NEW NUMERIC OR TABLE. 00034070
00023 C 00034080
00024 C 00034090
00025 REAL*8 RMIN,RMAX,LITBL(1024) 00034100
00026 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00034110
00027 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00034120
00028 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00034130
00029 3SYMTB(5,512) 00034140
00030 INTEGER STYPE,I,J,INTRS(6,3),CDATA(144),INTBT,SAVE,LITCT, 00034150
00031 1PNTR,DISK,RECNO,SAVE1,POINT,VNUM,EQNCD,RBFPT,RERUN(80), 00034160
00032 2RELOC,OBJPT,OBJ1(80) 00034170
00033 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00034180
00034 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00034190
00035 2SYMTB,LITBL 00034200
00036 EQUIVALENCE (STYPE,TOKEN(1)),(CDATA(1),OBJCD(1)), 00034210
00037 1(INTBT,RERUN(1),DEF(1)),(LITCT,PTRS(18)),(DISK,PTRS(3)), 00034220
00038 2(VNUM,SYM(14)),(EQNCD,ERROR(1)),(RELOC,PTRS(40)) 00034230
00039 3,(RBFPT,RERUN(2)),(RECNO,SYM(15)),(OBJPT,OBJCD(1),OBJ1(1)) 00034240
00040 DATA INTRS /'E','U','L','E','R',' ','R','K','I','N','T',' ', 00034250
00041 1'A','B','I','N','T',' '/ 00034260
00042 C 00034270
00043 C 00034280
00044 IF(STYPE.NE.10) GO TO 400 00034290
00045 C 00034300
00046 C 00034310
00047 C IF A CONTROL CARD IS ENTERED, ITS CONTENTS ARE COMPARED 00034320
00048 C AGAINST AN ARRAY CONTAINING THE THREE LEGAL INTEGRATION 00034330
00049 C TYPES. IF ONE IS FOUND, THE NUMBER IS SAVED IN INTBT; IF 00034340
00050 C NOT, THE CONTROL CARD IS FLAGGED FOR BEING ILLEGAL IN A 00034350
00051 C RERUN. THE CORRESPONDENCE OF THE SAVED NUMBER TO THE INTE- 00034360
00052 C GRATION TYPE IS SHOWN BELOW: 00034370
00053 C 00034380
00054 C EULER - 1 00034390
00055 C RKINT - 2 00034400
00056 C ABINT - 3 00034410
NDT19 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C 00034420
00058 C 00034430
00059 DO 200 I=1,3 00034440
00060 DO 100 J=1,6 00034450
00061 IF(INTRS(J,I).NE.CDATA(J)) GO TO 200 00034460
00062 100 CONTINUE 00034470
00063 IF(INTBT.EQ.0) GO TO 150 00034480
00064 CALL NDT14 (0,114,2) 00034490
00065 GO TO 2000 00034500
00066 150 INTBT=I 00034510
00067 GO TO 2000 00034520
00068 200 CONTINUE 00034530
00069 CALL NDT14 (0,115,2) 00034540
00070 GO TO 2000 00034550
00071 C 00034560
00072 C 00034570
00073 C FOR T,C OR PARM CARDS, THE ADDRESS AT WHICH THEY WILL BE 00034580
00074 C STORED IN THE LITBL MUST BE SAVED. WHEN LATER ADDED TO 00034590
00075 C RELOC THIS WILL GIVE THE ADDRESS OF THE NEW CONSTANT OR 00034600
00076 C CONSTANTS AT EXECUTION TIME. 00034610
00077 C 00034620
00078 C 00034630
00079 400 SAVE=LITCT+1 00034640
00080 IF(STYPE.NE.1) GO TO 800 00034650
00081 C 00034660
00082 C 00034670
00083 C IF THE CARD IS A TABLE, THE TABLE PROCESSOR IS CALLED. 00034680
00084 C FURTHER PROCESSING IS DISCONTINUED IF THE TABLE PROCESSOR 00034690
00085 C DETECTED ERRORS OR CRITICALS ON THIS CARD. OTHERWISE 00034700
00086 C THE TABLE'S MAINLINE OBJECT CODE IS READ OFF OF DISK TO 00034710
00087 C BACKTRACK AND COMPARE THE NUMBER OF LITERALS ON THE RIGHT 00034720
00088 C OF THE '='. 00034730
00089 C 00034740
00090 C 00034750
00091 CALL NDT15 00034760
00092 IF(EQNCD.GT.1) GO TO 2000 00034770
00093 LITBL(SAVE) = SAVE + 1 + RELOC 00034780
00094 PNTR=MOD(TOKEN(4),4096)+1 00034790
00095 CALL NDT41 (SYMTB(1,PNTR)) 00034800
00096 READ(DISK'RECNO+4) OBJ1 00034810
00097 SAVE1=-OBJCD(6) 00034820
00098 POINT=LITBL(SAVE1) 00034830
00099 750 IF(LITBL(POINT).EQ.LITBL(SAVE+1)) GO TO 900 00034840
00100 CALL NDT14 (0,539,2) 00034850
00101 GO TO 2000 00034860
00102 C 00034870
00103 C 00034880
00104 C IF THE CARD IS A CONSTANT OR PARM, NDT08 IS CALLED TO 00034890
00105 C PERFORM THE LEXICAL ANALYSIS AND THEN NDT49 IS CALLED TO 00034900
00106 C INSURE THAT THERE IS ONLY ONE LITERAL ON THE RIGHT OF '='. 00034910
00107 C 00034920
00108 C 00034930
00109 800 CALL NDT08 00034940
00110 CALL NDT49 00034950
00111 C 00034960
00112 C 00034970
NDT19 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C AN ATTEMPT BY THE USER TO WRITE AN EQUATION FOR A PARAMETER 00034980
00114 C (OTHER THAN DT) IN RERUN MODE IS FLAGGED HERE. 00034990
00115 C 00035000
00116 C 00035010
00117 900 IF(VNUM.EQ.11.OR.VNUM.GT.16) GO TO 1000 00035020
00118 CALL NDT14 (TMAP(4),538,2) 00035030
00119 GO TO 2000 00035040
00120 C 00035050
00121 C 00035060
00122 C IF THERE HAVE BEEN NO ERRORS OR CRITICALS TO THIS POINT AND 00035070
00123 C THE RERUN BUFFER IS NOT IN DANGER OF OVERFLOWING, TWO WORDS 00035080
00124 C ARE BUILT WHICH SPECIFY THE RERUN CHANGE. THESE TWO 00035090
00125 C WORDS CONTAIN INFORMATION WHICH SPECIFIES THE VNUM AND THE 00035100
00126 C LOCATION OF THE NEW LITERAL (OR GROUP OF LITERALS, AS IN 00035110
00127 C TABLES) WHERE THE RERUN VALUES CAN BE FOUND AFTER RELOCATION. 00035120
00128 C 00035130
00129 C 00035140
00130 1000 IF(EQNCD.GT.1) GO TO 2000 00035150
00131 IF(RBFPT.LE.78) GO TO 1100 00035160
00132 CALL NDT14 (0,116,2) 00035170
00133 GO TO 2000 00035180
00134 1100 IF(STYPE.EQ.1) GO TO 1150 00035190
00135 PNTR=MOD(TOKEN(4),4096)+1 00035200
00136 CALL NDT41 (SYMTB(1,PNTR)) 00035210
00137 READ(DISK'RECNO+4) OBJ1 00035220
00138 SAVE1 = - OBJCD(6) 00035230
00139 IF(OBJPT.EQ.8.AND.SAVE1.GT.0) GO TO 1150 00035240
00140 CALL NDT14 (0,999,2) 00035250
00141 GO TO 2000 00035260
00142 1150 RERUN(RBFPT+1)=SAVE1+RELOC 00035270
00143 RERUN(RBFPT+2)=SAVE+RELOC 00035280
00144 RBFPT=RBFPT+2 00035290
00145 2000 RETURN 00035300
00146 END 00035320
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 STYPE +522 CDATA +1222 INTBT +1462 RERUN +1462
LITCT +25 DISK +6 VNUM +346 EQNCD +1102 RELOC +53
RECNO +347 OBJPT +1222 OBJ1 +1222 RBFPT +1463
SUBPROGRAMS CALLED
MOD. NDT08 NDT49 NDT15 NDT14 NDT41
NDT19 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
SAVE 1 PNTR 2 .R0000 3 J 4 .S0001 5
.S0000 6 POINT 7 SAVE1 10 I 11 INTRS 12
TEMPORARIES
.A0016 34 .Q0001 35
CARD1 26# 33#
CARD2 26# 33#
CDATA 30# 36# 61
CRSET 26# 33#
DEF 26# 33# 36#
DISK 30# 36# 96 137
EQCHN 26# 33#
EQNCD 30# 36# 92 130
ERROR 26# 33# 36#
FCTN 26# 33#
I 30# 59# 61 66
INTBT 30# 36# 63 66#
INTRS 30# 40# 61
J 30# 60# 61
LITBL 25# 33# 93# 98 99
LITCT 30# 36# 79
MOD. 94 135
NDT08 109
NDT14 64 69 100 118 132 140
NDT15 91
NDT19 5#
NDT41 95 136
NDT49 110
OBJ1 30# 36# 96# 137#
OBJCD 26# 33# 36# 97 138
OBJPT 30# 36# 139
OPER 26# 33#
PNTR 30# 94# 95 135# 136
POINT 30# 98# 99
PTRS 26# 33# 36#
RBFPT 30# 36# 131 142 143 144 144#
RECNO 30# 36# 96 137
RELOC 30# 36# 93 142 143
RERUN 30# 36# 142# 143#
RMAX 25# 33#
RMIN 25# 33#
SAVE 30# 79# 93 99 143
SAVE1 30# 97# 98 138# 139 142
STYPE 30# 36# 44 80 134
SUBSC 26# 33#
SYM 26# 33# 36#
SYMTB 26# 33# 95 95# 136 136#
TITLE 26# 33#
TMAP 26# 33# 118 118#
TOKEN 26# 33# 36# 94 135
TYPCT 26# 33#
VNUM 30# 36# 117
XREF 26# 33#
1000P 117 130#
100P 60 62#
1100P 131 134#
1150P 134 139 142#
150P 63 66#
2000P 65 67 70 92 101 119 130 133 141 145#
200P 59 61 68#
400P 44 79#
750P 99#
800P 80 109#
900P 99 117#
NDT19 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00035330
00002 C PROGRAM AUTHOR - GARY PELKEY 00035340
00003 C 00035350
00004 C 00035360
00005 SUBROUTINE NDT20 (CODE,SEVER) 00035370
00006 C 00035380
00007 C 00035390
00008 C THIS PROGRAM PROCESSES GROUP ERRORS. IT DOES THIS BY UPDATING 00035400
00009 C THE ERROR DISK RECORD OF THE LAST GROUP STARTER. THE LAST 00035410
00010 C GROUP'S TOKEN RECORD IS POINTED TO BY LSTGP. 00035420
00011 C 00035430
00012 C 00035440
00013 REAL*8 RMIN,RMAX,LITBL(1024) 00035450
00014 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00035460
00015 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00035470
00016 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00035480
00017 3SYMTB(5,512) 00035490
00018 INTEGER CODE,SEVER,ERRPT,I,DISK,ENDER,LSTGP 00035500
00019 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00035510
00020 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00035520
00021 2SYMTB,LITBL 00035530
00022 EQUIVALENCE (ERRPT,ERROR(2)),(ENDER,OBJCD(2)),(DISK,PTRS(3)) 00035540
00023 EQUIVALENCE (LSTGP,PTRS(35)) 00035550
00024 C 00035560
00025 C 00035570
00026 C THE PRESENT CARDS ERROR INFORMATION IS SAVED. 00035580
00027 C 00035590
00028 C 00035600
00029 DO 100 I=1,ERRPT 00035610
00030 100 OBJCD(I)=ERROR(I) 00035620
00031 C 00035630
00032 C 00035640
00033 C THE GROUP STARTER'S ERROR RECORD IS READ IN AND UPDATED 00035650
00034 C BY CALLING NDT14. (THE POSITION OF A GROUP ERROR IS ALWAYS 00035660
00035 C 0, OR THE WHOLE CARD.) 00035670
00036 C 00035680
00037 C 00035690
00038 READ(DISK'LSTGP+3) ERROR 00035700
00039 CALL NDT14 (0,CODE,SEVER) 00035710
00040 WRITE(DISK'LSTGP+3) ERROR 00035720
00041 C 00035730
00042 C 00035740
00043 C THE PRESENT CARDS ERROR INFORMATION IS RESTORED. 00035750
00044 C 00035760
00045 C 00035770
00046 DO 200 I=1,ENDER 00035780
00047 200 ERROR(I)=OBJCD(I) 00035790
00048 RETURN 00035800
00049 END 00035810
EQUIVALENCED VARIABLES
NDT20 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 ERRPT +1103 ENDER +1223 DISK +6 LSTGP +46
SUBPROGRAMS CALLED
NDT14
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
.S0001 1 .S0000 2 SEVER 3 I 4 CODE 5
TEMPORARIES
.A0016 6 .Q0000 7
CARD1 14# 19#
CARD2 14# 19#
CODE 5# 18# 39 39#
CRSET 14# 19#
DEF 14# 19#
DISK 18# 22# 38 40
ENDER 18# 22# 46
EQCHN 14# 19#
ERROR 14# 19# 22# 30 38# 40 47#
ERRPT 18# 22# 29
FCTN 14# 19#
I 18# 29# 30 46# 47
LITBL 13# 19#
LSTGP 18# 23# 38 40
NDT14 39
NDT20 5#
OBJCD 14# 19# 22# 30# 47
OPER 14# 19#
PTRS 14# 19# 22# 23#
RMAX 13# 19#
RMIN 13# 19#
SEVER 5# 18# 39 39#
SUBSC 14# 19#
SYM 14# 19#
SYMTB 14# 19#
TITLE 14# 19#
TMAP 14# 19#
TOKEN 14# 19#
TYPCT 14# 19#
XREF 14# 19#
100P 29 30#
200P 46 47#
NDT20 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00035820
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00035830
00003 C 00035840
00004 C 00035850
00005 SUBROUTINE NDT21 (EQELM) 00035860
00006 C 00035870
00007 C 00035880
00008 C NDT21 MONITORS THE SEQUENTIAL CONSTRUCTION OF THE EQCHN 00035890
00009 C ARRAY. THIS ARRAY IS BUILT AT TWO DIFFERENT TIMES. DURING 00035900
00010 C THE INPUT PHASE, NDT21 ADDS AN EQCHN ELEMENT FOR EACH 00035910
00011 C EQUATION AND TABLE IN THE MODEL. DURING THE EQUATION 00035920
00012 C ORDING PHASE THIS ROUTINE MONITORS THE CONSTRUCTION OF THE 00035930
00013 C ORDERED EQCHN ELEMENTS. 00035940
00014 C 00035950
00015 C 00035960
00016 REAL*8 RMIN,RMAX,LITBL(1024) 00035970
00017 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00035980
00018 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00035990
00019 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00036000
00020 3SYMTB(5,512) 00036010
00021 INTEGER CHNPT,EQNPT,DISK,EQELM 00036020
00022 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00036030
00023 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00036040
00024 2SYMTB,LITBL 00036050
00025 EQUIVALENCE (CHNPT,PTRS(29)),(EQNPT,PTRS(28)),(DISK,PTRS(3)) 00036060
00026 C 00036070
00027 C 00036080
00028 C CHNPT POINTS TO THE LAST POSITION USED IN EQCHN. EQNPT POINTS 00036090
00029 C TO THE LAST DISK RECORD USED FOR EQCHN INFORMATION. 00036100
00030 C 00036110
00031 C 00036120
00032 CHNPT=CHNPT+1 00036130
00033 EQCHN(CHNPT)=EQELM 00036140
00034 C 00036150
00035 C 00036160
00036 C IF EQCHN IS FILLED OR THE LAST ELEMENT ADDED WAS A 0 INDICATING 00036170
00037 C THE END OF EQCHN BUILDING THEN WRITE THE INFORMATION TO DISK 00036180
00038 C AND RESET THE POINTERS. 00036190
00039 C 00036200
00040 C 00036210
00041 IF(CHNPT.NE.80.AND.EQELM.NE.0) GO TO 100 00036220
00042 EQNPT=EQNPT+1 00036230
00043 WRITE(DISK'EQNPT) EQCHN 00036240
00044 CHNPT=0 00036250
00045 100 RETURN 00036260
00046 END 00036280
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
NDT21 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 CHNPT +40 EQNPT +37 DISK +6
SUBPROGRAMS CALLED
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
EQELM 1
TEMPORARIES
.A0016 2
CARD1 17# 22#
CARD2 17# 22#
CHNPT 21# 25# 32 32# 33 41 44#
CRSET 17# 22#
DEF 17# 22#
DISK 21# 25# 43
EQCHN 17# 22# 33# 43
EQELM 5# 21# 33 41
EQNPT 21# 25# 42 42# 43
ERROR 17# 22#
FCTN 17# 22#
LITBL 16# 22#
NDT21 5#
OBJCD 17# 22#
OPER 17# 22#
PTRS 17# 22# 25#
RMAX 16# 22#
RMIN 16# 22#
SUBSC 17# 22#
SYM 17# 22#
SYMTB 17# 22#
TITLE 17# 22#
TMAP 17# 22#
TOKEN 17# 22#
TYPCT 17# 22#
XREF 17# 22#
100P 41 45#
NDT21 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00036290
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00036300
00003 C 00036310
00004 C 00036320
00005 SUBROUTINE NDT22 (START,STOP) 00036330
00006 C 00036340
00007 C 00036350
00008 C NDT22 PERFORMS A SYNTAX ANALYSIS ON NUMERIC LITERAL STRINGS, 00036360
00009 C ADDS AN ELEMENT TO THE TOKEN AND TMAP ARRAYS, AND PLACES THE 00036370
00010 C VALUE OF THE LITERAL INTO THE LITERAL TABLE. 00036380
00011 C 00036390
00012 C THE FIRST AND SECOND ARGUMENTS ARE THE STARTING AND 00036400
00013 C STOPPING POSITIONS OF THE STRING. 00036410
00014 C 00036420
00015 C 00036430
00016 REAL*8 RMIN,RMAX,LITBL(1024) 00036440
00017 REAL*8 VAL 00036450
00018 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00036460
00019 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00036470
00020 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00036480
00021 3SYMTB(5,512) 00036490
00022 INTEGER PNTTMP
00023 INTEGER SPCL(4),PNT,COUNT,SGDCT,ESIGN,DIGIT,DEC,START,EXP, 00036500
00024 1LITCT,LITND,TOKPT,STOP,NSIGN,LOOP,NUM(10),EXPMX,CDATA(144) 00036510
00025 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00036520
00026 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00036530
00027 2SYMTB,LITBL 00036540
00028 EQUIVALENCE (NUM(1),CRSET(30)),(EXPMX,PTRS(9)),(LITCT,PTRS(18)), 00036550
00029 1(LITND,PTRS(19)),(TOKPT,TOKEN(3)),(CDATA(1),OBJCD(1)) 00036560
00030 DATA SPCL /'.','E','+','-'/ 00036570
00031 C 00036580
00032 C 00036590
00033 C INITIALIZE ALL COUNTERS AND FLAGS. 00036600
00034 C 00036610
00035 C 00036620
00036 VAL=0.D0 00036630
00037 COUNT=0 00036640
00038 SGDCT=-1 00036650
00039 DEC=-1 00036660
00040 EXP=-1 00036670
00041 NSIGN=0 00036680
00042 ESIGN=0 00036690
00043 C 00036700
00044 C 00036710
00045 C IF THE STARTING POSITION IS NOT LESS THAN OR EQUAL TO 00036720
00046 C THE STOPPING POSITION, THEN THE NUMBER IS MISSING. 00036730
00047 C SIGNAL THE ERROR, AND ASSUME A ZERO PRESENT. 00036740
00048 C 00036750
00049 C 00036760
00050 IF(START.LE.STOP) GO TO 100 00036770
00051 CALL NDT13 (START,601,2) 00036780
00052 GO TO 2100 00036790
00053 C 00036800
00054 C 00036810
00055 C THE OUTER LOOP PROCESSES CHARACTER BY CHARACTER FROM THE 00036820
00056 C LEFT TO THE RIGHT. 00036830
NDT22 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C 00036840
00058 C 00036850
00059 100 DO 1800 PNT=START,STOP 00036860
00060 PNTTMP=PNT
00061 C 00036870
00062 C 00036880
00063 C TEST FOR A VALID DIGIT. THE VALUE OF LOOP WILL 00036890
00064 C INDICATE WHICH DIGIT WAS FOUND. 00036900
00065 C 00036910
00066 C 00036920
00067 DO 200 LOOP=1,10 00036930
00068 IF(CDATA(PNT).EQ.NUM(LOOP)) GO TO 500 00036940
00069 200 CONTINUE 00036950
00070 C 00036960
00071 C 00036970
00072 C THE CHARACTER WAS NOT A DIGIT SO CHECK FOR 00036980
00073 C ONE OF THE SPECIAL SYMBOLS. 00036990
00074 C 00037000
00075 C 00037010
00076 DO 300 LOOP=1,4 00037020
00077 IF(CDATA(PNT).EQ.SPCL(LOOP)) GO TO (800,1300,1100,1100),LOOP 00037030
00078 300 CONTINUE 00037040
00079 C 00037050
00080 C 00037060
00081 C THE CHARACTER IS NOT LEGAL IN A NUMERIC LITERAL. INDICATE 00037070
00082 C THE ERROR AND ASSUME IT TO BE A ZERO. 00037080
00083 C 00037090
00084 C 00037100
00085 CALL NDT13 (PNTTMP,600,2) 00037110
00086 LOOP=1 00037120
00087 GO TO 500 00037130
00088 C 00037140
00089 C 00037150
00090 C THIS IS THE DIGIT PROCESSING ROUTINE. COUNT IS A 00037160
00091 C COUNTER FOR THE NUMBER OF DIGITS ENCOUNTERED SINCE 00037170
00092 C THE START OF THE MANTISSA OR THE START OF THE 00037180
00093 C EXPONENT. SGDCT IS THE NUMBER OF THOSE DIGITS 00037190
00094 C THAT ARE SIGNIFICANT (COUNT LESS THE LEADING ZEROS). 00037200
00095 C IF COUNT IS LESS THAN ZERO THEN MORE DIGITS HAVE 00037210
00096 C ALREADY OCCURRED THAN ARE ALLOWED SO IGNORE THIS ONE. 00037220
00097 C 00037230
00098 C 00037240
00099 500 IF(COUNT.LT.0) GO TO 1800 00037250
00100 C 00037260
00101 C 00037270
00102 C ADD ONE TO COUNT AND TEST TO SEE WHETHER THE DIGIT 00037280
00103 C IS A LEADING ZERO. IF IT IS GET THE NEXT CHARACTER 00037290
00104 C WITHOUT INITIALIZING SGDCT. IF IT IS NOT A LEADING 00037300
00105 C ZERO THEN INCREMENT SGDCT AND TEST THE LENGTH. 00037310
00106 C A MANTISSA LENGTH MAY NOT EXCEED 8 AND AN EXPONENT 00037320
00107 C LENGTH MAY NOT EXCEED 2. 00037330
00108 C 00037340
00109 C 00037350
00110 COUNT=COUNT+1 00037360
00111 IF(SGDCT.LT.0.AND.LOOP.NE.1) SGDCT=0 00037370
00112 IF(SGDCT.LT.0) GO TO 1800 00037380
NDT22 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 SGDCT=SGDCT+1 00037390
00114 IF(EXP.LT.0.AND.SGDCT.EQ.9) GO TO 600 00037400
00115 IF(EXP.GE.0.AND.SGDCT.EQ.3) GO TO 700 00037410
00116 C 00037420
00117 C 00037430
00118 C THE DIGIT IS VALID AND SIGNIFICANT. UPDATE THE VALUE 00037440
00119 C AND THE REAL VARIABLE VAL ACCORDING TO THE FLAGS AND 00037450
00120 C COUNTERS. DEC IS THE DECIMAL POINT FLAG AND COUNTER. 00037460
00121 C A NEGATIVE VALUE INDICATES THAT THE DECIMAL POINT 00037470
00122 C HAS NOT BEEN ENCOUNTERED. A NON-NEGATIVE VALUE 00037480
00123 C INDICATES THAT IT HAS OCCURRED AND IS A COUNTER 00037490
00124 C OF THE NUMBER OF DIGITS THAT HAVE FOLLOWED IT. 00037500
00125 C EXP HAS THE SAME FUNCTION WITH THE EXPONENT CHARACTER. 00037510
00126 C UPDATE ALL OF THE APPROPRIATE COUNTERS. 00037520
00127 C 00037530
00128 C 00037540
00129 IF(DEC.GE.0) DEC=DEC+1 00037550
00130 DIGIT=LOOP-1 00037560
00131 IF(DEC.LT.0.AND.EXP.LT.0) VAL=VAL*10.D0+DFLOAT(DIGIT) 00037570
00132 IF(DEC.GE.0.AND.EXP.LT.0) VAL=VAL+DFLOAT(DIGIT)/10.D0**DEC 00037580
00133 IF(EXP.GE.0) EXP=EXP*10+DIGIT 00037590
00134 GO TO 1800 00037600
00135 C 00037610
00136 C 00037620
00137 C THE MANTISSA EXCEEDS THE PREVIOUSLY STATED LIMITS FOR 00037630
00138 C LENGTH. PROCESS THE ERROR, IGNORE THIS DIGIT, AND 00037640
00139 C SET COUNT TO A NEGATIVE VALUE AS A FLAG. 00037650
00140 C 00037660
00141 C 00037670
00142 600 CALL NDT13 (PNTTMP,603,2) 00037680
00143 COUNT=-1 00037690
00144 GO TO 1800 00037700
00145 C 00037710
00146 C 00037720
00147 C THE EXPONENT EXCEEDS THE PREVIOUSLY STATED LINITS FOR 00037730
00148 C LENGTH. PROCESS THE ERROR, ASSUME THE MAXIMUM VALUE, 00037740
00149 C EXPMX, AND SET COUNT TO A NEGATIVE VALUE AS A FLAG. 00037750
00150 C 00037760
00151 C 00037770
00152 700 CALL NDT13 (PNTTMP,604,2) 00037780
00153 EXP=EXPMX 00037790
00154 VAL=1.D0 00037800
00155 COUNT=-1 00037810
00156 GO TO 1800 00037820
00157 C 00037830
00158 C 00037840
00159 C THIS IS THE DECIMAL POINT PROCESSING ROUTINE. 00037850
00160 C IF THE EXPONENT CHARACTER OR THE DECIMAL POINT 00037860
00161 C HAVE OCCURRED PREVIOUSLY IT IS AN ERROR. 00037870
00162 C IF THERE ARE NO ERRORS SET DEC TO ZERO AS A FLAG. 00037880
00163 C SINCE ZEROS ARE NOW SIGNIFICANT, SET SGDCT TO 00037890
00164 C ZERO AS A FLAG UNLESS IT IS ALREADY NON-NEGATIVE. 00037900
00165 C 00037910
00166 C 00037920
00167 800 IF(EXP.GE.0) GO TO 900 00037930
00168 IF(DEC.GE.0) GO TO 1000 00037940
NDT22 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 DEC=0 00037950
00170 IF(SGDCT.LT.0) SGDCT=0 00037960
00171 GO TO 1800 00037970
00172 C 00037980
00173 C 00037990
00174 C THE DECIMAL POINT HAS OCCURRED IN THE EXPONENT. 00038000
00175 C SIGNAL THIS AS AN ERROR. 00038010
00176 C 00038020
00177 C 00038030
00178 900 CALL NDT13 (PNTTMP,606,2) 00038040
00179 GO TO 1800 00038050
00180 C 00038060
00181 C 00038070
00182 C A DUPLICATE DECIMAL POINT HAS OCCURRED IN THE 00038080
00183 C MANTISSA. SIGNAL THIS AS AN ERROR. 00038090
00184 C 00038100
00185 C 00038110
00186 1000 CALL NDT13 (PNTTMP,605,2) 00038120
00187 GO TO 1800 00038130
00188 C 00038140
00189 C 00038150
00190 C THIS ROUTINE PROCESSES THE PLUS AND MINUS SIGNS. 00038160
00191 C IF COUNT IS NOT ZERO THE SIGN HAS OCCURRED IN THE 00038170
00192 C MIDDLE OF A DIGIT STRING WHICH IS AN ERROR. IF THE 00038180
00193 C SIGN FOLLOWS A DECIMAL POINT IT IS AN ERROR. 00038190
00194 C IF IT IS FOR THE MANTISSA AND THE MANTISSA SIGN HAS 00038200
00195 C ALREADY BEEN ENCOUNTERED IT IS AN ERROR. 00038210
00196 C IF IT IS FOR THE EXPONENT AND THE EXPONENT SIGN HAS 00038220
00197 C ALREADY BEEN ENCOUNTERED IT IS AN ERROR. OTHERWISE, 00038230
00198 C THE SIGN IS VALID SO SET THE APPROPRIATE FLAG TO 00038240
00199 C INDICATE THAT IT HAS OCCURRED. 00038250
00200 C 00038260
00201 C 00038270
00202 1100 IF(COUNT.NE.0) GO TO 1200 00038280
00203 IF(DEC.GE.0.AND.EXP.LT.0) GO TO 1200 00038290
00204 IF(EXP.LT.0.AND.NSIGN.NE.0) GO TO 1200 00038300
00205 IF(EXP.GE.0.AND.ESIGN.NE.0) GO TO 1200 00038310
00206 IF(EXP.LT.0.AND.LOOP.EQ.3) NSIGN=1 00038320
00207 IF(EXP.LT.0.AND.LOOP.EQ.4) NSIGN=-1 00038330
00208 IF(EXP.GE.0.AND.LOOP.EQ.3) ESIGN=1 00038340
00209 IF(EXP.GE.0.AND.LOOP.EQ.4) ESIGN=-1 00038350
00210 GO TO 1800 00038360
00211 C 00038370
00212 C 00038380
00213 C THE SIGN CHARACTER IS ILLEGAL AS USED FOR ONE OF THE 00038390
00214 C REASONS STATED PREVIOUSLY. PROCESS THE ERROR. 00038400
00215 C 00038410
00216 C 00038420
00217 1200 CALL NDT13 (PNTTMP,602,2) 00038430
00218 GO TO 1800 00038440
00219 C 00038450
00220 C 00038460
00221 C THIS IS THE EXPONENT CHARACTER PROCESSING ROUTINE. 00038470
00222 C IF THE EXPONENT CHARACTER HAS OCCURRED PREVIOUSLY 00038480
00223 C IT IS AN ERROR. 00038490
00224 C 00038500
NDT22 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 C 00038510
00226 1300 IF(EXP.GE.0) GO TO 1500 00038520
00227 C 00038530
00228 C 00038540
00229 C IF NO DIGITS HAVE BEEN ENCOUNTERED PREVIOUSLY 00038550
00230 C SIGNAL THE ERROR. IF VAL HAS A VALUE OF ZERO 00038560
00231 C THEN WARN THE USER THAT HE IS EXPONENTIATING 00038570
00232 C ZERO. OTHERWISE, THE CHARACTER IS VALID SO 00038580
00233 C SET THE APPROPRIATE FLAGS. 00038590
00234 C 00038600
00235 C 00038610
00236 IF(COUNT.EQ.0) GO TO 1600 00038620
00237 IF(VAL.EQ.0.D0) GO TO 1700 00038630
00238 1400 EXP=0 00038640
00239 COUNT=0 00038650
00240 SGDCT=-1 00038660
00241 GO TO 1800 00038670
00242 C 00038680
00243 C 00038690
00244 C A DUPLICATE EXPONENT CHARACTER HAS BEEN ENCOUNTERED. 00038700
00245 C PROCESS THE ERROR AND IGNORE IT. 00038710
00246 C 00038720
00247 C 00038730
00248 1500 CALL NDT13 (PNTTMP,608,2) 00038740
00249 GO TO 1800 00038750
00250 C 00038760
00251 C 00038770
00252 C THE EXPONENT CHARACTER WAS ENCOUNTERED BEFORE THE 00038780
00253 C MANTISSA. SIGNAL THE ERROR AND ASSUME A '1' PRESENT. 00038790
00254 C SET VAL TO TO A VALUE OF 1 UNLESS THE DECIMAL POINT 00038800
00255 C HAS PRECEEDED. IN THAT CASE SET VAL TO .1 AND CONTINUE 00038810
00256 C PROCESSING THE EXPONENT CHARACTER AS VALID. 00038820
00257 C 00038830
00258 C 00038840
00259 1600 CALL NDT13 (PNTTMP,609,2) 00038850
00260 VAL=1.D0 00038860
00261 IF(DEC.EQ.0) VAL=1.D-1 00038870
00262 GO TO 1400 00038880
00263 C 00038890
00264 C 00038900
00265 C THE NUMBER BEING EXPONENTIATED IS ZERO. WARN THE USER 00038910
00266 C AND PROCESS THE EXPONENT CHARACTER AS VALID. 00038920
00267 C 00038930
00268 C 00038940
00269 1700 CALL NDT13 (PNTTMP,607,1) 00038950
00270 GO TO 1400 00038960
00271 1800 CONTINUE 00038970
00272 C 00038980
00273 C 00038990
00274 C ALL CHARACTERS OF THE STRING HAVE BEEN PROCESSED. 00039000
00275 C SET THE SIGN FLAGS TO THE DEFAULT VALUES IF THEY 00039010
00276 C INDICATE THAT NO SIGN OCCURRED. 00039020
00277 C 00039030
00278 C 00039040
00279 IF(NSIGN.EQ.0) NSIGN=1 00039050
00280 IF(ESIGN.EQ.0) ESIGN=1 00039060
NDT22 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
00281 C 00039070
00282 C 00039080
00283 C IF THE EXPONENT FLAG IS NEGATIVE SET IT TO ZERO SO 00039090
00284 C THAT THE FINAL VALUE OF 'VAL' MAY BE FORMED CORRECTLY. 00039100
00285 C CHECK FOR AN OVERFLOW OR AN UNDERFLOW BEFORE FORMING 'VAL'. 00039110
00286 C 00039120
00287 C 00039130
00288 IF(EXP.LT.0) EXP=0 00039140
00289 IF(VAL.EQ.0.D0) GO TO 1900 00039150
00290 IF(DLOG10(VAL)+DFLOAT(EXP).LE.DFLOAT(EXPMX)) GO TO 1900 00039160
00291 EXP=EXPMX 00039170
00292 VAL=1.D0 00039180
00293 CALL NDT13 (PNT,612,2) 00039190
00294 C 00039200
00295 C 00039210
00296 C IF NO DIGITS HAVE OCCURRED THEN EITHER THE EXPECTED 00039220
00297 C MANTISSA IS MISSING OR THE EXPONENT CHARACTER WAS 00039230
00298 C NOT FOLLOWED BY AN EXPONENT. SIGNAL THE APPROPRIATE 00039240
00299 C ERROR AND ASSUME A ZERO. 00039250
00300 C 00039260
00301 C 00039270
00302 1900 IF(COUNT.NE.0) GO TO 2000 00039280
00303 IF(EXP.LT.0) CALL NDT13 (PNT+1,610,2) 00039290
00304 IF(EXP.GE.0) CALL NDT13 (PNT+1,611,2) 00039300
00305 C 00039310
00306 C 00039320
00307 C FORM THE VALUE OF THE LITERAL AND PLACE IT IN THE LITERAL 00039330
00308 C IF THE TABLE OVERFLOWS, INDICATE THE SYSTEM ERROR. 00039340
00309 C 00039350
00310 C 00039360
00311 2000 VAL=VAL*DFLOAT(NSIGN)*10.D0**(ESIGN*EXP) 00039370
00312 2100 LITCT=LITCT+1 00039380
00313 IF(LITCT.GT.LITND) CALL NDT12 (4) 00039390
00314 LITBL(LITCT)=VAL 00039400
00315 C 00039410
00316 C 00039420
00317 C ADD A NEW TOKEN AND TMAP ELEMENT FOR THE LITERAL AFTER 00039430
00318 C CHECKING FOR TOKEN OVERFLOW. 00039440
00319 C 00039450
00320 C 00039460
00321 TOKPT=TOKPT+1 00039470
00322 IF(TOKPT.GT.80) CALL NDT12 (2) 00039480
00323 TOKEN(TOKPT)=-LITCT 00039490
00324 CALL NDT23 (START,TMAP(TOKPT)) 00039500
00325 RETURN 00039510
00326 END 00039530
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
NDT22 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-6
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 NUM +306 EXPMX +14 LITCT +25 LITND +26
TOKPT +524 CDATA +1222
SUBPROGRAMS CALLED
NDT13 DLG10. NDT12 DFLOT. NDT23
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
STOP 1 DIGIT 2 LOOP 3 SGDCT 4 COUNT 5
.S0002 6 .S0001 7 .S0000 10 EXP 11 DEC 12
PNT 13 VAL 14 NSIGN 16 ESIGN 17 START 20
PNTTMP 21 SPCL 22
TEMPORARIES
.A0016 26 .Q0000 27
CARD1 18# 25#
CARD2 18# 25#
CDATA 23# 28# 68 77
COUNT 23# 37# 99 110 110# 143# 155# 202 236 239# 302
CRSET 18# 25# 28#
DEC 23# 39# 129 129# 131 132 168 169# 203 261
DEF 18# 25#
DFLOT. 131 132 290 311
DIGIT 23# 130# 131 132 133
DLG10. 290
EQCHN 18# 25#
ERROR 18# 25#
ESIGN 23# 42# 205 208# 209# 280 280# 311
EXP 23# 40# 114 115 131 132 133 133# 153# 167 203 204 205 206
207 208 209 226 238# 288 288# 290 291# 303 304 311
EXPMX 23# 28# 153 290 291
FCTN 18# 25#
LITBL 16# 25# 314#
LITCT 23# 28# 312 312# 313 314 323
LITND 23# 28# 313
LOOP 23# 67# 68 76# 77 86# 111 130 206 207 208 209
NDT12 313 322
NDT13 51 85 142 152 178 186 217 248 259 269 293 303 304
NDT22 5#
NDT23 324
NSIGN 23# 41# 204 206# 207# 279 279# 311
NUM 23# 28# 68
OBJCD 18# 25# 28#
OPER 18# 25#
PNT 23# 59# 60 68 77 293 293# 303 304
PNTTMP 22# 60# 85 85# 142 142# 152 152# 178 178# 186 186# 217 217#
248 248# 259 259# 269 269#
PTRS 18# 25# 28#
RMAX 16# 25#
RMIN 16# 25#
SGDCT 23# 38# 111 111# 112 113 113# 114 115 170 170# 240#
SPCL 23# 30# 77
START 5# 23# 50 51 51# 59 324 324#
STOP 5# 23# 50 59
SUBSC 18# 25#
SYM 18# 25#
SYMTB 18# 25#
TITLE 18# 25#
TMAP 18# 25# 324 324#
TOKEN 18# 25# 28# 323#
TOKPT 23# 28# 321 321# 322 323 324
TYPCT 18# 25#
VAL 17# 36# 131 131# 132 132# 154# 237 260# 261# 289 290 292# 311
311# 314
XREF 18# 25#
1000P 168 186#
100P 50 59#
1100P 77 202#
1200P 202 203 204 205 217#
1300P 77 226#
1400P 238# 262 270
1500P 226 248#
1600P 236 259#
1700P 237 269#
1800P 59 99 112 134 144 156 171 179 187 210 218 241 249 271#
1900P 289 290 302#
2000P 302 311#
200P 67 69#
2100P 52 312#
300P 76 78#
500P 68 87 99#
600P 114 142#
700P 115 152#
800P 77 167#
900P 167 178#
NDT22 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00039540
00002 C PROGRAM AUTHOR - GARY PELKEY 00039550
00003 C 00039560
00004 C 00039570
00005 SUBROUTINE NDT23 (POS,OUT) 00039580
00006 REAL*8 RMIN,RMAX,LITBL(1024) 00039590
00007 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00039600
00008 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00039610
00009 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00039620
00010 3SYMTB(5,512) 00039630
00011 INTEGER POS,OUT,CDATA(144) 00039640
00012 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00039650
00013 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00039660
00014 2SYMTB,LITBL 00039670
00015 EQUIVALENCE (CDATA(1),OBJCD(1)) 00039680
00016 OUT=8*(POS+CDATA(142)-1) 00039690
00017 IF(POS.GE.CDATA(143)) OUT=8*(POS-CDATA(143)+CDATA(144))+1 00039700
00018 IF(POS.EQ.0) OUT=0 00039710
00019 RETURN 00039720
00020 END 00039740
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 CDATA +1222
SUBPROGRAMS CALLED
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
POS 1 OUT 2
TEMPORARIES
.A0016 3
CARD1 7# 12#
CARD2 7# 12#
CDATA 11# 15# 16 17
CRSET 7# 12#
DEF 7# 12#
EQCHN 7# 12#
ERROR 7# 12#
FCTN 7# 12#
LITBL 6# 12#
NDT23 5#
OBJCD 7# 12# 15#
OPER 7# 12#
OUT 5# 11# 16# 17# 18#
POS 5# 11# 16 17 18
PTRS 7# 12#
RMAX 6# 12#
RMIN 6# 12#
SUBSC 7# 12#
SYM 7# 12#
SYMTB 7# 12#
TITLE 7# 12#
TMAP 7# 12#
TOKEN 7# 12#
TYPCT 7# 12#
XREF 7# 12#
NDT23 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00039750
00002 C PROGRAM AUTHOR - GARY PELKEY 00039760
00003 C 00039770
00004 C 00039780
00005 SUBROUTINE NDT24 (PNT1,PNT2,RTC) 00039790
00006 REAL*8 RMIN,RMAX,LITBL(1024) 00039800
00007 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00039810
00008 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00039820
00009 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00039830
00010 3SYMTB(5,512) 00039840
00011 INTEGER POSTMP
00012 INTEGER CDATA(144),PNT1,PNT2,RTC,SUB,POS,I 00039850
00013 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00039860
00014 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00039870
00015 2SYMTB,LITBL 00039880
00016 EQUIVALENCE (SUB,OBJCD(153)),(CDATA(1),OBJCD(1)) 00039890
00017 EQUIVALENCE (POS,OBJCD(154)),(I,OBJCD(155)) 00039900
00018 C 00039910
00019 C 00039920
00020 C THIS PROGRAM PERFORMS A SYNTAX CHECK ON A VARIABLE CANDIDATE 00039930
00021 C LOCATED IN CDATA SPECIFIED BY THE INPUT STARTING AND 00039940
00022 C STOPPING ADDRESSES. CHARACTERS ARE COMPARED AGAINST THE 00039950
00023 C ELEMENTS OF CRSET AND THE SUBSCRIPTS OF THE MATCHING 00039960
00024 C ELEMENT OF CRSET ARE SAVED IN THE SUBSC ARRAY. SUBSC IS 00039970
00025 C INITIALLY BLANKED OUT (SET TO ALL 1'S). 00039980
00026 C 00039990
00027 C 00040000
00028 RTC=0 00040010
00029 DO 100 SUB=1,6 00040020
00030 100 SUBSC(SUB)=1 00040030
00031 SUB=0 00040040
00032 IF(PNT2.GE.PNT1) GO TO 150 00040050
00033 C 00040060
00034 C 00040070
00035 C THE CALLING ROUTINE EXPECTED TO FIND A VARIABLE STARTING 00040080
00036 C AT PNT1 AND ENDING AT PNT2. PNT2 IS LESS THAN PNT1 SO 00040090
00037 C THERE IS NO VARIABLE. THE ERROR IS FLAGGED. 00040100
00038 C 00040110
00039 C 00040120
00040 CALL NDT13 (PNT1,519,3) 00040130
00041 GO TO 600 00040140
00042 150 DO 400 POS=PNT1,PNT2 00040150
00043 SUB=SUB+1 00040160
00044 DO 200 I=1,39 00040170
00045 IF(CRSET(I).EQ.CDATA(POS)) GO TO 300 00040180
00046 200 CONTINUE 00040190
00047 RTC=3 00040200
00048 C 00040210
00049 C 00040220
00050 C AN ILLEGAL CHARACTER HAS BEEN ENCOUNTERED. IT IS FLAGGED. 00040230
00051 C 00040240
00052 C 00040250
00053 POSTMP=POS
00054 CALL NDT13 (POSTMP,502,RTC) 00040260
00055 GO TO 400 00040270
00056 300 IF(SUB.LT.7) SUBSC(SUB)=I 00040280
NDT24 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 400 CONTINUE 00040290
00058 C 00040300
00059 C 00040310
00060 C THE SUBSC ARRAY HAS BEEN FILLED AND ANY ILLEGAL CHARACTERS 00040320
00061 C HAVE BEEN DETECTED. WHAT REMAINS IS JUST A CHECK TO 00040330
00062 C MAKE SURE THAT THE VARIABLE BEGINS WITH A LEGAL CHARACTER 00040340
00063 C AND THAT THE STRING IS NOT OVER SIX CHARACTERS LONG. 00040350
00064 C EITHER OF THESE ERRORS WILL BE FLAGGED. 00040360
00065 C 00040370
00066 C 00040380
00067 IF(SUB.LT.7) GO TO 500 00040390
00068 RTC=3 00040400
00069 CALL NDT13 (PNT1+6,503,RTC) 00040410
00070 500 IF(SUBSC(1).LT.30) GO TO 600 00040420
00071 RTC=3 00040430
00072 CALL NDT13 (PNT1,501,RTC) 00040440
00073 600 RETURN 00040450
00074 END 00040470
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 SUB +1452 CDATA +1222 POS +1453 I +1454
SUBPROGRAMS CALLED
NDT13
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
PNT2 1 PNT1 2 RTC 3 POSTMP 4 .S0002 5
.S0001 6 .S0000 7
TEMPORARIES
.A0016 10 .Q0000 11
CARD1 7# 13#
CARD2 7# 13#
CDATA 12# 16# 45
CRSET 7# 13# 45
DEF 7# 13#
EQCHN 7# 13#
ERROR 7# 13#
FCTN 7# 13#
I 12# 17# 44# 45 56
LITBL 6# 13#
NDT13 40 54 69 72
NDT24 5#
OBJCD 7# 13# 16# 17#
OPER 7# 13#
PNT1 5# 12# 32 40 40# 42 69 72 72#
PNT2 5# 12# 32 42
POS 12# 17# 42# 45 53
POSTMP 11# 53# 54 54#
PTRS 7# 13#
RMAX 6# 13#
RMIN 6# 13#
RTC 5# 12# 28# 47# 54 54# 68# 69 69# 71# 72 72#
SUB 12# 16# 29# 30 31# 43 43# 56 67
SUBSC 7# 13# 30# 56# 70
SYM 7# 13#
SYMTB 7# 13#
TITLE 7# 13#
TMAP 7# 13#
TOKEN 7# 13#
TYPCT 7# 13#
XREF 7# 13#
100P 29 30#
150P 32 42#
200P 44 46#
300P 45 56#
400P 42 55 57#
500P 67 70#
600P 41 70 73#
NDT24 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00040480
00002 C PROGRAM AUTHOR - GARY PELKEY 00040490
00003 C 00040500
00004 C 00040510
00005 SUBROUTINE NDT25 (PNT1,PNT2,INCOD) 00040520
00006 C 00040530
00007 C 00040540
00008 C THIS ROUTINE ENTERS TOKENS FOR FUNCTIONS. UPON BEING INVOKED 00040550
00009 C THE SUBSC ARRAY HAS ALREADY BEEN BUILT AND THE CHARACTERS 00040560
00010 C SERVING AS THE FUNCT. NAME HAVE ALREADY BEEN SYNTAX CHECKED. 00040570
00011 C WHAT REMAINS IS TO IDENTIFY THE FUNCTION, IF POSSIBLE, AS ONE 00040580
00012 C SUPPORTED BY NDTRAN, BUILD THE TOKEN, AND MAKE SURE THE 00040590
00013 C ARGUMENT COUNT IS CORRECT. 00040600
00014 C 00040610
00015 C 00040620
00016 REAL*8 RMIN,RMAX,LITBL(1024) 00040630
00017 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00040640
00018 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00040650
00019 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00040660
00020 3SYMTB(5,512) 00040670
00021 INTEGER BUFFR(5),I,PNT1,PNT2,TOKPT,INCOD 00040680
00022 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00040690
00023 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00040700
00024 2SYMTB,LITBL 00040710
00025 EQUIVALENCE (TOKPT,TOKEN(3)) 00040720
00026 IF(INCOD.NE.0) GO TO 125 00040730
00027 C 00040740
00028 C 00040750
00029 C PACKING THE FUNCTION 'CANDIDATE' FOR COMPARISON 00040760
00030 C 00040770
00031 C 00040780
00032 CALL NDT40 (BUFFR) 00040790
00033 DO 100 I=1,22 00040800
00034 IF(BUFFR(1).EQ.FCTN(1,I).AND.BUFFR(2).EQ.FCTN(2,I)) GO TO 200 00040810
00035 100 CONTINUE 00040820
00036 CALL NDT13 (PNT1,523,3) 00040830
00037 C 00040840
00038 C 00040850
00039 C THE INCOMING FUNCTION WAS NOT FOUND IN THE FCTN ARRAY SO 00040860
00040 C ITS STARTING POSITION WAS FLAGGED. SETTING I TO 0 HERE 00040870
00041 C WILL HAVE THE EFFECT OF INSERTING A TOKEN FOR A FUNCTION 00040880
00042 C INTO THE TOKEN ARRAY WITH A POINTER TO THE FCTN TABLE OF 0. 00040890
00043 C 00040900
00044 C 00040910
00045 125 I=0 00040920
00046 200 TOKPT=TOKPT+1 00040930
00047 IF(TOKPT.GT.80) CALL NDT12 (2) 00040940
00048 TOKEN(TOKPT)=20480+I 00040950
00049 C 00040960
00050 C 00040970
00051 C IF A VALID FUNCTION HAS BEEN ENCOUNTERED, NDT23 IS CALLED 00040980
00052 C TO VARIFY THAT THE NUMBER OF ARGUMENTS IS CORRECT. 00040990
00053 C BEFORE RETURNING, NDT23 IS CALLED TO MAP THE NEW TOKEN BACK 00041000
00054 C ONTO THE ORIGINAL CARDS. 00041010
00055 C 00041020
00056 C 00041030
NDT25 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 IF(I.NE.0) CALL NDT42 (PNT1,PNT2,FCTN(4,I)) 00041040
00058 CALL NDT23 (PNT1,TMAP(TOKPT)) 00041050
00059 RETURN 00041060
00060 END 00041080
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 TOKPT +524
SUBPROGRAMS CALLED
NDT13 NDT40 NDT12 NDT42 NDT23
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
PNT2 1 BUFFR 2 PNT1 7 .R0000 10 INCOD 11
.S0000 12 I 13
TEMPORARIES
.A0016 14 .Q0001 15
BUFFR 21# 32 32# 34
CARD1 17# 22#
CARD2 17# 22#
CRSET 17# 22#
DEF 17# 22#
EQCHN 17# 22#
ERROR 17# 22#
FCTN 17# 22# 34 57 57#
I 21# 33# 34 45# 48 57
INCOD 5# 21# 26
LITBL 16# 22#
NDT12 47
NDT13 36
NDT23 58
NDT25 5#
NDT40 32
NDT42 57
OBJCD 17# 22#
OPER 17# 22#
PNT1 5# 21# 36 36# 57 57# 58 58#
PNT2 5# 21# 57 57#
PTRS 17# 22#
RMAX 16# 22#
RMIN 16# 22#
SUBSC 17# 22#
SYM 17# 22#
SYMTB 17# 22#
TITLE 17# 22#
TMAP 17# 22# 58 58#
TOKEN 17# 22# 25# 48#
TOKPT 21# 25# 46 46# 47 48 58
TYPCT 17# 22#
XREF 17# 22#
100P 33 35#
125P 26 45#
200P 34 46#
NDT25 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00041090
00002 C PROGRAM AUTHOR - GARY PELKEY 00041100
00003 C 00041110
00004 C 00041120
00005 SUBROUTINE NDT26 (POS) 00041130
00006 C 00041140
00007 C 00041150
00008 C THIS ROUTINE UPDATES AN EXISTING VARIABLE TOKEN TO INDICATE 00041160
00009 C SUBSCRIPT INFORMATION. THE FOLLOWING SCHEME IS USED TO 00041170
00010 C REPRESENT TOKEN CLASS: 00041180
00011 C 00041190
00012 C TYPE CLASS 00041200
00013 C 00041210
00014 C UNSUBSCRIPTED 0 00041220
00015 C INVALID 1 00041230
00016 C .K 2 00041240
00017 C .JK 3 00041250
00018 C .KL 4 00041260
00019 C 00041270
00020 C TOKEN=4096*CLASS+(POINTER TO SYMTB)-1 00041280
00021 C 00041290
00022 C 00041300
00023 REAL*8 RMIN,RMAX,LITBL(1024) 00041310
00024 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00041320
00025 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00041330
00026 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00041340
00027 3SYMTB(5,512) 00041350
00028 INTEGER POS,START,CDATA(144),BLANK,I,FIRST,SCOND,J,K,L,LENTH 00041360
00029 INTEGER TOKPT 00041370
00030 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00041380
00031 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00041390
00032 2SYMTB,LITBL 00041400
00033 EQUIVALENCE (CDATA(1),OBJCD(1)),(BLANK,CRSET(1)) 00041410
00034 EQUIVALENCE (J,CRSET(13)),(K,CRSET(14)),(L,CRSET(15)) 00041420
00035 EQUIVALENCE (TOKPT,TOKEN(3)) 00041430
00036 START=POS 00041440
00037 C 00041450
00038 C 00041460
00039 C HERE STARTS A SEARCH FOR A DELIMITER. IF ONE IS FOUND, POS 00041470
00040 C WILL POINT TO IT AND THUS POS WILL POINT TO THE NEXT TOKEN 00041480
00041 C WHEN THIS ROUTINE RETURNS. 00041490
00042 C 00041500
00043 C 00041510
00044 100 IF(CDATA(POS).EQ.BLANK) GO TO 200 00041520
00045 DO 150 I=2,9 00041530
00046 IF(CDATA(POS).EQ.OPER(I)) GO TO 200 00041540
00047 150 CONTINUE 00041550
00048 POS=POS+1 00041560
00049 GO TO 100 00041570
00050 200 LENTH=POS-START 00041580
00051 IF(TOKEN(TOKPT).EQ.24576) GO TO 1000 00041590
00052 IF(LENTH.GT.0) GO TO 300 00041600
00053 CALL NDT13 (START-1,508,1) 00041610
00054 GO TO 900 00041620
00055 C 00041630
00056 C 00041640
NDT26 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C A SIFTING ALGORITHM IS USED TO DETERMINE WHICH MULTIPLE OF 00041650
00058 C 4096 IS TO BE ADDED TO THE EXISTING TOKEN. 00041660
00059 C 00041670
00060 C 00041680
00061 300 FIRST=CDATA(START) 00041690
00062 SCOND=CDATA(START+1) 00041700
00063 IF(LENTH.EQ.1.AND.(FIRST.EQ.J.OR.FIRST.EQ.L)) GO TO 900 00041710
00064 C 00041720
00065 C 00041730
00066 C .J AND .L HAVE BEEN GIVEN AN 'INVALID' CLASSIFICATION BUT 00041740
00067 C ARE NOT FLAGGED IN THIS ROUTINE. 00041750
00068 C 00041760
00069 C 00041770
00070 IF(LENTH.EQ.1.AND.FIRST.EQ.K) GO TO 800 00041780
00071 IF(LENTH.EQ.2.AND.FIRST.EQ.J.AND.SCOND.EQ.K) GO TO 700 00041790
00072 IF(LENTH.EQ.2.AND.FIRST.EQ.K.AND.SCOND.EQ.L) GO TO 600 00041800
00073 C 00041810
00074 C 00041820
00075 C INVALID SUBSCRIPTS ARE FLAGGED HERE. 00041830
00076 C 00041840
00077 C 00041850
00078 CALL NDT13 (START,504,1) 00041860
00079 GO TO 900 00041870
00080 600 TOKEN(TOKPT)=TOKEN(TOKPT)+4096 00041880
00081 700 TOKEN(TOKPT)=TOKEN(TOKPT)+4096 00041890
00082 800 TOKEN(TOKPT)=TOKEN(TOKPT)+4096 00041900
00083 900 TOKEN(TOKPT)=TOKEN(TOKPT)+4096 00041910
00084 1000 RETURN 00041920
00085 END 00041940
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 CDATA +1222 BLANK +251 J +265 K +266
L +267 TOKPT +524
SUBPROGRAMS CALLED
NDT13
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
POS 1 SCOND 2 LENTH 3 .S0000 4 I 5
FIRST 6 START 7
NDT26 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
TEMPORARIES
.A0016 10 .Q0000 11
BLANK 28# 33# 44
CARD1 24# 30#
CARD2 24# 30#
CDATA 28# 33# 44 46 61 62
CRSET 24# 30# 33# 34#
DEF 24# 30#
EQCHN 24# 30#
ERROR 24# 30#
FCTN 24# 30#
FIRST 28# 61# 63 70 71 72
I 28# 45# 46
J 28# 34# 63 71
K 28# 34# 70 71 72
L 28# 34# 63 72
LENTH 28# 50# 52 63 70 71 72
LITBL 23# 30#
NDT13 53 78
NDT26 5#
OBJCD 24# 30# 33#
OPER 24# 30# 46
POS 5# 28# 36 44 46 48 48# 50
PTRS 24# 30#
RMAX 23# 30#
RMIN 23# 30#
SCOND 28# 62# 71 72
START 28# 36# 50 53 61 62 78 78#
SUBSC 24# 30#
SYM 24# 30#
SYMTB 24# 30#
TITLE 24# 30#
TMAP 24# 30#
TOKEN 24# 30# 35# 51 80# 80 81# 81 82# 82 83# 83
TOKPT 29# 35# 51 80 81 82 83
TYPCT 24# 30#
XREF 24# 30#
1000P 51 84#
100P 44# 49
150P 45 47#
200P 44 46 50#
300P 52 61#
600P 72 80#
700P 71 81#
800P 70 82#
900P 54 63 79 83#
NDT26 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00041950
00002 C PROGRAM AUTHOR - GARY PELKEY 00041960
00003 C 00041970
00004 C 00041980
00005 SUBROUTINE NDT27 (PNT1,UPDAT) 00041990
00006 C 00042000
00007 C 00042010
00008 C THIS ROUTINE ENTERS AND UPDATES SYMBOLS IN THE SYMBOL TABLE 00042020
00009 C AND ENTERS A TOKEN AND TMAP ENTRY FOR THEM. THE SUBSCRIPTS 00042030
00010 C FOR THE SYMBOL ARE ASSUMED TO BE IN THE SUBSC ARRAY ALREADY. 00042040
00011 C 00042050
00012 C 00042060
00013 REAL*8 RMIN,RMAX,LITBL(1024) 00042070
00014 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00042080
00015 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00042090
00016 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00042100
00017 3SYMTB(5,512) 00042110
00018 INTEGER PNT1,UPDAT,BUFFR(5),TOKPT 00042120
00019 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00042130
00020 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00042140
00021 2SYMTB,LITBL 00042150
00022 EQUIVALENCE (TOKPT,TOKEN(3)) 00042160
00023 CALL NDT40 (BUFFR) 00042170
00024 C 00042180
00025 C 00042190
00026 C THE HASH ROUTINE IS CALLED TO FIND OR CREATE THE 00042200
00027 C INCOMING SYMBOL AND RETURN A POINTER TO IT. 00042210
00028 C 00042220
00029 C 00042230
00030 CALL NDT37 (BUFFR(1),LOC) 00042240
00031 IF(UPDAT.EQ.0) GO TO 100 00042250
00032 C 00042260
00033 C 00042270
00034 C SYM(8,9 OR 10) IS UPDATED AS REQUESTED INDICATING PRINT, 00042280
00035 C PLOT OR USED ON RIGHT OF EQUALS SIGN, RESPECTIVELY. 00042290
00036 C 00042300
00037 C 00042310
00038 SYM(UPDAT+7)=1 00042320
00039 CALL NDT40 (SYMTB(1,LOC)) 00042330
00040 100 TOKPT=TOKPT+1 00042340
00041 IF(TOKPT.GT.80) CALL NDT12 (2) 00042350
00042 C 00042360
00043 C 00042370
00044 C THE TOKEN AND ITS MAPPING ENTRY ARE CREATED. 00042380
00045 C 00042390
00046 C 00042400
00047 TOKEN(TOKPT)=LOC-1 00042410
00048 CALL NDT23 (PNT1,TMAP(TOKPT)) 00042420
00049 RETURN 00042430
00050 END 00042450
EQUIVALENCED VARIABLES
NDT27 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 TOKPT +524
SUBPROGRAMS CALLED
NDT40 NDT12 NDT23 NDT37
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
BUFFR 1 PNT1 6 *LOC 7 UPDAT 10
TEMPORARIES
.A0016 11 .Q0000 12
BUFFR 18# 23 23# 30 30#
CARD1 14# 19#
CARD2 14# 19#
CRSET 14# 19#
DEF 14# 19#
EQCHN 14# 19#
ERROR 14# 19#
FCTN 14# 19#
LITBL 13# 19#
LOC 30 30# 39 47
NDT12 41
NDT23 48
NDT27 5#
NDT37 30
NDT40 23 39
OBJCD 14# 19#
OPER 14# 19#
PNT1 5# 18# 48 48#
PTRS 14# 19#
RMAX 13# 19#
RMIN 13# 19#
SUBSC 14# 19#
SYM 14# 19# 38#
SYMTB 14# 19# 39 39#
TITLE 14# 19#
TMAP 14# 19# 48 48#
TOKEN 14# 19# 22# 47#
TOKPT 18# 22# 40 40# 41 47 48
TYPCT 14# 19#
UPDAT 5# 18# 31 38
XREF 14# 19#
100P 31 40#
NDT27 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00042460
00002 C * 00042470
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00042480
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00042490
00005 C * 00042500
00006 C THIS SUBROUTINE ALLOCATES TEMPORARY STORAGE LOCATIONS * 00042510
00007 C FOR INTERMEDIATE RESULTS OF ARITHMETIC OPERATIONS. * 00042520
00008 C * 00042530
00009 C***************************************************************** 00042540
00010 SUBROUTINE NDT28 (TEMP, VATOP) 00042550
00011 REAL*8 RMIN,RMAX,LITBL(1024) 00042560
00012 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00042570
00013 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00042580
00014 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00042590
00015 3SYMTB(5,512) 00042600
00016 INTEGER I,ACC,TEMP,VATOP,VASTK(50) 00042610
00017 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00042620
00018 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00042630
00019 2SYMTB,LITBL 00042640
00020 EQUIVALENCE (VASTK(1),XREF(1)) 00042650
00021 DATA ACC /0/ 00042660
00022 C***************************************************************** 00042670
00023 C * 00042680
00024 C A 0 IN VASTK INDICATES THE RESULT OF A PRECEDING OPERATION * 00042690
00025 C IS STORED IN THE ACCUMULATOR. THIS SUBROUTINE MOVES ANY * 00042700
00026 C SUCH RESULT TO A TEMPORARY STORAGE LOCATION. TEMP IS THE * 00042710
00027 C NUMBER OF TEMPORARY LOCATIONS USED PREVIOUSLY. TEMPORARY * 00042720
00028 C STORAGE LOCATIONS ARE POSITIONS 1 - 10 IN THE VARIABLE ARRA* 00042730
00029 C VATOP IS THE LAST POSITION IN THE VARIABLE STACK TO BE * 00042740
00030 C SEARCHED FOR THE ACCUMULATOR. THE ENTIRE STACK IS OFTEN * 00042750
00031 C NOT SEARCHED BECAUSE OF THE REVERSE OPERATIONS AND COMMU * 00042760
00032 C TATIVE PROPERTIES. IF THE ACCUMULATOR IS FOUND IN THE * 00042770
00033 C STACK, A STORE INSTRUCTION IS GENERATED. * 00042780
00034 C * 00042790
00035 C***************************************************************** 00042800
00036 DO 100 I = 1, VATOP 00042810
00037 IF (VASTK(I) .EQ. ACC) GO TO 200 00042820
00038 100 CONTINUE 00042830
00039 GO TO 300 00042840
00040 200 TEMP = TEMP + 1 00042850
00041 IF (TEMP .GT. 10) CALL NDT12 (6) 00042860
00042 CALL NDT46 (2, TEMP) 00042870
00043 VASTK(I) = TEMP 00042880
00044 300 RETURN 00042890
00045 END 00042910
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
NDT28 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 VASTK +1602
SUBPROGRAMS CALLED
NDT46 NDT12
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
ACC 1 .S0000 2 TEMP 3 VATOP 4 I 5
TEMPORARIES
.A0016 6
ACC 16# 21# 37
CARD1 12# 17#
CARD2 12# 17#
CRSET 12# 17#
DEF 12# 17#
EQCHN 12# 17#
ERROR 12# 17#
FCTN 12# 17#
I 16# 36# 37 43
LITBL 11# 17#
NDT12 41
NDT28 10#
NDT46 42
OBJCD 12# 17#
OPER 12# 17#
PTRS 12# 17#
RMAX 11# 17#
RMIN 11# 17#
SUBSC 12# 17#
SYM 12# 17#
SYMTB 12# 17#
TEMP 10# 16# 40 40# 41 42 42# 43
TITLE 12# 17#
TMAP 12# 17#
TOKEN 12# 17#
TYPCT 12# 17#
VASTK 16# 20# 37 43#
VATOP 10# 16# 36
XREF 12# 17# 20#
100P 36 38#
200P 37 40#
300P 39 44#
NDT28 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00042920
00002 C * 00042930
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00042940
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00042950
00005 C * 00042960
00006 C***************************************************************** 00042970
00007 SUBROUTINE NDT29 (TYPE,START,POS,STR) 00042980
00008 REAL*8 RMIN,RMAX,LITBL(1024) 00042990
00009 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00043000
00010 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00043010
00011 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00043020
00012 3SYMTB(5,512) 00043030
00013 INTEGER TYPE,START,BLANK,POS,I,STRNG(384) 00043040
00014 INTEGER LPBGN,LPEND,STR 00043050
00015 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00043060
00016 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00043070
00017 2SYMTB,LITBL 00043080
00018 EQUIVALENCE (BLANK,CRSET(1)),(STRNG(1),CARD1(1)) 00043090
00019 C***************************************************************** 00043100
00020 C * 00043110
00021 C THIS PROGRAM SEARCHES AN EQUATION STRING FOR THE * 00043120
00022 C OCCURENCE OF AN OPERATOR. IF AN OPERATOR IS FOUND, * 00043130
00023 C ITS SUBSCRIPT IN THE OPER ARRAY IS RETURNED IN TYPE * 00043140
00024 C AND THE POSITION IN THE STRING PRECEDING THE OPERATOR * 00043150
00025 C IS RETURNED IN POS. THE ARGUMENT START INDICATES THE * 00043160
00026 C POSITION IN THE STRING AT WHICH THE SEARCH IS TO BEGIN. * 00043170
00027 C THE ARGUMENT STR INDICATES WHICH STRING IS TO BE SEARCHED: * 00043180
00028 C 1 - CARD1 2 - CARD2 4 - CDATA * 00043190
00029 C * 00043200
00030 C***************************************************************** 00043210
00031 TYPE = 0 00043220
00032 LPBGN = START + (STR - 1) * 80 00043230
00033 LPEND = 80 * STR - 8 00043240
00034 IF (STR .EQ. 4) LPEND = 381 00043250
00035 DO 100 POS = LPBGN, LPEND 00043260
00036 IF (STRNG(POS) .EQ. BLANK) GO TO 300 00043270
00037 DO 100 I = 1, 9 00043280
00038 IF (STRNG(POS) .EQ. OPER(I)) GO TO 200 00043290
00039 100 CONTINUE 00043300
00040 POS = POS + 1 00043310
00041 GO TO 300 00043320
00042 200 TYPE = I 00043330
00043 300 POS = POS - 1 - (STR - 1) * 80 00043340
00044 RETURN 00043350
00045 END 00043370
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
NDT29 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 BLANK +251 STRNG +642
SUBPROGRAMS CALLED
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
LPBGN 1 STR 2 POS 3 .S0001 4 .S0000 5
TYPE 6 LPEND 7 I 10 START 11
TEMPORARIES
.A0016 12
BLANK 13# 18# 36
CARD1 9# 15# 18#
CARD2 9# 15#
CRSET 9# 15# 18#
DEF 9# 15#
EQCHN 9# 15#
ERROR 9# 15#
FCTN 9# 15#
I 13# 37# 38 42
LITBL 8# 15#
LPBGN 14# 32# 35
LPEND 14# 33# 34# 35
NDT29 7#
OBJCD 9# 15#
OPER 9# 15# 38
POS 7# 13# 35# 36 38 40 40# 43 43#
PTRS 9# 15#
RMAX 8# 15#
RMIN 8# 15#
START 7# 13# 32
STR 7# 14# 32 33 34 43
STRNG 13# 18# 36 38
SUBSC 9# 15#
SYM 9# 15#
SYMTB 9# 15#
TITLE 9# 15#
TMAP 9# 15#
TOKEN 9# 15#
TYPCT 9# 15#
TYPE 7# 13# 31# 42#
XREF 9# 15#
100P 35 37 39#
200P 38 42#
300P 36 41 43#
NDT29 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00043380
00002 C * 00043390
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00043400
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00043410
00005 C * 00043420
00006 C***************************************************************** 00043430
00007 SUBROUTINE NDT30 00043440
00008 C***************************************************************** 00043450
00009 C * 00043460
00010 C OUTPUT FIELD PROCESSOR * 00043470
00011 C * 00043480
00012 C THIS PROGRAM, PART OF THE OUTPUT SYNTAX PHASE, PROCESSES * 00043490
00013 C A CLAUSE INTO ITS BEGINNING AND END FIELDS. IT IS CALLED * 00043500
00014 C BY NDT09, CALLS NDT35, AND USES NDT13 FOR HANDLING ERRORS. * 00043510
00015 C * 00043520
00016 C * 00043530
00017 C***************************************************************** 00043540
00018 REAL*8 RMIN,RMAX,LITBL(1024) 00043550
00019 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00043560
00020 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00043570
00021 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00043580
00022 3SYMTB(5,512) 00043590
00023 INTEGER CDATA(144),OUTPT(240),VARCT,TYPE,RUNNO,FLAG(11), 00043600
00024 1CHAR(10),RUN(11),CFLAG,VMAX,IVPLT 00043610
00025 INTEGER DMODE,RMODE,SMODE,LOOP,CLNUM,BGF(4),NDF(4),DELIM(6), 00043620
00026 1SRNUM,RGFST,SFLAG,SLASH,EQSGN,OPNTH,CPNTH,COMMA,BLANK,XCHAR 00043630
00027 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00043640
00028 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00043650
00029 2SYMTB,LITBL 00043660
00030 EQUIVALENCE (OUTPT(1),DEF(1),VARCT),(OUTPT(2),TYPE), 00043670
00031 1(OUTPT(3),RUNNO),(OUTPT(158),IVPLT), 00043680
00032 2(OUTPT(147),FLAG(1)),(OUTPT(179),RUN(1)),(OUTPT(200),CFLAG), 00043690
00033 3(OUTPT(190),CHAR(1)),(CDATA(1),OBJCD(1)) 00043700
00034 EQUIVALENCE (DMODE,OUTPT(201)),(RMODE,OUTPT(202)), 00043710
00035 1(SMODE,OUTPT(203)),(LOOP,OUTPT(204)),(CLNUM,OUTPT(205)), 00043720
00036 2(BGF(1),OUTPT(206)),(NDF(1),OUTPT(210)), 00043730
00037 3(SRNUM,OUTPT(220)),(RGFST,OUTPT(221)),(SFLAG,OUTPT(222)), 00043740
00038 4(VMAX,OUTPT(223)) 00043750
00039 EQUIVALENCE (DELIM(1),SLASH),(DELIM(2),EQSGN), 00043760
00040 1(DELIM(3),OPNTH),(DELIM(4),CPNTH),(DELIM(5),COMMA), 00043770
00041 2(DELIM(6),BLANK) 00043780
00042 DATA DELIM /'/','=','(',')',',',' '/ 00043790
00043 C***************************************************************** 00043800
00044 C * 00043810
00045 C THIS FIRST SECTION INITIALIZES RMODE AND THE FIELD MARKERS * 00043820
00046 C FOR A NEW CLAUSE. * 00043830
00047 C * 00043840
00048 C RMODE RANGE MODE 0 BEFORE PARENTHESES OCCUR * 00043850
00049 C 1 INSIDE PARENTHESES, BEFORE COMMA * 00043860
00050 C 2 INSIDE PARENTHESES, AFTER COMMA * 00043870
00051 C * 00043880
00052 C BGF, NDF BEGINNING AND END FIELD MARKERS * 00043890
00053 C A CLAUSE IS DIVIDED INTO FOUR FIELDS: * 00043900
00054 C 1 - VARIABLE FIELD (INCLUDES RUN NUMBER), * 00043910
00055 C 2 - PLOT CHARACTER FIELD, * 00043920
00056 C 3 - LOW FIELD, AND * 00043930
NDT30 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C 4 - HIGH FIELD. * 00043940
00058 C BGF MARKS THE BEGINNING OF EACH FIELD, AND * 00043950
00059 C NDF MARKS THE END OF THE FIELD. * 00043960
00060 C BGF(1) IS SET TO THE NEXT CHARACTER. * 00043970
00061 C * 00043980
00062 C SFLAG END OF SERIES FLAG 0 SERIES CONTINUES * 00043990
00063 C 1 END OF SERIES * 00044000
00064 C * 00044010
00065 C***************************************************************** 00044020
00066 SFLAG = 0 00044030
00067 RMODE = 0 00044040
00068 DO 50 XCHAR = 1, 4 00044050
00069 BGF(XCHAR) = 0 00044060
00070 50 NDF(XCHAR) = 0 00044070
00071 BGF(1) = LOOP + 1 00044080
00072 C***************************************************************** 00044090
00073 C * 00044100
00074 C THIS SECTION SEARCHES FOR A MEMBER OF THE DELIMITER ARRAY * 00044110
00075 C IN CDATA. * 00044120
00076 C * 00044130
00077 C DELIM - CONTAINS THE SIX DELIMITERS THE OUTPUT FIELD * 00044140
00078 C PROCESSOR LOOKS FOR: * 00044150
00079 C 1 - SLASH '/' * 00044160
00080 C 2 - EQSGN '=' EQUAL SIGN * 00044170
00081 C 3 - OPNTH '(' OPEN PARENTHESES * 00044180
00082 C 4 - CPNTH ')' CLOSED PARENTHESES * 00044190
00083 C 5 - COMMA ',' * 00044200
00084 C 6 - BLANK ' ' * 00044210
00085 C * 00044220
00086 C***************************************************************** 00044230
00087 100 LOOP = LOOP + 1 00044240
00088 DO 200 XCHAR = 1,6 00044250
00089 IF (CDATA(LOOP) .EQ. DELIM(XCHAR)) GO TO 300 00044260
00090 200 CONTINUE 00044270
00091 C***************************************************************** 00044280
00092 C * 00044290
00093 C IF THE CHARACTER WAS NOT ONE OF THE DELIM ARRAY, THE DATA * 00044300
00094 C MODE IS SET TO INTERIOR MODE (DMODE = 0), AND THEN CONTROL * 00044310
00095 C IS SENT BACK TO CHECK THE NEXT CHARACTER. * 00044320
00096 C * 00044330
00097 C***************************************************************** 00044340
00098 DMODE = 0 00044350
00099 GO TO 100 00044360
00100 C***************************************************************** 00044370
00101 C * 00044380
00102 C A CHARACTER WAS FOUND. IF IN INTERIOR MODE, CONTROL IS * 00044390
00103 C SENT TO THE APPROPRIATE SECTION. IF A BLANK OCCURS, GO TO * 00044400
00104 C THE BLANK SECTION ANYWAY. * 00044410
00105 C * 00044420
00106 C IF DMODE INDICATES BEGINNING MODE, A DELIMITER HAS OCCURED * 00044430
00107 C BEFORE ANY OTHER CHARACTER. * 00044440
00108 C * 00044450
00109 C***************************************************************** 00044460
00110 300 IF (DMODE .GE. 0) GO TO (400,900,1200,1500,1600,2100),XCHAR 00044470
00111 IF (XCHAR .EQ. 6) GO TO 2100 00044480
00112 CALL NDT13(LOOP, 703, 2) 00044490
NDT30 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 BGF(1) = LOOP + 1 00044500
00114 GO TO 100 00044510
00115 C***************************************************************** 00044520
00116 C * 00044530
00117 C * * * * * SLASH * * * * * * 00044540
00118 C * 00044550
00119 C * 00044560
00120 C SET THE END OF CLAUSE MARKER (NDF(4)). * 00044570
00121 C * 00044580
00122 C***************************************************************** 00044590
00123 400 NDF(4) = LOOP - 1 00044600
00124 C***************************************************************** 00044610
00125 C * 00044620
00126 C ENTRY POINT FOR FINDING A )/ * 00044630
00127 C PRINT CARDS ARE NOT ALLOWED TO HAVE SLASHES. * 00044640
00128 C * 00044650
00129 C***************************************************************** 00044660
00130 500 IF (TYPE .EQ. 13) GO TO 600 00044670
00131 CALL NDT13(LOOP, 702, 1) 00044680
00132 GO TO 700 00044690
00133 C***************************************************************** 00044700
00134 C * 00044710
00135 C SET SFLAG TO INDICATE END OF SERIES. * 00044720
00136 C FOR A PLOT, A DOUBLE SLASH INDICATES AN INDEPENDENT * 00044730
00137 C VARIABLE FIELD. IF ENCOUNERED, SET DMODE TO INDEPENDENT * 00044740
00138 C VARIABLE MODE. * 00044750
00139 C * 00044760
00140 C***************************************************************** 00044770
00141 600 SFLAG = 1 00044780
00142 IF (CDATA(LOOP+1) .NE. SLASH) GO TO 700 00044790
00143 DMODE = 2 00044800
00144 IVPLT = 1 00044810
00145 LOOP = LOOP + 1 00044820
00146 C***************************************************************** 00044830
00147 C * 00044840
00148 C CALL NDT35, THE OUTPUT DELIMITER PROCESSOR, TO CHECK FOR * 00044850
00149 C CONSECUTIVE COMMAS AND SLASHES. * 00044860
00150 C * 00044870
00151 C***************************************************************** 00044880
00152 700 CALL NDT35(COMMA) 00044890
00153 CALL NDT35(SLASH) 00044900
00154 IF (CDATA(LOOP+1) .EQ. COMMA) GO TO 700 00044910
00155 C***************************************************************** 00044920
00156 C * 00044930
00157 C IF NOT INSIDE PARENTHESES, GO TO THE END OF CLAUSE SECTION.* 00044940
00158 C OTHERWISE, THERE SHOULD HAVE BEEN A CLOSED PARENTHESES * 00044950
00159 C BEFORE THIS SLASH. * 00044960
00160 C * 00044970
00161 C CHECK THE NEXT CHARACTER FOR A CPNTH, CALL THE APPROPRIATE * 00044980
00162 C ERROR MESSAGE, AND THEN GO TO THE END OF CLAUSE SECTION. * 00044990
00163 C IF THE CPNTH WAS MISSING, CHANGE THE CHARACTER SO THAT THE * 00045000
00164 C RANGE PROCESSOR CAN SET THE SERIES CORRECTLY. * 00045010
00165 C * 00045020
00166 C***************************************************************** 00045030
00167 IF (RMODE .EQ. 0) GO TO 2300 00045040
00168 IF (CDATA(LOOP+1) .EQ. CPNTH) GO TO 800 00045050
NDT30 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 CALL NDT13(LOOP, 710, 2) 00045060
00170 GO TO 2300 00045070
00171 800 CALL NDT13(LOOP, 705, 1) 00045080
00172 LOOP = LOOP + 1 00045090
00173 GO TO 2300 00045100
00174 C***************************************************************** 00045110
00175 C * 00045120
00176 C * * * * * EQUAL SIGN * * * * * * 00045130
00177 C * 00045140
00178 C * 00045150
00179 C AN EQUAL SIGN MAY NOT APPEAR WITHIN PARENTHESES. IF FOUND,* 00045160
00180 C NOTE THE ERROR AND LOOK FOR ANOTHER DELIMITER. * 00045170
00181 C * 00045180
00182 C***************************************************************** 00045190
00183 900 IF (RMODE .EQ. 0) GO TO 1000 00045200
00184 CALL NDT13(LOOP, 718, 2) 00045210
00185 GO TO 100 00045220
00186 C***************************************************************** 00045230
00187 C * 00045240
00188 C NO PARENTHESES HAVE OCCURED. SET THE FIELD MARKERS, CHECK * 00045250
00189 C FOR CONSECUTIVE EQSGNS, AND CHECK FOR A PRINT CARD. THE * 00045260
00190 C EQUAL SIGN IS NOT LEGAL ON A PRINT CARD. * 00045270
00191 C * 00045280
00192 C THEN GO SEARCH FOR ANOTHER DELIMITER. * 00045290
00193 C * 00045300
00194 C***************************************************************** 00045310
00195 1000 NDF(1) = LOOP - 1 00045320
00196 CALL NDT35(EQSGN) 00045330
00197 IF (TYPE .EQ. 12) GO TO 1100 00045340
00198 BGF(2) = LOOP + 1 00045350
00199 GO TO 100 00045360
00200 1100 CALL NDT13(LOOP, 712, 2) 00045370
00201 BGF(2) = -1 00045380
00202 GO TO 100 00045390
00203 C***************************************************************** 00045400
00204 C * 00045410
00205 C * * * * * OPEN PARENTHESIS * * * * * * 00045420
00206 C * 00045430
00207 C * 00045440
00208 C * 00045450
00209 C PARENTHESES ARE NOT ALLOWED ON PRINT CARDS. * 00045460
00210 C * 00045470
00211 C FIRST CHECK FOR PROPER PARENTHESES. IF A SECOND OPNTH * 00045480
00212 C IS ENCOUNTERED, IT IS ASSUMED TO BE A CLOSED PARNTHESIS. * 00045490
00213 C CONTROL IS SENT TO THAT SECTION. * 00045500
00214 C * 00045510
00215 C***************************************************************** 00045520
00216 1200 IF (TYPE .EQ. 12) CALL NDT13(LOOP, 722, 2) 00045530
00217 IF (RMODE .EQ. 0) GO TO 1300 00045540
00218 CALL NDT13(LOOP, 706, 2) 00045550
00219 GO TO 1500 00045560
00220 C***************************************************************** 00045570
00221 C * 00045580
00222 C SET THE RANGE MODE AND FIELD MARKERS. CHECK IF THE END * 00045590
00223 C OF THE VARIABLE FIELD (NDF(1)) HAS BEEN DEFINED. IF IT * 00045600
00224 C HASN'T, THEN SET IT NOW. * 00045610
NDT30 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 C * 00045620
00226 C***************************************************************** 00045630
00227 1300 RMODE = 1 00045640
00228 NDF(2) = LOOP - 1 00045650
00229 IF (NDF(1) .NE. 0) GO TO 1400 00045660
00230 NDF(1) = LOOP - 1 00045670
00231 BGF(2) = -1 00045680
00232 C***************************************************************** 00045690
00233 C * 00045700
00234 C CHECK FOR CONSECUTIVE OPNTH, THEN LOOK FOR ANOTHER * 00045710
00235 C DELIMITER. * 00045720
00236 C * 00045730
00237 C***************************************************************** 00045740
00238 1400 CALL NDT35(OPNTH) 00045750
00239 BGF(3) = LOOP + 1 00045760
00240 GO TO 100 00045770
00241 C***************************************************************** 00045780
00242 C * 00045790
00243 C * * * * * CLOSED PARENTHESIS * * * * * * 00045800
00244 C * 00045810
00245 C * 00045820
00246 C SET FIELD MARKERS. CHECK FOR PARENTHESIS ERRORS, AND * 00045830
00247 C CONSECUTIVE CPNTHS. SET RMODE TO INDICATE COMPLETED * 00045840
00248 C PARENTHESES. * 00045850
00249 C * 00045860
00250 C***************************************************************** 00045870
00251 1500 NDF(4) = LOOP - 1 00045880
00252 IF (RMODE .NE. 2) CALL NDT13(LOOP, 708 + RMODE*11, 2) 00045890
00253 CALL NDT35(CPNTH) 00045900
00254 RMODE = 0 00045910
00255 C***************************************************************** 00045920
00256 C * 00045930
00257 C A SLASH OR A COMMA SHOULD OCCUR AFTER A CPNTH. UPON THIS * 00045940
00258 C OCCURENCE, SEND CONTROL TO THE CORRESPONDING SECTION. * 00045950
00259 C NOTE THE ERROR IF BOTH TESTS FAIL, THEN GO TO * 00045960
00260 C END OF CLAUSE. * 00045970
00261 C * 00045980
00262 C***************************************************************** 00045990
00263 LOOP = LOOP + 1 00046000
00264 IF (CDATA(LOOP) .EQ. COMMA) GO TO 1700 00046010
00265 IF (CDATA(LOOP) .EQ. SLASH) GO TO 500 00046020
00266 IF (CDATA(LOOP) .EQ. BLANK) GO TO 2200 00046030
00267 LOOP = LOOP - 1 00046040
00268 CALL NDT13(LOOP, 707, 2) 00046050
00269 GO TO 2300 00046060
00270 C***************************************************************** 00046070
00271 C * 00046080
00272 C * * * * * COMMA * * * * * * 00046090
00273 C * 00046100
00274 C * 00046110
00275 C SET FIELD MARKER, CHECK FOR CONSECUTIVE COMMAS. * 00046120
00276 C * 00046130
00277 C***************************************************************** 00046140
00278 1600 NDF(4) = LOOP - 1 00046150
00279 CALL NDT35(COMMA) 00046160
00280 C***************************************************************** 00046170
NDT30 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
00281 C * 00046180
00282 C A COMMA IS HANDLED DIFFERENTLY, ACCORDING TO THE STATUS * 00046190
00283 C OF THE PARENTHESES, AS INDICATED BY RMODE. * 00046200
00284 C * 00046210
00285 C***************************************************************** 00046220
00286 IF (RMODE - 1) 1700, 1800, 1900 00046230
00287 C * 00046240
00288 C * 00046250
00289 C OUTSIDE PARENTHESES * 00046260
00290 C * 00046270
00291 C CHECK FOR CONSECUTIVE SLASHES AND COMMAS, AND THEN GO TO * 00046280
00292 C END OF CLAUSE. * 00046290
00293 C * 00046300
00294 C***************************************************************** 00046310
00295 1700 CALL NDT35(SLASH) 00046320
00296 CALL NDT35(COMMA) 00046330
00297 IF (CDATA(LOOP + 1) .EQ. SLASH) GO TO 1700 00046340
00298 GO TO 2300 00046350
00299 C***************************************************************** 00046360
00300 C * 00046370
00301 C INSIDE PARENTHESES * 00046380
00302 C * 00046390
00303 C SET RMODE, FIELD MARKERS, AND SEARCH FOR ANOTHER DELIMITER.* 00046400
00304 C * 00046410
00305 C***************************************************************** 00046420
00306 1800 NDF(3) = NDF(4) 00046430
00307 RMODE = 2 00046440
00308 BGF(4) = LOOP + 1 00046450
00309 GO TO 100 00046460
00310 C***************************************************************** 00046470
00311 C * 00046480
00312 C SECOND COMMA WITHIN PARENTHESES * 00046490
00313 C * 00046500
00314 C IF NEXT CHARACTER IS A CLOSED PARENTHESIS, ASSUME THE ,) * 00046510
00315 C WAS MEANT TO BE A ),. * 00046520
00316 C IF NOT, TREAT THE SECOND COMMA AS AN OUTSIDE COMMA. * 00046530
00317 C * 00046540
00318 C***************************************************************** 00046550
00319 1900 IF (CDATA(LOOP + 1) .EQ. CPNTH) GO TO 2000 00046560
00320 CALL NDT13(LOOP, 709, 2) 00046570
00321 GO TO 1700 00046580
00322 2000 CALL NDT13(LOOP, 705, 1) 00046590
00323 LOOP = LOOP + 1 00046600
00324 GO TO 2300 00046610
00325 C***************************************************************** 00046620
00326 C * 00046630
00327 C * * * * * BLANK * * * * * * 00046640
00328 C * 00046650
00329 C * 00046660
00330 C SET END FIELD MARKER. * 00046670
00331 C IF DMODE IS ZERO, THEN THERE WAS NO VARIABLE FIELD ON THIS * 00046680
00332 C CARD. SET BGF(1) TO -1 TO SIGNIFY THIS CONDITION. * 00046690
00333 C THEN GO TO THE RETURN SECTION. * 00046700
00334 C * 00046710
00335 C***************************************************************** 00046720
00336 2100 NDF(4) = LOOP - 1 00046730
NDT30 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-6
00337 IF (DMODE .GE. 0) GO TO 2200 00046740
00338 CALL NDT13(LOOP, 704, 3) 00046750
00339 BGF(1) = -1 00046760
00340 GO TO 2800 00046770
00341 C***************************************************************** 00046780
00342 C * 00046790
00343 C CHECK THE LAST CHARACTERS BEFORE THE BLANK FOR A COMMA OR * 00046800
00344 C SLASH. THIS IS AN ERROR. * 00046810
00345 C * 00046820
00346 C***************************************************************** 00046830
00347 2200 IF (CDATA(LOOP-1) .EQ. SLASH .OR. CDATA(LOOP-1) .EQ. COMMA) 00046840
00348 1 CALL NDT13(LOOP-1, 703, 2) 00046850
00349 DMODE = 1 00046860
00350 SFLAG = 1 00046870
00351 C***************************************************************** 00046880
00352 C * 00046890
00353 C * * * * * END OF CLAUSE * * * * * * 00046900
00354 C * 00046910
00355 C * 00046920
00356 C THIS SECTION CHECKS THROUGH THE FIELD MARKERS TO MAKE SURE * 00046930
00357 C ALL DEFAULTS ARE SET. THERE ARE THREE CASES THAT MAY OCCUR* 00046940
00358 C THAT ARE HANDLED: * 00046950
00359 C * 00046960
00360 C VARIABLE BY ITSELF (NDF1 = 0) * 00046970
00361 C NDF(1) = CURRENT POSITION * 00046980
00362 C BEGINNING FIELDS 2 - 4 DEFAULT (-1) * 00046990
00363 C * 00047000
00364 C VARIABLE AND PLOT CHARACTER (NDF2 = 0) * 00047010
00365 C NDF(2) = CURRENT POSITION * 00047020
00366 C BEGINNING FIELDS 3 AND 4 DEFAULT * 00047030
00367 C * 00047040
00368 C NO COMMA INSIDE PARENTHESES (BGF(4) = 0) * 00047050
00369 C NDF(3) = NDF(4) * 00047060
00370 C BEGINNING FIELD 4 DEFAULT * 00047070
00371 C * 00047080
00372 C***************************************************************** 00047090
00373 2300 IF (NDF(2) .EQ. 0) GO TO 2400 00047100
00374 IF (BGF(4) .NE. 0) GO TO 2800 00047110
00375 NDF(3) = NDF(4) 00047120
00376 GO TO 2700 00047130
00377 2400 IF (NDF(1) .EQ. 0) GO TO 2500 00047140
00378 NDF(2) = NDF(4) 00047150
00379 GO TO 2600 00047160
00380 2500 NDF(1) = NDF(4) 00047170
00381 BGF(2) = -1 00047180
00382 2600 BGF(3) = -1 00047190
00383 2700 BGF(4) = -1 00047200
00384 C***************************************************************** 00047210
00385 C * 00047220
00386 C * * * * * RETURN SECTION * * * * * * 00047230
00387 C * 00047240
00388 C IF LAST VARIABLE TO BE PROCESSED, SET END OF SERIES FLAG. * 00047250
00389 C * 00047260
00390 C***************************************************************** 00047270
00391 2800 IF (CLNUM .EQ. VMAX) SFLAG = 1 00047280
00392 RETURN 00047290
NDT30 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-7
00393 END 00047310
EQUIVALENCED VARIABLES
( DELIM 1 SLASH 1 EQSGN 2 OPNTH 3 CPNTH 4 COMMA 5
BLANK 6 )
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OUTPT +1462 VARCT +1462 CDATA +1222 TYPE +1463
RUNNO +1464 IVPLT +1717 FLAG +1704 RUN +1744 CFLAG +1771
CHAR +1757 DMODE +1772 RMODE +1773 SMODE +1774 LOOP +1775
CLNUM +1776 BGF +1777 NDF +2003 SRNUM +2015 RGFST +2016
SFLAG +2017 VMAX +2020
SUBPROGRAMS CALLED
NDT13 NDT35
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
COMMA 5 EQSGN 2 XCHAR 7 BLANK 6 SLASH 1
DELIM 1 .S0001 10 OPNTH 3 .S0000 11 CPNTH 4
TEMPORARIES
.A0016 12 .Q0000 13
BGF 25# 34# 69# 71# 113# 198# 201# 231# 239# 308# 339# 374 381# 382#
383#
BLANK 25# 39# 266
CARD1 19# 27#
CARD2 19# 27#
CDATA 23# 30# 89 142 154 168 264 265 266 297 319 347
CFLAG 23# 30#
CHAR 23# 30#
CLNUM 25# 34# 391
COMMA 25# 39# 152 152# 154 264 279 279# 296 296# 347
CPNTH 25# 39# 168 253 253# 319
CRSET 19# 27#
DEF 19# 27# 30#
DELIM 25# 39# 42# 89
DMODE 25# 34# 98# 110 143# 337 349#
EQCHN 19# 27#
EQSGN 25# 39# 196 196#
ERROR 19# 27#
FCTN 19# 27#
FLAG 23# 30#
IVPLT 23# 30# 144#
LITBL 18# 27#
LOOP 25# 34# 71 87 87# 89 112 112# 113 123 131 131# 142 145
145# 154 168 169 169# 171 171# 172 172# 184 184# 195 198 200
200# 216 216# 218 218# 228 230 239 251 252 252# 263 263# 264
265 266 267 267# 268 268# 278 297 308 319 320 320# 322 322#
323 323# 336 338 338# 347
NDF 25# 34# 70# 123# 195# 228# 229 230# 251# 278# 306# 306 336# 373
375# 375 377 378# 378 380# 380
NDT13 112 131 169 171 184 200 216 218 252 268 320 322 338 347
NDT30 7#
NDT35 152 153 196 238 253 279 295 296
OBJCD 19# 27# 30#
OPER 19# 27#
OPNTH 25# 39# 238 238#
OUTPT 23# 30# 34#
PTRS 19# 27#
RGFST 25# 34#
RMAX 18# 27#
RMIN 18# 27#
RMODE 25# 34# 67# 167 183 217 227# 252 254# 286 307#
RUN 23# 30#
RUNNO 23# 30#
SFLAG 25# 34# 66# 141# 350# 391#
SLASH 25# 39# 142 153 153# 265 295 295# 297 347
SMODE 25# 34#
SRNUM 25# 34#
SUBSC 19# 27#
SYM 19# 27#
SYMTB 19# 27#
TITLE 19# 27#
TMAP 19# 27#
TOKEN 19# 27#
TYPCT 19# 27#
TYPE 23# 30# 130 197 216
VARCT 23# 30#
VMAX 23# 34# 391
XCHAR 25# 68# 69 70 88# 89 110 111
XREF 19# 27#
1000P 183 195#
100P 87# 99 114 185 199 202 240 309
1100P 197 200#
1200P 110 216#
1300P 217 227#
1400P 229 238#
1500P 110 219 251#
1600P 110 278#
1700P 264 286 295# 297 321
1800P 286 306#
1900P 286 319#
2000P 319 322#
200P 88 90#
2100P 110 111 336#
2200P 266 337 347#
2300P 167 170 173 269 298 324 373#
2400P 373 377#
2500P 377 380#
2600P 379 382#
2700P 376 383#
2800P 340 374 391#
300P 89 110#
400P 110 123#
500P 130# 265
50P 68 70#
600P 130 141#
700P 132 142 152# 154
800P 168 171#
900P 110 183#
NDT30 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00047320
00002 C * 00047330
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00047340
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00047350
00005 C * 00047360
00006 C***************************************************************** 00047370
00007 SUBROUTINE NDT31 00047380
00008 C***************************************************************** 00047390
00009 C * 00047400
00010 C OUTPUT VARIABLE PROCESSOR * 00047410
00011 C * 00047420
00012 C THIS PROGRAM, PART OF THE OUTPUT SYNTAX PHASE, PROCESSES * 00047430
00013 C THE VARIABLES FOUND ON AN OUTPUT CARD. IT IS CALLED BY * 00047440
00014 C NDT09, CALLS NDT36 TO PROCESS THE RUN NUMBER FIELD, CALLS * 00047450
00015 C NDT24 AND NDT27 TO CHECK THE SYNTAX OF THE VARIABLE, AND * 00047460
00016 C USES NDT13 FOR ERROR HANDLING. * 00047470
00017 C * 00047480
00018 C***************************************************************** 00047490
00019 REAL*8 RMIN,RMAX,LITBL(1024) 00047500
00020 REAL*8 LOW(11),HIGH(11) 00047510
00021 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00047520
00022 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00047530
00023 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00047540
00024 3SYMTB(5,512) 00047550
00025 INTEGER CDATA(144),OUTPT(240),VARCT,TYPE,RUNNO,VNUM(11), 00047560
00026 1FLAG(11),RUN(11),CHAR(10),CFLAG 00047570
00027 INTEGER DMODE,RMODE,SMODE,LOOP,CLNUM,BGF(4),NDF(4), 00047580
00028 1XCHAR,VAROK,BGF1,NDF1,XOTPT 00047590
00029 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00047600
00030 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00047610
00031 2SYMTB,LITBL 00047620
00032 EQUIVALENCE (OUTPT(1),DEF(1),VARCT),(OUTPT(2),TYPE), 00047630
00033 1(OUTPT(3),RUNNO),(OUTPT(103),LOW(1)),(OUTPT(125),HIGH(1)), 00047640
00034 2(OUTPT(147),FLAG(1)),(OUTPT(179),RUN(1)),(OUTPT(200),CFLAG), 00047650
00035 3(OUTPT(190),CHAR(1)),(CDATA(1),OBJCD(1)),(OUTPT(92),VNUM(1)) 00047660
00036 EQUIVALENCE (DMODE,OUTPT(201)),(RMODE,OUTPT(202)), 00047670
00037 1(SMODE,OUTPT(203)),(LOOP,OUTPT(204)),(CLNUM,OUTPT(205)), 00047680
00038 2(BGF(1),OUTPT(206),BGF1),(NDF(1),OUTPT(210),NDF1), 00047690
00039 3(SRNUM,OUTPT(220)),(CLFST,OUTPT(221)) 00047700
00040 C***************************************************************** 00047710
00041 C * 00047720
00042 C BEFORE ACTUALLY CHECKING THE VARIABLE, THE RUN NUMBER MUST * 00047730
00043 C BE FOUND AND CHECKED. CALL NDT36 TO DO THIS. * 00047740
00044 C * 00047750
00045 C***************************************************************** 00047760
00046 CALL NDT36 00047770
00047 C***************************************************************** 00047780
00048 C * 00047790
00049 C CALL THE VARIABLE SYNTAX CHECKER. VAROK, THE RETURN CODE * 00047800
00050 C INDICATES IF THE VARIABLE IS OKAY. IF IT ISN'T, RETURN. * 00047810
00051 C THEN CALL THE VARIABLE PROCESSOR. * 00047820
00052 C * 00047830
00053 C***************************************************************** 00047840
00054 CALL NDT24(BGF1, NDF1, VAROK) 00047850
00055 IF (VAROK .NE. 0) GO TO 1000 00047860
00056 CALL NDT27(BGF1, TYPE-11) 00047870
NDT31 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C***************************************************************** 00047880
00058 C * 00047890
00059 C PLACE THE VARIABLE NAME AND VARIABLE NUMBER IN THE * 00047900
00060 C OUTPUT BUFFER. * 00047910
00061 C * 00047920
00062 C***************************************************************** 00047930
00063 DO 900 XCHAR = 1, 6 00047940
00064 XOTPT = 8*CLNUM - 5 + XCHAR 00047950
00065 900 OUTPT(XOTPT) = SYM(XCHAR) 00047960
00066 VNUM(CLNUM) = SYM(14) 00047970
00067 C***************************************************************** 00047980
00068 C * 00047990
00069 C * * * * * RETURN SECTION * * * * * * 00048000
00070 C * 00048010
00071 C***************************************************************** 00048020
00072 1000 RETURN 00048030
00073 END 00048050
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OUTPT +1462 VARCT +1462 CDATA +1222 TYPE +1463
RUNNO +1464 LOW +1630 HIGH +1656 FLAG +1704 RUN +1744
CFLAG +1771 CHAR +1757 VNUM +1615 DMODE +1772 RMODE +1773
SMODE +1774 LOOP +1775 CLNUM +1776 BGF +1777 BGF1 +1777
NDF +2003 NDF1 +2003 SRNUM +2015 CLFST +2016
SUBPROGRAMS CALLED
NDT27 NDT36 NDT24
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
XCHAR 1 VAROK 2 .S0000 3 XOTPT 4
TEMPORARIES
.A0016 5 .Q0000 6
BGF 27# 36#
BGF1 27# 36# 54 54# 56 56#
CARD1 21# 29#
CARD2 21# 29#
CDATA 25# 32#
CFLAG 25# 32#
CHAR 25# 32#
CLFST 36#
CLNUM 27# 36# 64 66
CRSET 21# 29#
DEF 21# 29# 32#
DMODE 27# 36#
EQCHN 21# 29#
ERROR 21# 29#
FCTN 21# 29#
FLAG 25# 32#
HIGH 20# 32#
LITBL 19# 29#
LOOP 27# 36#
LOW 20# 32#
NDF 27# 36#
NDF1 27# 36# 54 54#
NDT24 54
NDT27 56
NDT31 7#
NDT36 46
OBJCD 21# 29# 32#
OPER 21# 29#
OUTPT 25# 32# 36# 65#
PTRS 21# 29#
RMAX 19# 29#
RMIN 19# 29#
RMODE 27# 36#
RUN 25# 32#
RUNNO 25# 32#
SMODE 27# 36#
SRNUM 36#
SUBSC 21# 29#
SYM 21# 29# 65 66
SYMTB 21# 29#
TITLE 21# 29#
TMAP 21# 29#
TOKEN 21# 29#
TYPCT 21# 29#
TYPE 25# 32# 56
VARCT 25# 32#
VAROK 27# 54 54# 55
VNUM 25# 32# 66#
XCHAR 27# 63# 64 65
XOTPT 27# 64# 65
XREF 21# 29#
1000P 55 72#
900P 63 65#
NDT31 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00048060
00002 C * 00048070
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00048080
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00048090
00005 C * 00048100
00006 C***************************************************************** 00048110
00007 SUBROUTINE NDT32 00048120
00008 C***************************************************************** 00048130
00009 C * 00048140
00010 C PLOT CHARACTER PROCESSOR * 00048150
00011 C * 00048160
00012 C THIS PROGRAM, PART OF THE OUTPUT SYNTAX PHASE, PROCESSES * 00048170
00013 C THE PLOT CHARACTERS FOUND ON A PLOT CARD. IT IS CALLED * 00048180
00014 C BY NDT09, AND USES NDT13 FOR HANDLING ERRORS. * 00048190
00015 C * 00048200
00016 C NDT32 FILLS IN THE OUTPUT BUFFER PLOT CHARACTER ARRAY, * 00048210
00017 C CHAR, CHECKING FOR ILLEGAL CHARACTERS AND DUPLICATIONS. * 00048220
00018 C * 00048230
00019 C***************************************************************** 00048240
00020 REAL*8 RMIN,RMAX,LITBL(1024) 00048250
00021 REAL*8 LOW(11),HIGH(11) 00048260
00022 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00048270
00023 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00048280
00024 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00048290
00025 3SYMTB(5,512) 00048300
00026 INTEGER CDATA(144),OUTPT(240),VARCT,TYPE,RUNNO,FLAG(11), 00048310
00027 1CHAR(10),RUN(11),CFLAG 00048320
00028 INTEGER DMODE,RMODE,SMODE,LOOP,CLNUM,BGF(4),NDF(4),BGF2, 00048330
00029 1SRNUM,CLFST,XCHAR,OMEGA 00048340
00030 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00048350
00031 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00048360
00032 2SYMTB,LITBL 00048370
00033 EQUIVALENCE (OUTPT(1),DEF(1),VARCT),(OUTPT(2),TYPE), 00048380
00034 1(OUTPT(3),RUNNO),(OUTPT(103),LOW(1)),(OUTPT(125),HIGH(1)), 00048390
00035 2(OUTPT(147),FLAG(1)),(OUTPT(179),RUN(1)),(OUTPT(200),CFLAG), 00048400
00036 3(OUTPT(190),CHAR(1)),(CDATA(1),OBJCD(1)) 00048410
00037 EQUIVALENCE (DMODE,OUTPT(201)),(RMODE,OUTPT(202)), 00048420
00038 1(SMODE,OUTPT(203)),(LOOP,OUTPT(204)),(CLNUM,OUTPT(205)), 00048430
00039 2(BGF(1),OUTPT(206)),(NDF(1),OUTPT(210)),(DOT,OPER(1)), 00048440
00040 3(SRNUM,OUTPT(220)),(CLFST,OUTPT(221)) 00048450
00041 C***************************************************************** 00048460
00042 C * 00048470
00043 C IF THERE IS NO PLOT CHARACTER FIELD, PROCEED IMMEDIATELY * 00048480
00044 C TO THE RETURN SECTION. * 00048490
00045 C * 00048500
00046 C AN INDEPENDENT VARIABLE MAY NOT HAVE A PLOT CHARACTER. * 00048510
00047 C * 00048520
00048 C***************************************************************** 00048530
00049 BGF2 = BGF(2) 00048540
00050 IF (BGF2 .LE. 0) GO TO 700 00048550
00051 IF (CLNUM .NE. 1) GO TO 100 00048560
00052 CALL NDT13(BGF2-1, 723, 2) 00048570
00053 GO TO 100 00048580
00054 C***************************************************************** 00048590
00055 C * 00048600
00056 C CHECK THE LENGTH OF THE PLOT CHARACTER FIELD. * 00048610
NDT32 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C * 00048620
00058 C***************************************************************** 00048630
00059 100 IF (NDF(2)-BGF2) 200, 400, 300 00048640
00060 C***************************************************************** 00048650
00061 C * 00048660
00062 C NO FIELD AFTER EQUAL SIGN. * 00048670
00063 C CALL THE ERROR ROUTINE, AND GO TO THE RETURN SECTION. * 00048680
00064 C * 00048690
00065 C***************************************************************** 00048700
00066 200 CALL NDT13(NDF(2), 715, 2) 00048710
00067 GO TO 700 00048720
00068 C***************************************************************** 00048730
00069 C * 00048740
00070 C FIELD TOO LONG --- NOTE ERROR AND IGNORE EXTRA CHARACTERS. * 00048750
00071 C * 00048760
00072 C***************************************************************** 00048770
00073 300 CALL NDT13(BGF2+1, 713, 2) 00048780
00074 C***************************************************************** 00048790
00075 C * 00048800
00076 C FIELD IS LENGTH 1 --- CHECK FOR DUPLICATE CHARACTERS * 00048810
00077 C * 00048820
00078 C***************************************************************** 00048830
00079 400 OMEGA = CLNUM - 2 00048840
00080 DO 500 XCHAR = 1, OMEGA 00048850
00081 IF(CHAR(XCHAR) .EQ. CDATA(BGF2)) GO TO 600 00048860
00082 500 CONTINUE 00048870
00083 C***************************************************************** 00048880
00084 C * 00048890
00085 C IF THIS CHARACTER WAS NOT USED BEFORE, ASSIGN IT * 00048900
00086 C IN THE CHAR ARRAY OF OUTPT, THEN RETURN. * 00048910
00087 C * 00048920
00088 C***************************************************************** 00048930
00089 CHAR(CLNUM - 1) = CDATA(BGF2) 00048940
00090 GO TO 700 00048950
00091 C***************************************************************** 00048960
00092 C * 00048970
00093 C DUPLICATE PLOT CHARACTERS * 00048980
00094 C * 00048990
00095 C***************************************************************** 00049000
00096 600 CALL NDT13(BGF2, 714, 1) 00049010
00097 C***************************************************************** 00049020
00098 C * 00049030
00099 C RETURN SECTION * 00049040
00100 C * 00049050
00101 C***************************************************************** 00049060
00102 700 RETURN 00049070
00103 END 00049090
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
NDT32 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OUTPT +1462 VARCT +1462 CDATA +1222 DOT +320
TYPE +1463 RUNNO +1464 LOW +1630 HIGH +1656 FLAG +1704
RUN +1744 CFLAG +1771 CHAR +1757 DMODE +1772 RMODE +1773
SMODE +1774 LOOP +1775 CLNUM +1776 BGF +1777 NDF +2003
SRNUM +2015 CLFST +2016
SUBPROGRAMS CALLED
NDT13
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
XCHAR 1 BGF2 2 .S0000 3 OMEGA 4
TEMPORARIES
.A0016 5 .Q0000 6
BGF 28# 37# 49
BGF2 28# 49# 50 52 59 73 81 89 96 96#
CARD1 22# 30#
CARD2 22# 30#
CDATA 26# 33# 81 89
CFLAG 26# 33#
CHAR 26# 33# 81 89#
CLFST 28# 37#
CLNUM 28# 37# 51 79 89
CRSET 22# 30#
DEF 22# 30# 33#
DMODE 28# 37#
DOT 37#
EQCHN 22# 30#
ERROR 22# 30#
FCTN 22# 30#
FLAG 26# 33#
HIGH 21# 33#
LITBL 20# 30#
LOOP 28# 37#
LOW 21# 33#
NDF 28# 37# 59 66 66#
NDT13 52 66 73 96
NDT32 7#
OBJCD 22# 30# 33#
OMEGA 28# 79# 80
OPER 22# 30# 37#
OUTPT 26# 33# 37#
PTRS 22# 30#
RMAX 20# 30#
RMIN 20# 30#
RMODE 28# 37#
RUN 26# 33#
RUNNO 26# 33#
SMODE 28# 37#
SRNUM 28# 37#
SUBSC 22# 30#
SYM 22# 30#
SYMTB 22# 30#
TITLE 22# 30#
TMAP 22# 30#
TOKEN 22# 30#
TYPCT 22# 30#
TYPE 26# 33#
VARCT 26# 33#
XCHAR 28# 80# 81
XREF 22# 30#
100P 51 53 59#
200P 59 66#
300P 59 73#
400P 59 79#
500P 80 82#
600P 81 96#
700P 50 67 90 102#
NDT32 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00049100
00002 C * 00049110
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00049120
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00049130
00005 C * 00049140
00006 C***************************************************************** 00049150
00007 SUBROUTINE NDT33 00049160
00008 C***************************************************************** 00049170
00009 C * 00049180
00010 C PLOT RANGE ANALYZER * 00049190
00011 C * 00049200
00012 C * 00049210
00013 C THIS PROGRAM, PART OF THE OUTPUT SYNTAX PHASE, ANALYZES A * 00049220
00014 C PLOT RANGE FOR DEFAULT INFORMATION ABOUT THE LOW AND HIGH * 00049230
00015 C VALUES, SETTING FLAG. NDT33 IS CALLED BY NDT09, AND CALLS * 00049240
00016 C NDT22 TO SYNTAX CHECK THE NUMBERS. * 00049250
00017 C * 00049260
00018 C***************************************************************** 00049270
00019 REAL*8 RMIN,RMAX,LITBL(1024) 00049280
00020 REAL*8 LOW(11),HIGH(11) 00049290
00021 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00049300
00022 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00049310
00023 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00049320
00024 3SYMTB(5,512) 00049330
00025 INTEGER CDATA(144),OUTPT(240),VARCT,TYPE,RUNNO,FLAG(11), 00049340
00026 1CHAR(10),RUN(11),CFLAG,SRCNT 00049350
00027 INTEGER DMODE,RMODE,SMODE,LOOP,CLNUM,BGF(4),NDF(4), 00049360
00028 1SRNUM,CLFST,SFLAG,CLSPT,HILO,BGFLD,SLASH,STAR 00049370
00029 INTEGER LITCT,TOKPT 00049380
00030 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00049390
00031 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00049400
00032 2SYMTB,LITBL 00049410
00033 EQUIVALENCE (OUTPT(1),DEF(1),VARCT),(OUTPT(2),TYPE), 00049420
00034 1(OUTPT(3),RUNNO),(OUTPT(103),LOW(1)),(OUTPT(125),HIGH(1)), 00049430
00035 2(OUTPT(147),FLAG(1)),(OUTPT(179),RUN(1)),(OUTPT(200),CFLAG), 00049440
00036 3(OUTPT(190),CHAR(1)),(CDATA(1),OBJCD(1)),(SRCNT,OUTPT(178)) 00049450
00037 EQUIVALENCE (DMODE,OUTPT(201)),(RMODE,OUTPT(202)), 00049460
00038 1(SMODE,OUTPT(203)),(LOOP,OUTPT(204)),(CLNUM,OUTPT(205)), 00049470
00039 2(BGF(1),OUTPT(206)),(NDF(1),OUTPT(210)), 00049480
00040 3(SRNUM,OUTPT(220)),(CLFST,OUTPT(221)),(SFLAG,OUTPT(222)) 00049490
00041 EQUIVALENCE (TOKPT,TOKEN(3)),(LITCT,PTRS(18)) 00049500
00042 DATA SLASH,STAR /'/','*'/ 00049510
00043 C***************************************************************** 00049520
00044 C * 00049530
00045 C HILO KEEPS TRACK OF WHETHER THE LOW OR THE HIGH IS * 00049540
00046 C CURRENTLY BEING USED: 3 FOR LOW, 4 FOR HIGH. IF THE * 00049550
00047 C FIELD WAS NOT FOUND, THIS VALUE WILL BE ASSIGNED LATER, SO * 00049560
00048 C GO TO THE DEFAULT SECTION. * 00049570
00049 C * 00049580
00050 C***************************************************************** 00049590
00051 HILO = 2 00049600
00052 100 HILO = HILO + 1 00049610
00053 BGFLD = BGF(HILO) 00049620
00054 IF (BGFLD .LT. 0) GO TO 600 00049630
00055 C***************************************************************** 00049640
00056 C * 00049650
NDT33 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C WHEN CHECKING LOW, CHECK THE STATUS OF RANGE DEFINITIONS * 00049660
00058 C FOR THIS SERIES, ACCORDING TO SMODE. * 00049670
00059 C SMODE -1 NO RANGE DEFINED, SET SMODE TO 0. * 00049680
00060 C 0 FIRST RANGE DEFINITION, WILL NOT OCCUR * 00049690
00061 C AT THIS TIME. * 00049700
00062 C 1 A RANGE HAS BEEN PREVIOUSLY DEFINED FOR * 00049710
00063 C FOR THIS SERIES, ERROR. * 00049720
00064 C * 00049730
00065 C***************************************************************** 00049740
00066 IF (SMODE .LE. 0) GO TO 200 00049750
00067 IF (HILO .EQ. 3) CALL NDT13(BGFLD, 716, 2) 00049760
00068 GO TO 600 00049770
00069 200 SMODE = 0 00049780
00070 C***************************************************************** 00049790
00071 C * 00049800
00072 C A STAR DENOTES A DEFAULT VALUE. * 00049810
00073 C * 00049820
00074 C***************************************************************** 00049830
00075 IF (NDF(HILO) - BGFLD .EQ. 0 .AND. CDATA(BGFLD) .EQ. STAR) 00049840
00076 1 GO TO 600 00049850
00077 C***************************************************************** 00049860
00078 C * 00049870
00079 C CALL NDT22 TO CHECK THE NUMBER'S VALIDITY, INSERT IN EITHER* 00049880
00080 C THE LOW OR HIGH ARRAY, AND DELETE THE ENTRY FROM BOTH THE * 00049890
00081 C LITERAL TABLE AND TOKEN ARRAY. * 00049900
00082 C * 00049910
00083 C***************************************************************** 00049920
00084 CALL NDT22(BGFLD, NDF(HILO)) 00049930
00085 IF (HILO .EQ. 3) LOW(CLNUM) = LITBL(LITCT) 00049940
00086 IF (HILO .EQ. 4) HIGH(CLNUM) = LITBL(LITCT) 00049950
00087 TOKPT = TOKPT - 1 00049960
00088 LITCT = LITCT - 1 00049970
00089 GO TO 700 00049980
00090 C***************************************************************** 00049990
00091 C * 00050000
00092 C * * * * * DEFAULT * * * * * * 00050010
00093 C OCCURRENCE OF A STAR CHANGES SMODE, * 00050020
00094 C SET FLAG FOR ANY DEFAULT. * 00050030
00095 C * 00050040
00096 C***************************************************************** 00050050
00097 600 FLAG(CLNUM) = FLAG(CLNUM) + HILO - 2 00050060
00098 C***************************************************************** 00050070
00099 C * 00050080
00100 C DO AGAIN FOR HIGH. CHECK SMODE FOR SERIES INFORMATION. * 00050090
00101 C * 00050100
00102 C***************************************************************** 00050110
00103 700 IF (HILO .EQ. 3) GO TO 100 00050120
00104 IF (CLNUM .NE. 1) GO TO 750 00050130
00105 FLAG(1) = FLAG(1) + 10 00050140
00106 GO TO 1200 00050150
00107 750 IF (SMODE) 800, 900, 1000 00050160
00108 C***************************************************************** 00050170
00109 C * 00050180
00110 C NO RANGE DEFINED YET, BUT A SLASH OR BLANK MARKS THE END OF* 00050190
00111 C THE SERIES. THE FIRST VARIABLE IN THE SERIES WILL DEFINE * 00050200
00112 C THE RANGE FOR THE ENTIRE SERIES. * 00050210
NDT33 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C * 00050220
00114 C***************************************************************** 00050230
00115 800 IF (SFLAG .EQ. 0) GO TO 1200 00050240
00116 SRNUM = 10 * CLFST 00050250
00117 GO TO 1000 00050260
00118 C***************************************************************** 00050270
00119 C * 00050280
00120 C THIS VARIABLE HOLDS THE RANGE DATA FOR THIS SERIES. * 00050290
00121 C * 00050300
00122 C***************************************************************** 00050310
00123 900 SRNUM = 10 * CLNUM 00050320
00124 C***************************************************************** 00050330
00125 C * 00050340
00126 C THE RANGE HAS ALREADY BEEN DEFINED FOR THIS SERIES, ADD * 00050350
00127 C THE DEFAULT INFORMATION TO THIS VARIABLE. * 00050360
00128 C * 00050370
00129 C***************************************************************** 00050380
00130 1000 DO 1100 CLSPT = CLFST, CLNUM 00050390
00131 1100 FLAG(CLSPT) = FLAG(CLSPT) + SRNUM 00050400
00132 CLFST = CLNUM + 1 00050410
00133 C***************************************************************** 00050420
00134 C * 00050430
00135 C SET SMODE TO SHOW SERIES STATUS. A SLASH MARKS THE * 00050440
00136 C BEGINNING OF A NEW SERIES. * 00050450
00137 C * 00050460
00138 C***************************************************************** 00050470
00139 SMODE = 1 00050480
00140 IF (SFLAG .EQ. 0) GO TO 1200 00050490
00141 SMODE = -1 00050500
00142 IF (CLNUM .NE. 1) SRCNT = SRCNT + 1 00050510
00143 1200 RETURN 00050520
00144 END 00050540
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OUTPT +1462 VARCT +1462 CDATA +1222 TOKPT +524
LITCT +25 TYPE +1463 RUNNO +1464 LOW +1630 HIGH +1656
FLAG +1704 RUN +1744 CFLAG +1771 CHAR +1757 SRCNT +1743
DMODE +1772 RMODE +1773 SMODE +1774 LOOP +1775 CLNUM +1776
BGF +1777 NDF +2003 SRNUM +2015 CLFST +2016 SFLAG +2017
SUBPROGRAMS CALLED
NDT13 NDT22
NDT33 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
HILO 1 CLSPT 2 BGFLD 3 SLASH 4 .S0000 5
STAR 6 .O0000 7
TEMPORARIES
.A0016 10 .Q0000 11
BGF 27# 37# 53
BGFLD 27# 53# 54 67 67# 75 84 84#
CARD1 21# 30#
CARD2 21# 30#
CDATA 25# 33# 75
CFLAG 25# 33#
CHAR 25# 33#
CLFST 27# 37# 116 130 132#
CLNUM 27# 37# 85 86 97 104 123 130 132 142
CLSPT 27# 130# 131
CRSET 21# 30#
DEF 21# 30# 33#
DMODE 27# 37#
EQCHN 21# 30#
ERROR 21# 30#
FCTN 21# 30#
FLAG 25# 33# 97# 97 105# 105 131# 131
HIGH 20# 33# 86#
HILO 27# 51# 52 52# 53 67 75 84 85 86 97 103
LITBL 19# 30# 85 86
LITCT 29# 41# 85 86 88 88#
LOOP 27# 37#
LOW 20# 33# 85#
NDF 27# 37# 75 84 84#
NDT13 67
NDT22 84
NDT33 7#
OBJCD 21# 30# 33#
OPER 21# 30#
OUTPT 25# 33# 37#
PTRS 21# 30# 41#
RMAX 19# 30#
RMIN 19# 30#
RMODE 27# 37#
RUN 25# 33#
RUNNO 25# 33#
SFLAG 27# 37# 115 140
SLASH 27# 42#
SMODE 27# 37# 66 69# 107 139# 141#
SRCNT 25# 33# 142 142#
SRNUM 27# 37# 116# 123# 131
STAR 27# 42# 75
SUBSC 21# 30#
SYM 21# 30#
SYMTB 21# 30#
TITLE 21# 30#
TMAP 21# 30#
TOKEN 21# 30# 41#
TOKPT 29# 41# 87 87#
TYPCT 21# 30#
TYPE 25# 33#
VARCT 25# 33#
XREF 21# 30#
1000P 107 117 130#
100P 52# 103
1100P 130 131#
1200P 106 115 140 143#
200P 66 69#
600P 54 68 75 97#
700P 89 103#
750P 104 107#
800P 107 115#
900P 107 123#
NDT33 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00050550
00002 C * 00050560
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00050570
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00050580
00005 C * 00050590
00006 C***************************************************************** 00050600
00007 SUBROUTINE NDT34 00050610
00008 C***************************************************************** 00050620
00009 C * 00050630
00010 C PLOT CHARACTER DEFAULT ASSIGNMENTS * 00050640
00011 C * 00050650
00012 C * 00050660
00013 C * 00050670
00014 C THIS PROGRAM, PART OF THE OUTPUT SYNTAX PHASE, ASSIGNS PLOT* 00050680
00015 C CHARACTERS TO EACH VARIABLE TO BE PLOTTED. * 00050690
00016 C NDT34 IS CALLED BY THE OUTPUT ANALYZER, NDT09. * 00050700
00017 C * 00050710
00018 C***************************************************************** 00050720
00019 REAL*8 RMIN,RMAX,LITBL(1024) 00050730
00020 REAL*8 LOW(11),HIGH(11) 00050740
00021 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00050750
00022 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00050760
00023 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00050770
00024 3SYMTB(5,512) 00050780
00025 INTEGER CDATA(144),OUTPT(240),VARCT,TYPE,RUNNO,FLAG(11), 00050790
00026 1CHAR(10),RUN(11),CFLAG 00050800
00027 INTEGER CLNUM,XCHAR,CHAR1,OMEGA,XALPH,NVAR,DIGIT(9) 00050810
00028 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00050820
00029 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00050830
00030 2SYMTB,LITBL 00050840
00031 EQUIVALENCE (OUTPT(1),DEF(1),VARCT),(OUTPT(2),TYPE), 00050850
00032 1(OUTPT(3),RUNNO),(OUTPT(103),LOW(1)),(OUTPT(125),HIGH(1)), 00050860
00033 2(OUTPT(147),FLAG(1)),(OUTPT(179),RUN(1)),(OUTPT(200),CFLAG), 00050870
00034 3(OUTPT(190),CHAR(1)),(CDATA(1),OBJCD(1)),(DIGIT(1),CRSET(31)) 00050880
00035 C***************************************************************** 00050890
00036 C * 00050900
00037 C EACH VARIABLE IS FIRST CHECKED IF IT HAS BEEN ASSIGNED A * 00050910
00038 C PLOT CHARACTER. * 00050920
00039 C***************************************************************** 00050930
00040 NVAR = VARCT - 1 00050940
00041 DO 700 CLNUM = 1, NVAR 00050950
00042 IF (CHAR(CLNUM) .NE. 0) GO TO 700 00050960
00043 C***************************************************************** 00050970
00044 C * 00050980
00045 C IF THERE IS MORE THAN ONE RUN, FIRST TRY TO ASSIGN THE * 00050990
00046 C RUN NUMBER. * 00051000
00047 C * 00051010
00048 C***************************************************************** 00051020
00049 IF (RUNNO .EQ. 1) GO TO 200 00051030
00050 XALPH = RUN(CLNUM + 1) 00051035
00051 DO 100 XCHAR = 1, NVAR 00051040
00052 IF (DIGIT(XALPH) .EQ. CHAR(XCHAR)) GO TO 200 00051050
00053 100 CONTINUE 00051060
00054 CHAR(CLNUM) = DIGIT(XALPH) 00051080
00055 GO TO 700 00051090
00056 C***************************************************************** 00051100
NDT34 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C * 00051110
00058 C NEXT TRY TO ASSIGN THE FIRST LETTER OF THE VARIABLE NAME. * 00051120
00059 C * 00051130
00060 C***************************************************************** 00051140
00061 200 CHAR1 = OUTPT(8*CLNUM + 4) 00051150
00062 DO 300 XCHAR = 1, NVAR 00051160
00063 IF (CHAR1 .EQ. CHAR(XCHAR)) GO TO 400 00051170
00064 300 CONTINUE 00051180
00065 CHAR(CLNUM) = CHAR1 00051190
00066 GO TO 700 00051200
00067 C***************************************************************** 00051210
00068 C * 00051220
00069 C FINALLY, ASSIGN FROM THE ALPHABET. * 00051230
00070 C * 00051240
00071 C***************************************************************** 00051250
00072 400 OMEGA = NVAR + 4 00051260
00073 DO 600 XALPH = 4, OMEGA 00051270
00074 DO 500 XCHAR = 1, NVAR 00051280
00075 IF (CRSET(XALPH) .EQ. CHAR(XCHAR)) GO TO 600 00051290
00076 500 CONTINUE 00051300
00077 CHAR(CLNUM) = CRSET(XALPH) 00051310
00078 GO TO 700 00051320
00079 600 CONTINUE 00051330
00080 700 CONTINUE 00051340
00081 RETURN 00051350
00082 END 00051370
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OUTPT +1462 VARCT +1462 CDATA +1222 DIGIT +307
TYPE +1463 RUNNO +1464 LOW +1630 HIGH +1656 FLAG +1704
RUN +1744 CFLAG +1771 CHAR +1757
SUBPROGRAMS CALLED
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
XCHAR 1 NVAR 2 CHAR1 3 XALPH 4 CLNUM 5
.R0000 6 .S0004 7 .S0003 10 .S0002 11 .S0001 12
.S0000 13 OMEGA 14
NDT34 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
TEMPORARIES
.A0016 15
CARD1 21# 28#
CARD2 21# 28#
CDATA 25# 31#
CFLAG 25# 31#
CHAR 25# 31# 42 52 54# 63 65# 75 77#
CHAR1 27# 61# 63 65
CLNUM 27# 41# 42 50 54 61 65 77
CRSET 21# 28# 31# 75 77
DEF 21# 28# 31#
DIGIT 27# 31# 52 54
EQCHN 21# 28#
ERROR 21# 28#
FCTN 21# 28#
FLAG 25# 31#
HIGH 20# 31#
LITBL 19# 28#
LOW 20# 31#
NDT34 7#
NVAR 27# 40# 41 51 62 72 74
OBJCD 21# 28# 31#
OMEGA 27# 72# 73
OPER 21# 28#
OUTPT 25# 31# 61
PTRS 21# 28#
RMAX 19# 28#
RMIN 19# 28#
RUN 25# 31# 50
RUNNO 25# 31# 49
SUBSC 21# 28#
SYM 21# 28#
SYMTB 21# 28#
TITLE 21# 28#
TMAP 21# 28#
TOKEN 21# 28#
TYPCT 21# 28#
TYPE 25# 31#
VARCT 25# 31# 40
XALPH 27# 50# 52 54 73# 75 77
XCHAR 27# 51# 52 62# 63 74# 75
XREF 21# 28#
100P 51 53#
200P 49 52 61#
300P 62 64#
400P 63 72#
500P 74 76#
600P 73 75 79#
700P 41 42 55 66 78 80#
NDT34 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00051380
00002 C * 00051390
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00051400
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00051410
00005 C * 00051420
00006 C***************************************************************** 00051430
00007 SUBROUTINE NDT35 (CHAR) 00051440
00008 C***************************************************************** 00051450
00009 C * 00051460
00010 C OUTPUT DELIMITER ANALYZER * 00051470
00011 C * 00051480
00012 C * 00051490
00013 C * 00051500
00014 C THIS PROGRAM, PART OF THE OUTPUT SYNTAX PHASE, CHECKS FOR * 00051510
00015 C THE OCCURRENCE OF THE CHARACTER CHAR IN CDATA AFTER THE * 00051520
00016 C POSITION HELD IN LOOP. * 00051530
00017 C * 00051540
00018 C***************************************************************** 00051550
00019 REAL*8 RMIN,RMAX,LITBL(1024) 00051560
00020 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00051570
00021 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00051580
00022 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00051590
00023 3SYMTB(5,512) 00051600
00024 INTEGER CDATA(144),LOOP,CHAR,OUTPT(240) 00051610
00025 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00051620
00026 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00051630
00027 2SYMTB,LITBL 00051640
00028 EQUIVALENCE (CDATA(1),OBJCD(1)),(OUTPT(1),DEF(1)), 00051650
00029 1(LOOP,OUTPT(204)) 00051660
00030 C***************************************************************** 00051670
00031 C * 00051680
00032 C IT ALSO CHECKS FOR CONSECUTIVE APPEARANCES OF CHAR, AND * 00051690
00033 C SETS LOOP TO THE LAST OCCURRENCE OF THAT CHARACTER, IF CHAR* 00051700
00034 C WAS FOUND. IF NOT, LOOP IS NOT CHANGED. * 00051710
00035 C * 00051720
00036 C***************************************************************** 00051730
00037 100 IF (CDATA(LOOP+1) .NE. CHAR) GO TO 200 00051740
00038 LOOP = LOOP + 1 00051750
00039 CALL NDT13(LOOP, 701, 1) 00051760
00040 GO TO 100 00051770
00041 200 RETURN 00051780
00042 END 00051800
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 CDATA +1222 OUTPT +1462 LOOP +1775
NDT35 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
SUBPROGRAMS CALLED
NDT13
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
CHAR 1
TEMPORARIES
.A0016 2
CARD1 20# 25#
CARD2 20# 25#
CDATA 24# 28# 37
CHAR 7# 24# 37
CRSET 20# 25#
DEF 20# 25# 28#
EQCHN 20# 25#
ERROR 20# 25#
FCTN 20# 25#
LITBL 19# 25#
LOOP 24# 28# 37 38 38# 39 39#
NDT13 39
NDT35 7#
OBJCD 20# 25# 28#
OPER 20# 25#
OUTPT 24# 28#
PTRS 20# 25#
RMAX 19# 25#
RMIN 19# 25#
SUBSC 20# 25#
SYM 20# 25#
SYMTB 20# 25#
TITLE 20# 25#
TMAP 20# 25#
TOKEN 20# 25#
TYPCT 20# 25#
XREF 20# 25#
100P 37# 40
200P 37 41#
NDT35 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00051810
00002 C * 00051820
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00051830
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00051840
00005 C * 00051850
00006 C***************************************************************** 00051860
00007 SUBROUTINE NDT36 00051870
00008 C***************************************************************** 00051880
00009 C * 00051890
00010 C OUTPUT RUN NUMBER PROCESSOR * 00051900
00011 C * 00051910
00012 C THIS PROGRAM, PART OF THE OUTPUT SYNTAX PHASE, PROCESSES * 00051920
00013 C THE RUN NUMBERS ATTACHED TO THE VARIABLES ON AN OUTPUT * 00051930
00014 C CARD. IT IS CALLED BY NDT31, THE OUTPUT VARIABLE * 00051940
00015 C PROCESSOR, AND USES NDT13 FOR ERROR HANDLING. * 00051950
00016 C * 00051960
00017 C***************************************************************** 00051970
00018 REAL*8 RMIN,RMAX,LITBL(1024) 00051980
00019 REAL*8 LOW(11),HIGH(11) 00051990
00020 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00052000
00021 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00052010
00022 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00052020
00023 3SYMTB(5,512) 00052030
00024 INTEGER CDATA(144),OUTPT(240),VARCT,TYPE,RUNNO,FLAG(11), 00052040
00025 1CHAR(10),RUN(11),CFLAG 00052050
00026 INTEGER DMODE,RMODE,SMODE,LOOP,CLNUM,BGF(4),NDF(4), 00052060
00027 1DOTPS,XCHAR,POINT,DIGIT(9),BGF1,NDF1,STAR 00052070
00028 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00052080
00029 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00052090
00030 2SYMTB,LITBL 00052100
00031 EQUIVALENCE (OUTPT(1),DEF(1),VARCT),(OUTPT(2),TYPE), 00052110
00032 1(OUTPT(3),RUNNO),(OUTPT(103),LOW(1)),(OUTPT(125),HIGH(1)), 00052120
00033 2(OUTPT(147),FLAG(1)),(OUTPT(179),RUN(1)),(OUTPT(200),CFLAG), 00052130
00034 3(OUTPT(190),CHAR(1)),(CDATA(1),OBJCD(1)) 00052140
00035 EQUIVALENCE (DMODE,OUTPT(201)),(RMODE,OUTPT(202)), 00052150
00036 1(SMODE,OUTPT(203)),(LOOP,OUTPT(204)),(CLNUM,OUTPT(205)), 00052160
00037 2(BGF(1),OUTPT(206),BGF1),(NDF(1),OUTPT(210),NDF1), 00052170
00038 3(SRNUM,OUTPT(220)),(CLFST,OUTPT(221)) 00052180
00039 EQUIVALENCE (DIGIT(1),CRSET(31)),(SFLAG,OUTPT(222)) 00052190
00040 EQUIVALENCE (STAR,OPER(4)),(POINT,OPER(1)) 00052200
00041 C***************************************************************** 00052210
00042 C * 00052220
00043 C DIGIT IS EQUIVALENCED INTO THE CRSET ARRAY SO THAT EACH * 00052230
00044 C ARRAY MEMBER CONTAINS THE CHARACTER CORRESPONDING TO ITS * 00052240
00045 C POSITION NUMBER. (EX. - DIGIT(1) = '1') * 00052250
00046 C * 00052260
00047 C * 00052270
00048 C * 00052280
00049 C FIRST, LOOK THROUGH THE VARIABLE FIELD FOR A DECIMAL POINT.* 00052290
00050 C IF POINT IS FOUND, DOTPS CONTAINS ITS POSITION IN CDATA. * 00052300
00051 C IF NOT FOUND, DOTPS IS SET TO THE POSITION PAST THE END * 00052310
00052 C OF THE VARIABLE FIELD, AND THE RUN NUMBER IS DEFAULTED * 00052320
00053 C TO ONE. * 00052330
00054 C * 00052340
00055 C***************************************************************** 00052350
00056 DO 100 DOTPS = BGF1, NDF1 00052360
NDT36 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 IF (CDATA(DOTPS) .EQ. POINT) GO TO 200 00052370
00058 100 CONTINUE 00052380
00059 DOTPS = NDF1 + 1 00052390
00060 GO TO 700 00052400
00061 C***************************************************************** 00052410
00062 C * 00052420
00063 C CHECK THE LENGTH OF THE RUN NUMBER FIELD. * 00052430
00064 C * 00052440
00065 C***************************************************************** 00052450
00066 200 IF (NDF1 - DOTPS - 1) 300, 400, 600 00052460
00067 C***************************************************************** 00052470
00068 C * 00052480
00069 C POINT PRESENT, BUT NO CHARACTER. * 00052490
00070 C * 00052500
00071 C***************************************************************** 00052510
00072 300 CALL NDT13(DOTPS, 720, 1) 00052520
00073 GO TO 700 00052530
00074 C***************************************************************** 00052540
00075 C * 00052550
00076 C FIELD IS ONE CHARACTER LONG --- CHECK IF THE CHARACTER IS * 00052560
00077 C BETWEEN ONE AND NINE. IF IT ISN'T, DEFAULT THE RUN NUMBER.* 00052570
00078 C * 00052580
00079 C***************************************************************** 00052590
00080 400 IF (CDATA(DOTPS+1) .NE. STAR) GO TO 450 00052600
00081 IF (CLNUM .EQ. 2) GO TO 425 00052610
00082 CALL NDT13(DOTPS+1,725,2) 00052620
00083 GO TO 700 00052630
00084 425 SFLAG = 1 00052640
00085 RUNNO = 0 00052650
00086 GO TO 900 00052660
00087 450 DO 500 XCHAR = 1, 9 00052670
00088 IF (DIGIT(XCHAR) .EQ. CDATA(DOTPS+1)) GO TO 800 00052680
00089 500 CONTINUE 00052690
00090 C***************************************************************** 00052700
00091 C * 00052710
00092 C ERROR --- FIELD TOO LONG OR CHARACTER NOT BETWEEN 1 AND 9. * 00052720
00093 C * 00052730
00094 C***************************************************************** 00052740
00095 600 CALL NDT13(DOTPS+1, 721, 1) 00052750
00096 C***************************************************************** 00052760
00097 C * 00052770
00098 C * * * * * RUN NUMBER DEFAULT * * * * * * 00052780
00099 C * 00052790
00100 C * 00052800
00101 C RUN NUMBER DEFAULT IS ONE. * 00052810
00102 C * 00052820
00103 C***************************************************************** 00052830
00104 700 XCHAR = 1 00052840
00105 C***************************************************************** 00052850
00106 C * 00052860
00107 C PLACE THE RUN NUMBER CHARACTER IN THE OUTPUT BUFFER. * 00052870
00108 C CHECK THE HIGHEST RUN NUMBER. * 00052880
00109 C * 00052890
00110 C***************************************************************** 00052900
00111 800 IF ((RUNNO.NE.0 .OR. CLNUM.NE.1) .AND. XCHAR.GT.RUNNO) 00052910
00112 1 RUNNO = XCHAR 00052920
NDT36 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 RUN(CLNUM) = XCHAR 00052930
00114 C***************************************************************** 00052940
00115 C * 00052950
00116 C BEFORE RETURNING, SET THE END FIELD MARKER TO DISCLUDE * 00052960
00117 C THE RUN NUMBER FIELD. * 00052970
00118 C * 00052980
00119 C***************************************************************** 00052990
00120 900 NDF(1) = DOTPS - 1 00053000
00121 RETURN 00053010
00122 END 00053030
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OUTPT +1462 VARCT +1462 CDATA +1222 DIGIT +307
STAR +323 POINT +320 TYPE +1463 RUNNO +1464 LOW +1630
HIGH +1656 FLAG +1704 RUN +1744 CFLAG +1771 CHAR +1757
DMODE +1772 RMODE +1773 SMODE +1774 LOOP +1775 CLNUM +1776
BGF +1777 BGF1 +1777 NDF +2003 NDF1 +2003 SRNUM +2015
CLFST +2016 SFLAG +2017
SUBPROGRAMS CALLED
NDT13
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
XCHAR 1 .S0001 2 .S0000 3 DOTPS 4
TEMPORARIES
.A0016 5 .Q0000 6
BGF 26# 35#
BGF1 26# 35# 56
CARD1 20# 28#
CARD2 20# 28#
CDATA 24# 31# 57 80 88
CFLAG 24# 31#
CHAR 24# 31#
CLFST 35#
CLNUM 26# 35# 81 111 113
CRSET 20# 28# 39#
DEF 20# 28# 31#
DIGIT 26# 39# 88
DMODE 26# 35#
DOTPS 26# 56# 57 59# 66 72 72# 80 82 88 95 120
EQCHN 20# 28#
ERROR 20# 28#
FCTN 20# 28#
FLAG 24# 31#
HIGH 19# 31#
LITBL 18# 28#
LOOP 26# 35#
LOW 19# 31#
NDF 26# 35# 120#
NDF1 26# 35# 56 59 66
NDT13 72 82 95
NDT36 7#
OBJCD 20# 28# 31#
OPER 20# 28# 40#
OUTPT 24# 31# 35# 39#
POINT 26# 40# 57
PTRS 20# 28#
RMAX 18# 28#
RMIN 18# 28#
RMODE 26# 35#
RUN 24# 31# 113#
RUNNO 24# 31# 85# 111 111#
SFLAG 39# 84#
SMODE 26# 35#
SRNUM 35#
STAR 26# 40# 80
SUBSC 20# 28#
SYM 20# 28#
SYMTB 20# 28#
TITLE 20# 28#
TMAP 20# 28#
TOKEN 20# 28#
TYPCT 20# 28#
TYPE 24# 31#
VARCT 24# 31#
XCHAR 26# 87# 88 104# 111 113
XREF 20# 28#
100P 56 58#
200P 57 66#
300P 66 72#
400P 66 80#
425P 81 84#
450P 80 87#
500P 87 89#
600P 66 95#
700P 60 73 83 104#
800P 88 111#
900P 86 120#
NDT36 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00053040
00002 C PROGRAM AUTHOR - GARY PELKEY 00053050
00003 C 00053060
00004 C 00053070
00005 SUBROUTINE NDT37 (WORDS,LOC) 00053080
00006 C 00053090
00007 C 00053100
00008 C THIS IS THE HASH ENTRY PROGRAM FOR A VARIABLE. WORDS ARE 00053110
00009 C THE TWO PACKED WORDS THAT REPRESENT THE SYMBOL STRING. 00053120
00010 C AN INITIAL SEARCH LOCATION IS COMPUTED AND THE SEARCH 00053130
00011 C CONTINUES THRU THE SYMBOL TABLE UNTIL A MATCH IS FOUND OR 00053140
00012 C AN EMPTY POSITION IS ENCOUNTERED. IF A MATCH IS FOUND, 00053150
00013 C THE SYMBOL INFORMATION IS UNPACKED INTO SYM AND THE SYMBOL 00053160
00014 C LOCATION IS RETURNED. IF AN EMPTY LOCATION IS ENCOUNTERED, 00053170
00015 C THE TWO WORDS AND A VNUM ARE INSERTED, THUS CREATING A NEW 00053180
00016 C SYMBOL. 00053190
00017 C 00053200
00018 C 00053210
00019 REAL*8 RMIN,RMAX,LITBL(1024) 00053220
00020 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00053230
00021 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00053240
00022 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00053250
00023 3SYMTB(5,512) 00053260
00024 INTEGER LOC,ORLOC,WORDS(2),SYMND,VALCT 00053270
00025 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00053280
00026 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00053290
00027 2SYMTB,LITBL 00053300
00028 EQUIVALENCE (SYMND,PTRS(17)),(VALCT,PTRS(20)) 00053310
00029 LOC=(MOD(IABS(WORDS(1)),SYMND)+MOD(IABS(WORDS(2)),SYMND))/2+1 00053320
00030 ORLOC=LOC 00053330
00031 C 00053340
00032 C 00053350
00033 C HERE STARTS THE CYCLIC SEARCH THRU THE SYMBOL TABLE. 00053360
00034 C ORLOC HAS BEEN SET TO THE ORIGINAL LOCATION FOR LATER 00053370
00035 C COMPARISONS TO INSURE THAT THE SEARCH DOESN'T CONTINUE 00053380
00036 C FOREVER. 00053390
00037 C 00053400
00038 C 00053410
00039 100 IF(SYMTB(1,LOC).EQ.32767) GO TO 200 00053420
00040 IF(SYMTB(1,LOC).EQ.WORDS(1).AND.SYMTB(2,LOC).EQ.WORDS(2)) 00053430
00041 1GO TO 300 00053440
00042 LOC=MOD(LOC,SYMND)+1 00053450
00043 IF(ORLOC.NE.LOC) GO TO 100 00053460
00044 C 00053470
00045 C 00053480
00046 C THE FAILING OF THE ABOVE TEST INTICATES THAT THE INCOMING 00053490
00047 C SYMBOL IS NOT IN THE SYMBOL TABLE AND THAT THE TABLE ITSELF 00053500
00048 C IS FULL. THUS THERE IS NO ROOM FOR THIS NEW SYMBOL AND 00053510
00049 C THIS SYSTEM ERROR IS FLAGGED. 00053520
00050 C 00053530
00051 C 00053540
00052 CALL NDT12 (3) 00053550
00053 C 00053560
00054 C 00053570
00055 C AN EMPTY LOCATION HAS BEEN ENCOUNTERED INDICATING THAT THE 00053580
00056 C INCOMING SYMBOL IS NEW. AN ENTRY IS MADE FOR IT BY DEPOSITING 00053590
NDT37 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C THE PACKED SYMBOL IN POSITIONS 1 AND 2 AND CALCULATING AND 00053600
00058 C DEPOSITING A NEW VNUM IN POSITION 3. 00053610
00059 C 00053620
00060 C 00053630
00061 200 VALCT=VALCT+1 00053640
00062 SYMTB(3,LOC)=12287+VALCT 00053650
00063 SYMTB(1,LOC)=WORDS(1) 00053660
00064 SYMTB(2,LOC)=WORDS(2) 00053670
00065 C 00053680
00066 C 00053690
00067 C THE SYMBOL IS UNPACKED BEFORE RETURNING FOR FUTURE USE 00053700
00068 C BY CALLING ROUTINES. 00053710
00069 C 00053720
00070 C 00053730
00071 300 CALL NDT41 (SYMTB(1,LOC)) 00053740
00072 400 RETURN 00053750
00073 END 00053770
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 SYMND +24 VALCT +27
SUBPROGRAMS CALLED
MOD. IABS. NDT12 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
LOC 1 ORLOC 2 WORDS 3 .O0001 4 .O0000 5
TEMPORARIES
.A0016 6 .Q0000 7
CARD1 20# 25#
CARD2 20# 25#
CRSET 20# 25#
DEF 20# 25#
EQCHN 20# 25#
ERROR 20# 25#
FCTN 20# 25#
IABS. 29
LITBL 19# 25#
LOC 5# 24# 29# 30 39 40 42 42# 43 62 63 64 71
MOD. 29 42
NDT12 52
NDT37 5#
NDT41 71
OBJCD 20# 25#
OPER 20# 25#
ORLOC 24# 30# 43
PTRS 20# 25# 28#
RMAX 19# 25#
RMIN 19# 25#
SUBSC 20# 25#
SYM 20# 25#
SYMND 24# 28# 29 42
SYMTB 20# 25# 39 40 62# 63# 64# 71 71#
TITLE 20# 25#
TMAP 20# 25#
TOKEN 20# 25#
TYPCT 20# 25#
VALCT 24# 28# 61 61# 62
WORDS 5# 24# 29 40 63 64
XREF 20# 25#
100P 39# 43
200P 39 61#
300P 40 71#
400P 72#
NDT37 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00053780
00002 C PROGRAM AUTHOR - GARY PELKEY 00053790
00003 C 00053800
00004 C 00053810
00005 SUBROUTINE NDT38 00053820
00006 C 00053830
00007 C 00053840
00008 C THIS PROGRAM IS CALLED BY THE LEXICAL PROCESSOR (NDT08) TO 00053850
00009 C FURTHER PROCESS VARIABLES ON THE LEFT OF AN EQUALS SIGN. 00053860
00010 C IT IS RESPONSIBLE FOR MARKING THE DEFINED BIT FOR THE VARIABLE 00053870
00011 C AND DETECTING ERRORS SUCH AS MISSING VARIABLE, MISSING OR 00053880
00012 C MISPLACED EQUALS SIGN, OR VARIABLE HAVING BEEN PREVIOUSLY 00053890
00013 C DEFINED. 00053900
00014 C 00053910
00015 C 00053920
00016 REAL*8 RMIN,RMAX,LITBL(1024) 00053930
00017 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00053940
00018 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00053950
00019 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00053960
00020 3SYMTB(5,512) 00053970
00021 INTEGER TOKPT,PNTR,STYPE,INTBT,VNUM,VTYPE,DEFBT,RECNO 00053980
00022 INTEGER PGMCT,EQPOS,DISK,PSSWT 00053990
00023 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00054000
00024 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00054010
00025 2SYMTB,LITBL 00054020
00026 EQUIVALENCE (TOKPT,TOKEN(3)),(STYPE,TOKEN(1)),(INTBT,SYM(13)) 00054030
00027 EQUIVALENCE (VNUM,SYM(14)),(VTYPE,SYM(7)),(DEFBT,SYM(11)) 00054040
00028 EQUIVALENCE (RECNO,SYM(15)),(PGMCT,PTRS(22)),(DISK,PTRS(3)) 00054050
00029 EQUIVALENCE (EQPOS,TMAP(3)),(USDBT,SYM(10)),(PSSWT,PTRS(10)) 00054060
00030 C 00054070
00031 C 00054080
00032 C IN THE FOLLOWING SECTION THE EQUALS SIGN IS SEARCHED FOR. 00054090
00033 C IF NOT FOUND AN ERROR IS ISSUED. IF IT WAS THE FIRST TOKEN 00054100
00034 C THE MISSING VARIABLE IS FLAGGED. IF THERE ARE MORE THAN 1 00054110
00035 C TOKENS TO THE LEFT OF THE EQUALS SIGN THIS ERROR IS ALSO 00054120
00036 C FLAGGED. 00054130
00037 C 00054140
00038 C 00054150
00039 IF(EQPOS.NE.0) GO TO 1200 00054160
00040 CALL NDT14 (0,801,3) 00054170
00041 GO TO 2000 00054180
00042 1200 IF(EQPOS.NE.4) GO TO 1300 00054190
00043 CALL NDT14 (TMAP(4),519,3) 00054200
00044 GO TO 2000 00054210
00045 1300 IF(TOKEN(4) .EQ. 24576) GO TO 2000 00054220
00046 IF(EQPOS.EQ.5.AND.TOKEN(4).GE.0.AND.TOKEN(4).LT.20480) GO TO 1325 00054230
00047 CALL NDT14 (TMAP(4),805,3) 00054240
00048 GO TO 2000 00054250
00049 C 00054260
00050 C 00054270
00051 C HAVING PASSED THE ABOVE SYNTAX TESTS, THE LEFT VARIABLE IS 00054280
00052 C READY TO BE MARKED AS DEFINED (OR INITIALIZED). ERRORS 00054290
00053 C SUCH AS MULTIPLY DEFINING OR INITIALIZING AS WELL AS DEFINING 00054300
00054 C OR INITIALIZING TIME ARE FLAGGED HERE. 00054310
00055 C 00054320
00056 C 00054330
NDT38 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 1325 PNTR=MOD(TOKEN(4),4096)+1 00054340
00058 CALL NDT41 (SYMTB(1,PNTR)) 00054350
00059 IF(VTYPE.NE.3.OR.STYPE.EQ.3) GO TO 1350 00054360
00060 CALL NDT14(TMAP(4),551,3) 00054370
00061 GO TO 2000 00054380
00062 1350 IF(PSSWT.NE.5) GO TO 1395 00054390
00063 C 00054400
00064 C 00054410
00065 C IF RERUN MODE IS IN EFFECT, THE VARIABLE MUST BE CHECKED 00054420
00066 C FOR PREVIOUS DEFINITION. ALSO THE STATEMENT TYPES FROM RUN 00054430
00067 C TO RUN MUST BE CONSISTANT. IF NORMAL MODE IS IN EFFECT, 00054440
00068 C DIFFERENT CHECKS MUST BE PERFORMED. 00054450
00069 C 00054460
00070 C 00054470
00071 IF(DEFBT.EQ.1) GO TO 1370 00054480
00072 CALL NDT14 (TMAP(4),536,2) 00054490
00073 GO TO 2000 00054500
00074 1370 IF(USDBT.EQ.0.AND.VNUM.NE.11) CALL NDT14 (TMAP(4),537,2) 00054510
00075 IF(STYPE.NE.VTYPE) CALL NDT14(TMAP(4),548,2) 00054520
00076 GO TO 2000 00054530
00077 C 00054540
00078 C 00054550
00079 C IF THE VARIABLE ON THIS INITIAL VALUE CARD HAS ALREADY BEEN 00054560
00080 C INITIALIZED, THIS OCCURRENCE IS FLAGGED. A SEPARATE ERROR 00054570
00081 C IS ISSUED IF THE VARIABLE BEING INITIALIZED IS TIME. 00054580
00082 C 00054590
00083 C 00054600
00084 1395 IF(STYPE.NE.4) GO TO 1600 00054610
00085 IF(INTBT.EQ.0) GO TO 1500 00054620
00086 IF(VNUM.EQ.12) GO TO 1400 00054630
00087 CALL NDT14 (TMAP(4),559,3) 00054640
00088 GO TO 2000 00054650
00089 1400 CALL NDT14 (TMAP(4),550,3) 00054660
00090 GO TO 2000 00054670
00091 1500 INTBT=1 00054680
00092 GO TO 1900 00054690
00093 C 00054700
00094 C 00054710
00095 C IF THIS VARIABLE HAS ALREADY BEEN DEFINED IN ANOTHER EQUATION 00054720
00096 C THIS OCCURRENCE IS FLAGGED. A SEPARATE ERROR IS ISSUED IF 00054730
00097 C THE VARIABLE BEING DEFINED IS TIME. 00054740
00098 C 00054750
00099 C 00054760
00100 1600 IF(DEFBT.EQ.0) GO TO 1800 00054770
00101 IF(VNUM.EQ.12) GO TO 1700 00054780
00102 CALL NDT14 (TMAP(4),539+VTYPE,3) 00054790
00103 GO TO 2000 00054800
00104 1700 CALL NDT14 (TMAP(4),560,3) 00054810
00105 GO TO 2000 00054820
00106 C 00054830
00107 C 00054840
00108 C IF A NON-INITIAL VALUE CARD IS BEING PROCESSED AND THE 00054850
00109 C VARIABLE HASN'T PREVIOUSLY BEEN DEFINED, IT IS HERE DEFINED 00054860
00110 C BY MARKING DEFBT AND SETTING VTYPE. A NON-ZERO RECNO MEANS 00054870
00111 C THAT THE VARIABLE HAS A DOCUMENTOR DEFINITION ON DISK THAT 00054880
00112 C MUST BE MOVED TO THIS CARD'S DEF ARRAY. 00054890
NDT38 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C 00054900
00114 C 00054910
00115 1800 DEFBT=1 00054920
00116 VTYPE=STYPE 00054930
00117 1900 DEF(10) = 0 00054940
00118 IF(RECNO.EQ.0) GO TO 1910 00054950
00119 READ(DISK'RECNO+6) DEF 00054960
00120 IF(STYPE.NE.4.OR.VTYPE.NE.5) GO TO 1999 00054970
00121 1910 RECNO = PGMCT + 1 00054980
00122 1999 CALL NDT40 (SYMTB(1,PNTR)) 00054990
00123 2000 RETURN 00055000
00124 END 00055020
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 TOKPT +524 STYPE +522 INTBT +345 VNUM +346
VTYPE +337 DEFBT +343 RECNO +347 PGMCT +31 DISK +6
EQPOS +1724 USDBT +342 PSSWT +15
SUBPROGRAMS CALLED
MOD. NDT40 NDT14 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
PNTR 1
TEMPORARIES
.A0016 2 .Q0000 3
CARD1 17# 23#
CARD2 17# 23#
CRSET 17# 23#
DEF 17# 23# 117# 119#
DEFBT 21# 27# 71 100 115#
DISK 22# 28# 119
EQCHN 17# 23#
EQPOS 22# 29# 39 42 46
ERROR 17# 23#
FCTN 17# 23#
INTBT 21# 26# 85 91#
LITBL 16# 23#
MOD. 57
NDT14 40 43 47 60 72 74 75 87 89 102 104
NDT38 5#
NDT40 122
NDT41 58
OBJCD 17# 23#
OPER 17# 23#
PGMCT 22# 28# 121
PNTR 21# 57# 58 122
PSSWT 22# 29# 62
PTRS 17# 23# 28# 29#
RECNO 21# 28# 118 119 121#
RMAX 16# 23#
RMIN 16# 23#
STYPE 21# 26# 59 75 84 116 120
SUBSC 17# 23#
SYM 17# 23# 26# 27# 28# 29#
SYMTB 17# 23# 58 58# 122 122#
TITLE 17# 23#
TMAP 17# 23# 29# 43 43# 47 47# 60 60# 72 72# 74 74# 75
75# 87 87# 89 89# 102 102# 104 104#
TOKEN 17# 23# 26# 45 46 57
TOKPT 21# 26#
TYPCT 17# 23#
USDBT 29# 74
VNUM 21# 27# 74 86 101
VTYPE 21# 27# 59 75 102 116# 120
XREF 17# 23#
1200P 39 42#
1300P 42 45#
1325P 46 57#
1350P 59 62#
1370P 71 74#
1395P 62 84#
1400P 86 89#
1500P 85 91#
1600P 84 100#
1700P 101 104#
1800P 100 115#
1900P 92 117#
1910P 118 121#
1999P 120 122#
2000P 41 44 45 48 61 73 76 88 90 103 105 123#
NDT38 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00055030
00002 C * 00055040
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00055050
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00055060
00005 C * 00055070
00006 C***************************************************************** 00055080
00007 SUBROUTINE NDT39 (REC,DUPFG) 00055090
00008 C***************************************************************** 00055100
00009 C * 00055110
00010 C THIS PROGRAM BUILDS A MACRO DEFINITION BUFFER FOR * 00055120
00011 C A MACRO OR AN EXPAND STATEMENT. IT ALSO LOCATES A PREVIOUS* 00055130
00012 C DEFINITION RECORD IF IT EXISTS. THE ARGUMENTS ARE: * 00055140
00013 C REC - RETURNS THE RECORD NUMBER OF THE DEFINITION. * 00055150
00014 C DUPFG - INDICATES WHETHER OR NOT THE SUBROUTINE SHOULD * 00055160
00015 C CHECK FOR DUPLICATE NAMES IN THE ARGUMENT LIST. * 00055170
00016 C A '0' SPECIFIES NO CHECK, '1' MEANS CHECK. * 00055180
00017 C * 00055190
00018 C***************************************************************** 00055200
00019 REAL*8 RMIN,RMAX,LITBL(1024) 00055210
00020 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00055220
00021 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00055230
00022 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00055240
00023 3SYMTB(5,512) 00055250
00024 INTEGER CDATA(144),SYNCK,MACRO(160),MAC1(80),MAC2(80),I,J 00055260
00025 INTEGER BLANK,PNTR,PNEST,PKREP(5),MDT(3,53),MDTL,MDT1(80) 00055270
00026 INTEGER MDT2(80),TEST,PGMCT,EQNCD 00055280
00027 INTEGER DISK,START,ARGS,TYPE,POS,REC,DUPFG,OLDSY,SORCE 00055290
00028 INTEGER DEST,FLAG,NOARG 00055300
00029 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00055310
00030 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00055320
00031 2SYMTB,LITBL 00055330
00032 EQUIVALENCE (CDATA(1),OBJCD(1)),(MACRO(1),DEF(1)),(MAC1(1),MACRO(100055340
00033 1)),(MAC2(1),MACRO(81)),(BLANK,CRSET(1)),(MDT(1,1),MACRO(2)), 00055350
00034 2(MDTL,MACRO(1)),(MDT1(1),MAC1(1)),(MDT2(1),MAC2(1)), 00055360
00035 3(PGMCT,PTRS(22)),(EQNCD,ERROR(1)) 00055370
00036 EQUIVALENCE (DISK,PTRS(3)) 00055380
00037 C***************************************************************** 00055390
00038 C * 00055400
00039 C INITIALIZE THE VARIABLES AND MACRO BUFFER. * 00055410
00040 C SYNCK TELLS WHETHER A SYNTAX CHECK SHOULD BE PERFORMED * 00055420
00041 C AFTER AN OPERATOR IS ENCOUNTERED. START IS THE INPUT * 00055430
00042 C POSITION TO NDT29. ARGS IS THE NUMBER OF ARGUMENTS * 00055440
00043 C FOUND IN THE MACRO OR EXPAND STATEMENT. THE MACRO * 00055450
00044 C ARRAY IS USED TO BUILD THE BUFFER OF MACRO INFORMATION. * 00055460
00045 C * 00055470
00046 C***************************************************************** 00055480
00047 SYNCK = 0 00055490
00048 START = 1 00055500
00049 ARGS = 0 00055510
00050 C***************************************************************** 00055520
00051 C * 00055530
00052 C THE FOLLOWING LOOP LOCATES THE MACRO NAME AND SYNTAXES * 00055540
00053 C THE STATEMENT UP TO THE FIRST '('. IN PARTICULAR, * 00055550
00054 C THEIR SHOULD BE NO SUBSCRIPTS OR OPERATORS. * 00055560
00055 C * 00055570
00056 C***************************************************************** 00055580
NDT39 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 200 CALL NDT29 (TYPE, START, POS, 4) 00055590
00058 IF (POS .LT. START .AND. SYNCK .EQ. 0) GO TO 900 00055600
00059 IF (TYPE .EQ. 0) GO TO 800 00055610
00060 IF (TYPE .NE. 1 .AND. TYPE .NE. 7) GO TO 1000 00055620
00061 IF (SYNCK .NE. 0) GO TO 250 00055630
00062 C***************************************************************** 00055640
00063 C * 00055650
00064 C SYNTAX CHECK THE MACRO NAME, THEN OBTAIN PACKED * 00055660
00065 C REPRESENTATION OF NAME IN PKREP. READ IN THE MDT * 00055670
00066 C AND SEARCH FOR AN ENTRY WITH THE SAME REPRESENTATION. * 00055680
00067 C * 00055690
00068 C***************************************************************** 00055700
00069 CALL NDT24 (START, POS, RTC) 00055710
00070 CALL NDT40 (PKREP) 00055720
00071 READ (DISK'98) MDT1 00055730
00072 READ (DISK'99) MDT2 00055740
00073 TEST = DUPFG + 1 00055750
00074 DO 220 I = 1, MDTL 00055760
00075 IF (MDT(1,I) .EQ. PKREP(1) .AND. MDT(2,I) .EQ. PKREP(2)) 00055770
00076 1GO TO 230 00055780
00077 220 CONTINUE 00055790
00078 C***************************************************************** 00055800
00079 C * 00055810
00080 C NO PREVIOUS DEFINITION WAS FOUND. IF CALLED BY EXPND * 00055820
00081 C (TEST=1), SET REC TO 0 AND CONTINUE. IF CALLED BY * 00055830
00082 C MACRO, MAKE A NEW ENTRY INTO THE MDT, SET REC TO THE * 00055840
00083 C RECORD NUMBER WHERE THE DEFINITION WILL BE STORED, * 00055850
00084 C AND REWRITE THE MDT TO THE DISK FILE. * 00055860
00085 C * 00055870
00086 C***************************************************************** 00055880
00087 GO TO (225,226), TEST 00055890
00088 225 REC = 0 00055900
00089 GO TO 250 00055910
00090 226 MDTL = MDTL + 1 00055920
00091 MDT(1,MDTL) = PKREP(1) 00055930
00092 MDT(2,MDTL) = PKREP(2) 00055940
00093 REC = PGMCT + 7 00055950
00094 MDT(3,MDTL) = REC 00055960
00095 GO TO 240 00055970
00096 C***************************************************************** 00055980
00097 C * 00055990
00098 C A PREVIOUS DEFINTION WAS FOUND. IF IN EXPND MODE, SET * 00056000
00099 C REC TO THE RECORD NUMBER OF THE DEFINTION AND CONTINUE * 00056010
00100 C PROCESSING. IF IN MACRO MODE, MUST EITHER REPLACE A * 00056020
00101 C BUILT-IN MACRO DEFINITION OR GIVE A 305 ERROR FOR A * 00056030
00102 C DUPLICATE MACRO DEFINITION. IF A BUILT-IN MACRO IS * 00056040
00103 C REPLACED, THE MDT MUST BE UPDATED AND REWRITTEN. * 00056050
00104 C * 00056060
00105 C***************************************************************** 00056070
00106 230 GO TO (235,236), TEST 00056080
00107 235 REC = MDT(3,I) 00056090
00108 GO TO 250 00056100
00109 236 IF (I .LE. 5 .AND. MDT(3,I) .LT. 100) GO TO 237 00056110
00110 CALL NDT13 (START, 305, 2) 00056120
00111 REC = 0 00056130
00112 GO TO 250 00056140
NDT39 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 237 REC = PGMCT + 7 00056150
00114 MDT(3,I) = REC 00056160
00115 240 WRITE (DISK'98) MDT1 00056170
00116 WRITE (DISK'99) MDT2 00056180
00117 C***************************************************************** 00056190
00118 C * 00056200
00119 C CHECK UNTIL '(' IS FOUND TO DELIMIT ARGUMENT LIST. * 00056210
00120 C GIVE ERROR FOR SUBSCRIPT IF FOUND. SYNTAX CHECK ONLY * 00056220
00121 C THE FIRST VARIABLE UNTIL '(' IS FOUND. * 00056230
00122 C * 00056240
00123 C***************************************************************** 00056250
00124 250 START = POS + 2 00056260
00125 SYNCK = 1 00056270
00126 IF (TYPE .EQ. 7) GO TO 300 00056280
00127 CALL NDT13 (POS + 1, 530, 1) 00056290
00128 GO TO 200 00056300
00129 C***************************************************************** 00056310
00130 C * 00056320
00131 C MOVE MACRO NAME TO MACRO BUFFER, THEN BEGINNING CHECKING * 00056330
00132 C ARGUMENTS. THE ARGUMENT LIST MUST CONTAIN NO OPERATIONS. * 00056340
00133 C PNEST COUNTS PAREN NESTING AND INDICATES THE END OF THE * 00056350
00134 C ARGUMENT LIST. PNTR POINTS TO THE POSITION IN THE MACRO * 00056360
00135 C BUFFER WHERE THE NEXT ARGUMENT NAME IS TO BE ENTERED. * 00056370
00136 C * 00056380
00137 C***************************************************************** 00056390
00138 300 DO 100 I = 1, 160 00056400
00139 100 MACRO(I) = BLANK 00056410
00140 DO 400 I = 1, POS 00056420
00141 400 MACRO(I) = CDATA(I) 00056430
00142 PNEST = 1 00056440
00143 NOARG = 1 00056450
00144 PNTR = 5 00056460
00145 SYNCK = 0 00056470
00146 500 CALL NDT29 (TYPE, START, POS, 4) 00056480
00147 C***************************************************************** 00056490
00148 C * 00056500
00149 C CHECK FOR OPERATORS OR BLANK TO END LIST WITH PAREN * 00056510
00150 C IMBALANCE. NOARG IS A FLAG TO MAKE SURE THAT BACK TO * 00056520
00151 C BACK PARENS DO NOT OCCUR WITHOUT AN ARGUMENT LIST. * 00056530
00152 C * 00056540
00153 C***************************************************************** 00056550
00154 IF (TYPE .NE. 1 .AND. TYPE .NE. 9 .AND. TYPE .NE. 0) 00056560
00155 1GO TO 1100 00056570
00156 IF (SYNCK .NE. 0) GO TO 600 00056580
00157 C***************************************************************** 00056590
00158 C * 00056600
00159 C PREPARE TO MAKE NEW ARGUMENT ENTRY TO MACRO BUFFER * 00056610
00160 C INCREMENT THE ARGUMENT NUMBER AND MAKE SURE IT IS WITHIN * 00056620
00161 C LIMITS. MAKE THE SYNTAX CHECK AND THEN THE ENTRY. IF * 00056630
00162 C REQUIRED, CHECK FOR DUPLICATE ARGUMENT ENTRIES. * 00056640
00163 C * 00056650
00164 C***************************************************************** 00056660
00165 549 ARGS = ARGS + 1 00056670
00166 IF (ARGS .EQ. 19) GO TO 1200 00056680
00167 PNTR = PNTR + 8 00056690
00168 CALL NDT24 (START, POS, RTC) 00056700
NDT39 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 DO 550 I = 1, 6 00056710
00170 DEST = PNTR + I 00056720
00171 SORCE = START + I - 1 00056730
00172 IF (SORCE .GT. POS) GO TO 560 00056740
00173 NOARG = 0 00056750
00174 550 MACRO(DEST) = CDATA(SORCE) 00056760
00175 560 IF (ARGS .EQ. 1) GO TO 600 00056770
00176 IF (DUPFG .EQ. 0) GO TO 600 00056780
00177 DO 570 I = 14, PNTR, 8 00056790
00178 FLAG = 0 00056800
00179 DO 580 J = 1, 6 00056810
00180 SORCE = PNTR + J 00056820
00181 DEST = I + J - 1 00056830
00182 IF (MACRO(DEST) .NE. MACRO(SORCE)) FLAG = 1 00056840
00183 580 CONTINUE 00056850
00184 IF (FLAG .EQ. 0) CALL NDT13 (START, 308, 2) 00056860
00185 570 CONTINUE 00056870
00186 C***************************************************************** 00056880
00187 C * 00056890
00188 C BRANCH OUT OF ARGUMENT LOOP IF BLANK WAS FOUND. * 00056900
00189 C CHECK FOR ARGUMENT SUBSCRIPT AND UPDATE SYNCK. * 00056910
00190 C * 00056920
00191 C***************************************************************** 00056930
00192 600 IF(TYPE .EQ. 0) GO TO 700 00056940
00193 IF (PNEST .EQ. 0) GO TO 1300 00056950
00194 START = POS + 2 00056960
00195 IF (TYPE .EQ. 1) CALL NDT13 (POS + 1, 530, 1) 00056970
00196 IF (TYPE .EQ. 1) SYNCK = 1 00056980
00197 IF (TYPE .EQ. 9) SYNCK = 0 00056990
00198 GO TO 500 00057000
00199 C***************************************************************** 00057010
00200 C * 00057020
00201 C ERROR INDICATORS * 00057030
00202 C 303 - NO FINAL PAREN * 00057040
00203 C 304 - NO ARGUMENT LIST * 00057050
00204 C 313 - MISSING MACRO NAME * 00057060
00205 C 314 - OPERATION IN MACRO NAME FIELD * 00057070
00206 C * 00057080
00207 C***************************************************************** 00057090
00208 700 CALL NDT13 (POS + 1, 303, 2) 00057100
00209 GO TO 1350 00057110
00210 800 CALL NDT13 (POS + 1, 304, 3) 00057120
00211 GO TO 1350 00057130
00212 900 CALL NDT13 (START, 313, 3) 00057140
00213 GO TO 1350 00057150
00214 1000 CALL NDT13 (POS + 1, 314, 3) 00057160
00215 GO TO 1350 00057170
00216 C***************************************************************** 00057180
00217 C * 00057190
00218 C AN ARITHMETIC OPERATOR WAS ENCOUNTERED IN THE ARGUMENT LIST* 00057200
00219 C IF PAREN, UPDATE PNEST, AND IF PNEST = 0, END OF ARGUMENT * 00057210
00220 C LIST HAS OCCURRED. OTHERWISE GIVE AN ERROR, UPDATE SYNCK * 00057220
00221 C INFORMATION, AND CONTINUE PROCESSING. ALSO CHECK NOARG * 00057230
00222 C FOR MISSING ARGUMENT LIST * 00057240
00223 C * 00057250
00224 C***************************************************************** 00057260
NDT39 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 1100 IF (TYPE .EQ. 7) PNEST = PNEST + 1 00057270
00226 IF (TYPE .EQ. 8) PNEST = PNEST - 1 00057280
00227 IF (PNEST .NE. 0) CALL NDT13 (POS + 1, 307, 3) 00057290
00228 OLDSY = SYNCK 00057300
00229 SYNCK = 1 00057310
00230 IF (OLDSY .EQ. 0) GO TO 549 00057320
00231 IF (PNEST .EQ. 0) GO TO 1300 00057330
00232 GO TO 600 00057340
00233 C***************************************************************** 00057350
00234 C * 00057360
00235 C 302 - MORE THAN 18 ARGUMENTS * 00057370
00236 C * 00057380
00237 C***************************************************************** 00057390
00238 1200 CALL NDT13 (START, 302, 3) 00057400
00239 ARGS = 18 00057410
00240 GO TO 1350 00057420
00241 1300 IF (NOARG .EQ. 1) GO TO 800 00057430
00242 POS = POS + 2 00057440
00243 IF (CDATA(POS) .NE. BLANK) CALL NDT13(POS, 309, 2) 00057450
00244 C***************************************************************** 00057460
00245 C * 00057470
00246 C SET FINAL INFORMATION IN MACRO BUFFER * 00057480
00247 C 9 - RESERVED * 00057490
00248 C 10 - NUMBER OF ARGUMENTS * 00057500
00249 C 11 - RECORD NUMBER OF STARTING STATEMENT * 00057510
00250 C 12 - CRITICAL ERROR IN STATEMENT * 00057520
00251 C 13 - NUMBER OF INTERNAL VRAIABLES IN BUILT-IN MACRO * 00057530
00252 C * 00057540
00253 C***************************************************************** 00057550
00254 1350 MACRO(13) = 0 00057560
00255 MACRO(12) = 0 00057570
00256 IF (EQNCD .EQ. 3) MACRO(12) = 1 00057580
00257 IF (EQNCD .EQ. 3) CALL NDT13(1, 316, 3) 00057581
00258 MACRO(11) = PGMCT + 11 00057590
00259 MACRO(10) = ARGS 00057600
00260 MACRO(9) = 0 00057610
00261 RETURN 00057620
00262 END 00057640
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 CDATA +1222 MACRO +1462 BLANK +251 PGMCT +31
EQNCD +1102 DISK +6 MAC1 +1462 MAC2 +1602 MDT +1463
MDTL +1462 MDT1 +1462 MDT2 +1602
NDT39 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
SUBPROGRAMS CALLED
NDT13 NDT40 NDT24 NDT29
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
NOARG 1 PKREP 2 PNTR 7 *RTC 10 DEST 11
POS 12 FLAG 13 DUPFG 14 .R0000 15 OLDSY 16
J 17 .S0005 20 .S0004 21 .S0003 22 .S0002 23
.S0001 24 .S0000 25 SYNCK 26 SORCE 27 TYPE 30
ARGS 31 TEST 32 I 33 .O0000 34 START 35
REC 36 PNEST 37
TEMPORARIES
.A0016 40 .Q0001 41
ARGS 27# 49# 165 165# 166 175 239# 259
BLANK 25# 32# 139 243
CARD1 20# 29#
CARD2 20# 29#
CDATA 24# 32# 141 174 243
CRSET 20# 29# 32#
DEF 20# 29# 32#
DEST 28# 170# 174 181# 182
DISK 27# 36# 71 72 115 116
DUPFG 7# 27# 73 176
EQCHN 20# 29#
EQNCD 26# 32# 256 257
ERROR 20# 29# 32#
FCTN 20# 29#
FLAG 28# 178# 182# 184
I 24# 74# 75 107 109 114 138# 139 140# 141 169# 170 171 177#
181
J 24# 179# 180 181
LITBL 19# 29#
MAC1 24# 32#
MAC2 24# 32#
MACRO 24# 32# 139# 141# 174# 182 254# 255# 256# 258# 259# 260#
MDT 25# 32# 75 91# 92# 94# 107 109 114#
MDT1 25# 32# 71# 115
MDT2 26# 32# 72# 116
MDTL 25# 32# 74 90 90# 91 92 94
NDT13 110 127 184 195 208 210 212 214 227 238 243 257
NDT24 69 168
NDT29 57 146
NDT39 7#
NDT40 70
NOARG 28# 143# 173# 241
OBJCD 20# 29# 32#
OLDSY 27# 228# 230
OPER 20# 29#
PGMCT 26# 32# 93 113 258
PKREP 25# 70 70# 75 91 92
PNEST 25# 142# 193 225 225# 226 226# 227 231
PNTR 25# 144# 167 167# 170 177 180
POS 27# 57 57# 58 69 69# 124 127 140 146 146# 168 168# 172
194 195 208 210 214 227 242 242# 243 243#
PTRS 20# 29# 32# 36#
REC 7# 27# 88# 93# 94 107# 111# 113# 114
RMAX 19# 29#
RMIN 19# 29#
RTC 69 69# 168 168#
SORCE 27# 171# 172 174 180# 182
START 27# 48# 57 57# 58 69 69# 110 110# 124# 146 146# 168 168#
171 184 184# 194# 212 212# 238 238#
SUBSC 20# 29#
SYM 20# 29#
SYMTB 20# 29#
SYNCK 24# 47# 58 61 125# 145# 156 196# 197# 228 229#
TEST 26# 73# 87 106
TITLE 20# 29#
TMAP 20# 29#
TOKEN 20# 29#
TYPCT 20# 29#
TYPE 27# 57 57# 59 60 126 146 146# 154 192 195 196 197 225
226
XREF 20# 29#
1000P 60 214#
100P 138 139#
1100P 154 225#
1200P 166 238#
1300P 193 231 241#
1350P 209 211 213 215 240 254#
200P 57# 128
220P 74 77#
225P 87 88#
226P 87 90#
230P 75 106#
235P 106 107#
236P 106 109#
237P 109 113#
240P 95 115#
250P 61 89 108 112 124#
300P 126 138#
400P 140 141#
500P 146# 198
549P 165# 230
550P 169 174#
560P 172 175#
570P 177 185#
580P 179 183#
600P 156 175 176 192# 232
700P 192 208#
800P 59 210# 241
900P 58 212#
NDT39 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00057650
00002 C PROGRAM AUTHOR - GARY PELKEY 00057660
00003 C 00057670
00004 C 00057680
00005 SUBROUTINE NDT40 (OUT) 00057690
00006 C 00057700
00007 C 00057710
00008 C THIS ROUTINE PACKS SYMBOL INFORMATION FROM THE SUBSC ARRAY 00057720
00009 C AND THE SYM ARRAY INTO THE 5 WORD ARGUMENT ARRAY. 00057730
00010 C 00057740
00011 C 00057750
00012 REAL*8 RMIN,RMAX,LITBL(1024) 00057760
00013 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00057770
00014 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00057780
00015 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00057790
00016 3SYMTB(5,512) 00057800
00017 INTEGER OUT(5) 00057810
00018 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00057820
00019 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00057830
00020 2SYMTB,LITBL 00057840
00021 OUT(1)=1521*(SUBSC(1)-20)+39*(SUBSC(2)-1)+SUBSC(3)-1 00057850
00022 OUT(2)=1521*(SUBSC(4)-20)+39*(SUBSC(5)-1)+SUBSC(6)-1 00057860
00023 OUT(3)=4096*(SYM(7)-1)+SYM(14)-1 00057870
00024 OUT(4)=32*SYM(8)+16*SYM(9)+8*SYM(10)+4*SYM(11)+2*SYM(12)+SYM(13) 00057880
00025 OUT(5)=SYM(15) 00057890
00026 RETURN 00057900
00027 END 00057920
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220
SUBPROGRAMS CALLED
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
OUT 1
TEMPORARIES
.A0016 2
CARD1 13# 18#
CARD2 13# 18#
CRSET 13# 18#
DEF 13# 18#
EQCHN 13# 18#
ERROR 13# 18#
FCTN 13# 18#
LITBL 12# 18#
NDT40 5#
OBJCD 13# 18#
OPER 13# 18#
OUT 5# 17# 21# 22# 23# 24# 25#
PTRS 13# 18#
RMAX 12# 18#
RMIN 12# 18#
SUBSC 13# 18# 21 22
SYM 13# 18# 23 24 25
SYMTB 13# 18#
TITLE 13# 18#
TMAP 13# 18#
TOKEN 13# 18#
TYPCT 13# 18#
XREF 13# 18#
NDT40 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00057930
00002 C PROGRAM AUTHOR - GARY PELKEY 00057940
00003 C 00057950
00004 C 00057960
00005 SUBROUTINE NDT41 (IN) 00057970
00006 C 00057980
00007 C 00057990
00008 C THIS PROGRAM UNPACKS THE 5 WORD INPUT ARRAY INTO SUBSC(1-6) 00058000
00009 C AND SYM(7-15). IT THEN PUTS THE CORRECT CHARACTERS IN SYM(1-6) 00058010
00010 C BASED ON WHAT IS IN SUBSC. 00058020
00011 C 00058030
00012 C 00058040
00013 REAL*8 RMIN,RMAX,LITBL(1024) 00058050
00014 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00058060
00015 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00058070
00016 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00058080
00017 3SYMTB(5,512) 00058090
00018 INTEGER IN(5),FLAG,PT,N,TEMP,BIGPT,SUB 00058100
00019 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00058110
00020 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00058120
00021 2SYMTB,LITBL 00058130
00022 DO 100 PT=1,2 00058140
00023 N=3*PT-2 00058150
00024 TEMP=IN(PT) 00058160
00025 FLAG=1 00058170
00026 IF(IN(PT).GT.0) GO TO 50 00058180
00027 FLAG=0 00058190
00028 TEMP=IN(PT)+28899 00058200
00029 50 BIGPT=TEMP/1521 00058210
00030 SUBSC(N)=BIGPT+19*FLAG+1 00058220
00031 SUBSC(N+2)=MOD(TEMP,39)+1 00058230
00032 100 SUBSC(N+1)=(MOD(TEMP,1521)-SUBSC(N+2)+1)/39+1 00058240
00033 SYM(7)=IN(3)/4096+1 00058250
00034 SYM(14)=MOD(IN(3),4096)+1 00058260
00035 SYM(15)=IN(5) 00058270
00036 DO 200 I=1,6 00058280
00037 200 SYM(I+7)=MOD(IN(4),2**(7-I))/(2**(6-I)) 00058290
00038 400 DO 350 PT=1,6 00058300
00039 SUB=SUBSC(PT) 00058310
00040 350 SYM(PT)=CRSET(SUB) 00058320
00041 RETURN 00058330
00042 END 00058350
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220
NDT41 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
SUBPROGRAMS CALLED
MOD.
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
N 1 PT 2 FLAG 3 SUB 4 .S0002 5
.S0001 6 .S0000 7 BIGPT 10 IN 11 TEMP 12
*I 13 .O0001 14 .O0000 15
TEMPORARIES
.A0016 16 .Q0001 17 .Q0002 20
BIGPT 18# 29# 30
CARD1 14# 19#
CARD2 14# 19#
CRSET 14# 19# 40
DEF 14# 19#
EQCHN 14# 19#
ERROR 14# 19#
FCTN 14# 19#
FLAG 18# 25# 27# 30
I 36# 37
IN 5# 18# 24 26 28 33 34 35 37
LITBL 13# 19#
MOD. 31 32 34 37
N 18# 23# 30 31 32
NDT41 5#
OBJCD 14# 19#
OPER 14# 19#
PT 18# 22# 23 24 26 28 38# 39 40
PTRS 14# 19#
RMAX 13# 19#
RMIN 13# 19#
SUB 18# 39# 40
SUBSC 14# 19# 30# 31# 32# 32 39
SYM 14# 19# 33# 34# 35# 37# 40#
SYMTB 14# 19#
TEMP 18# 24# 28# 29 31 32
TITLE 14# 19#
TMAP 14# 19#
TOKEN 14# 19#
TYPCT 14# 19#
XREF 14# 19#
100P 22 32#
200P 36 37#
350P 38 40#
400P 38#
50P 26 29#
NDT41 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00058360
00002 C PROGRAM AUTHOR - THOMAS L. EVERMAN JR. 00058370
00003 C 00058380
00004 C 00058390
00005 SUBROUTINE NDT42 (PNT1,PNT2,ARGNM) 00058400
00006 REAL*8 RMIN,RMAX,LITBL(1024) 00058410
00007 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00058420
00008 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00058430
00009 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00058440
00010 3SYMTB(5,512) 00058450
00011 INTEGER START,PNT1,PNT2,ARGNM,ARGS,LTPAR,RTPAR,COMMA,PNEST 00058460
00012 1,CDATA(144) 00058470
00013 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00058480
00014 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00058490
00015 2SYMTB,LITBL 00058500
00016 EQUIVALENCE (COMMA,OPER(9)),(LTPAR,OPER(7)),(RTPAR,OPER(8)) 00058510
00017 EQUIVALENCE (CDATA(1),OBJCD(1)) 00058520
00018 PNEST=0 00058530
00019 ARGS=1 00058540
00020 START=PNT2+1 00058550
00021 DO 100 I=START,140 00058560
00022 IF(CDATA(I).EQ.LTPAR) PNEST=PNEST+10 00058570
00023 IF(CDATA(I).EQ.RTPAR) PNEST=PNEST-10 00058580
00024 IF(PNEST.EQ.0) GO TO 200 00058590
00025 IF(PNEST.GT.10) GO TO 100 00058600
00026 IF(CDATA(I).EQ.COMMA) ARGS=ARGS+1 00058610
00027 100 CONTINUE 00058620
00028 200 IF(ARGS.NE.ARGNM) CALL NDT13(PNT1,506,3) 00058630
00029 RETURN 00058640
00030 END 00058660
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 COMMA +330 LTPAR +326 RTPAR +327 CDATA +1222
SUBPROGRAMS CALLED
NDT13
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
ARGNM 1 PNT2 2 PNT1 3 .S0000 4 ARGS 5
*I 6 START 7 PNEST 10
NDT42 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
TEMPORARIES
.A0016 11
ARGNM 5# 11# 28
ARGS 11# 19# 26 26# 28
CARD1 7# 13#
CARD2 7# 13#
CDATA 11# 17# 22 23 26
COMMA 11# 16# 26
CRSET 7# 13#
DEF 7# 13#
EQCHN 7# 13#
ERROR 7# 13#
FCTN 7# 13#
I 21# 22 23 26
LITBL 6# 13#
LTPAR 11# 16# 22
NDT13 28
NDT42 5#
OBJCD 7# 13# 17#
OPER 7# 13# 16#
PNEST 11# 18# 22 22# 23 23# 24 25
PNT1 5# 11# 28 28#
PNT2 5# 11# 20
PTRS 7# 13#
RMAX 6# 13#
RMIN 6# 13#
RTPAR 11# 16# 23
START 11# 20# 21
SUBSC 7# 13#
SYM 7# 13#
SYMTB 7# 13#
TITLE 7# 13#
TMAP 7# 13#
TOKEN 7# 13#
TYPCT 7# 13#
XREF 7# 13#
100P 21 25 27#
200P 24 28#
NDT42 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00058670
00002 C * 00058680
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00058690
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00058700
00005 C * 00058710
00006 C THIS SUBROUTINE RIGHT JUSTIFIES REAL NUMBERS. * 00058720
00007 C * 00058730
00008 C***************************************************************** 00058740
00009 SUBROUTINE NDT43 (DVAL, FIELD, SCALE, PLACE) 00058750
00010 REAL*8 RMIN,RMAX,LITBL(1024) 00058760
00011 REAL*8 VAL,DVAL,POWER 00058770
00012 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00058780
00013 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00058790
00014 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00058800
00015 3SYMTB(5,512) 00058810
00016 INTEGER FIELD(7),NUM(10),BLANK,SCALE,DEC,LEAD,POINT,SIGN 00058820
00017 INTEGER DIGIT,MINUS,PLACE,STDEC,POS 00058830
00018 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00058840
00019 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00058850
00020 2SYMTB,LITBL 00058860
00021 EQUIVALENCE (BLANK,CRSET(1)),(POINT,OPER(1)),(MINUS,OPER(3)) 00058870
00022 EQUIVALENCE (NUM(1),CRSET(30)) 00058880
00023 EQUIVALENCE (DEC,LEAD) 00058890
00024 C***************************************************************** 00058900
00025 C * 00058910
00026 C DVAL IS THE INPUT REAL NUMBER. FIELD IS THE OUTPUT RIGHT * 00058920
00027 C JUSTIFIED NUMBER. SCALE IS THE POWER OF 10 TO WHICH THE * 00058930
00028 C NUMBER IS TO BE SCALED. PLACE INDICATES THE NUMBER * 00058940
00029 C OF DECIMAL PLACES. * 00058950
00030 C SET VAL TO THE VALUE OF THE SCALED NUMBER. ASSUME A PLUS * 00058960
00031 C SIGN AND THEN CHECK FOR MEGATIVE VAL. TAKE ABSOLUTE * 00058970
00032 C VALUE OF VAL AND ROUND IT TO THE APPROPRIATE NUMBER OF * 00058980
00033 C DECIMAL PLACES. * 00058990
00034 C * 00059000
00035 C***************************************************************** 00059010
00036 VAL = DVAL / 10. ** SCALE 00059020
00037 FIELD(1) = BLANK 00059030
00038 SIGN = 1 00059040
00039 IF (DVAL .LT. 0.) SIGN = -1 00059050
00040 VAL = DABS (VAL + .5 * SIGN * 10. ** (-PLACE)) 00059060
00041 C***************************************************************** 00059070
00042 C * 00059080
00043 C SET DEC EQUAL TO DECIMAL POINT POSITION. IF IT OCCUPIES TH* 00059090
00044 C LAST FIELD POSITION, SET DEC TO 8 SO THAT NO DECIMAL POINT * 00059100
00045 C APPEARS IN THE FIELD. STDEC IS A HOLD AREA FOR DEC. * 00059110
00046 C * 00059120
00047 C***************************************************************** 00059130
00048 DEC = 7 - PLACE 00059140
00049 IF (DEC .EQ. 7) DEC = 8 00059150
00050 STDEC = DEC 00059160
00051 C***************************************************************** 00059170
00052 C * 00059180
00053 C EXTRACT THE NUMERIC CHARACTERS FROM VAL. VALUE FOR DEC * 00059190
00054 C MUST BE INCREMENTED AT THE DECIMAL POINT POSITION TO AVOID * 00059200
00055 C INVALID COMPUTATION OF NUMERIC CHARACTER. * 00059210
00056 C * 00059220
NDT43 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C***************************************************************** 00059230
00058 DO 300 POS = 2, 7 00059240
00059 IF (POS .EQ. STDEC) GO TO 200 00059250
00060 POWER = 10. ** (DEC - POS - 1) 00059260
00061 DIGIT = VAL / POWER 00059270
00062 FIELD(POS) = NUM(DIGIT + 1) 00059280
00063 VAL = VAL - FLOAT (DIGIT) * POWER 00059290
00064 GO TO 300 00059300
00065 200 DEC = DEC + 1 00059310
00066 FIELD(POS) = POINT 00059320
00067 300 CONTINUE 00059330
00068 C***************************************************************** 00059340
00069 C * 00059350
00070 C REPLACE LEADING ZEROS WITH BLANKS AND ENTER THE SIGN. * 00059360
00071 C * 00059370
00072 C***************************************************************** 00059380
00073 IF (DEC .EQ. 8) DEC = 9 00059390
00074 LEAD = DEC - 3 00059400
00075 POS = 2 00059410
00076 IF (LEAD .LE. 1) GO TO 500 00059420
00077 DO 400 POS = 2, LEAD 00059430
00078 IF (FIELD(POS) .NE. NUM(1)) GO TO 500 00059440
00079 FIELD(POS) = BLANK 00059450
00080 400 CONTINUE 00059460
00081 POS = POS + 1 00059470
00082 500 IF (SIGN .EQ. -1) FIELD(POS - 1) = MINUS 00059480
00083 RETURN 00059490
00084 END 00059510
EQUIVALENCED VARIABLES
( DEC 1 LEAD 1 )
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 BLANK +251 POINT +320 MINUS +322 NUM +306
SUBPROGRAMS CALLED
FLOAT. DABS.
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
SIGN 2 DIGIT 3 POS 4 POWER 5 FIELD 7
DVAL 10 PLACE 12 .S0001 13 .S0000 14 SCALE 15
DEC 1 VAL 16 .O0000 20 STDEC 21 LEAD 1
NDT43 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
TEMPORARIES
.A0016 22 .Q0000 23
BLANK 16# 21# 37 79
CARD1 12# 18#
CARD2 12# 18#
CRSET 12# 18# 21# 22#
DABS. 40
DEC 16# 23# 48# 49 49# 50 60 65 65# 73 73# 74
DEF 12# 18#
DIGIT 17# 61# 62 63
DVAL 9# 11# 36 39
EQCHN 12# 18#
ERROR 12# 18#
FCTN 12# 18#
FIELD 9# 16# 37# 62# 66# 78 79# 82#
FLOAT. 63
LEAD 16# 23# 74# 76 77
LITBL 10# 18#
MINUS 17# 21# 82
NDT43 9#
NUM 16# 22# 62 78
OBJCD 12# 18#
OPER 12# 18# 21#
PLACE 9# 17# 40 48
POINT 16# 21# 66
POS 17# 58# 59 60 62 66 75# 77# 78 79 81 81# 82
POWER 11# 60# 61 63
PTRS 12# 18#
RMAX 10# 18#
RMIN 10# 18#
SCALE 9# 16# 36
SIGN 16# 38# 39# 40 82
STDEC 17# 50# 59
SUBSC 12# 18#
SYM 12# 18#
SYMTB 12# 18#
TITLE 12# 18#
TMAP 12# 18#
TOKEN 12# 18#
TYPCT 12# 18#
VAL 11# 36# 40 40# 61 63 63#
XREF 12# 18#
200P 59 65#
300P 58 64 67#
400P 77 80#
500P 76 78 82#
NDT43 [ NO ERRORS DETECTED ]
NDT44 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 SUBROUTINE NDT44 (VAL,FIELD) 00059520
00002 INTEGER CHAR,EXP,PLACE,PNT,OUTER,BLANK,PLUS,POINT,E,SUB 00059530
00003 INTEGER COUNT,ZERO,FIELD(11),NUM(10),LOOP,MINUS 00059540
00004 REAL*8 VAL 00059550
00005 EQUIVALENCE (ZERO,NUM(1)) 00059560
00006 DATA NUM /'0','1','2','3','4','5','6','7','8','9'/ 00059570
00007 DATA BLANK,E,PLUS,MINUS,POINT /' ','E','+','-','.'/ 00059580
00008 DO 90 LOOP=8,11 00059590
00009 90 FIELD(LOOP)=BLANK 00059600
00010 CALL NDT77 (DABS(VAL),CHAR) 00059610
00011 IF(CHAR.LT.-1.OR.CHAR.GT.4) GO TO 100 00059620
00012 EXP=0 00059630
00013 PLACE=4-CHAR 00059640
00014 GO TO 200 00059650
00015 100 EXP=CHAR 00059660
00016 PLACE=4 00059670
00017 200 CALL NDT43 (VAL,FIELD,EXP,PLACE) 00059680
00018 DO 300 OUTER=1,6 00059690
00019 IF(FIELD(1).NE.BLANK) GO TO 500 00059700
00020 DO 400 LOOP=1,6 00059710
00021 400 FIELD(LOOP)=FIELD(LOOP+1) 00059720
00022 300 FIELD(7)=BLANK 00059730
00023 500 IF(CHAR.EQ.4) GO TO 800 00059740
00024 DO 600 LOOP=1,7 00059750
00025 PNT=8-LOOP 00059760
00026 IF(FIELD(PNT).EQ.BLANK) GO TO 600 00059770
00027 IF(FIELD(PNT).EQ.ZERO) GO TO 700 00059780
00028 IF(FIELD(PNT).NE.POINT) GO TO 800 00059790
00029 FIELD(PNT)=BLANK 00059800
00030 PNT=PNT-1 00059810
00031 GO TO 800 00059820
00032 700 FIELD(PNT)=BLANK 00059830
00033 600 CONTINUE 00059840
00034 800 IF(EXP) 825,5000,850 00059850
00035 825 COUNT=-EXP-1 00059860
00036 IF(COUNT.GT.5.OR.COUNT.GT.7-PNT) GO TO 850 00059870
00037 PNT=2 00059880
00038 IF(FIELD(2).NE.POINT.AND.FIELD(2).NE.BLANK) PNT=3 00059890
00039 FIELD(PNT)=FIELD(PNT-1) 00059900
00040 FIELD(PNT-1)=POINT 00059910
00041 DO 1000 OUTER=1,COUNT 00059920
00042 DO 1100 LOOP=PNT,6 00059930
00043 SUB=7-LOOP+PNT 00059940
00044 1100 FIELD(SUB)=FIELD(SUB-1) 00059950
00045 1000 FIELD(PNT)=ZERO 00059960
00046 GO TO 5000 00059970
00047 850 FIELD(PNT+1)=E 00059980
00048 FIELD(PNT+2)=PLUS 00059990
00049 IF(EXP.GT.0) GO TO 900 00060000
00050 EXP=-EXP 00060010
00051 FIELD(PNT+2)=MINUS 00060020
00052 900 PNT=PNT+3 00060030
00053 SUB=EXP/10+1 00060040
00054 FIELD(PNT)=NUM(SUB) 00060050
00055 IF(SUB.NE.1) PNT=PNT+1 00060060
00056 SUB=EXP-10*SUB+11 00060070
NDT44 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 FIELD(PNT)=NUM(SUB) 00060080
00058 5000 RETURN 00060090
00059 END 00060110
EQUIVALENCED VARIABLES
( ZERO 1 NUM 1 )
SUBPROGRAMS CALLED
NDT77 NDT43 DABS.
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
E 13 ZERO 1 NUM 1 MINUS 14 LOOP 15
FIELD 16 CHAR 17 COUNT 20 BLANK 21 SUB 22
PLACE 23 .S0005 24 .S0004 25 .S0003 26 .S0002 27
.S0001 30 .S0000 31 EXP 32 PLUS 33 POINT 34
OUTER 35 PNT 36 VAL 37 .O0004 41 .O0003 42
.O0002 43 .O0001 44 .O0000 45
TEMPORARIES
.A0016 46 .Q0000 47 .Q0001 50
BLANK 2# 7# 9 19 22 26 29 32 38
CHAR 2# 10 10# 11 13 15 23
COUNT 3# 35# 36 41
DABS. 10
E 2# 7# 47
EXP 2# 12# 15# 17 17# 34 35 49 50 50# 53 56
FIELD 1# 3# 9# 17 17# 19 21# 21 22# 26 27 28 29# 32#
38 39# 39 40# 44# 44 45# 47# 48# 51# 54# 57#
LOOP 3# 8# 9 20# 21 24# 25 42# 43
MINUS 3# 7# 51
NDT43 17
NDT44 1#
NDT77 10
NUM 3# 5# 6# 54 57
OUTER 2# 18# 41#
PLACE 2# 13# 16# 17 17#
PLUS 2# 7# 48
PNT 2# 25# 26 27 28 29 30 30# 32 36 37# 38# 39 40
42 43 45 47 48 51 52 52# 54 55 55# 57
POINT 2# 7# 28 38 40
SUB 2# 43# 44 53# 54 55 56 56# 57
VAL 1# 4# 10 17 17#
ZERO 3# 5# 27 45
1000P 41 45#
100P 11 15#
1100P 42 44#
200P 14 17#
300P 18 22#
400P 20 21#
5000P 34 46 58#
500P 19 23#
600P 24 26 33#
700P 27 32#
800P 23 28 31 34#
825P 34 35#
850P 34 36 47#
900P 49 52#
90P 8 9#
NDT44 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00060120
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00060130
00003 C 00060140
00004 C 00060150
00005 SUBROUTINE NDT45 (NUMBR,FIELD,OPTN) 00060160
00006 C 00060170
00007 C 00060180
00008 C NDT45 FORMATS INTEGER NUMBERS FOR PRINTING IN A1 FORMAT. 00060190
00009 C 00060200
00010 C THE FIRST ARGUMENT IS THE NUMBER IN INTEGER MODE WHICH IS 00060210
00011 C TO BE CONVERTED TO CHARACTER FORMAT. 00060220
00012 C 00060230
00013 C THE SECOND ARGUMENT IS THE TARGET FIELD IN WHICH THE 00060240
00014 C CHARACTER STRING REPRESENTATION IS PLACED. 00060250
00015 C 00060260
00016 C THE THIRD ARGUMENT INDICATES THE FORMAT OPTION: 00060270
00017 C 00060280
00018 C 0 - THE NUMBER IS LEFT JUSTIFIED IN THE FIELD WITH LEADING 00060290
00019 C ZERO SUPPRESSION AND BLANK PADDING ON THE RIGHT. 00060300
00020 C 1 - THE NUMBER IS RIGHT JUSTIFIED IN THE FIELD WITH LEADING 00060310
00021 C ZEROS LEFT IN THE FIELD AND NO BLANK PADDING. 00060320
00022 C 00060330
00023 C 00060340
00024 REAL*8 RMIN,RMAX,LITBL(1024) 00060350
00025 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00060360
00026 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00060370
00027 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00060380
00028 3SYMTB(5,512) 00060390
00029 INTEGER FIELD(4),NUM(10),DIGIT,PNT,BLANK,LOOP,NUMBR,OPTN 00060400
00030 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00060410
00031 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00060420
00032 2SYMTB,LITBL 00060430
00033 EQUIVALENCE (DIGIT,PNT),(NUM(1),CRSET(30)),(BLANK,CRSET(1)) 00060440
00034 C 00060450
00035 C 00060460
00036 C THIS LOOP PLACES THE CHARACTER REPRESENTATION OF EACH DIGIT 00060470
00037 C IN ITS CORRESPONDING POSITION IN THE TARGET FIELD. 00060480
00038 C 00060490
00039 C 00060500
00040 DO 100 LOOP=1,4 00060510
00041 DIGIT=MOD(NUMBR/10**(4-LOOP),10)+1 00060520
00042 100 FIELD(LOOP)=NUM(DIGIT) 00060530
00043 C 00060540
00044 C 00060550
00045 C IF THE RIGHT JUSTIFY OPTION IS REQUESTED THEN PROCESSING 00060560
00046 C IS FINISHED. 00060570
00047 C 00060580
00048 C 00060590
00049 IF(OPTN.EQ.1) GO TO 400 00060600
00050 C 00060610
00051 C 00060620
00052 C THIS LOOP CHECKS THE LEADING POSITION FOR A ZERO. 00060630
00053 C IF IT IS NOT A ZERO THEN THE STRING IS LEFT JUSTIFIED. 00060640
00054 C 00060650
00055 C 00060660
00056 DO 300 PNT=1,3 00060670
NDT45 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 IF(FIELD(1).NE.NUM(1)) GO TO 400 00060680
00058 C 00060690
00059 C 00060700
00060 C THE LEADING CHARACTER IS A ZERO SO SHIFT ALL CHARACTERS 00060710
00061 C ONE POSITION TO THE LEFT AND BLANK OUT THE LAST POSTITON. 00060720
00062 C 00060730
00063 C 00060740
00064 DO 200 LOOP=1,3 00060750
00065 200 FIELD(LOOP)=FIELD(LOOP+1) 00060760
00066 300 FIELD(4)=BLANK 00060770
00067 400 RETURN 00060780
00068 END 00060800
EQUIVALENCED VARIABLES
( DIGIT 1 PNT 1 )
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 NUM +306 BLANK +251
SUBPROGRAMS CALLED
MOD.
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
DIGIT 1 LOOP 2 FIELD 3 .S0002 4 .S0001 5
.S0000 6 NUMBR 7 PNT 1 OPTN 10 .O0000 11
TEMPORARIES
.A0016 12 .Q0000 13
BLANK 29# 33# 66
CARD1 25# 30#
CARD2 25# 30#
CRSET 25# 30# 33#
DEF 25# 30#
DIGIT 29# 33# 41# 42
EQCHN 25# 30#
ERROR 25# 30#
FCTN 25# 30#
FIELD 5# 29# 42# 57 65# 65 66#
LITBL 24# 30#
LOOP 29# 40# 41 42 64# 65
MOD. 41
NDT45 5#
NUM 29# 33# 42 57
NUMBR 5# 29# 41
OBJCD 25# 30#
OPER 25# 30#
OPTN 5# 29# 49
PNT 29# 33# 56#
PTRS 25# 30#
RMAX 24# 30#
RMIN 24# 30#
SUBSC 25# 30#
SYM 25# 30#
SYMTB 25# 30#
TITLE 25# 30#
TMAP 25# 30#
TOKEN 25# 30#
TYPCT 25# 30#
XREF 25# 30#
100P 40 42#
200P 64 65#
300P 56 66#
400P 49 57 67#
NDT45 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00060810
00002 C * 00060820
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00060830
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00060840
00005 C * 00060850
00006 C THIS PROGRAM CONSTRUCTS THE OBJECT CODE BUFFER. * 00060860
00007 C * 00060870
00008 C***************************************************************** 00060880
00009 SUBROUTINE NDT46 (OPCOD, OPRND) 00060890
00010 REAL*8 RMIN,RMAX,LITBL(1024) 00060900
00011 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00060910
00012 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00060920
00013 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00060930
00014 3SYMTB(5,512) 00060940
00015 INTEGER OPCOD,OPRND,OBJPT 00060950
00016 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00060960
00017 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00060970
00018 2SYMTB,LITBL 00060980
00019 EQUIVALENCE (OBJPT,OBJCD(1)) 00060990
00020 C***************************************************************** 00061000
00021 C * 00061010
00022 C INCREMENT OBJPT AND CHECK FOR EXCEEDING BUFFER LENGTH. * 00061020
00023 C ENTER THE OPCODE AND OPERAND FROM THE ARGUMENT LIST INTO * 00061030
00024 C THE NEXT 2 LOCATIONS IN THE BUFFER. * 00061040
00025 C * 00061050
00026 C***************************************************************** 00061060
00027 OBJPT = OBJPT + 2 00061070
00028 IF (OBJPT .LE. 160) GO TO 100 00061080
00029 CALL NDT12 (5) 00061090
00030 GO TO 200 00061100
00031 100 OBJCD(OBJPT - 1) = OPCOD 00061110
00032 OBJCD(OBJPT) = OPRND 00061120
00033 200 RETURN 00061130
00034 END 00061150
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OBJPT +1222
SUBPROGRAMS CALLED
NDT12
NDT46 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
OPCOD 1 OPRND 2
TEMPORARIES
.A0016 3
CARD1 11# 16#
CARD2 11# 16#
CRSET 11# 16#
DEF 11# 16#
EQCHN 11# 16#
ERROR 11# 16#
FCTN 11# 16#
LITBL 10# 16#
NDT12 29
NDT46 9#
OBJCD 11# 16# 19# 31# 32#
OBJPT 15# 19# 27 27# 28 31 32
OPCOD 9# 15# 31
OPER 11# 16#
OPRND 9# 15# 32
PTRS 11# 16#
RMAX 10# 16#
RMIN 10# 16#
SUBSC 11# 16#
SYM 11# 16#
SYMTB 11# 16#
TITLE 11# 16#
TMAP 11# 16#
TOKEN 11# 16#
TYPCT 11# 16#
XREF 11# 16#
100P 28 31#
200P 30 33#
NDT46 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00061160
00002 C * 00061170
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00061180
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00061190
00005 C * 00061200
00006 C THIS PROGRAM PROCESSES VARIABLES ON THE LEFT SIDE OF EQUATI* 00061210
00007 C * 00061220
00008 C***************************************************************** 00061230
00009 SUBROUTINE NDT47 00061240
00010 REAL*8 RMIN,RMAX,LITBL(1024) 00061250
00011 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00061260
00012 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00061270
00013 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00061280
00014 3SYMTB(5,512) 00061290
00015 INTEGER EQPOS,STYPE,SUBCK(8),LFTYP,VSUB,SYMPT,USDBT,VTYPE, 00061300
00016 1INTBT,PRTBT,PLTBT,USOUT(3),I,DEFBT,TOKPT 00061310
00017 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00061320
00018 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00061330
00019 2SYMTB,LITBL 00061340
00020 EQUIVALENCE (EQPOS,TMAP(3)),(STYPE,TOKEN(1)),(USDBT,SYM(10)), 00061350
00021 1(VTYPE,SYM(7)),(INTBT,SYM(13)),(PRTBT,SYM(8)), 00061360
00022 2(PLTBT,SYM(9)),(DEFBT,SYM(11)),(TOKPT,TOKEN(3)) 00061370
00023 DATA USOUT /2,5,8/ 00061380
00024 DATA SUBCK /0,0,0,0,2,2,4,2/ 00061390
00025 C***************************************************************** 00061400
00026 C * 00061410
00027 C THE USOUT ARRAY LISTS EQUATION TYPES WHICH DEFINE VARIABLES* 00061420
00028 C WHOSE USE IN OUTPUT STATEMENTS IS ACCEPTABLE AS USAGE OF * 00061430
00029 C THE VARIABLE. THE SUBCK ARRAY GIVES A CORRESPONDENCE * 00061440
00030 C BETWEEN THE STATEMENT TYPE AND THE SUBSCRIPT OF THE NAME * 00061450
00031 C ON THE LEFT OF THE EQUAL SIGN. A CHECK IS FIRST MADE TO SE* 00061460
00032 C IF AN EQUAL SIGN EXISTS IN THE EQUATION. THEN, THE TOKEN * 00061470
00033 C TYPE IS DETERMINED. IF THE TOKEN DOES NOT INDICATE A * 00061480
00034 C VALID VARIABLE, THE PROGRAM RETURNS. * 00061490
00035 C * 00061500
00036 C***************************************************************** 00061510
00037 IF (EQPOS .NE. 5 .OR. TOKPT .EQ. 3) GO TO 400 00061520
00038 VSUB = TOKEN(4) / 4096 00061530
00039 IF (TOKEN(4) .LT. 0 .OR. VSUB .GT. 4) GO TO 400 00061540
00040 C***************************************************************** 00061550
00041 C * 00061560
00042 C COMPUTE THE SYMBOL TABLE POINTER FROM THE TOKEN. CALL THE * 00061570
00043 C UNPACK SUBROUTINE SO THAT VARIABLE INFORMATION IS AVAILABLE* 00061580
00044 C IN SYM. SET LFTYP TO THE STATEMENT TYPE * 00061590
00045 C BRANCH TO THE DEF CARD PROCESSING ROUTINE. * 00061600
00046 C***************************************************************** 00061610
00047 SYMPT = MOD (TOKEN(4), 4096) + 1 00061620
00048 CALL NDT41 (SYMTB(1,SYMPT)) 00061630
00049 LFTYP = STYPE 00061640
00050 IF (LFTYP .EQ. 18) GO TO 300 00061650
00051 C***************************************************************** 00061660
00052 C * 00061670
00053 C CROSS-CHECK THE SUBSCRIPTS. ALSO BRANCH TO RETURN * 00061680
00054 C IF PARM CARD VARIABLE IS BEING PROCESSED. * 00061690
00055 C * 00061700
00056 C***************************************************************** 00061710
NDT47 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 IF (VSUB .NE. SUBCK(LFTYP)) CALL NDT14 (TMAP(4), 530 + 00061720
00058 1SUBCK(LFTYP), 1) 00061730
00059 IF (VTYPE .EQ. 3) GO TO 400 00061740
00060 C***************************************************************** 00061750
00061 C * 00061760
00062 C MAKE SPECIAL CHECKS FOR INITIAL VALUE EQUATION. MAKE SURE * 00061770
00063 C INITIALIZED VARIABLE IS A LEVEL. IF N EQUATION DOES NOT * 00061780
00064 C INITIALIZE ANYTHING, GIVE WARNING AND CHANGE ITS TYPE * 00061790
00065 C TO A LEVEL. * 00061800
00066 C * 00061810
00067 C***************************************************************** 00061820
00068 IF (STYPE .NE. 4 .OR. DEFBT .NE. 0) GO TO 90 00061830
00069 CALL NDT14 (TMAP(4), 525, 1) 00061840
00070 VTYPE = 5 00061850
00071 CALL NDT40 (SYMTB(1,SYMPT)) 00061860
00072 GO TO 90 00061870
00073 C***************************************************************** 00061880
00074 C * 00061890
00075 C CHECK TO MAKE SURE A LEVEL VARIABLE HAS BEEN INITIALIZED. * 00061900
00076 C THEN CHECK TO MAKE SURE THAT THE VARIABLE HAS BEEN USED * 00061910
00077 C ON THE RIGHT SIDE OF AN EQUATION. IF IT IS NOT USED, NO * 00061920
00078 C WARNING IS ISSUED AS LONG AS THE VARIABLE IS A L, S, OR C * 00061930
00079 C AND IS USED FOR OUTPUT. IF A R OR A EQUATION IS USED FOR * 00061940
00080 C OUTPUT ONLY, A WARNING IS GIVEN TO INDICATE THAT THE * 00061950
00081 C VARIABLE SHOULD BE DEFINED AS A SUPPLEMENTARY. IF THE * 00061960
00082 C VARIABLE IS NEITHER USED NOR OUTPUT, A WARNING INDICATING * 00061970
00083 C THAT THE VARIABLE HAS NO USAGE IN THE PROGRAM IS GIVEN. * 00061980
00084 C * 00061990
00085 C***************************************************************** 00062000
00086 90 IF (VTYPE .EQ. 5 .AND. INTBT .EQ. 0) CALL NDT14 (TMAP(4),524,3) 00062010
00087 IF (USDBT .NE. 0) GO TO 400 00062020
00088 IF (PRTBT .EQ. 0 .AND. PLTBT .EQ. 0) GO TO 200 00062030
00089 DO 100 I = 1, 3 00062040
00090 IF (VTYPE .EQ. USOUT(I)) GO TO 400 00062050
00091 100 CONTINUE 00062060
00092 C***************************************************************** 00062070
00093 C * 00062080
00094 C ERROR MESSAGES: * 00062090
00095 C 587 - VARIABLE IS USED FOR OUTPUT ONLY AND SHOULD HAVE * 00062100
00096 C BEEN DEFINED AS A SUPPLEMENTARY. * 00062110
00097 C 588 - A VARIABLE HAS NO PURPOSE IN THE PROGRAM. * 00062120
00098 C 589 - THE DEF CARD OCCURS FOR AN UNDEFINED VARIABLE. * 00062130
00099 C * 00062140
00100 C***************************************************************** 00062150
00101 CALL NDT14 (TMAP(4), 587, 1) 00062160
00102 GO TO 400 00062170
00103 200 CALL NDT14 (TMAP(4), 588, 1) 00062180
00104 GO TO 400 00062190
00105 300 IF (DEFBT .EQ. 0) CALL NDT14 (TMAP(4), 589, 1) 00062200
00106 400 RETURN 00062210
00107 END 00062230
EQUIVALENCED VARIABLES
NDT47 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 EQPOS +1724 STYPE +522 USDBT +342 VTYPE +337
INTBT +345 PRTBT +340 PLTBT +341 DEFBT +343 TOKPT +524
SUBPROGRAMS CALLED
MOD. NDT40 NDT14 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
SUBCK 1 .S0000 11 SYMPT 12 LFTYP 13 I 14
USOUT 15 VSUB 20
TEMPORARIES
.A0016 21 .Q0000 22
CARD1 11# 17#
CARD2 11# 17#
CRSET 11# 17#
DEF 11# 17#
DEFBT 15# 20# 68 105
EQCHN 11# 17#
EQPOS 15# 20# 37
ERROR 11# 17#
FCTN 11# 17#
I 15# 89# 90
INTBT 15# 20# 86
LFTYP 15# 49# 50 57
LITBL 10# 17#
MOD. 47
NDT14 57 69 86 101 103 105
NDT40 71
NDT41 48
NDT47 9#
OBJCD 11# 17#
OPER 11# 17#
PLTBT 15# 20# 88
PRTBT 15# 20# 88
PTRS 11# 17#
RMAX 10# 17#
RMIN 10# 17#
STYPE 15# 20# 49 68
SUBCK 15# 24# 57
SUBSC 11# 17#
SYM 11# 17# 20#
SYMPT 15# 47# 48 71
SYMTB 11# 17# 48 48# 71 71#
TITLE 11# 17#
TMAP 11# 17# 20# 57 57# 69 69# 86 86# 101 101# 103 103# 105
105#
TOKEN 11# 17# 20# 38 39 47
TOKPT 15# 20# 37
TYPCT 11# 17#
USDBT 15# 20# 87
USOUT 15# 23# 90
VSUB 15# 38# 39 57
VTYPE 15# 20# 59 70# 86 90
XREF 11# 17#
100P 89 91#
200P 88 103#
300P 50 105#
400P 37 39 59 87 90 102 104 106#
90P 68 72 86#
NDT47 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00062240
00002 C * 00062250
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00062260
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00062270
00005 C * 00062280
00006 C THIS PROGRAM PROCESSES VARABLES ON THE RIGHT SIDE OF * 00062290
00007 C AN EQUATION. * 00062300
00008 C * 00062310
00009 C***************************************************************** 00062320
00010 SUBROUTINE NDT48 00062330
00011 REAL*8 RMIN,RMAX,LITBL(1024) 00062340
00012 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00062350
00013 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00062360
00014 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00062370
00015 3SYMTB(5,512) 00062380
00016 INTEGER EQPOS,STYPE,RSTYP,VTYPE,RVTYP,DEFBT,SUBCK(8,7), 00062390
00017 1VSUB,PNT,TOKPT,SYMPT,FUNPT,CHECK,OPTNS,XRFBT,DVSYM,INTBT 00062400
00018 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00062410
00019 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00062420
00020 2SYMTB,LITBL 00062430
00021 EQUIVALENCE (EQPOS,TMAP(3)),(STYPE,TOKEN(1)),(VTYPE,SYM(7)), 00062440
00022 1(DEFBT,SYM(11)),(TOKPT,TOKEN(3)),(SYMPT,FUNPT), 00062450
00023 2(OPTNS,PTRS(7)),(INTBT,SYM(13)) 00062460
00024 C***************************************************************** 00062470
00025 C * 00062480
00026 C THE SUBCK ARRAY IS USED TO SEE WHETHER A GIVEN VARIABLE * 00062490
00027 C TYPE IS VALID IN AN EQUATION AND WHETHER OR NOT IT IS * 00062500
00028 C PROPERLY SUBSCRIPTED. THE ROWS CORRESPOND TO STATEMENTS, * 00062510
00029 C AND THE COLUMNS CORRESPOND TO VARIABLE TYPES. THE VALUES * 00062520
00030 C AT THE INTERSECTING POSITION INDICATE THE FOLLOWING: * 00062530
00031 C 0 - USAGE IS PERMISSIBLE. NO SUBSCRIPT. * 00062540
00032 C 2 - USAGE IS PERMISSIBLE. SUBSCRIPT .K. * 00062550
00033 C 3 - USAGE IS PERMISSIBLE. SUBSCRIPT .JK. * 00062560
00034 C 100 - USAGE IS NOT PERMISSIBLE. * 00062570
00035 C * 00062580
00036 C***************************************************************** 00062590
00037 DATA SUBCK /0,0,0,100,0,0,0,0,100,0,100,100,100,100,100,100, 00062600
00038 1100,100,0,100,100,100,100,0,100,100,0,100,2,2,2,0, 00062610
00039 2100,100,0,100,2,2,2,0,100,100,0,3,100,100,3,0, 00062620
00040 3100,100,100,100,100,100,2,0/ 00062630
00041 C***************************************************************** 00062640
00042 C * 00062650
00043 C MAKE SURE EQUAL SIGN EXISTS IN EQUATION. PNT IS THE POSITI* 00062660
00044 C OF THE NEXT AVAILABLE TOKEN. RSTYP IS USED TO KEEP STYPE * 00062670
00045 C WITHIN THE BOUNDS OF THE SUBCK ARRAY. DVSYM IS THE SYMBOL * 00062680
00046 C TABLE POINTER OF THE DEPENDENT VARIABLE FOR THIS EQUATION. * 00062690
00047 C * 00062700
00048 C***************************************************************** 00062710
00049 IF (EQPOS .EQ. 0) GO TO 600 00062720
00050 XRFBT = MOD (OPTNS / 128, 2) 00062730
00051 PNT = EQPOS 00062740
00052 RSTYP = STYPE - 1 00062750
00053 IF (STYPE .EQ. 12 .OR. STYPE .EQ. 13) RSTYP = 8 00062760
00054 DVSYM = MOD (TOKEN(4), 4096) + 1 00062770
00055 C***************************************************************** 00062780
00056 C * 00062790
NDT48 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C INCREMENT THE TOKEN POINTER AND CHECK FOR THE END OF * 00062800
00058 C OF THE TOKEN STRING. DETERMINE THE SUBSCRIPT TYPE IN * 00062810
00059 C VSUB. GET NEXT TOKEN IF PRESENT TOKEN INDICATES A * 00062820
00060 C NUMERIC, FUNCTION, INVALID VARIABLE, OR OPERATOR. * 00062830
00061 C * 00062840
00062 C***************************************************************** 00062850
00063 100 PNT = PNT + 1 00062860
00064 IF (PNT .GT. TOKPT) GO TO 600 00062870
00065 VSUB = TOKEN(PNT) / 4096 00062880
00066 IF (TOKEN(PNT) .LT. 0 .OR. VSUB .GT. 5) GO TO 100 00062890
00067 C***************************************************************** 00062900
00068 C * 00062910
00069 C GET THE POINTER TO THE SYMBOL OR FUNCTION TABLE FROM THE * 00062920
00070 C TOKEN. BRANCH IF NOT A FUNCTION. * 00062930
00071 C * 00062940
00072 C***************************************************************** 00062950
00073 SYMPT = MOD (TOKEN(PNT), 4096) + 1 00062960
00074 IF (VSUB .NE. 5) GO TO 300 00062970
00075 C***************************************************************** 00062980
00076 C * 00062990
00077 C FUNCTION NAME HAS BEEN ENCOUNTERED. IF IT IS NOT ONE OF * 00063000
00078 C THE TABLE FUNCTIONS, GET THE NEXT TOKEN. OTHERWISE, GET * 00063010
00079 C A TOKEN TWO POSITIONS AWAY AND DETERMINE WHETHER IT IS * 00063020
00080 C POINTING TO A TABLE. IF IT IS A TABLE, CHECK SUBSCRIPT. * 00063030
00081 C * 00063040
00082 C***************************************************************** 00063050
00083 FUNPT = FUNPT - 1 00063060
00084 IF(FUNPT.EQ.6.AND.STYPE.NE.5) CALL NDT14 (TMAP(PNT),526,3) 00063070
00085 IF (FUNPT .LT. 19) GO TO 100 00063080
00086 PNT = PNT + 2 00063090
00087 VSUB = TOKEN(PNT) / 4096 00063100
00088 SYMPT = MOD (TOKEN(PNT), 4096) + 1 00063110
00089 IF (TOKEN(PNT) .LT. 0 .OR. VSUB .GT. 4) GO TO 200 00063120
00090 CALL NDT41 (SYMTB(1,SYMPT)) 00063130
00091 IF (XRFBT .NE. 0) CALL NDT58 (SYMPT) 00063140
00092 IF (VTYPE .NE. 1) GO TO 200 00063150
00093 IF (VSUB .NE. 0) CALL NDT14 (TMAP(PNT), 530, 1) 00063160
00094 PNT = PNT + 1 00063170
00095 IF (TOKEN(PNT) .NE. 28681) GO TO 200 00063180
00096 GO TO 100 00063190
00097 200 CALL NDT14 (TMAP(PNT), 521, 3) 00063200
00098 GO TO 100 00063210
00099 C***************************************************************** 00063220
00100 C * 00063230
00101 C PROCESS ORDINARY VARIABLE. IF A TABLE NAME IS FOUND, IT * 00063240
00102 C HAS NOT OCCURRED IN THE CORRECT POSITION. RVTYP KEEPS * 00063250
00103 C VTYPE WITHIN SUBCK ARRAY BOUNDS. THE VARIABLE MUST BE * 00063260
00104 C DEFINED, IT MUST BE ALLOWED IN THE PARTICULAR TYPE OF * 00063270
00105 C EQUATION, AND IT MUST BE SUBSCRIPTED CORRECTLY. * 00063280
00106 C * 00063290
00107 C***************************************************************** 00063300
00108 300 IF(SYMPT .EQ. DVSYM .AND. STYPE .LE. 8) 00063310
00109 1 CALL NDT14 (TMAP(PNT), 505, 3) 00063320
00110 CALL NDT41 (SYMTB(1,SYMPT)) 00063330
00111 IF (XRFBT .NE. 0) CALL NDT58 (SYMPT) 00063340
00112 IF (VTYPE .EQ. 1) GO TO 550 00063350
NDT48 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 RVTYP = VTYPE - 1 00063360
00114 IF (DEFBT .EQ. 0) GO TO 400 00063370
00115 350 CHECK = SUBCK(RSTYP,RVTYP) 00063380
00116 IF (CHECK .EQ. 100) GO TO 500 00063390
00117 IF (VSUB .NE. CHECK) CALL NDT14 00063400
00118 1(TMAP(PNT), 530 + CHECK, 1) 00063410
00119 GO TO 100 00063420
00120 400 IF(INTBT .EQ. 0) GO TO 450 00063430
00121 RVTYP = 1 00063440
00122 GO TO 350 00063450
00123 450 CALL NDT14 (TMAP(PNT), 516, 3) 00063460
00124 GO TO 100 00063470
00125 500 CALL NDT14 (TMAP(PNT), 570 + RVTYP, 3) 00063480
00126 GO TO 100 00063490
00127 550 CALL NDT14 (TMAP(PNT), 522, 3) 00063500
00128 GO TO 100 00063510
00129 600 RETURN 00063520
00130 END 00063540
EQUIVALENCED VARIABLES
( SYMPT 1 FUNPT 1 )
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 EQPOS +1724 STYPE +522 VTYPE +337 DEFBT +343
TOKPT +524 OPTNS +12 INTBT +345
SUBPROGRAMS CALLED
MOD. NDT58 NDT14 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
SUBCK 2 FUNPT 1 XRFBT 72 RSTYP 73 CHECK 74
SYMPT 1 PNT 75 RVTYP 76 VSUB 77 DVSYM 100
TEMPORARIES
.A0016 101 .Q0000 102 .Q0001 103
CARD1 12# 18#
CARD2 12# 18#
CHECK 16# 115# 116 117
CRSET 12# 18#
DEF 12# 18#
DEFBT 16# 21# 114
DVSYM 16# 54# 108
EQCHN 12# 18#
EQPOS 16# 21# 49 51
ERROR 12# 18#
FCTN 12# 18#
FUNPT 16# 21# 83 83# 84 85
INTBT 16# 21# 120
LITBL 11# 18#
MOD. 50 54 73 88
NDT14 84 93 97 108 117 123 125 127
NDT41 90 110
NDT48 10#
NDT58 91 111
OBJCD 12# 18#
OPER 12# 18#
OPTNS 16# 21# 50
PNT 16# 51# 63 63# 64 65 66 73 84 86 86# 87 88 89
93 94 94# 95 97 108 117 123 125 127
PTRS 12# 18# 21#
RMAX 11# 18#
RMIN 11# 18#
RSTYP 16# 52# 53# 115
RVTYP 16# 113# 115 121# 125
STYPE 16# 21# 52 53 84 108
SUBCK 16# 37# 115
SUBSC 12# 18#
SYM 12# 18# 21#
SYMPT 16# 21# 73# 88# 90 91 91# 108 110 111 111#
SYMTB 12# 18# 90 90# 110 110#
TITLE 12# 18#
TMAP 12# 18# 21# 84 84# 93 93# 97 97# 108 108# 117 117# 123
123# 125 125# 127 127#
TOKEN 12# 18# 21# 54 65 66 73 87 88 89 95
TOKPT 16# 21# 64
TYPCT 12# 18#
VSUB 16# 65# 66 74 87# 89 93 117
VTYPE 16# 21# 92 112 113
XREF 12# 18#
XRFBT 16# 50# 91 111
100P 63# 66 85 96 98 119 124 126 128
200P 89 92 95 97#
300P 74 108#
350P 115# 122
400P 114 120#
450P 120 123#
500P 116 125#
550P 112 127#
600P 49 64 129#
NDT48 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00063550
00002 C * 00063560
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00063570
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00063580
00005 C * 00063590
00006 C THIS PROGRAM INSURES THAT ONLY A NUMERIC LITERAL * 00063600
00007 C OCCURS ON THE RIGHT SIDE OF AN EQUAL SIGN. * 00063610
00008 C * 00063620
00009 C***************************************************************** 00063630
00010 SUBROUTINE NDT49 00063640
00011 REAL*8 RMIN,RMAX,LITBL(1024) 00063650
00012 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00063660
00013 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00063670
00014 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00063680
00015 3SYMTB(5,512) 00063690
00016 INTEGER EQPOS,TOKPT 00063700
00017 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00063710
00018 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00063720
00019 2SYMTB,LITBL 00063730
00020 EQUIVALENCE (EQPOS,TMAP(3)),(TOKPT,TOKEN(3)) 00063740
00021 C***************************************************************** 00063750
00022 C * 00063760
00023 C THE TOKEN AFTER THE EQUAL SIGN MAY ONLY BE A NUMERIC * 00063770
00024 C LITERAL. FIRST CHECK TO SEE THAT THERE IS AN EQUAL SIGN. * 00063780
00025 C THEN MAKE SURE THAT THERE IS ONE AND ONLY ONE TOKEN * 00063790
00026 C FOLLOWING THE EQUAL SIGN. IF THERE IS ONLY SUCH A SINGLE * 00063800
00027 C TOKEN, MAKE SURE THAT IT REPRESENTS A NUMERIC LITERAL. * 00063810
00028 C * 00063820
00029 C***************************************************************** 00063830
00030 IF (EQPOS .EQ. 0) GO TO 200 00063840
00031 IF (TOKPT .NE. EQPOS + 1) GO TO 100 00063850
00032 IF (TOKEN(TOKPT) .LT. 0) GO TO 200 00063860
00033 100 CALL NDT14 (TMAP(TOKPT), 806, 3) 00063870
00034 200 RETURN 00063880
00035 END 00063900
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 EQPOS +1724 TOKPT +524
SUBPROGRAMS CALLED
NDT14
NDT49 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
TEMPORARIES
.A0016 1 .Q0000 2
CARD1 12# 17#
CARD2 12# 17#
CRSET 12# 17#
DEF 12# 17#
EQCHN 12# 17#
EQPOS 16# 20# 30 31
ERROR 12# 17#
FCTN 12# 17#
LITBL 11# 17#
NDT14 33
NDT49 10#
OBJCD 12# 17#
OPER 12# 17#
PTRS 12# 17#
RMAX 11# 17#
RMIN 11# 17#
SUBSC 12# 17#
SYM 12# 17#
SYMTB 12# 17#
TITLE 12# 17#
TMAP 12# 17# 20# 33 33#
TOKEN 12# 17# 20# 32
TOKPT 16# 20# 31 32 33
TYPCT 12# 17#
XREF 12# 17#
100P 31 33#
200P 30 32 34#
NDT49 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00063910
00002 C * 00063920
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00063930
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00063940
00005 C * 00063950
00006 C***************************************************************** 00063960
00007 SUBROUTINE NDT50 00063970
00008 C***************************************************************** 00063980
00009 C * 00063990
00010 C * 00064000
00011 C DOCUMENTER * 00064010
00012 C * 00064020
00013 C * 00064030
00014 C THIS PROGRAM, CALLED BY THE SOURCE LISTING PROGRAM, * 00064040
00015 C HANDLES THE LISTING OF THE DEFINTIONS OF VARIABLES, * 00064050
00016 C WHEN THE DOCUMENT CONTROL CARD OPTION IS IN EFFECT. * 00064060
00017 C * 00064070
00018 C***************************************************************** 00064080
00019 REAL*8 RMIN,RMAX,LITBL(1024) 00064090
00020 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00064100
00021 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00064110
00022 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00064120
00023 3SYMTB(5,512) 00064130
00024 INTEGER TOKPT,RECNO,PRNTR,DISK,PNTR,TOKE 00064140
00025 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00064150
00026 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00064160
00027 2SYMTB,LITBL 00064170
00028 EQUIVALENCE (TOKPT,TOKEN(3)),(RECNO,SYM(15)),(DISK,PTRS(3)), 00064180
00029 1(PRNTR,PTRS(2)) 00064190
00030 C***************************************************************** 00064200
00031 C * 00064210
00032 C GO THROUGH THE TOKEN ARRAY, TOKEN BY TOKEN, FIRST CHECKING * 00064220
00033 C FOR A VARIABLE. * 00064230
00034 C * 00064240
00035 C***************************************************************** 00064250
00036 CALL NDT57(1) 00064260
00037 WRITE (PRNTR,300) 00064270
00038 DO 100 TOKE = 4, TOKPT 00064280
00039 IF (TOKEN(TOKE) .LE. 0 .OR. TOKEN(TOKE) .GT. 20479) 00064290
00040 1 GO TO 100 00064300
00041 C***************************************************************** 00064310
00042 C * 00064320
00043 C IF IT IS A VARIABLE, UNPACK ITS SYMBOL TABLE ENTRY. * 00064330
00044 C CHECK FOR THE EXISTENCE OF A RECORD. * 00064340
00045 C * 00064350
00046 C***************************************************************** 00064360
00047 PNTR = MOD(TOKEN(TOKE),4096) + 1 00064370
00048 CALL NDT41(SYMTB(1,PNTR)) 00064380
00049 IF (RECNO .EQ. 0) GO TO 100 00064390
00050 C***************************************************************** 00064400
00051 C * 00064410
00052 C READ IN THE DEF ARRAY FROM DISK, AND THEN WRITE IT OUT * 00064420
00053 C TO THE PRINTER. * 00064430
00054 C * 00064440
00055 C***************************************************************** 00064450
00056 READ (DISK'RECNO+6) DEF 00064460
NDT50 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 CALL NDT57(1) 00064470
00058 WRITE (PRNTR,200) DEF 00064480
00059 C***************************************************************** 00064490
00060 C * 00064500
00061 C LOOK AT NEXT TOKEN. * 00064510
00062 C * 00064520
00063 C***************************************************************** 00064530
00064 100 CONTINUE 00064540
00065 CALL NDT57(1) 00064550
00066 WRITE (PRNTR,300) 00064560
00067 200 FORMAT (15X,80A1) 00064570
00068 300 FORMAT(1X) 00064580
00069 RETURN 00064590
00070 END 00064610
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 TOKPT +524 RECNO +347 DISK +6 PRNTR +5
SUBPROGRAMS CALLED
MOD. NDT57 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
TOKE 1 PNTR 2 .S0000 3
TEMPORARIES
.A0016 7 .Q0000 10
CARD1 20# 25#
CARD2 20# 25#
CRSET 20# 25#
DEF 20# 25# 56# 58
DISK 24# 28# 56
EQCHN 20# 25#
ERROR 20# 25#
FCTN 20# 25#
LITBL 19# 25#
MOD. 47
NDT41 48
NDT50 7#
NDT57 36 57 65
OBJCD 20# 25#
OPER 20# 25#
PNTR 24# 47# 48
PRNTR 24# 28# 37 58 66
PTRS 20# 25# 28#
RECNO 24# 28# 49 56
RMAX 19# 25#
RMIN 19# 25#
SUBSC 20# 25#
SYM 20# 25# 28#
SYMTB 20# 25# 48 48#
TITLE 20# 25#
TMAP 20# 25#
TOKE 24# 38# 39 47
TOKEN 20# 25# 28# 39 47
TOKPT 24# 28# 38
TYPCT 20# 25#
XREF 20# 25#
100P 38 39 49 64#
200P 58 67#
300P 37 66 68#
NDT50 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00064620
00002 C * 00064630
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00064640
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00064650
00005 C * 00064660
00006 C THIS PROGRAM CHECKS THE FORMAT OF LEVEL EQUATIONS. * 00064670
00007 C * 00064680
00008 C***************************************************************** 00064690
00009 SUBROUTINE NDT51 00064700
00010 REAL*8 RMIN,RMAX,LITBL(1024) 00064710
00011 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00064720
00012 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00064730
00013 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00064740
00014 3SYMTB(5,512) 00064750
00015 INTEGER EQPOS,TOKPT,PNT,PNEST,FNUM,OPTYP,FNOCC,EQNCD,TKNTP 00064760
00016 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00064770
00017 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00064780
00018 2SYMTB,LITBL 00064790
00019 EQUIVALENCE (TOKPT,TOKEN(3)),(FNUM,OPTYP), 00064800
00020 1(EQNCD,ERROR(1)),(EQPOS,TMAP(3)) 00064810
00021 C***************************************************************** 00064820
00022 C * 00064830
00023 C THE LEVEL EQUATION MUST CONFORM TO THE FORMAT: * 00064840
00024 C LEVEL=INTGRL(SUM OF RATES) * 00064850
00025 C CHECK FOR OTHER CRITICAL ERRORS BEFORE CONTINUING. * 00064860
00026 C * 00064870
00027 C***************************************************************** 00064880
00028 IF (EQNCD .GE. 3) GO TO 700 00064890
00029 C***************************************************************** 00064900
00030 C * 00064910
00031 C INITIALIZE PNT, THE POINTER TO THE NEXT TOKEN. PNEST * 00064920
00032 C CHECKS PAREN NESTING TO DETERMINE END OF TOKEN STRING. * 00064930
00033 C FNOCC DENOTES THAT AN INTGRL FUNCTION HAS OCCURRED. * 00064940
00034 C * 00064950
00035 C***************************************************************** 00064960
00036 PNT = EQPOS 00064970
00037 PNEST = 0 00064980
00038 FNOCC = 0 00064990
00039 C***************************************************************** 00065000
00040 C * 00065010
00041 C INCREMENT THE TOKEN POINTER TO THE NEXT TOKEN. SEPARATE * 00065020
00042 C THE TOKEN TYPE AND ITS ASSOCIATED POINTER. CHECK FOR FUNCTI* 00065030
00043 C * 00065040
00044 C***************************************************************** 00065050
00045 100 PNT = PNT + 1 00065060
00046 IF (PNT .GT. TOKPT) GO TO 600 00065070
00047 TKNTP = TOKEN(PNT) / 4096 00065080
00048 FNUM = MOD (TOKEN(PNT), 4096) 00065090
00049 IF (TKNTP .NE. 5) GO TO 250 00065100
00050 C***************************************************************** 00065110
00051 C * 00065120
00052 C A FUNCTION HAS BEEN FOUND IN THE TOKEN STRING. CHECK TO * 00065130
00053 C SEE IF IT IS AN INTEGRATION FUNCTION. IF IT IS INTGRL, * 00065140
00054 C MAKE SURE IT FOLLOWS DIRECTLY AFTER EQUAL SIGN. IF NOT * 00065150
00055 C INTGRL, FLAG AS AN INVALID FUNCTION. * 00065160
00056 C * 00065170
NDT51 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C***************************************************************** 00065180
00058 IF (FNUM .NE. 6) GO TO 200 00065190
00059 IF (PNT .NE. EQPOS + 1) CALL NDT14 (TMAP(PNT), 903, 3) 00065200
00060 FNOCC = 1 00065210
00061 GO TO 100 00065220
00062 200 CALL NDT14 (TMAP(PNT), 905, 3) 00065230
00063 GO TO 100 00065240
00064 C***************************************************************** 00065250
00065 C * 00065260
00066 C FLAG ANY NUMERIC LITERALS WHICH OCCUR. * 00065270
00067 C * 00065280
00068 C***************************************************************** 00065290
00069 250 IF (TOKEN(PNT) .GE. 0) GO TO 300 00065300
00070 CALL NDT14 (TMAP(PNT), 904, 3) 00065310
00071 GO TO 100 00065320
00072 C***************************************************************** 00065330
00073 C * 00065340
00074 C IF TOKEN INDICATES A VARIABLE, OBTAIN NEXT TOKEN. * 00065350
00075 C OTHERWISE, AN OPERATOR TOKEN IS PRESENT. IF INTGRL * 00065360
00076 C HAS NOT OCCURRED, TAKE NO ACTION. WITHIN AN INTGRL * 00065370
00077 C THE ONLY VALID OPERATORS ARE '+' AND '-'. PARENS * 00065380
00078 C ARE PERMITTED FOR GROUPING AND ARE USED TO DETERMINE * 00065390
00079 C THE END OF THE FUNCTION GROUP. * 00065400
00080 C * 00065410
00081 C***************************************************************** 00065420
00082 300 IF (TKNTP .LT. 7) GO TO 100 00065430
00083 IF (FNOCC .EQ. 0) GO TO 100 00065440
00084 GO TO (100,100,100,350,350,100,400,500,100,350), OPTYP 00065450
00085 C***************************************************************** 00065460
00086 C * 00065470
00087 C FLAG '*', '/', '**' AS INVALID OPERATIONS. * 00065480
00088 C * 00065490
00089 C***************************************************************** 00065500
00090 350 CALL NDT14 (TMAP(PNT), 901, 3) 00065510
00091 GO TO 100 00065520
00092 C***************************************************************** 00065530
00093 C * 00065540
00094 C PARENS HAVE OCCURRED. INCREMENT OR DECREMENT PNEST. * 00065550
00095 C * 00065560
00096 C***************************************************************** 00065570
00097 400 PNEST = PNEST + 1 00065580
00098 GO TO 100 00065590
00099 500 PNEST = PNEST - 1 00065600
00100 IF (PNEST .LE. 0) GO TO 550 00065610
00101 GO TO 100 00065620
00102 C***************************************************************** 00065630
00103 C * 00065640
00104 C CHECK FOR ADDITIONAL TOKENS AFTER END OF FUNCTION GROUP. * 00065650
00105 C THEN MAKE SURE AN INTEGRATION FUNCTION HAS OCCURRED. * 00065660
00106 C * 00065670
00107 C***************************************************************** 00065680
00108 550 IF (PNT .LT. TOKPT) CALL NDT14 (TMAP(PNT + 1), 902, 3) 00065690
00109 600 IF (FNOCC .EQ. 0) CALL NDT14 (TMAP(EQPOS + 1), 903, 3) 00065700
00110 700 RETURN 00065710
00111 END 00065730
NDT51 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
EQUIVALENCED VARIABLES
( FNUM 1 OPTYP 1 )
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 TOKPT +524 EQNCD +1102 EQPOS +1724
SUBPROGRAMS CALLED
MOD. NDT14
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
OPTYP 1 TKNTP 2 FNUM 1 PNT 3 FNOCC 4
PNEST 5
TEMPORARIES
.A0016 6 .Q0000 7
CARD1 11# 16#
CARD2 11# 16#
CRSET 11# 16#
DEF 11# 16#
EQCHN 11# 16#
EQNCD 15# 19# 28
EQPOS 15# 19# 36 59 109
ERROR 11# 16# 19#
FCTN 11# 16#
FNOCC 15# 38# 60# 83 109
FNUM 15# 19# 48# 58
LITBL 10# 16#
MOD. 48
NDT14 59 62 70 90 108 109
NDT51 9#
OBJCD 11# 16#
OPER 11# 16#
OPTYP 15# 19# 84
PNEST 15# 37# 97 97# 99 99# 100
PNT 15# 36# 45 45# 46 47 48 59 62 69 70 90 108
PTRS 11# 16#
RMAX 10# 16#
RMIN 10# 16#
SUBSC 11# 16#
SYM 11# 16#
SYMTB 11# 16#
TITLE 11# 16#
TKNTP 15# 47# 49 82
TMAP 11# 16# 19# 59 59# 62 62# 70 70# 90 90# 108 108# 109
109#
TOKEN 11# 16# 19# 47 48 69
TOKPT 15# 19# 46 108
TYPCT 11# 16#
XREF 11# 16#
100P 45# 61 63 71 82 83 84 91 98 101
200P 58 62#
250P 49 69#
300P 69 82#
350P 84 90#
400P 84 97#
500P 84 99#
550P 100 108#
600P 46 109#
700P 28 110#
NDT51 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00065740
00002 C * 00065750
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00065760
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00065770
00005 C * 00065780
00006 C***************************************************************** 00065790
00007 SUBROUTINE NDT52 00065800
00008 C***************************************************************** 00065810
00009 C * 00065820
00010 C OUTPUT CONTEXT ANALYZER * 00065830
00011 C * 00065840
00012 C * 00065850
00013 C THIS PROGRAM CHECKS AN OUTPUT REQUEST FOR CONTEXT ERRORS. * 00065860
00014 C * 00065870
00015 C***************************************************************** 00065880
00016 REAL*8 RMIN,RMAX,LITBL(1024) 00065890
00017 REAL*8 LOW(11),HIGH(11) 00065900
00018 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00065910
00019 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00065920
00020 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00065930
00021 3SYMTB(5,512) 00065940
00022 INTEGER OUTPT(240),VARCT,TYPE,RUNNO,FLAG(11),IVPLT, 00065950
00023 1CHAR(10),RUN(11),CFLAG,OUT1(80),OUT2(80),OUT3(80) 00065960
00024 INTEGER RUNCT,PNTR,VTYPE,NOTBT,XCHAR,NOTE(40) 00065970
00025 INTEGER DISK,OCBPT,PGMCT,TOKPT,VNUM(11) 00065980
00026 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00065990
00027 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00066000
00028 2SYMTB,LITBL 00066010
00029 EQUIVALENCE (OUTPT(1),DEF(1),OUT1(1),VARCT),(OUTPT(2),TYPE), 00066020
00030 1(OUTPT(3),RUNNO),(OUTPT(103),LOW(1)),(OUTPT(125),HIGH(1)), 00066030
00031 2(OUTPT(147),FLAG(1)),(OUTPT(179),RUN(1)),(OUTPT(200),CFLAG), 00066040
00032 3(OUTPT(190),CHAR(1)),(VNUM(1),OUTPT(92)),(IVPLT,OUTPT(158)), 00066050
00033 4(OUT2(1),XREF(1)),(OUT3(1),TMAP(1)) 00066060
00034 EQUIVALENCE (RUNCT,PTRS(14)),(VTYPE,SYM(7)), 00066070
00035 1(NOTBT,OBJCD(1)),(NOTE(1),OBJCD(2)),(DISK,PTRS(3)), 00066080
00036 2(PGMCT,PTRS(22)),(TOKPT,TOKEN(3)),(OCBPT,PTRS(43)) 00066090
00037 C***************************************************************** 00066100
00038 C * 00066110
00039 C FIRST, THE OUTPUT BUFFER MUST BE READ IN FROM DISK. DUE * 00066120
00040 C TO THE EQUIVALENCE STRUCTURE, THE BUFFER IS READ INTO * 00066130
00041 C DEF, XREF, AND TMAP. * 00066140
00042 C * 00066150
00043 C***************************************************************** 00066160
00044 READ (DISK'PGMCT+6) OUT1 00066170
00045 READ (DISK'PGMCT+7) OUT2 00066180
00046 READ (DISK'PGMCT+8) OUT3 00066190
00047 C***************************************************************** 00066200
00048 C * 00066210
00049 C CHECK FOR AN OUTPUT REQUEST WITH A RUN NUMBER GREATER * 00066220
00050 C THAN THE NUMBER OF RUNS IN THE MODEL. * 00066230
00051 C * 00066240
00052 C***************************************************************** 00066250
00053 IF (RUNNO .LE. RUNCT) GO TO 100 00066260
00054 CALL NDT14(0,728,3) 00066270
00055 GO TO 300 00066280
00056 C***************************************************************** 00066290
NDT52 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C * 00066300
00058 C CALL THE AUTOPLOT ROUTINE IF THE AUTOPLOT OPTION IS * 00066310
00059 C REQUESTED. * 00066320
00060 C * 00066330
00061 C***************************************************************** 00066340
00062 100 IF (RUNNO .EQ. 0) CALL NDT53 00066350
00063 C***************************************************************** 00066360
00064 C * 00066370
00065 C CALL THE VARIABLE ALIGNMENT ROUTINE TO PUT IN RUN * 00066380
00066 C NUMBERS IF THEY'RE NEEDED, AND TO CENTER THE VARIABLE * 00066390
00067 C NAMES FOR A PRINT. * 00066400
00068 C * 00066410
00069 C***************************************************************** 00066420
00070 CALL NDT54 00066430
00071 C***************************************************************** 00066440
00072 C * 00066450
00073 C CHECK FOR AN ATTEMPT TO USE A CONSTANT AS THE * 00066460
00074 C INDEPENDENT VARIABLE. THE INFORMATION MUST BE UNPACKED * 00066470
00075 C FROM THE SYMBOL TABLE. * 00066480
00076 C * 00066490
00077 C***************************************************************** 00066500
00078 IF (IVPLT .EQ. 0) GO TO 150 00066510
00079 PNTR = MOD(TOKEN(TOKPT),4096) + 1 00066520
00080 CALL NDT41(SYMTB(1,PNTR)) 00066530
00081 IF (VTYPE .EQ. 2) CALL NDT14(0,727,3) 00066540
00082 C***************************************************************** 00066550
00083 C * 00066560
00084 C IF THERE IS SUBTITLE INFORMATION OUT THERE, PULL IT * 00066570
00085 C IN, AND SET CFLAG. * 00066580
00086 C * 00066590
00087 C***************************************************************** 00066600
00088 150 IF (NOTBT .EQ. 0) GO TO 300 00066610
00089 CFLAG = 1 00066620
00090 DO 200 XCHAR = 1, 40 00066630
00091 200 OUTPT(200 + XCHAR) = NOTE(XCHAR) 00066640
00092 C***************************************************************** 00066650
00093 C * 00066660
00094 C WRITE THE OUTPT ARRAY TO DISK, THEN RETURN. * 00066670
00095 C * 00066680
00096 C***************************************************************** 00066690
00097 300 WRITE (DISK'OCBPT+1) OUT1 00066700
00098 WRITE (DISK'OCBPT+2) OUT2 00066710
00099 WRITE (DISK'OCBPT+3) OUT3 00066720
00100 OCBPT = OCBPT + 3 00066730
00101 RETURN 00066740
00102 END 00066760
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
NDT52 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OUTPT +1462 OUT1 +1462 VARCT +1462 OUT2 +1602
OUT3 +1722 RUNCT +21 VTYPE +337 NOTBT +1222 NOTE +1223
DISK +6 PGMCT +31 TOKPT +524 OCBPT +56 TYPE +1463
RUNNO +1464 LOW +1630 HIGH +1656 FLAG +1704 RUN +1744
CFLAG +1771 CHAR +1757 VNUM +1615 IVPLT +1717
SUBPROGRAMS CALLED
MOD. NDT54 NDT53 NDT14 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
XCHAR 1 PNTR 2 .S0000 3
TEMPORARIES
.A0016 4 .Q0000 5
CARD1 18# 26#
CARD2 18# 26#
CFLAG 22# 29# 89#
CHAR 22# 29#
CRSET 18# 26#
DEF 18# 26# 29#
DISK 25# 34# 44 45 46 97 98 99
EQCHN 18# 26#
ERROR 18# 26#
FCTN 18# 26#
FLAG 22# 29#
HIGH 17# 29#
IVPLT 22# 29# 78
LITBL 16# 26#
LOW 17# 29#
MOD. 79
NDT14 54 81
NDT41 80
NDT52 7#
NDT53 62
NDT54 70
NOTBT 24# 34# 88
NOTE 24# 34# 91
OBJCD 18# 26# 34#
OCBPT 25# 34# 97 98 99 100 100#
OPER 18# 26#
OUT1 22# 29# 44# 97
OUT2 22# 29# 45# 98
OUT3 22# 29# 46# 99
OUTPT 22# 29# 91#
PGMCT 25# 34# 44 45 46
PNTR 24# 79# 80
PTRS 18# 26# 34#
RMAX 16# 26#
RMIN 16# 26#
RUN 22# 29#
RUNCT 24# 34# 53
RUNNO 22# 29# 53 62
SUBSC 18# 26#
SYM 18# 26# 34#
SYMTB 18# 26# 80 80#
TITLE 18# 26#
TMAP 18# 26# 29#
TOKEN 18# 26# 34# 79
TOKPT 25# 34# 79
TYPCT 18# 26#
TYPE 22# 29#
VARCT 22# 29#
VNUM 25# 29#
VTYPE 24# 34# 81
XCHAR 24# 90# 91
XREF 18# 26# 29#
100P 53 62#
150P 78 88#
200P 90 91#
300P 55 88 97#
NDT52 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00066770
00002 C * 00066780
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00066790
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00066800
00005 C * 00066810
00006 C***************************************************************** 00066820
00007 SUBROUTINE NDT53 00066830
00008 C***************************************************************** 00066840
00009 C * 00066850
00010 C AUTOPLOT PROCESSOR * 00066860
00011 C * 00066870
00012 C * 00066880
00013 C IF THE USER SPECIFIED AN OUTPUT CARD WITH A VARIABLE * 00066890
00014 C HAVING A STAR '*' AS A RUN NUMBER, "VAR.*", NDTRAN WILL * 00066900
00015 C AUTOMATICALLY EXPAND THAT STATEMENT TO OUTPUT A PLOT * 00066910
00016 C OR PRINT COMPARING THAT VARIABLE ACROSS EVERY RUN. * 00066920
00017 C * 00066930
00018 C***************************************************************** 00066940
00019 REAL*8 RMIN,RMAX,LITBL(1024) 00066950
00020 REAL*8 LOW(11),HIGH(11) 00066960
00021 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00066970
00022 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00066980
00023 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00066990
00024 3SYMTB(5,512) 00067000
00025 INTEGER OUTPT(240),VARCT,TYPE,RUNNO,FLAG(11), 00067010
00026 1CHAR(10),RUN(11),VNUM(11),VNAM(8,11),CFLAG 00067020
00027 INTEGER RUNCT,CLNUM,XCHAR,OPTNS,VMAX 00067030
00028 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00067040
00029 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00067050
00030 2SYMTB,LITBL 00067060
00031 EQUIVALENCE (OUTPT(1),DEF(1),VARCT),(OUTPT(2),TYPE), 00067070
00032 1(OUTPT(3),RUNNO),(OUTPT(103),LOW(1)),(OUTPT(125),HIGH(1)), 00067080
00033 2(OUTPT(147),FLAG(1)),(OUTPT(179),RUN(1)),(OUTPT(200),CFLAG), 00067090
00034 3(OUTPT(190),CHAR(1)),(OUTPT(92),VNUM(1)) 00067100
00035 EQUIVALENCE (RUNCT,PTRS(14)),(OUTPT(4),VNAM(1,1)), 00067110
00036 1(OPTNS,PTRS(7)) 00067120
00037 C***************************************************************** 00067130
00038 C * 00067140
00039 C SET RUNNO TO THE NUMBER OF RUNS IN THIS MODEL. * 00067150
00040 C * 00067160
00041 C THE NARROW OPTION RESTRICTS THE NUMBER OF VARIABLES. * 00067170
00042 C * 00067180
00043 C***************************************************************** 00067190
00044 RUNNO = RUNCT 00067200
00045 VMAX = 10 - MOD(OPTNS/8,2)*(TYPE-8) 00067210
00046 IF (RUNNO .LE. VMAX) GO TO 100 00067220
00047 RUNNO = VMAX 00067230
00048 CALL NDT14(0, 726, 1) 00067240
00049 C***************************************************************** 00067250
00050 C * 00067260
00051 C CREATE A VARIABLE ENTRY IN THE OUTPT BUFFER FOR EACH * 00067270
00052 C RUN, SETTING VNAM, VNUM, RUN, AND FLAG. * 00067280
00053 C * 00067290
00054 C***************************************************************** 00067300
00055 100 VARCT = RUNNO + 1 00067310
00056 RUN(2) = 1 00067320
NDT53 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 IF (RUNNO .EQ. 1) GO TO 400 00067330
00058 DO 300 CLNUM = 2, VARCT 00067340
00059 DO 200 XCHAR = 1, 8 00067350
00060 200 VNAM(XCHAR,CLNUM) = VNAM(XCHAR,2) 00067360
00061 VNUM(CLNUM) = VNUM(2) 00067370
00062 RUN(CLNUM) = CLNUM - 1 00067380
00063 300 FLAG(CLNUM) = 23 00067390
00064 FLAG(1) = 13 00067400
00065 C***************************************************************** 00067410
00066 C * 00067420
00067 C ASSIGN THE PLOT CHARACTERS BY CALLING NDT34, AND SET * 00067430
00068 C VARCT. * 00067440
00069 C * 00067450
00070 C***************************************************************** 00067460
00071 400 CALL NDT34 00067470
00072 RETURN 00067480
00073 END 00067500
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OUTPT +1462 VARCT +1462 RUNCT +21 OPTNS +12
TYPE +1463 RUNNO +1464 LOW +1630 HIGH +1656 FLAG +1704
RUN +1744 CFLAG +1771 CHAR +1757 VNUM +1615 VNAM +1465
SUBPROGRAMS CALLED
MOD. NDT34 NDT14
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
VMAX 1 XCHAR 2 CLNUM 3 .R0000 4 .S0001 5
.S0000 6
TEMPORARIES
.A0016 7
CARD1 21# 28#
CARD2 21# 28#
CFLAG 25# 31#
CHAR 25# 31#
CLNUM 27# 58# 60 61 62 63
CRSET 21# 28#
DEF 21# 28# 31#
EQCHN 21# 28#
ERROR 21# 28#
FCTN 21# 28#
FLAG 25# 31# 63# 64#
HIGH 20# 31#
LITBL 19# 28#
LOW 20# 31#
MOD. 45
NDT14 48
NDT34 71
NDT53 7#
OBJCD 21# 28#
OPER 21# 28#
OPTNS 27# 35# 45
OUTPT 25# 31# 35#
PTRS 21# 28# 35#
RMAX 19# 28#
RMIN 19# 28#
RUN 25# 31# 56# 62#
RUNCT 27# 35# 44
RUNNO 25# 31# 44# 46 47# 55 57
SUBSC 21# 28#
SYM 21# 28#
SYMTB 21# 28#
TITLE 21# 28#
TMAP 21# 28#
TOKEN 21# 28#
TYPCT 21# 28#
TYPE 25# 31# 45
VARCT 25# 31# 55# 58
VMAX 27# 45# 46 47
VNAM 25# 35# 60# 60
VNUM 25# 31# 61# 61
XCHAR 27# 59# 60
XREF 21# 28#
100P 46 55#
200P 59 60#
300P 58 63#
400P 57 71#
NDT53 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00067510
00002 C * 00067520
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00067530
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00067540
00005 C * 00067550
00006 C***************************************************************** 00067560
00007 SUBROUTINE NDT54 00067570
00008 C***************************************************************** 00067580
00009 C * 00067590
00010 C VARIABLE ALIGNMENT * 00067600
00011 C * 00067610
00012 C * 00067620
00013 C * 00067630
00014 C THIS PROGRAM, PART OF THE OUTPUT CONTEXT PHASE, WILL * 00067640
00015 C PREPARE THE VARIABLE NAME FIELD FOR OUTPUT. IT WILL * 00067650
00016 C INSERT THE RUN NUMBER IF THERE IS MORE THAN ONE RUN, * 00067660
00017 C AND WILL CENTER THE VARIABLES FOR A PRINT AND THE * 00067670
00018 C INDEPENDENT VARIABLE ON A PLOT. * 00067680
00019 C * 00067690
00020 C***************************************************************** 00067700
00021 REAL*8 RMIN,RMAX,LITBL(1024) 00067710
00022 REAL*8 LOW(11),HIGH(11) 00067720
00023 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00067730
00024 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00067740
00025 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00067750
00026 3SYMTB(5,512) 00067760
00027 INTEGER OUTPT(240),VARCT,TYPE,RUNNO,FLAG(11), 00067770
00028 1CHAR(10),RUN(11),VNUM(11),VNAM(8,11),CFLAG 00067780
00029 INTEGER CLNUM,XCHAR,DOT,BLANK,CHARS,MOVES,XPOS,XPOS1 00067790
00030 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00067800
00031 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00067810
00032 2SYMTB,LITBL 00067820
00033 EQUIVALENCE (OUTPT(1),DEF(1),VARCT),(OUTPT(2),TYPE), 00067830
00034 1(OUTPT(3),RUNNO),(OUTPT(103),LOW(1)),(OUTPT(125),HIGH(1)), 00067840
00035 2(OUTPT(147),FLAG(1)),(OUTPT(179),RUN(1)),(OUTPT(200),CFLAG), 00067850
00036 3(OUTPT(190),CHAR(1)),(OUTPT(92),VNUM(1)) 00067860
00037 EQUIVALENCE (OUTPT(4),VNAM(1,1)),(DOT,OPER(1)), 00067870
00038 1(BLANK,CRSET(1)) 00067880
00039 C***************************************************************** 00067890
00040 C * 00067900
00041 C THE FIRST VARIABLE PROCESSED IS THE INDEPENDENT VARIABLE. * 00067910
00042 C * 00067920
00043 C***************************************************************** 00067930
00044 DO 800 CLNUM = 1, VARCT 00067940
00045 C***************************************************************** 00067950
00046 C * 00067960
00047 C EXTEND THE VARIABLE NAME LENGTH FROM 6 TO 8. * 00067970
00048 C * 00067980
00049 C***************************************************************** 00067990
00050 VNAM(7,CLNUM) = BLANK 00068000
00051 VNAM(8,CLNUM) = BLANK 00068010
00052 C***************************************************************** 00068020
00053 C * 00068030
00054 C LOCATE THE END OF THE VARIABLE NAME BY FINDING THE FIRST * 00068040
00055 C BLANK. * 00068050
00056 C * 00068060
NDT54 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C***************************************************************** 00068070
00058 DO 200 XCHAR = 1, 8 00068080
00059 IF (VNAM(XCHAR,CLNUM) .EQ. BLANK) GO TO 300 00068090
00060 200 CONTINUE 00068100
00061 C***************************************************************** 00068110
00062 C * 00068120
00063 C IF THERE IS MORE THAN ONE RUN, INSERT THE RUN NUMBER. * 00068130
00064 C * 00068140
00065 C***************************************************************** 00068150
00066 300 IF (RUNNO .EQ. 1 .OR. VNUM(CLNUM) .EQ. 12)GO TO 400 00068160
00067 VNAM(XCHAR,CLNUM) = DOT 00068170
00068 XPOS = RUN(CLNUM) + 30 00068180
00069 VNAM(XCHAR+1,CLNUM) = CRSET(XPOS) 00068190
00070 XCHAR = XCHAR + 2 00068200
00071 C***************************************************************** 00068210
00072 C * 00068220
00073 C IF A PRINT VARIABLE OR THE PLOT'S INDEPENDENT VARIABLE, * 00068230
00074 C CENTER THE VARIABLE NAME FIELD. * 00068240
00075 C * 00068250
00076 C***************************************************************** 00068260
00077 400 IF (TYPE .EQ. 13 .AND. CLNUM .GT. 1) GO TO 800 00068270
00078 MOVES = 4 - XCHAR/2 00068280
00079 IF (MOVES .EQ. 0) GO TO 800 00068290
00080 CHARS = XCHAR - 1 00068300
00081 DO 500 XCHAR = 1, CHARS 00068310
00082 XPOS = CHARS - XCHAR + 1 00068320
00083 XPOS1 = XPOS + MOVES 00068330
00084 500 VNAM(XPOS1,CLNUM) = VNAM(XPOS,CLNUM) 00068340
00085 DO 600 XCHAR = 1, MOVES 00068350
00086 600 VNAM(XCHAR,CLNUM) = BLANK 00068360
00087 800 CONTINUE 00068370
00088 RETURN 00068380
00089 END 00068400
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OUTPT +1462 VARCT +1462 DOT +320 BLANK +251
TYPE +1463 RUNNO +1464 LOW +1630 HIGH +1656 FLAG +1704
RUN +1744 CFLAG +1771 CHAR +1757 VNUM +1615 VNAM +1465
SUBPROGRAMS CALLED
NDT54 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
XCHAR 1 CLNUM 2 XPOS1 3 .R0000 4 XPOS 5
.S0003 6 .S0002 7 .S0001 10 .S0000 11 CHARS 12
MOVES 13
TEMPORARIES
.A0016 14
BLANK 29# 37# 50 51 59 86
CARD1 23# 30#
CARD2 23# 30#
CFLAG 27# 33#
CHAR 27# 33#
CHARS 29# 80# 81 82
CLNUM 29# 44# 50 51 59 66 67 68 69 77 84 86
CRSET 23# 30# 37# 69
DEF 23# 30# 33#
DOT 29# 37# 67
EQCHN 23# 30#
ERROR 23# 30#
FCTN 23# 30#
FLAG 27# 33#
HIGH 22# 33#
LITBL 21# 30#
LOW 22# 33#
MOVES 29# 78# 79 83 85
NDT54 7#
OBJCD 23# 30#
OPER 23# 30# 37#
OUTPT 27# 33# 37#
PTRS 23# 30#
RMAX 21# 30#
RMIN 21# 30#
RUN 27# 33# 68
RUNNO 27# 33# 66
SUBSC 23# 30#
SYM 23# 30#
SYMTB 23# 30#
TITLE 23# 30#
TMAP 23# 30#
TOKEN 23# 30#
TYPCT 23# 30#
TYPE 27# 33# 77
VARCT 27# 33# 44
VNAM 27# 37# 50# 51# 59 67# 69# 84# 84 86#
VNUM 27# 33# 66
XCHAR 29# 58# 59 67 69 70 70# 78 80 81# 82 85# 86
XPOS 29# 68# 69 82# 83 84
XPOS1 29# 83# 84
XREF 23# 30#
200P 58 60#
300P 59 66#
400P 66 77#
500P 81 84#
600P 85 86#
800P 44 77 79 87#
NDT54 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00068410
00002 C * 00068420
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00068430
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00068440
00005 C * 00068450
00006 C***************************************************************** 00068460
00007 SUBROUTINE NDT55 00068470
00008 C***************************************************************** 00068480
00009 C * 00068490
00010 C * 00068500
00011 C NOTE CARD PROCESSOR * 00068510
00012 C * 00068520
00013 C * 00068530
00014 C THIS PROGRAM, CALLED BY THE CONTEXT ANALYSIS ROUTINE, * 00068540
00015 C SETS UP THE NOTE INFORMATION FROM A NOTE CARD FOR * 00068550
00016 C POSSIBLE USE ON AN OUTPUT CARD AS A SUBTITLE. * 00068560
00017 C * 00068570
00018 C***************************************************************** 00068580
00019 REAL*8 RMIN,RMAX,LITBL(1024) 00068590
00020 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00068600
00021 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00068610
00022 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00068620
00023 3SYMTB(5,512) 00068630
00024 INTEGER NOTBT,NOTE(40),BLANK,XCHAR,XCARD,XNOTE,LNOTE 00068640
00025 EQUIVALENCE (NOTBT,OBJCD(1)),(NOTE(1),OBJCD(2)), 00068650
00026 1(BLANK,CRSET(1)) 00068660
00027 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00068670
00028 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00068680
00029 2SYMTB,LITBL 00068690
00030 C***************************************************************** 00068700
00031 C * 00068710
00032 C CHECK FOR A BLANK CARD. IF IT IS, RETURN. * 00068720
00033 C * 00068730
00034 C***************************************************************** 00068740
00035 DO 100 XCHAR = 6, 72 00068750
00036 IF (CARD1(XCHAR) .NE. BLANK) GO TO 200 00068760
00037 100 CONTINUE 00068770
00038 GO TO 400 00068780
00039 C***************************************************************** 00068790
00040 C * 00068800
00041 C SET THE NOTE BIT, AND CALCULATE THE LAST POSITION TO BE * 00068810
00042 C READ ONTO THE NOTE CARD. * 00068820
00043 C * 00068830
00044 C***************************************************************** 00068840
00045 200 NOTBT = 1 00068850
00046 LNOTE = 73 - XCHAR 00068860
00047 IF (LNOTE .GT. 40) LNOTE = 40 00068870
00048 C***************************************************************** 00068880
00049 C * 00068890
00050 C PUT THE INFORMATION FROM CARD1 INTO THE NOTE ARRAY. * 00068900
00051 C * 00068910
00052 C***************************************************************** 00068920
00053 DO 300 XNOTE = 1, LNOTE 00068930
00054 XCARD = XNOTE + XCHAR - 1 00068940
00055 300 NOTE(XNOTE) = CARD1(XCARD) 00068950
00056 C***************************************************************** 00068960
NDT55 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C * 00068970
00058 C RETURN SECTION * 00068980
00059 C * 00068990
00060 C***************************************************************** 00069000
00061 400 RETURN 00069010
00062 END 00069030
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 NOTBT +1222 NOTE +1223 BLANK +251
SUBPROGRAMS CALLED
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
XCHAR 1 XCARD 2 .S0001 3 .S0000 4 XNOTE 5
LNOTE 6 .O0000 7
TEMPORARIES
.A0016 10
BLANK 24# 25# 36
CARD1 20# 27# 36 55
CARD2 20# 27#
CRSET 20# 25# 27#
DEF 20# 27#
EQCHN 20# 27#
ERROR 20# 27#
FCTN 20# 27#
LITBL 19# 27#
LNOTE 24# 46# 47 47# 53
NDT55 7#
NOTBT 24# 25# 45#
NOTE 24# 25# 55#
OBJCD 20# 25# 27#
OPER 20# 27#
PTRS 20# 27#
RMAX 19# 27#
RMIN 19# 27#
SUBSC 20# 27#
SYM 20# 27#
SYMTB 20# 27#
TITLE 20# 27#
TMAP 20# 27#
TOKEN 20# 27#
TYPCT 20# 27#
XCARD 24# 54# 55
XCHAR 24# 35# 36 46 54
XNOTE 24# 53# 54 55
XREF 20# 27#
100P 35 37#
200P 36 45#
300P 53 55#
400P 38 61#
NDT55 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00069040
00002 C * 00069050
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00069060
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00069070
00005 C * 00069080
00006 C***************************************************************** 00069090
00007 SUBROUTINE NDT56 00069100
00008 C***************************************************************** 00069110
00009 C * 00069120
00010 C * 00069130
00011 C SOURCE/DIAGNOSTIC LISTINGS * 00069140
00012 C * 00069150
00013 C THIS PROGRAM LISTS A SOURCE STATEMENT AND ANY ERROR * 00069160
00014 C MESSAGES FOR IT. * 00069170
00015 C * 00069180
00016 C***************************************************************** 00069190
00017 REAL*8 RMIN,RMAX,LITBL(1024) 00069200
00018 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00069210
00019 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00069220
00020 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00069230
00021 3SYMTB(5,512) 00069240
00022 INTEGER TLIMT,OPTNS,ERRPT,PRNTR,CRSMT,CBIT,BLANK,PLUS, 00069250
00023 1STYPE,EXCHR,LENTH,STMT(4),LINE1,LINE2,XERR,XCARD,XCHAR 00069260
00024 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00069270
00025 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00069280
00026 2SYMTB,LITBL 00069290
00027 EQUIVALENCE (TLIMT,PTRS(33)),(OPTNS,PTRS(7)), 00069300
00028 1(ERRPT,ERROR(2)),(PRNTR,PTRS(2)),(CRSMT,TMAP(1)), 00069310
00029 2(CBIT,TOKEN(2)),(BLANK,CRSET(1)),(STYPE,TOKEN(1)), 00069320
00030 3(PLUS,OPER(2)),(EXCHR,PTRS(39)) 00069330
00031 C***************************************************************** 00069340
00032 C * 00069350
00033 C THE SOURCE WILL NOT BE LISTED UNLESS THE SOURCE OPTION * 00069360
00034 C IS IN EFFECT OR THERE IS AN ERROR ON THE CURRENT CARD. * 00069370
00035 C * 00069380
00036 C***************************************************************** 00069390
00037 IF (MOD(OPTNS/1024,2) .EQ. 1 .AND. ERRPT .EQ. 2) GO TO 600 00069400
00038 C***************************************************************** 00069410
00039 C * 00069420
00040 C COMPUTE THE LENGTH OF THE OUTPUT LINE. (THIS INHIBITS * 00069430
00041 C THE PRINTING OF THE LINE NUMBERS FOR NARROW OUTPUT.) * 00069440
00042 C * 00069450
00043 C CALLING NDT45 SETS UP THE CURRENT STATEMENT NUMBER * 00069460
00044 C TO BE OUTPUTTED. * 00069470
00045 C * 00069480
00046 C***************************************************************** 00069490
00047 LENTH = TLIMT 00069500
00048 IF (LENTH .GT. 80) LENTH = 80 00069510
00049 CALL NDT45(CRSMT,STMT,1) 00069520
00050 C***************************************************************** 00069530
00051 C * 00069540
00052 C CALCULATE THE NUMBER OF LINES OF OUTPUT BY CHECKING FOR * 00069550
00053 C ERRORS ON THIS CARD AND ITS CONTINUATION. * 00069560
00054 C * 00069570
00055 C***************************************************************** 00069580
00056 LINE1 = 1 00069590
NDT56 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 LINE2 = 1 00069600
00058 IF (ERRPT .EQ. 2) GO TO 300 00069610
00059 DO 200 XERR = 3, ERRPT, 2 00069620
00060 IF (MOD(ERROR(XERR),2) .EQ. 0) GO TO 100 00069630
00061 LINE2 = 2 00069640
00062 GO TO 200 00069650
00063 100 LINE1 = 2 00069660
00064 200 CONTINUE 00069670
00065 C***************************************************************** 00069680
00066 C * 00069690
00067 C WRITE OUT THE SOURCE STATEMENT, FIRST CHECKING FOR THE * 00069700
00068 C END OF PAGE. * 00069710
00069 C * 00069720
00070 C***************************************************************** 00069730
00071 300 CALL NDT57(LINE1) 00069740
00072 WRITE (PRNTR,400) STMT,EXCHR,(CARD1(XCHAR),XCHAR=1,LENTH) 00069750
00073 400 FORMAT (5X,5A1,1X,80A1) 00069760
00074 C***************************************************************** 00069770
00075 C * 00069780
00076 C IF THERE ARE ANY ERRORS ON THE FIRST CARD, CALL NDT60 * 00069790
00077 C TO PRINT OUT THE ERROR MESSAGES. * 00069800
00078 C * 00069810
00079 C***************************************************************** 00069820
00080 IF (LINE1 .EQ. 2) CALL NDT60(0) 00069830
00081 C***************************************************************** 00069840
00082 C * 00069850
00083 C PRINT OUT THE CONTINUATION CARD IF THERE IS ONE. * 00069860
00084 C * 00069870
00085 C***************************************************************** 00069880
00086 IF (CBIT .EQ. 0) GO TO 600 00069890
00087 CALL NDT57(LINE2) 00069900
00088 WRITE (PRNTR,500) EXCHR,(CARD2(XCHAR),XCHAR=1,LENTH) 00069910
00089 500 FORMAT(9X,A1,1X,80A1) 00069920
00090 C***************************************************************** 00069930
00091 C * 00069940
00092 C IF THERE ARE ERRORS ON THE CONTINUATION CARD, PRINT * 00069950
00093 C THEM OUT BY CALLING NDT60. * 00069960
00094 C * 00069970
00095 C***************************************************************** 00069980
00096 IF (LINE2 .EQ. 2) CALL NDT60(1) 00069990
00097 C***************************************************************** 00070000
00098 C * 00070010
00099 C EXCHR IS THE EXPANSION CHARACTER. IT IS INITIALIZED * 00070020
00100 C TO BLANK. DURING A MACRO EXPANSION, IT IS A PLUS SIGN. * 00070030
00101 C * 00070040
00102 C***************************************************************** 00070050
00103 600 IF (STYPE .EQ. 17) EXCHR = PLUS 00070060
00104 IF (STYPE .EQ. 16) EXCHR = BLANK 00070070
00105 RETURN 00070080
00106 END 00070100
EQUIVALENCED VARIABLES
NDT56 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 TLIMT +44 OPTNS +12 ERRPT +1103 PRNTR +5
CRSMT +1722 CBIT +523 BLANK +251 STYPE +522 PLUS +321
EXCHR +52
SUBPROGRAMS CALLED
MOD. NDT45 NDT57 NDT60
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
XCHAR 1 %XCARD LINE2 2 XERR 3 LINE1 4
LENTH 5 .S0000 6 STMT 7 .O0000 13
TEMPORARIES
.A0016 23 .Q0000 24
BLANK 22# 27# 104
CARD1 18# 24# 72
CARD2 18# 24# 88
CBIT 22# 27# 86
CRSET 18# 24# 27#
CRSMT 22# 27# 49 49#
DEF 18# 24#
EQCHN 18# 24#
ERROR 18# 24# 27# 60
ERRPT 22# 27# 37 58 59
EXCHR 22# 27# 72 88 103# 104#
FCTN 18# 24#
LENTH 22# 47# 48 48# 72 88
LINE1 22# 56# 63# 71 71# 80
LINE2 22# 57# 61# 87 87# 96
LITBL 17# 24#
MOD. 37 60
NDT45 49
NDT56 7#
NDT57 71 87
NDT60 80 96
OBJCD 18# 24#
OPER 18# 24# 27#
OPTNS 22# 27# 37
PLUS 22# 27# 103
PRNTR 22# 27# 72 88
PTRS 18# 24# 27#
RMAX 17# 24#
RMIN 17# 24#
STMT 22# 49 49# 72
STYPE 22# 27# 103 104
SUBSC 18# 24#
SYM 18# 24#
SYMTB 18# 24#
TITLE 18# 24#
TLIMT 22# 27# 47
TMAP 18# 24# 27#
TOKEN 18# 24# 27#
TYPCT 18# 24#
XCARD 22#
XCHAR 22# 72 72# 88 88#
XERR 22# 59# 60
XREF 18# 24#
100P 60 63#
200P 59 62 64#
300P 58 71#
400P 72 73#
500P 88 89#
600P 37 86 103#
NDT56 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00070110
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00070120
00003 C 00070130
00004 C 00070140
00005 SUBROUTINE NDT57 (LINES) 00070150
00006 C 00070160
00007 C 00070170
00008 C NDT57 MONITORS THE NUMBER OF OUTPUT LINES WRITTEN TO THE 00070180
00009 C PRINTER OR OUTPUT DEVICE AND CAUSES PAGING WHEN THE NUMBER 00070190
00010 C OF LINES THAT ARE WAITING TO BE WRITTEN WILL CAUSE PAGE 00070200
00011 C OVERFLOW. 00070210
00012 C 00070220
00013 C THE ONLY ARGUMENT IS THE NUMBER OF LINES THAT ARE WAITING 00070230
00014 C TO PRINT. 00070240
00015 C 00070250
00016 C 00070260
00017 REAL*8 RMIN,RMAX,LITBL(1024) 00070270
00018 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00070280
00019 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00070290
00020 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00070300
00021 3SYMTB(5,512) 00070310
00022 INTEGER LINCT,LINES,LINPP,PAGCT,PRNTR,I,TLIMT,DGMSG,PGMCD 00070320
00023 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00070330
00024 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00070340
00025 2SYMTB,LITBL 00070350
00026 EQUIVALENCE (LINCT,PTRS(5)),(LINPP,PTRS(6)),(PAGCT,PTRS(4)), 00070360
00027 1(PRNTR,PTRS(2)),(TLIMT,PTRS(33)),(DGMSG,PTRS(41)),(PGMCD, 00070370
00028 2PTRS(15)) 00070380
00029 C 00070390
00030 C 00070400
00031 C IF LINCT IS NEGATIVE THEN PAGING IS FORCED. UPDATE THE NUMBER 00070410
00032 C OF LINES OF OUTPUT FOR THIS PAGE AND SKIP TO A NEW PAGE IN THE 00070420
00033 C EVENT OF PAGE OVERFLOW. IF OVERFLOW DID NOT OCCUR RETURN. 00070430
00034 C 00070440
00035 C 00070450
00036 IF(LINCT.LT.0) GO TO 100 00070460
00037 LINCT=LINCT+LINES 00070470
00038 IF(LINCT.LT.LINPP) GO TO 300 00070480
00039 C 00070490
00040 C 00070500
00041 C INCREMENT PAGCT AND PLACE IT LEFT JUSTIFIED IN THE TITLE 00070510
00042 C BUFFER, SKIP TO A NEW PAGE, PRINT OUT THE TITLE, AND 00070520
00043 C SKIP ONE LINE. 00070530
00044 C 00070540
00045 C 00070550
00046 100 LINCT=LINES+2 00070560
00047 PAGCT=PAGCT+1 00070570
00048 CALL NDT45 (PAGCT,TITLE(6),0) 00070580
00049 WRITE(PRNTR,200) (TITLE(I),I=1,TLIMT) 00070590
00050 200 FORMAT('1',120A1) 00070600
00051 WRITE(PRNTR,201) 00070610
00052 201 FORMAT(1X) 00070620
00053 C 00070630
00054 C 00070640
00055 C IF NOSOURCE WAS SPECIFIED AND DIAGNOSTICS HAVE OCCURRED THEN 00070650
00056 C THE DIAGNOSTIC HEADER SHOULD BE PRINTED AT THE TOP OF THE 00070660
NDT57 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C FIRST PAGE OF MESSAGES. 00070670
00058 C 00070680
00059 C 00070690
00060 IF(DGMSG.EQ.1.OR.DGMSG.EQ.0.AND.PGMCD.EQ.0) GO TO 300 00070700
00061 DGMSG=1 00070710
00062 LINCT=LINCT+2 00070720
00063 WRITE(PRNTR,400) 00070730
00064 400 FORMAT(5X,'* * * * * D I A G N O S T I C S * * * * *'/) 00070740
00065 300 RETURN 00070750
00066 END 00070770
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 LINCT +10 LINPP +11 PAGCT +7 PRNTR +5
TLIMT +44 DGMSG +54 PGMCD +22
SUBPROGRAMS CALLED
NDT45
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
LINES 1 I 2
TEMPORARIES
.A0016 22
CARD1 18# 23#
CARD2 18# 23#
CRSET 18# 23#
DEF 18# 23#
DGMSG 22# 26# 60 61#
EQCHN 18# 23#
ERROR 18# 23#
FCTN 18# 23#
I 22# 49 49#
LINCT 22# 26# 36 37 37# 38 46# 62 62#
LINES 5# 22# 37 46
LINPP 22# 26# 38
LITBL 17# 23#
NDT45 48
NDT57 5#
OBJCD 18# 23#
OPER 18# 23#
PAGCT 22# 26# 47 47# 48 48#
PGMCD 22# 26# 60
PRNTR 22# 26# 49 51 63
PTRS 18# 23# 26#
RMAX 17# 23#
RMIN 17# 23#
SUBSC 18# 23#
SYM 18# 23#
SYMTB 18# 23#
TITLE 18# 23# 48 48# 49
TLIMT 22# 26# 49
TMAP 18# 23#
TOKEN 18# 23#
TYPCT 18# 23#
XREF 18# 23#
100P 36 46#
200P 49 50#
201P 51 52#
300P 38 60 65#
400P 63 64#
NDT57 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00070780
00002 C * 00070790
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00070800
00004 C PROGRAM AUTHOR - THOMAS L EVERMAN JR * 00070810
00005 C * 00070820
00006 C THIS PROGRAM BUILDS THE CROSS REFERENCE BUFFER. * 00070830
00007 C * 00070840
00008 C***************************************************************** 00070850
00009 SUBROUTINE NDT58 (SYMPT) 00070860
00010 REAL*8 RMIN,RMAX,LITBL(1024) 00070870
00011 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00070880
00012 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00070890
00013 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00070900
00014 3SYMTB(5,512) 00070910
00015 INTEGER RECNO,XRFND,DSKND,CRSMT,REFPT,RFCPT,DISK,RFDEF,I, 00070920
00016 1 REC,SYMPT 00070930
00017 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00070940
00018 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00070950
00019 2SYMTB,LITBL 00070960
00020 EQUIVALENCE (RECNO,SYM(15)),(XRFND,PTRS(16)),(DSKND,PTRS(25)), 00070970
00021 1(CRSMT,TMAP(1)),(REFPT,XREF(1)),(RFCPT,XREF(2)), 00070980
00022 2(RFDEF,XREF(3)),(DISK,PTRS(3)) 00070990
00023 C***************************************************************** 00071000
00024 C * 00071010
00025 C MAKE SURE VARIABLE HAS A CROSS-REFERENCE RECORD, THEN READ * 00071020
00026 C THE RECORD. CHECK TO SEE WHETHER THE STATEMENT NUMBER IS * 00071030
00027 C ALREADY CONTAINED IN THE RECORD BY EXAMINING THE DEFINITION* 00071040
00028 C WORD AND THE LAST NUMBER ENTERED INTO THE XREF BUFFER. * 00071050
00029 C * 00071060
00030 C***************************************************************** 00071070
00031 IF (RECNO .NE. 0) GO TO 50 00071080
00032 XRFND = XRFND + 1 00071090
00033 IF(XRFND .GT. DSKND) CALL NDT12 (7) 00071100
00034 REFPT = 3 00071110
00035 RFCPT = 0 00071120
00036 RFDEF = 0 00071130
00037 RECNO = XRFND - 7 00071140
00038 REC = XRFND 00071150
00039 CALL NDT40 (SYMTB(1,SYMPT)) 00071160
00040 GO TO 150 00071170
00041 50 REC = RECNO + 7 00071180
00042 100 READ (DISK'REC) XREF 00071190
00043 IF (CRSMT .EQ. RFDEF .OR. CRSMT .EQ. XREF(REFPT)) GO TO 500 00071200
00044 C***************************************************************** 00071210
00045 C * 00071220
00046 C CHECK TO SEE IF BUFFER IS FULL. IF IT IS NOT FULL, * 00071230
00047 C INCREMENT THE POINTER, ENTER THE CURRENT STATEMENT NUMBER, * 00071240
00048 C AND REWRITE THE XREF BUFFER TO THE DISK FILE. * 00071250
00049 C * 00071260
00050 C***************************************************************** 00071270
00051 IF (REFPT .EQ. 80) GO TO 200 00071280
00052 150 REFPT = REFPT + 1 00071290
00053 XREF(REFPT) = CRSMT 00071300
00054 WRITE (DISK'REC) XREF 00071310
00055 GO TO 500 00071320
00056 C***************************************************************** 00071330
NDT58 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C * 00071340
00058 C DETERMINE WHETHER A CONTINUATION RECORD ALREADY EXISTS. * 00071350
00059 C IF NO CONTINUATION EXISTS, ALLOCATE A NEW DISK RECORD * 00071360
00060 C AND INITIALIZE THE NEW XREF BUFFER AND WRITE IT TO THE FILE* 00071370
00061 C REWRITE THE OLD RECORD WITH THE ADDED CONTINUATION POINTER.* 00071380
00062 C * 00071390
00063 C***************************************************************** 00071400
00064 200 IF (RFCPT .NE. 0) GO TO 400 00071410
00065 XRFND = XRFND + 1 00071420
00066 IF (XRFND .GT. DSKND) CALL NDT12 (7) 00071430
00067 RFCPT = XRFND 00071440
00068 WRITE (DISK'REC) XREF 00071450
00069 DO 300 I = 1, 80 00071460
00070 300 XREF(I) = 0 00071470
00071 REFPT = 3 00071480
00072 RFDEF = CRSMT 00071490
00073 WRITE (DISK'XRFND) XREF 00071500
00074 GO TO 500 00071510
00075 C***************************************************************** 00071520
00076 C * 00071530
00077 C A CONTINUATION RECORD ALREADY EXISTS. READ IT IN USING THE* 00071540
00078 C POINTER FROM THE INITIAL RECORD. SET REC AND PROCESS THE * 00071550
00079 C CONTINUATION LIKE A NORMAL RECORD. * 00071560
00080 C * 00071570
00081 C***************************************************************** 00071580
00082 400 REC = RFCPT 00071590
00083 GO TO 100 00071600
00084 500 RETURN 00071610
00085 END 00071630
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 RECNO +347 XRFND +23 DSKND +34 CRSMT +1722
REFPT +1602 RFCPT +1603 RFDEF +1604 DISK +6
SUBPROGRAMS CALLED
NDT40 NDT12
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
.S0000 1 SYMPT 2 I 3 REC 4
NDT58 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
TEMPORARIES
.A0016 5 .Q0000 6
CARD1 11# 17#
CARD2 11# 17#
CRSET 11# 17#
CRSMT 15# 20# 43 53 72
DEF 11# 17#
DISK 15# 20# 42 54 68 73
DSKND 15# 20# 33 66
EQCHN 11# 17#
ERROR 11# 17#
FCTN 11# 17#
I 15# 69# 70
LITBL 10# 17#
NDT12 33 66
NDT40 39
NDT58 9#
OBJCD 11# 17#
OPER 11# 17#
PTRS 11# 17# 20#
REC 15# 38# 41# 42 54 68 82#
RECNO 15# 20# 31 37# 41
REFPT 15# 20# 34# 43 51 52 52# 53 71#
RFCPT 15# 20# 35# 64 67# 82
RFDEF 15# 20# 36# 43 72#
RMAX 10# 17#
RMIN 10# 17#
SUBSC 11# 17#
SYM 11# 17# 20#
SYMPT 9# 15# 39
SYMTB 11# 17# 39 39#
TITLE 11# 17#
TMAP 11# 17# 20#
TOKEN 11# 17#
TYPCT 11# 17#
XREF 11# 17# 20# 42# 43 53# 54 68 70# 73
XRFND 15# 20# 32 32# 33 37 38 65 65# 66 67 73
100P 42# 83
150P 40 52#
200P 51 64#
300P 69 70#
400P 64 82#
500P 43 55 74 84#
50P 31 41#
NDT58 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00071640
00002 C * 00071650
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00071660
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00071670
00005 C * 00071680
00006 C***************************************************************** 00071690
00007 SUBROUTINE NDT59 00071700
00008 C***************************************************************** 00071710
00009 C * 00071720
00010 C * 00071730
00011 C TITLE COMPLEMENTER * 00071740
00012 C * 00071750
00013 C THIS PROGRAM COMPLETES THE TITLE BUFFER, INSERTING THE * 00071760
00014 C COPYRIGHT INFORMATION, AND SETS TPNT. * 00071770
00015 C * 00071780
00016 C THIS PROGRAM ALSO MAKES SURE THE SOURCE OPTION IS IN * 00071790
00017 C EFFECT IF THE DOCUMENT OPTION IS. * 00071800
00018 C * 00071810
00019 C***************************************************************** 00071820
00020 REAL*8 RMIN,RMAX,LITBL(1024) 00071830
00021 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00071840
00022 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00071850
00023 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00071860
00024 3SYMTB(5,512) 00071870
00025 INTEGER OPTNS,TPNT,NARO,RIGHT(14),XCOPY,XTITL,TLIMT 00071880
00026 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00071890
00027 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00071900
00028 2SYMTB,LITBL 00071910
00029 EQUIVALENCE (OPTNS,PTRS(7)),(TLIMT,PTRS(33)), 00071920
00030 1(TPNT,PTRS(30)) 00071930
00031 DATA RIGHT /' ',' ','(','C',')',' ','1','9','7','8', 00071940
00032 1 ' ','U','N','D'/ 00071950
00033 C***************************************************************** 00071960
00034 C * 00071970
00035 C DETERMINE THE LENGTH OF THE OUTPUT, WIDE OR NARROW. * 00071980
00036 C SET TPNT TO THE LAST WORD USED IN THE TITLE. * 00071990
00037 C * 00072000
00038 C***************************************************************** 00072010
00039 NARO = MOD(OPTNS/8,2) 00072020
00040 TLIMT = 120 - NARO*48 00072030
00041 IF (TPNT .GT. TLIMT-14) TPNT = TLIMT - 14 00072040
00042 C***************************************************************** 00072050
00043 C * 00072060
00044 C PUT THE COPYRIGHT INFORMATION INTO THE TITLE BUFFER. * 00072070
00045 C * 00072080
00046 C***************************************************************** 00072090
00047 DO 100 XCOPY = 1, 14 00072100
00048 XTITL = TLIMT - 14 + XCOPY 00072110
00049 100 TITLE(XTITL) = RIGHT(XCOPY) 00072120
00050 C***************************************************************** 00072130
00051 C * 00072140
00052 C IF DOCUMENT AND NOSOURCE WERE SPECIFIED, SET SOURCE. * 00072150
00053 C * 00072160
00054 C***************************************************************** 00072170
00055 IF (MOD(OPTNS/1024,2).EQ.1 .AND. MOD(OPTNS/4,2).EQ.1) 00072180
00056 1 OPTNS = OPTNS - 1024 00072190
NDT59 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 RETURN 00072200
00058 END 00072220
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 OPTNS +12 TLIMT +44 TPNT +41
SUBPROGRAMS CALLED
MOD.
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
NARO 1 RIGHT 2 XCOPY 20 .S0000 21 XTITL 22
TEMPORARIES
.A0016 23
CARD1 21# 26#
CARD2 21# 26#
CRSET 21# 26#
DEF 21# 26#
EQCHN 21# 26#
ERROR 21# 26#
FCTN 21# 26#
LITBL 20# 26#
MOD. 39 55
NARO 25# 39# 40
NDT59 7#
OBJCD 21# 26#
OPER 21# 26#
OPTNS 25# 29# 39 55 55#
PTRS 21# 26# 29#
RIGHT 25# 31# 49
RMAX 20# 26#
RMIN 20# 26#
SUBSC 21# 26#
SYM 21# 26#
SYMTB 21# 26#
TITLE 21# 26# 49#
TLIMT 25# 29# 40# 41 48
TMAP 21# 26#
TOKEN 21# 26#
TPNT 25# 29# 41 41#
TYPCT 21# 26#
XCOPY 25# 47# 48 49
XREF 21# 26#
XTITL 25# 48# 49
100P 47 49#
NDT59 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C***************************************************************** 00072230
00002 C * 00072240
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME * 00072250
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY * 00072260
00005 C * 00072270
00006 C***************************************************************** 00072280
00007 SUBROUTINE NDT60(CARD) 00072290
00008 C***************************************************************** 00072300
00009 C * 00072310
00010 C * 00072320
00011 C ERROR MESSAGE PRINTING * 00072330
00012 C * 00072340
00013 C THIS IS CALLED ONLY WHEN THERE IS AN ERROR ON THE CURRENT * 00072350
00014 C CARD, BY THE SOURCE LISTING ROUTINE. IT WILL GATHER AND * 00072360
00015 C PRINT OUT THE ERROR INFORMATION. * 00072370
00016 C * 00072380
00017 C***************************************************************** 00072390
00018 REAL*8 RMIN,RMAX,LITBL(1024) 00072400
00019 REAL ERMSG(4,3) 00072410
00020 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00072420
00021 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00072430
00022 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00072440
00023 3SYMTB(5,512) 00072450
00024 INTEGER CARD 00072460
00025 INTEGER ERRPT,PRNTR,BLANK,DSIGN 00072470
00026 INTEGER ERFLG(80),XERR,ERRCT,ERPOS,ERNUM,SEVER 00072480
00027 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00072490
00028 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00072500
00029 2SYMTB,LITBL 00072510
00030 EQUIVALENCE (ERRPT,ERROR(2)),(PRNTR,PTRS(2)), 00072520
00031 1(BLANK,CRSET(1)),(DSIGN,CRSET(2)) 00072530
00032 DATA ERMSG /' W A',' R N',' I N',' G',' ','E R','R O','R', 00072540
00033 1'C R','I T','I C','A L'/ 00072550
00034 C***************************************************************** 00072560
00035 C * 00072570
00036 C ERFLG IS THE ARRAY THAT WILL HOLD THE POINTERS TO THE * 00072580
00037 C ERROR POSITION ON THE CARD. * 00072590
00038 C * 00072600
00039 C FIRST, BLANK IT OUT. * 00072610
00040 C * 00072620
00041 C***************************************************************** 00072630
00042 DO 100 XERR = 1, 80 00072640
00043 100 ERFLG(XERR) = BLANK 00072650
00044 C***************************************************************** 00072660
00045 C * 00072670
00046 C SEARCH THROUGH THE ERROR ARRAY, AND IF THE ERROR IS ON * 00072680
00047 C THIS CARD (IT COULD BE ON A CONTINUATION CARD), NOTE * 00072690
00048 C ITS POSITION, AND SET ERFLG ACCORDINGLY. * 00072700
00049 C * 00072710
00050 C***************************************************************** 00072720
00051 DO 200 ERRCT = 3, ERRPT, 2 00072730
00052 IF (MOD(ERROR(ERRCT),2) .NE. CARD) GO TO 200 00072740
00053 ERPOS = MOD(ERROR(ERRCT)/8,128) 00072750
00054 IF(ERPOS.NE.0) ERFLG(ERPOS) = DSIGN 00072760
00055 200 CONTINUE 00072770
00056 C***************************************************************** 00072780
NDT60 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C * 00072790
00058 C WRITE OUT THE ERFLG ARRAY. THIS WILL APPEAR DIRECTLY * 00072800
00059 C UNDER THE SOURCE LISTING. NDT57 WAS NOT CALLED FOR * 00072810
00060 C THIS WRITE BECAUSE THE CHECK WAS DONE IN NDT56. * 00072820
00061 C * 00072830
00062 C***************************************************************** 00072840
00063 WRITE (PRNTR,300) ERFLG 00072850
00064 300 FORMAT(11X,80A1) 00072860
00065 C***************************************************************** 00072870
00066 C * 00072880
00067 C NOW CONVERT ERFLG TO HOLD THE ORDINAL POSITIONS OF * 00072890
00068 C THE ERRORS. * 00072900
00069 C * 00072910
00070 C***************************************************************** 00072920
00071 ERNUM = 1 00072930
00072 DO 500 XERR = 1, 80 00072940
00073 IF (ERFLG(XERR) .EQ. BLANK) GO TO 400 00072950
00074 ERFLG(XERR) = ERNUM 00072960
00075 ERNUM = ERNUM + 1 00072970
00076 GO TO 500 00072980
00077 400 ERFLG(XERR) = 0 00072990
00078 500 CONTINUE 00073000
00079 C***************************************************************** 00073010
00080 C * 00073020
00081 C GO THROUGH THE ERROR ARRAY AND PRINT OUT THE ERROR * 00073030
00082 C MESSAGE ASSOCIATED WITH EACH ERROR. * 00073040
00083 C * 00073050
00084 C***************************************************************** 00073060
00085 DO 600 ERRCT = 3, ERRPT, 2 00073070
00086 IF(MOD(ERROR(ERRCT),2).NE.CARD) GO TO 600 00073080
00087 SEVER = MOD(ERROR(ERRCT)/2,4) 00073090
00088 ERPOS = MOD(ERROR(ERRCT)/8,128) 00073100
00089 IF(ERPOS .EQ. 0) ERPOS = 1 00073110
00090 CALL NDT57(1) 00073120
00091 WRITE(PRNTR,700) ERFLG(ERPOS),(ERMSG(XERR,SEVER),XERR=1,4), 00073130
00092 1 ERROR(ERRCT+1) 00073140
00093 600 CONTINUE 00073150
00094 700 FORMAT(11X,I2,') ***** ',4A4,' ***** ND0',I3) 00073160
00095 C***************************************************************** 00073170
00096 C * 00073180
00097 C SKIP ONE LINE AFTER PRINTING ALL ERROR MESSAGES. * 00073190
00098 C * 00073200
00099 C***************************************************************** 00073210
00100 CALL NDT57 (1) 00073220
00101 WRITE(PRNTR,800) 00073230
00102 800 FORMAT(1X) 00073240
00103 C***************************************************************** 00073250
00104 C * 00073260
00105 C RETURN * 00073270
00106 C * 00073280
00107 C***************************************************************** 00073290
00108 RETURN 00073300
00109 END 00073320
NDT60 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 ERRPT +1103 PRNTR +5 BLANK +251 DSIGN +252
SUBPROGRAMS CALLED
MOD. NDT57
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
ERRCT 1 XERR 2 CARD 3 ERNUM 4 .S0003 5
.S0002 6 .S0001 7 .S0000 10 ERMSG 11 SEVER 25
ERFLG 26 ERPOS 146
TEMPORARIES
.A0016 164 .Q0000 165
BLANK 25# 30# 43 73
CARD 7# 24# 52 86
CARD1 20# 27#
CARD2 20# 27#
CRSET 20# 27# 30#
DEF 20# 27#
DSIGN 25# 30# 54
EQCHN 20# 27#
ERFLG 26# 43# 54# 63 73 74# 77# 91
ERMSG 19# 32# 91
ERNUM 26# 71# 74 75 75#
ERPOS 26# 53# 54 88# 89 89# 91
ERRCT 26# 51# 52 53 85# 86 87 88 91
ERROR 20# 27# 30# 52 53 86 87 88 91
ERRPT 25# 30# 51 85
FCTN 20# 27#
LITBL 18# 27#
MOD. 52 53 86 87 88
NDT57 90 100
NDT60 7#
OBJCD 20# 27#
OPER 20# 27#
PRNTR 25# 30# 63 91 101
PTRS 20# 27# 30#
RMAX 18# 27#
RMIN 18# 27#
SEVER 26# 87# 91
SUBSC 20# 27#
SYM 20# 27#
SYMTB 20# 27#
TITLE 20# 27#
TMAP 20# 27#
TOKEN 20# 27#
TYPCT 20# 27#
XERR 26# 42# 43 72# 73 74 77 91 91#
XREF 20# 27#
100P 42 43#
200P 51 52 55#
300P 63 64#
400P 73 77#
500P 72 76 78#
600P 85 86 93#
700P 91 94#
800P 101 102#
NDT60 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00073330
00002 C PROGRAM AUTHOR - GARY PELKEY 00073340
00003 C 00073350
00004 C 00073360
00005 SUBROUTINE NDT61 00073370
00006 C 00073380
00007 C 00073390
00008 C NDT61 DIRECTS PROCESSING OF THE VARIOUS USER DEFINED OPTIONS. 00073400
00009 C IT BEGINS BY ALLOCATING SPACE FOR THE VARIOUS OPTION PROC 00073410
00010 C ESSORS BY WRITTING THE LITERAL TABLE OUT TO DISK. IT THEN 00073420
00011 C SIMPLY CHECKS THE OPTION BITS AND CALLS THE ROUTINES NECESS 00073430
00012 C ARY. A STOP IS ISSUED IF THE NOGO IS IN EFFECT. 00073440
00013 C 00073450
00014 C 00073460
00015 REAL*8 RMIN,RMAX,LITBL(1024) 00073470
00016 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00073480
00017 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00073490
00018 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00073500
00019 3SYMTB(5,512) 00073510
00020 INTEGER DSKCT,XRFND,START,STOP,LITCT,DSKND,DISK,OPTNS,SRTPT 00073520
00021 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00073530
00022 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00073540
00023 2SYMTB,LITBL 00073550
00024 EQUIVALENCE (DSKCT,PTRS(24)),(XRFND,PTRS(16)),(LITCT,PTRS(18)) 00073560
00025 EQUIVALENCE (DSKND,PTRS(25)),(DISK,PTRS(3)),(OPTNS,PTRS(7)) 00073570
00026 C 00073580
00027 C 00073590
00028 C THE LITERAL TABLE IS WRITTEN OUT TO DISK. 00073600
00029 C 00073610
00030 C 00073620
00031 DSKCT=XRFND 00073630
00032 START=1 00073640
00033 100 STOP=START+39 00073650
00034 IF(STOP.GT.LITCT) STOP=LITCT 00073660
00035 DSKCT=DSKCT+1 00073670
00036 IF(DSKCT.GT.DSKND) CALL NDT12 (7) 00073680
00037 WRITE(DISK'DSKCT) (LITBL(I),I=START,STOP) 00073690
00038 IF(STOP.EQ.LITCT) GO TO 200 00073700
00039 START=STOP+1 00073710
00040 GO TO 100 00073720
00041 C 00073730
00042 C 00073740
00043 C THE SYMBOL TABLE LISTING PROGRAM AND THE CROSS REFERENCE 00073750
00044 C LISTING PROGRAM BOTH NEED A TAG SORT. NDT76 IS CALLED 00073760
00045 C HERE TO PERFORM THIS SORT IF IT WILL BE NEEDED. 00073770
00046 C 00073780
00047 C 00073790
00048 200 IF(MOD(OPTNS/64,2).EQ.1.OR.MOD(OPTNS/128,2).EQ.1) 00073800
00049 1CALL NDT76 (SRTPT) 00073810
00050 C 00073820
00051 C 00073830
00052 C THE STATS PROCESSOR IS CALLED IF ITS BIT IS MARKED. 00073840
00053 C 00073850
00054 C 00073860
00055 IF(MOD((OPTNS/16),2).EQ.0) CALL NDT66 00073870
00056 C 00073880
NDT61 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C 00073890
00058 C LIKEWISE THE SYMBOL TABLE PROCESSOR, 00073900
00059 C 00073910
00060 C 00073920
00061 IF(MOD(OPTNS/64,2).EQ.1) CALL NDT67 (SRTPT) 00073930
00062 C 00073940
00063 C 00073950
00064 C AND THE CROSS REFERENCE ROUTINE, 00073960
00065 C 00073970
00066 C 00073980
00067 IF(MOD(OPTNS/128,2).EQ.1) CALL NDT68 (SRTPT) 00073990
00068 C 00074000
00069 C 00074010
00070 C AND FINALLY THE SYSTEMS ANALYSIS ROUTINE. 00074020
00071 C 00074030
00072 C 00074040
00073 IF(MOD(OPTNS/2,2).EQ.1) CALL NDT69 00074050
00074 C 00074060
00075 C 00074070
00076 C IF NOGO IS IN EFFECT A STOP IS ISSUED HERE TO ABORT EQUATION 00074080
00077 C SORTING, LOADING, AND EXECUTION. 00074090
00078 C 00074100
00079 C 00074110
00080 IF(MOD(OPTNS/32,2).EQ.1) STOP 00074120
00081 RETURN 00074130
00082 END 00074150
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 DSKCT +33 XRFND +23 LITCT +25 DSKND +34
DISK +6 OPTNS +12
SUBPROGRAMS CALLED
MOD. NDT69 NDT12 NDT68 NDT67 NDT76
NDT66
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
STOP 1 *I 2 SRTPT 3 START 4
NDT61 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
TEMPORARIES
.A0016 5 .Q0001 6 .Q0002 7
CARD1 16# 21#
CARD2 16# 21#
CRSET 16# 21#
DEF 16# 21#
DISK 20# 25# 37
DSKCT 20# 24# 31# 35 35# 36 37
DSKND 20# 25# 36
EQCHN 16# 21#
ERROR 16# 21#
FCTN 16# 21#
I 37 37#
LITBL 15# 21# 37
LITCT 20# 24# 34 38
MOD. 48 55 61 67 73 80
NDT12 36
NDT61 5#
NDT66 55
NDT67 61
NDT68 67
NDT69 73
NDT76 48
OBJCD 16# 21#
OPER 16# 21#
OPTNS 20# 25# 48 55 61 67 73 80
PTRS 16# 21# 24# 25#
RMAX 15# 21#
RMIN 15# 21#
SRTPT 20# 48 48# 61 61# 67 67#
START 20# 32# 33 37 39#
STOP 20# 33# 34 34# 37 38 39
SUBSC 16# 21#
SYM 16# 21#
SYMTB 16# 21#
TITLE 16# 21#
TMAP 16# 21#
TOKEN 16# 21#
TYPCT 16# 21#
XREF 16# 21#
XRFND 20# 24# 31
100P 33# 40
200P 38 48#
NDT61 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00074160
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00074170
00003 C 00074180
00004 C 00074190
00005 SUBROUTINE NDT62 00074200
00006 C 00074210
00007 C 00074220
00008 C NDT62 TAKES THE SEQUENTIAL CHAIN OF EQUATION ELEMENTS BUILT 00074230
00009 C DURING PASS1 AND ORDERS THEM SO THAT THE LOADER MAY ORDER 00074240
00010 C THE OBJECT CODE PROPERLY. THE ORDERING SCHEME IS AS FOLLOWS: 00074250
00011 C 00074260
00012 C EQUATIONS ARE SORTED BY TYPE: T, C, PARM, N, L, A, R, AND S. 00074270
00013 C AFTER THE SORT BY TYPE CERTAIN EQUATION TYPES REQUIRE FURTHER 00074280
00014 C SORTING. ANY EQUATION WHICH DEFINES A VARIABLE USED TO 00074290
00015 C INITIALIZE A LEVEL MUST BE EVALUATED AT THE STARTING TIME 00074300
00016 C OF THE MODEL. AUXILIARY AND SUPPLEMENTARY EQUATIONS MAY 00074310
00017 C BE DEPENDENT ON VARIABLES WITHIN THEIR OWN TYPES SO THEY 00074320
00018 C MUST BE ORDERED TO ENSURE THAT A VARIABLE IS EVALUATED 00074330
00019 C BEFORE IT IS USED. 00074340
00020 C 00074350
00021 C 00074360
00022 REAL*8 RMIN,RMAX,LITBL(1024) 00074370
00023 REAL STNAM(4,4) 00074380
00024 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00074390
00025 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00074400
00026 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00074410
00027 3SYMTB(5,512) 00074420
00028 INTEGER SYMND,I,VTYPE,RECNO,START,REC,EQNPT,EQEND,DISK,DIST, 00074430
00029 1EQSRT(2048), STOP,FLAG,PNT,PNT2,SAVE,CHNPT,LSTYP,EQNXT, 00074440
00030 2TYPE,STPGM,ACTN(8),SRTPT,LSTPT,IDVPT,SRLST,TOKPT,VNUM, 00074450
00031 3SYMPT,SMFLG,OLDCT,EQNCT,SMEQN(80),SMQPT,BLANK,COMMA, 00074460
00032 4PRNTR,OPTNS,LINCT 00074470
00033 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00074480
00034 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00074490
00035 2SYMTB,LITBL 00074500
00036 EQUIVALENCE (SYMND,PTRS(17)),(VTYPE,SYM(7)),(RECNO,SYM(15)), 00074510
00037 1(EQNPT,PTRS(28)),(DISK,PTRS(3)),(EQSRT(1),LITBL(1)), 00074520
00038 2(CHNPT,PTRS(29)),(STPGM,PTRS(21)),(TOKPT,TOKEN(3)), 00074530
00039 3(BLANK,CRSET(1)),(COMMA,OPER(9)),(PRNTR,PTRS(2)), 00074540
00040 4(OPTNS,PTRS(7)),(LINCT,PTRS(5)),(VNUM,SYM(14)) 00074550
00041 DATA ACTN /0,1,0,2,0,1,0,1/ 00074560
00042 DATA STNAM /'CONS','TANT','S:',' ','INIT','IAL','VALU','ES:', 00074570
00043 1'AUXI','LIAR','IES:',' ','SUPP','LEME','NTAR','IES:'/ 00074580
00044 LINCT=-1 00074590
00045 C 00074600
00046 C 00074610
00047 C THE SYMBOL TABLE MUST BE PREPARED FOR EQUATION ORDERING. 00074620
00048 C EACH ENTRY IS UNPACKED AND REFORMATTED: 00074630
00049 C 00074640
00050 C 1:2 - PACKED VARIABLE NAMES 00074650
00051 C 3 - VARIABLE TYPE 00074660
00052 C 4 - THE RECORD NUMBER FOR THE DEFINING EQUATION 00074670
00053 C 5 - DEFINITION WORD 00074680
00054 C 0 - UNDEFINED 00074690
00055 C 1 - DEFINED 00074700
00056 C 00074710
NDT62 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C 00074720
00058 DO 100 I=1,SYMND 00074730
00059 IF(SYMTB(1,I).EQ.32767) GO TO 100 00074740
00060 CALL NDT41 (SYMTB(1,I)) 00074750
00061 SYMTB(3,I)=VTYPE 00074760
00062 IF(VNUM.EQ.12) SYMTB(3,I)=0 00074770
00063 SYMTB(4,I)=RECNO 00074780
00064 100 CONTINUE 00074790
00065 C 00074800
00066 C 00074810
00067 C THE EQUATION CHAIN ELEMENTS ON DISK ARE READ INTO SEQUENTIAL 00074820
00068 C MEMORY LOCATIONS FOR PROCESSING. 00074830
00069 C 00074840
00070 C 00074850
00071 START=1 00074860
00072 DO 300 REC=1,EQNPT 00074870
00073 STOP=START+79 00074880
00074 READ(DISK'REC) (EQSRT(I),I=START,STOP) 00074890
00075 300 START=STOP+1 00074900
00076 C 00074910
00077 C 00074920
00078 C EQEND MUST BE SET TO THE LAST ELEMENT IN THE CHAIN WHICH 00074930
00079 C IS FOLLOWED BY A ZERO. 00074940
00080 C 00074950
00081 C 00074960
00082 START=START-80 00074970
00083 STOP=START+79 00074980
00084 DO 310 EQEND=START,STOP 00074990
00085 IF(EQSRT(EQEND).EQ.0) GO TO 320 00075000
00086 310 CONTINUE 00075010
00087 320 EQEND=EQEND-1 00075020
00088 C 00075030
00089 C 00075040
00090 C THE EQUATION ELEMENTS ARE PACKED SUCH THAT AN INTEGER SORT 00075050
00091 C WILL ARRANGE THEM IN THE DESIRED ORDER BY TYPE AND IN THE 00075060
00092 C ORDER IN WHICH THEY WERE RECEIVED WITHIN TYPE. 00075070
00093 C 00075080
00094 C A 'SHELL-D' SORT IS USED TO PERFORM THE FIRST STEP OF ORDERING. 00075090
00095 C 00075100
00096 C 00075110
00097 DIST=EQEND 00075120
00098 2600 DIST=DIST/2 00075130
00099 IF(DIST.EQ.0) GO TO 3200 00075140
00100 DO 3100 START=1,DIST 00075150
00101 STOP=EQEND-DIST 00075160
00102 FLAG=1 00075170
00103 2700 IF(FLAG.EQ.0) GO TO 3100 00075180
00104 FLAG=0 00075190
00105 DO 3000 PNT=START,STOP,DIST 00075200
00106 PNT2=PNT+DIST 00075210
00107 IF(EQSRT(PNT).LT.EQSRT(PNT2)) GO TO 3000 00075220
00108 SAVE=EQSRT(PNT) 00075230
00109 EQSRT(PNT)=EQSRT(PNT2) 00075240
00110 EQSRT(PNT2)=SAVE 00075250
00111 FLAG=1 00075260
00112 3000 CONTINUE 00075270
NDT62 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 GO TO 2700 00075280
00114 3100 CONTINUE 00075290
00115 GO TO 2600 00075300
00116 C 00075310
00117 C 00075320
00118 C THE EQUATION ELEMENTS ARE ORDERED BY TYPE. THEY MUST NOW 00075330
00119 C BE CHAINED IN THE ORDER DESIRED FOR LOADING. 00075340
00120 C 00075350
00121 C INITIALIZE THE DISK RECORD POINTER, EQNPT, AND THE ELEMENT 00075360
00122 C POINTER, CHNPT. LSTYP IS THE EQUATION TYPE OF THE LAST 00075370
00123 C GROUP AND IS INITIALIZED SUCH THAT THE FIRST EQUATION WILL 00075380
00124 C SIGNAL A NEW GROUP. EQNXT IS A POINTER TO THE FIRST EQUATION 00075390
00125 C OF THE NEXT GROUP AND IS INITIALIZED TO THE FIRST EQUATION. 00075400
00126 C 00075410
00127 C 00075420
00128 3200 EQNPT=0 00075430
00129 CHNPT=0 00075440
00130 LSTYP=0 00075450
00131 EQNXT=1 00075460
00132 C 00075470
00133 C 00075480
00134 C IF THE LAST EQUATION HAS BEEN CHAINED THEN STOP PROCESSING. 00075490
00135 C 00075500
00136 C 00075510
00137 3500 IF(EQNXT.GT.EQEND) GO TO 6200 00075520
00138 C 00075530
00139 C 00075540
00140 C BEGIN PROCESSING THE NEXT GROUP. A NEW GROUP IS INDICATED 00075550
00141 C WHEN THE EQUATION TYPE DOES NOT MATCH LSTYP. THE FOLLOWING 00075560
00142 C LOOP CHAINS EQUATIONS IN THE ORDER IN WHICH THEY ARE RECEIVED 00075570
00143 C AS THE ORDER IS ARBITRARY FOR THE GROUP. 00075580
00144 C 00075590
00145 C 00075600
00146 3550 DO 3600 PNT=EQNXT,EQEND 00075610
00147 TYPE=EQSRT(PNT)/4096+1 00075620
00148 IF(TYPE.NE.LSTYP) GO TO 3700 00075630
00149 CALL NDT21 ((MOD(EQSRT(PNT),4096)-1)*9+STPGM) 00075640
00150 3600 CONTINUE 00075650
00151 GO TO 6200 00075660
00152 C 00075670
00153 C 00075680
00154 C A NEW GROUP HAS BEEN INDICATED. SET LSTYP AND ADD AN ELEMENT 00075690
00155 C TO THE CHAIN SO THAT THE LOADER MAY IDENTIFY THE START OF 00075700
00156 C THIS GROUP. SET EQNXT TO POINT TO THE FIRST ELEMENT FOR 00075710
00157 C THE GROUP. 00075720
00158 C 00075730
00159 C 00075740
00160 3700 LSTYP=TYPE 00075750
00161 CALL NDT21 (-TYPE) 00075760
00162 EQNXT=PNT 00075770
00163 C 00075780
00164 C 00075790
00165 C EACH NEW GROUP MUST BE CHECKED FOR A REQUIREMENT FOR FURTHER 00075800
00166 C ORDERING. THE 'ACTN' ARRAY INDICATES THE REQUIREMENTS: 00075810
00167 C 00075820
00168 C 0 - THE ORDERING WITHIN THE GROUP IS ARBITRARY. 00075830
NDT62 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 C 1 - THE ELEMENTS OF THE GROUP MUST BE ARRANGED SUCH 00075840
00170 C THAT ALL VARIABLES ARE DEFINED BEFORE USED. 00075850
00171 C 2 - THE ELEMENTS MUST BE ARRANGED AS IN 1 ABOVE AND 00075860
00172 C ELEMENTS MUST BE ADDED TO SOLVE INITIAL VALUES 00075870
00173 C FOR AUXILIARY OR RATE VARIABLES IN N EQUATIONS. 00075880
00174 C 00075890
00175 C 00075900
00176 IF(ACTN(TYPE).EQ.0) GO TO 3550 00075910
00177 C 00075920
00178 C 00075930
00179 C FURTHER ORDERING IS REQUIRED. SRTPT IS THE LAST LOCATION 00075940
00180 C USED IN THE EQSRT ARRAY. THE SYMBOL TABLE IS INITIALIZED 00075950
00181 C TO INDICATE THAT ALL VARIABLES WHOSE TYPE IS LESS THAN THE 00075960
00182 C TYPE OF THE GROUP BEING PROCESSED ARE DEFINED AND ALL OTHERS 00075970
00183 C ARE UNDEFINED. 00075980
00184 C 00075990
00185 C 00076000
00186 SRTPT=EQEND 00076010
00187 DO 3800 I=1,SYMND 00076020
00188 IF(SYMTB(1,I).EQ.32767) GO TO 3800 00076030
00189 SYMTB(5,I)=0 00076040
00190 IF(SYMTB(3,I).LT.TYPE) SYMTB(5,I)=1 00076050
00191 3800 CONTINUE 00076060
00192 C 00076070
00193 C 00076080
00194 C PROCESSING BEGINS WITH THE FOLLOWING LOOP WHICH BUILDS A 00076090
00195 C VARIABLE LENGTH INFORMATION LIST NEEDED FOR PROPER ORDERING. 00076100
00196 C STOP IF A NEW GROUP IS ENCOUNTERED. 00076110
00197 C 00076120
00198 C 00076130
00199 DO 4400 PNT=EQNXT,EQEND 00076140
00200 TYPE=EQSRT(PNT)/4096+1 00076150
00201 IF(TYPE.NE.LSTYP) GO TO 4500 00076160
00202 C 00076170
00203 C 00076180
00204 C INITIALIZE THE REQUIRED POINTERS FOR INITIAL VALUE EQUATIONS. 00076190
00205 C LSTPT IS A POINTER TO THE FIRST LOCATION FOR THE LIST WHICH 00076200
00206 C IS CURRENTLY BEING SCANNED FOR AUXILIARY OR RATE VARIABLES 00076210
00207 C WHOSE INITIAL VALUES MUST BE COMPUTED. IDVPT IS A POINTER 00076220
00208 C TO THE INDEPENDENT VARIABLE BEING EVALUATED IN THE LIST 00076230
00209 C THAT IS BEING SCANNED. 00076240
00210 C 00076250
00211 C 00076260
00212 LSTPT=SRTPT+1 00076270
00213 IDVPT=LSTPT+2 00076280
00214 C 00076290
00215 C 00076300
00216 C THE REQUIRED INFORMATION IS CONTAINED IN THE TOKEN RECORD 00076310
00217 C SO ITS DISK LOCATION IS COMPUTED AND IT IS READ INTO MEMORY. 00076320
00218 C 00076330
00219 C 00076340
00220 REC=(MOD(EQSRT(PNT),4096)-1)*9+STPGM 00076350
00221 3850 READ(DISK'REC) TOKEN 00076360
00222 C 00076370
00223 C 00076380
00224 C THE INFORMATION LISTS CONTAIN: 00076390
NDT62 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 C 00076400
00226 C 1 - THE RECORD NUMBER FOR THE EQUATION 00076410
00227 C 2 - A POINTER TO THE LAST LOCATION USED BY THIS LIST. 00076420
00228 C 3 - A SYMBOL TABLE POINTER FOR THE VARIABLE ON THE 00076430
00229 C LEFT OF THE EQUAL SIGN. 00076440
00230 C 4:N - POINTERS TO THE SYMBOL TABLE FOR EACH VARIABLE 00076450
00231 C WHICH MUST BE DEFINED BEFORE THIS EQUATION CAN 00076460
00232 C BE EVALUATED. 00076470
00233 C 00076480
00234 C 00076490
00235 SRTPT=SRTPT+1 00076500
00236 EQSRT(SRTPT)=REC 00076510
00237 C 00076520
00238 C 00076530
00239 C SRLST IS A POINTER TO THE LAST LOCATION USED BY THIS LIST. 00076540
00240 C THE FOLLOWING LOOP PUTS THE SYMBOL TABLE POINTERS INTO THE 00076550
00241 C LIST IF THEY ARE REQUIRED. 00076560
00242 C 00076570
00243 C 00076580
00244 SRLST=SRTPT+1 00076590
00245 DO 4000 PNT2=4,TOKPT 00076600
00246 C 00076610
00247 C 00076620
00248 C ONLY VARIABLES MAY AFFECT THE EQUATION ORDERING. IF A TOKEN 00076630
00249 C IS NOT FOR A VARIABLE THEN NO ENTRY IS MADE FOR IT IN THE LIST. 00076640
00250 C 00076650
00251 C 00076660
00252 IF(TOKEN(PNT2).LT.0.OR.TOKEN(PNT2).GT.20479) GO TO 4000 00076670
00253 C 00076680
00254 C 00076690
00255 C GET THE SYMBOL TABLE POINTER FROM THE TOKEN. IF THE VARIABLE 00076700
00256 C IS ALREADY DEFINED IT DOESN'T NEED TO BE ADDED TO THE LIST. 00076710
00257 C IF THE VARIABLE IS UNDEFINED AND THE ACTION FOR THIS GROUP 00076720
00258 C IS 1 THEN ADD A POINTER TO THE LIST IF THE VARIABLE TYPE MACTHES 00076730
00259 C THE EQUATION TYPE. IF THE VARIABLE IS UNDEFINED AND THE ACTION 00076740
00260 C CODE IS 2 THEN ADD A POINTER TO THE LIST IF THE VARIABLE IS 00076750
00261 C NOT A SUPPLEMENTARY. 00076760
00262 C 00076770
00263 C 00076780
00264 SYMPT=MOD(TOKEN(PNT2),4096)+1 00076790
00265 IF(SYMTB(5,SYMPT).EQ.1) GO TO 4000 00076800
00266 IF(ACTN(TYPE).EQ.1.AND.SYMTB(3,SYMPT).NE.TYPE) GO TO 4000 00076810
00267 IF(ACTN(TYPE).EQ.2.AND.SYMTB(3,SYMPT).EQ.8) GO TO 4000 00076820
00268 SRLST=SRLST+1 00076830
00269 EQSRT(SRLST)=SYMPT 00076840
00270 4000 CONTINUE 00076850
00271 C 00076860
00272 C 00076870
00273 C UNDEFINED EXPLANATORY VARIABLES WERE ENCOUNTERED. UPDATE 00076880
00274 C THE LIST ELEMENT WHICH POINTS TO THE LAST POINTER IN THIS 00076890
00275 C LIST AND UPDATE SRTPT, THE POINTER TO THE LAST LOCATION USED. 00076900
00276 C 00076910
00277 C 00076920
00278 EQSRT(SRTPT+1)=SRLST 00076930
00279 SRTPT=SRLST 00076940
00280 C 00076950
NDT62 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
00281 C 00076960
00282 C IF THE ACTION CODE IS 1 THEN NO EQUATIONS NEED TO BE ADDED 00076970
00283 C TO EVALUATE INITIAL CONDITIONS. 00076980
00284 C 00076990
00285 C 00077000
00286 IF(ACTN(TYPE).EQ.1) GO TO 4400 00077010
00287 C 00077020
00288 C 00077030
00289 C THE LIST JUST ADDED MUST BE SCANNED FOR VARIABLES WHOSE INITIAL 00077040
00290 C VALUES NEED TO BE COMPUTED. EACH OF THOSE VARIABLES WILL 00077050
00291 C GENERATE A LIST ENTRY WHICH MUST ALSO BE SCANNED. CHECK THE 00077060
00292 C NEXT INDEPENDENT VARIABLE IN THE LIST CURRENTLY BEING SCANNED. 00077070
00293 C 00077080
00294 C 00077090
00295 4010 IDVPT=IDVPT+1 00077100
00296 C 00077110
00297 C 00077120
00298 C IF ALL INDEPENDENT VARIABLES IN THIS LIST HAVE BEEN CHECKED, 00077130
00299 C START ON THE NEXT LIST. 00077140
00300 C 00077150
00301 C 00077160
00302 IF(IDVPT.GT.EQSRT(LSTPT+1)) GO TO 4020 00077170
00303 C 00077180
00304 C 00077190
00305 C IF THE VARIABLE TYPE IS LESS THAN OR EQUAL TO THE TYPE OF 00077200
00306 C THIS GROUP THEN IT IS DEFINED OR WILL HAVE A LIST ENTRY 00077210
00307 C ADDED FOR IT WHEN IT'S EQUATION IS ENCOUNTERED SO AN ENTRY 00077220
00308 C NEED NOT BE MADE. 00077230
00309 C 00077240
00310 C 00077250
00311 SYMPT=EQSRT(IDVPT) 00077260
00312 IF(SYMTB(3,SYMPT).LE.5) GO TO 4010 00077270
00313 C 00077280
00314 C 00077290
00315 C ANOTHER LIST ENTRY MUST BE ADDED FOR THIS VARIABLE UNLESS 00077300
00316 C A LIST ENTRY ALREADY EXISTS FOR THIS VARIABLE. THE RECORD 00077310
00317 C NUMBER IS COMPARED AGAINST THE RECORD NUMBERS OF THE OTHER 00077320
00318 C LIST ENTRIES. 00077330
00319 C 00077340
00320 C 00077350
00321 REC=SYMTB(4,SYMPT) 00077360
00322 PNT2=EQEND+1 00077370
00323 4030 IF(REC.EQ.EQSRT(PNT2)) GO TO 4010 00077380
00324 PNT2=EQSRT(PNT2+1)+1 00077390
00325 C 00077400
00326 C 00077410
00327 C AFTER CHECKING ALL OF THE LISTS AND FINDING NO MATCH, GO 00077420
00328 C BACK AND ADD A NEW LIST ENTRY. 00077430
00329 C 00077440
00330 C 00077450
00331 IF(PNT2.GT.SRTPT) GO TO 3850 00077460
00332 GO TO 4030 00077470
00333 C 00077480
00334 C 00077490
00335 C THE SCAN FOR THIS LIST IS COMPLETE. UPDATE THE LIST POINTER 00077500
00336 C AND INDEPENDENT VARIABLE POINTER FOR THE NEXT LIST. IF NO 00077510
NDT62 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-6
00337 C LISTS REMAIN FOR SCANNING THEN ALL VARIABLES WILL BE EVALUATED 00077520
00338 C TO SOLVE THE ORIGINAL INITIAL VALUE EQUATION. 00077530
00339 C 00077540
00340 C 00077550
00341 4020 LSTPT=IDVPT 00077560
00342 IDVPT=LSTPT+2 00077570
00343 IF(LSTPT.LT.SRTPT) GO TO 4010 00077580
00344 4400 CONTINUE 00077590
00345 C 00077600
00346 C 00077610
00347 C ALL EQUATIONS FOR THE GROUP HAVE EITHER BEEN CHAINED OR HAVE 00077620
00348 C THE REQUIRED ORDERING INFORMATION IN THE LIST ENTRIES. 00077630
00349 C IF A NEW GROUP WAS NOT ENCOUNTERED THEN SET PNT BEYOND 00077640
00350 C THE END OF THE EQUATION ELEMENTS FOR A LATER TEST. 00077650
00351 C THE FIRST EQUATION OF THE NEXT GROUP IS SAVED. 00077660
00352 C 00077670
00353 C 00077680
00354 PNT=EQEND+1 00077690
00355 4500 EQNXT=PNT 00077700
00356 C 00077710
00357 C 00077720
00358 C IF NO LISTS EXIST THEN ALL EQUATIONS WERE CHAINED SO GO BACK 00077730
00359 C AND PROCESS THE NEXT GROUP OF EQUATIONS. 00077740
00360 C 00077750
00361 C 00077760
00362 IF(SRTPT.EQ.EQEND) GO TO 3500 00077770
00363 C 00077780
00364 C 00077790
00365 C LISTS DO EXIST INDICATING THAT EQUATIONS NEED TO BE ORDERED. 00077800
00366 C INITIALIZE SMFLG, THE SIMULTANEOUS EQUATION FLAG, OLDCT AND 00077810
00367 C EQNCT, THE OLD AND NEW EQUATION COUNTERS. 00077820
00368 C 00077830
00369 C 00077840
00370 SMFLG=0 00077850
00371 OLDCT=0 00077860
00372 5000 EQNCT=0 00077870
00373 C 00077880
00374 C 00077890
00375 C INITIALIZE THE LIST POINTER TO THE FIRST LIST AND BEGIN. 00077900
00376 C 00077910
00377 C 00077920
00378 LSTPT=EQEND+1 00077930
00379 C 00077940
00380 C 00077950
00381 C GET THE STARTING AND STOPPING LOCATIONS FOR THE INDEPENDENT 00077960
00382 C VARIABLES FOR THIS EQUATION. IF THE FIRST WORD IN THE LIST 00077970
00383 C IS A ZERO THEN THE EQUATION HAS ALREADY BEEN DEFINED AND THE 00077980
00384 C LIST ENTRY IS TO BE IGNORED. 00077990
00385 C 00078000
00386 C 00078010
00387 5100 START=LSTPT+3 00078020
00388 STOP=EQSRT(LSTPT+1) 00078030
00389 IF(EQSRT(LSTPT).EQ.0) GO TO 6000 00078040
00390 C 00078050
00391 C 00078060
00392 C THIS EQUATION NEEDS TO BE CHECKED. INCREMENT EQNCT TO KEEP 00078070
NDT62 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-7
00393 C TRACK OF HOW MANY EQUATIONS ARE STILL UNRESOLVED. IF A 00078080
00394 C SIMULTANEOUS CONDITION HAS BEEN DETERMINED THEN LIST THIS 00078090
00395 C EQUATION AND IT'S SIMULTANEOUS VARIABLES. 00078100
00396 C 00078110
00397 C 00078120
00398 EQNCT=EQNCT+1 00078130
00399 IF(SMFLG.EQ.0) GO TO 5700 00078140
00400 C 00078150
00401 C 00078160
00402 C PUT THE EQUATION NUMBER INTO THE SMEQN PRINT BUFFER AND SET 00078170
00403 C THE BUFFER POINTER, SMQPT, TO THE LAST LOCATION USED. 00078180
00404 C 00078190
00405 CALL NDT45 ((EQSRT(LSTPT)-STPGM)/9+1,SMEQN(1),1) 00078200
00406 SMQPT=4 00078210
00407 C 00078220
00408 C 00078230
00409 C COPY THE SIMULTANEOUS VARIABLES INTO THE SMEQN BUFFER. 00078240
00410 C 00078250
00411 C 00078260
00412 DO 5400 PNT=START,STOP 00078270
00413 SYMPT=EQSRT(PNT) 00078280
00414 IF(SYMTB(5,SYMPT).EQ.1) GO TO 5400 00078290
00415 CALL NDT41 (SYMTB(1,SYMPT)) 00078300
00416 DO 5200 I=1,6 00078310
00417 IF(SYM(I).EQ.BLANK) GO TO 5300 00078320
00418 SMQPT=SMQPT+1 00078330
00419 5200 SMEQN(SMQPT)=SYM(I) 00078340
00420 5300 SMQPT=SMQPT+1 00078350
00421 SMEQN(SMQPT)=COMMA 00078360
00422 5400 CONTINUE 00078370
00423 C 00078380
00424 C 00078390
00425 C BLANK OUT THE REMAINING BUFFER LOCATIONS AND WRITE THE BUFFER 00078400
00426 C TO THE PRINTER. 00078410
00427 C 00078420
00428 C 00078430
00429 5500 DO 5600 I=SMQPT,80 00078440
00430 5600 SMEQN(I)=BLANK 00078450
00431 CALL NDT57 (1) 00078460
00432 WRITE(PRNTR,5650) SMEQN 00078470
00433 5650 FORMAT(3X,4A1,12X,76A1) 00078480
00434 GO TO 6000 00078490
00435 C 00078500
00436 C 00078510
00437 C EXAMINE ALL OF THE INDEPENDENT VARIABLES. IF ANY OF THEM ARE 00078520
00438 C STILL UNDEFINED THEN THE EQUATION CANNOT BE CHAINED. IF THERE 00078530
00439 C ARE NO UNRESOLVED INDEPENDENT VARIABLES TO BEGIN WITH THEN 00078540
00440 C THE EQUATION MAY BE IMMEDIATELY CHAINED. 00078550
00441 C 00078560
00442 C 00078570
00443 5700 IF(START.GT.STOP) GO TO 5900 00078580
00444 DO 5800 I=START,STOP 00078590
00445 PNT=EQSRT(I) 00078600
00446 IF(SYMTB(5,PNT).EQ.0) GO TO 6000 00078610
00447 5800 CONTINUE 00078620
00448 C 00078630
NDT62 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-8
00449 C 00078640
00450 C ALL OF THE INDEPENDENT VARIABLES WERE DEFINED. THE EQUATION 00078650
00451 C MAY BE CHAINED AND IT'S LIST ENTRY MARKED NOT IN USE. THE 00078660
00452 C DEPENDENT VARIABLE MAY BE MARKED DEFINED. 00078670
00453 C 00078680
00454 C 00078690
00455 5900 CALL NDT21 (EQSRT(LSTPT)) 00078700
00456 EQSRT(LSTPT)=0 00078710
00457 SYMPT=EQSRT(LSTPT+2) 00078720
00458 SYMTB(5,SYMPT)=1 00078730
00459 C 00078740
00460 C 00078750
00461 C GET THE NEXT LIST ENTRY AND EXAMINE IT'S VARIABLES. IF ALL 00078760
00462 C LISTS HAVE BEEN EXAMINED, CHECK FOR SIMULTANEOUS CONDITIONS. 00078770
00463 C SIMULTANEOUS EQUATIONS EXIST IF AFTER EXAMINING ALL OF THE 00078780
00464 C LISTS NO EQUATIONS COULD BE RESOLVED. THIS IS DETERMINED 00078790
00465 C BY COMPARING THE NUMBER OF EQUATIONS IN THE LIST WITH THE 00078800
00466 C NUMBER IN THE LIST BEFORE THE LAST PASS. IF ALL EQUATIONS 00078810
00467 C HAVE BEEN RESOLVED OR THE SIMULTANEOUS CONDITION HAS ALREADY 00078820
00468 C BEEN REPORTED, GO BACK AND PROCESS THE NEXT GROUP. 00078830
00469 C 00078840
00470 C 00078850
00471 6000 LSTPT=STOP+1 00078860
00472 IF(LSTPT.LT.SRTPT) GO TO 5100 00078870
00473 IF(EQNCT.EQ.0.OR.SMFLG.NE.0) GO TO 3500 00078880
00474 IF(EQNCT.NE.OLDCT) GO TO 6100 00078890
00475 C 00078900
00476 C 00078910
00477 C SIMULTANEOUS EQUATIONS EXIST. REPORT THIS CONDITION, SET 00078920
00478 C SMFLG, AND FORCE THE NOGO OPTION IF GO WAS IN EFFECT. 00078930
00479 C 00078940
00480 C 00078950
00481 PNT=LSTYP/2 00078960
00482 CALL NDT57 (5) 00078970
00483 WRITE(PRNTR,6010) (STNAM(I,PNT),I=1,4) 00078980
00484 6010 FORMAT(/' SIMULTANEOUS EQUATIONS HAVE BEEN DETECTED IN THE ', 00078990
00485 14A4,//' EQUATION',10X,'SIMULTANEOUS VARIABLES'/) 00079000
00486 SMFLG=1 00079010
00487 IF(MOD(OPTNS/32,2).EQ.0) OPTNS=OPTNS+32 00079020
00488 C 00079030
00489 C 00079040
00490 C ANOTHER PASS IS REQUIRED. SAVE THE EQUATION COUNT AND 00079050
00491 C GO BACK FOR ANOTHER PASS. 00079060
00492 C 00079070
00493 C 00079080
00494 6100 OLDCT=EQNCT 00079090
00495 GO TO 5000 00079100
00496 C 00079110
00497 C 00079120
00498 C ALL EQUATIONS FOR ALL GROUPS HAVE BEEN PROCESSED. SIGNAL 00079130
00499 C NDT21 TO STOP CHAINING AND SAVE THE LAST BUFFER TO DISK. 00079140
00500 C 00079150
00501 C 00079160
00502 6200 CALL NDT21 (0) 00079170
00503 C 00079180
00504 C 00079190
NDT62 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-9
00505 C IF SIMULTANEOUS EQUATIONS DID OCCUR THEN WE CAN PROCEED 00079200
00506 C NO FURTHER, SO TERMINATE PROCESSING. 00079210
00507 C 00079220
00508 C 00079230
00509 IF(MOD(OPTNS/32,2).EQ.1) STOP 00079240
00510 RETURN 00079250
00511 END 00079270
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 SYMND +24 VTYPE +337 RECNO +347 EQNPT +37
DISK +6 EQSRT +7220 CHNPT +40 STPGM +30 TOKPT +524
BLANK +251 COMMA +330 PRNTR +5 OPTNS +12 LINCT +10
VNUM +346
SUBPROGRAMS CALLED
MOD. NDT45 NDT21 NDT57 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
SAVE 1 STOP 2 EQEND 3 PNT2 4 LSTPT 5
EQNCT 6 SRLST 7 IDVPT 10 FLAG 11 .R0001 12
.R0000 13 STNAM 14 LSTYP 34 .S0007 35 .S0006 36
.S0005 37 .S0004 40 .S0003 41 SMEQN 42 DIST 162
.S0001 163 .S0000 164 SYMPT 165 TYPE 166 .S0015 167
.S0014 170 .S0013 171 .S0012 172 PNT 173 .S0011 174
.S0010 175 OLDCT 176 I 177 .O0004 200 ACTN 201
.O0002 211 SRTPT 212 .O0001 213 SMQPT 214 START 215
SMFLG 216 EQNXT 217 REC 220
TEMPORARIES
.A0016 252 .Q0002 253 .Q0003 254 .Q0004 255
ACTN 28# 41# 176 266 267 286
BLANK 28# 36# 417 430
CARD1 24# 33#
CARD2 24# 33#
CHNPT 28# 36# 129#
COMMA 28# 36# 421
CRSET 24# 33# 36#
DEF 24# 33#
DISK 28# 36# 74 221
DIST 28# 97# 98 98# 99 100 101 105 106
EQCHN 24# 33#
EQEND 28# 84# 85 87 87# 97 101 137 146 186 199 322 354 362
378
EQNCT 28# 372# 398 398# 473 474 494
EQNPT 28# 36# 72 128#
EQNXT 28# 131# 137 146 162# 199 355#
EQSRT 28# 36# 74# 85 107 108 109# 109 110# 147 149 200 220 236#
269# 278# 302 311 323 324 388 389 405 413 445 455 455# 456#
457
ERROR 24# 33#
FCTN 24# 33#
FLAG 28# 102# 103 104# 111#
I 28# 58# 59 60 61 62 63 74 74# 187# 188 189 190 416#
417 419 429# 430 444# 445 483 483#
IDVPT 28# 213# 295 295# 302 311 341 342#
LINCT 28# 36# 44#
LITBL 22# 33# 36#
LSTPT 28# 212# 213 302 341# 342 343 378# 387 388 389 405 455 456
457 471# 472
LSTYP 28# 130# 148 160# 201 481
MOD. 149 220 264 487 509
NDT21 149 161 455 502
NDT41 60 415
NDT45 405
NDT57 431 482
NDT62 5#
OBJCD 24# 33#
OLDCT 28# 371# 474 494#
OPER 24# 33# 36#
OPTNS 28# 36# 487 487# 509
PNT 28# 105# 106 107 108 109 146# 147 149 162 199# 200 220 354#
355 412# 413 445# 446 481# 483
PNT2 28# 106# 107 109 110 245# 252 264 322# 323 324 324# 331
PRNTR 28# 36# 432 483
PTRS 24# 33# 36#
REC 28# 72# 74 220# 221 236 321# 323
RECNO 28# 36# 63
RMAX 22# 33#
RMIN 22# 33#
SAVE 28# 108# 110
SMEQN 28# 405 405# 419# 421# 430# 432
SMFLG 28# 370# 399 473 486#
SMQPT 28# 406# 418 418# 419 420 420# 421 429
SRLST 28# 244# 268 268# 269 278 279
SRTPT 28# 186# 212 235 235# 236 244 278 279# 331 343 362 472
START 28# 71# 73 74 75# 82 82# 83 84 100# 105 387# 412 443
444
STNAM 23# 42# 483
STOP 28# 73# 74 75 83# 84 101# 105 388# 412 443 444 471
STPGM 28# 36# 149 220 405
SUBSC 24# 33#
SYM 24# 33# 36# 417 419
SYMND 28# 36# 58 187
SYMPT 28# 264# 265 266 267 269 311# 312 321 413# 414 415 457# 458
SYMTB 24# 33# 59 60 60# 61# 62# 63# 188 189# 190 190# 265 266
267 312 321 414 415 415# 446 458#
TITLE 24# 33#
TMAP 24# 33#
TOKEN 24# 33# 36# 221# 252 264
TOKPT 28# 36# 245
TYPCT 24# 33#
TYPE 28# 147# 148 160 161 176 190 200# 201 266 267 286
VNUM 28# 36# 62
VTYPE 28# 36# 61
XREF 24# 33#
100P 58 59 64#
2600P 98# 115
2700P 103# 113
3000P 105 107 112#
300P 72 75#
3100P 100 103 114#
310P 84 86#
3200P 99 128#
320P 85 87#
3500P 137# 362 473
3550P 146# 176
3600P 146 150#
3700P 148 160#
3800P 187 188 191#
3850P 221# 331
4000P 245 252 265 266 267 270#
4010P 295# 312 323 343
4020P 302 341#
4030P 323# 332
4400P 199 286 344#
4500P 201 355#
5000P 372# 495
5100P 387# 472
5200P 416 419#
5300P 417 420#
5400P 412 414 422#
5500P 429#
5600P 429 430#
5650P 432 433#
5700P 399 443#
5800P 444 447#
5900P 443 455#
6000P 389 434 446 471#
6010P 483 484#
6100P 474 494#
6200P 137 151 502#
NDT62 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00079280
00002 C PROGRAM AUTHOR - GARY PELKEY 00079290
00003 C 00079300
00004 C 00079310
00005 SUBROUTINE NDT63 (PRFLG,PLFLG) 00079320
00006 C 00079330
00007 C 00079340
00008 C THIS ROUTINE UPDATES OUTPUT DATA FOR PRINT OR PLOT CARDS 00079350
00009 C WHEN CALLED BY NDT64 OR NDT65. 00079360
00010 C 00079370
00011 C 00079380
00012 REAL*8 CMPAR,RMIN,RMAX,VAR(5000), ACCUM,EXTME,RSTME(10) 00079390
00013 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00079400
00014 1SUBSC(6),OUTPT(240),LINE(120),OBJCD(6000) 00079410
00015 INTEGER PRFLG,OUTCT,PLFLG,END,OAB,I,FLOC,TYPE,LOWRN, 00079420
00016 1RUNCT,VPOS,BUFPT,VNUM,SUBHI,FRONT,VARCT,HIPNT,COUNT,HERE, 00079430
00017 2THERE,REC,DISK,J,OCCUR,DSKND 00079440
00018 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE, 00079450
00019 1EXTME,RSTME,ACCUM,VAR 00079460
00020 EQUIVALENCE(VAR(1),OBJCD(1)),(OUTCT,PTRS(10)), 00079470
00021 1(OAB,PTRS(12)),(RUNCT,PTRS(14)),(DISK,PTRS(3)),(DSKND,PTRS(25)) 00079480
00022 C 00079490
00023 C 00079500
00024 C THE MAJOR LOOP IS ONE WHICH CHECKS ALL THE DATA BUFFERS 00079510
00025 C AND SKIPS PROCESSING OF THE ONES WHOSE OUTPUT UPDATE IS 00079520
00026 C NOT REQUESTED. THIS IS DONE BY COMPARING THE FIRST WORD 00079530
00027 C OF EACH DATA BUFFER (TYPE) WITH THE INCOMING ARGUMENTS. 00079540
00028 C 00079550
00029 C 00079560
00030 END=OAB+OUTCT-1 00079570
00031 DO 1000 I=OAB,END 00079580
00032 FLOC=OBJCD(I) 00079590
00033 TYPE=OBJCD(FLOC) 00079600
00034 IF((TYPE.EQ.12.AND.PRFLG.EQ.0).OR.(TYPE.EQ.13.AND.PLFLG.EQ.0)) 00079610
00035 1GO TO 1000 00079620
00036 C 00079630
00037 C 00079640
00038 C PROCESSING FOR A SINGLE DATA BUFFER IS READY. HOWEVER, 00079650
00039 C PROCESSING IS COMPLETELY SKIPPED IF NONE OF THE VARIABLE'S 00079660
00040 C RUN SUBSCRIPTS MATCH THE CURRENT RUNCT. 00079670
00041 C 00079680
00042 C 00079690
00043 OCCUR=OBJCD(FLOC+3) 00079700
00044 IF(MOD(OCCUR/2**(RUNCT-1),2).EQ.0) GO TO 1000 00079710
00045 VARCT=OBJCD(FLOC+1) 00079720
00046 HIPNT=OBJCD(FLOC+5) 00079730
00047 C 00079740
00048 C 00079750
00049 C THE POINTER TO THE 40 WORD BUFFER IS INCREMENTED. IF THE 00079760
00050 C VARIABLES RUN SUBSCRIPT MATCHES RUNCT ITS VALUE IS DEPOSITED 00079770
00051 C IN THE BUFFER AND IT IS COMPARED TO THE PREVIOUS HIGH AND 00079780
00052 C LOW FOR POSSIBLE UPDATING. IF THE SUBSCRIPT DOES NOT MATCH 00079790
00053 C RUNCT, THE POSITION IN THE BUFFER IS SKIPPED OVER, THUS 00079800
00054 C RESERVING ROOM FOR ITS VALUE IN SUBSEQUENT RUNS. 00079810
00055 C 00079820
00056 C 00079830
NDT63 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 DO 500 COUNT=1,VARCT 00079840
00058 OBJCD(FLOC+6)=OBJCD(FLOC+6)+1 00079850
00059 BUFPT=OBJCD(FLOC+6) 00079860
00060 VPOS=FLOC+6+2*COUNT 00079870
00061 IF(OBJCD(VPOS+1).NE.RUNCT) GO TO 400 00079880
00062 VNUM=OBJCD(VPOS) 00079890
00063 VAR(BUFPT)=VAR(VNUM) 00079900
00064 CMPAR=VAR(VNUM) 00079910
00065 IF(CMPAR.LT.0.D0.AND.TYPE.EQ.12) CMPAR=-CMPAR 00079920
00066 SUBHI=HIPNT+2*COUNT-2 00079930
00067 IF(CMPAR.GT.VAR(SUBHI)) VAR(SUBHI)=CMPAR 00079940
00068 IF(CMPAR.LT.VAR(SUBHI+1)) VAR(SUBHI+1)=CMPAR 00079950
00069 C 00079960
00070 C 00079970
00071 C HERE THE BUFFER IS CHECKED TO SEE IF IT IS FULL. IF SO, 00079980
00072 C IT IS WRITTEN OUT TO DISK. IF RUNCT IS GREATER THAN LOWRN, 00079990
00073 C PREVIOUS RUN VARIABLE VALUES ARE SAVED BY READING THE NEXT 00080000
00074 C RECORD BACK INTO THE BUFFER. BUFPT IS SET TO THE FIRST REAL 00080010
00075 C POSITION PRECEEDING THE BUFFER AND THE RECORD POINTER (OBJCD( 00080020
00076 C FLOC+4)) IS UPDATED. 00080030
00077 C 00080040
00078 C 00080050
00079 400 FRONT=HIPNT+2*VARCT-1 00080060
00080 IF((BUFPT-FRONT).LT.40) GO TO 500 00080070
00081 HERE=FRONT+1 00080080
00082 THERE=HERE+39 00080090
00083 OBJCD(FLOC+6)=FRONT 00080100
00084 REC=OBJCD(FLOC+4) 00080110
00085 IF(REC.GT.DSKND) CALL NDT12 (9) 00080120
00086 WRITE(DISK'REC) (VAR(J),J=HERE,THERE) 00080130
00087 REC = REC + OUTCT 00080140
00088 OBJCD(FLOC+4) = REC 00080150
00089 LOWRN=OBJCD(FLOC+2) 00080160
00090 IF(RUNCT.GT.LOWRN) READ(DISK'REC) (VAR(J),J=HERE,THERE) 00080170
00091 C 00080180
00092 C 00080190
00093 C GET THE NEXT VARIABLE IN THIS DATA BUFFER. 00080200
00094 C 00080210
00095 C 00080220
00096 500 CONTINUE 00080230
00097 C 00080240
00098 C 00080250
00099 C GET THE NEXT DATA BUFFER. 00080260
00100 C 00080270
00101 C 00080280
00102 1000 CONTINUE 00080290
00103 RETURN 00080300
00104 END 00080320
EQUIVALENCED VARIABLES
NDT63 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
COMMON BLOCKS
/.COMM./(+24576)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 OUTPT +356 LINE +736
EXTME +1126 RSTME +1130 ACCUM +1154 VAR +1156 OBJCD +1156
OUTCT +15 OAB +17 RUNCT +21 DISK +6 DSKND +34
SUBPROGRAMS CALLED
MOD. NDT12
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
END 1 PRFLG 2 .O0010 3 PLFLG 4 VNUM 5
FRONT 6 VPOS 7 BUFPT 10 VARCT 11 .R0002 12
HIPNT 13 COUNT 14 LOWRN 15 J 16 .S0001 17
.S0000 20 SUBHI 21 THERE 22 TYPE 23 CMPAR 24
OCCUR 26 .O0007 27 .O0006 30 FLOC 31 I 32
.O0003 33 .O0002 34 .O0000 35 HERE 36 REC 37
TEMPORARIES
.A0016 40 .Q0003 41 .Q0004 42
ACCUM 12# 18#
BUFPT 15# 59# 63 80
CMPAR 12# 64# 65 65# 67 68
COUNT 15# 57# 60 66
CRSET 13# 18#
DISK 15# 20# 86 90
DSKND 15# 20# 85
END 15# 30# 31
EXTME 12# 18#
FLOC 15# 32# 33 43 45 46 58 59 60 83 84 88 89
FRONT 15# 79# 80 81 83
HERE 15# 81# 82 86 90
HIPNT 15# 46# 66 79
I 15# 31# 32
J 15# 86 86# 90 90#
LINE 13# 18#
LOWRN 15# 89# 90
MOD. 44
NDT12 85
NDT63 5#
OAB 15# 20# 30 31
OBJCD 13# 20# 32 33 43 45 46 58# 58 59 61 62 83# 84
88# 89
OCCUR 15# 43# 44
OPER 13# 18#
OUTCT 15# 20# 30 87
OUTPT 13# 18#
PLFLG 5# 15# 34
PRFLG 5# 15# 34
PTRS 13# 18# 20#
REC 15# 84# 85 86 87 87# 88 90
RMAX 12# 18#
RMIN 12# 18#
RSTME 12# 18#
RUNCT 15# 20# 44 61 90
SUBHI 15# 66# 67 68
SUBSC 13# 18#
SYM 13# 18#
THERE 15# 82# 86 90
TITLE 13# 18#
TYPE 15# 33# 34 65
VAR 12# 18# 20# 63# 63 64 67 67# 68 68# 86 90#
VARCT 15# 45# 57 79
VNUM 15# 62# 63 64
VPOS 15# 60# 61 62
1000P 31 34 44 102#
400P 61 79#
500P 57 80 96#
NDT63 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1979 - UNIVERSITY OF NOTRE DAME 00080330
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00080340
00003 C 00080350
00004 C 00080360
00005 SUBROUTINE NDT64 00080370
00006 C 00080380
00007 C 00080390
00008 C THIS SUBROUTINE EXECUTES THE NDTRAN OBJECT CODE CHECKING 00080400
00009 C FOR ALL ERROR CONDITIONS WHICH MIGHT RESULT IN LOSS OF 00080410
00010 C CONTROL DUE TO FORTRAN OR SYSTEM ERRORS. IN THE EVENT 00080420
00011 C OF AN ERROR, A MESSAGE I PRINTED GIVING THE SOURCE 00080430
00012 C STATEMENT NUMBER BEING EXECUTED WHEN THE CONDITION 00080440
00013 C WAS DETECTED AND THE TIME. ERROR RECOVERY IS ATTEMPTED 00080450
00014 C WHERE POSSIBLE UNTIL AN EXCESSIVE NUMBER OF ERRORS 00080460
00015 C TERMINATES THE RUN IN PROGRESS. 00080470
00016 C 00080480
00017 C 00080490
00018 REAL*8 RMIN,RMAX,VAR(5000), EXTME,RSTME(10) 00080500
00019 REAL*8 ACCUM,TIME,DT,START,STOP,PRTPR,PLTPR,HAFDT,RKCON, 00080510
00020 1ABCON,ARG1,ARG2,ARG3,ARG4,ARG5,Z,X,RANGE,INDEP,DISP, 00080520
00021 2A,B,C,D,TOLER,TEST 00080530
00022 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00080540
00023 1SUBSC(6),OUTPT(240),LINE(120),OBJCD(6000) 00080550
00024 INTEGER FLAG,OPCOD,RADDR,INTYP,PC,PRTBT,PLTBT,OPRND,VNUM, 00080560
00025 1RERUN,EXPMX,LADDR,VARNM,I,J,COUNT,SUB,PNT,RRUN(80),RUNCT, 00080570
00026 2RRBST,RBFPT,INTBT,REC,DISK,TO,FROM,OBJST,OUTCT,OAB, 00080580
00027 3HERE,THERE,OCBND,STMT,CODE,ERRCT,PRNTR,ERMSG(40) 00080590
00028 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE, 00080600
00029 1EXTME,RSTME,ACCUM,VAR 00080610
00030 EQUIVALENCE (VAR(1),OBJCD(1)) 00080620
00031 EQUIVALENCE (DT,VAR(11)),(TIME,VAR(12)),(STOP,VAR(13)), 00080630
00032 1(START,VAR(14)),(PRTPR,VAR(15)),(PLTPR,VAR(16)), 00080640
00033 2(ARG1,VAR(17)),(ARG2,VAR(18)),(ARG3,VAR(19)), 00080650
00034 3(ARG4,VAR(20)),(ARG5,VAR(21)),(OPRND,VNUM),(PC,PTRS(15)), 00080660
00035 4(RERUN,PTRS(13)),(LADDR,PTRS(19)),(INTYP,PTRS(8)),(RADDR,PTRS(21))00080670
00036 EQUIVALENCE (EXPMX,PTRS(9)),(RUNCT,PTRS(14)), 00080680
00037 1(RRUN(1),OUTPT(1),INTBT),(RRBST,PTRS(36)), 00080690
00038 2(RBFPT,RRUN(2)),(DISK,PTRS(3)),(OBJST,PTRS(17)), 00080700
00039 3(OUTCT,PTRS(10)),(OAB,PTRS(12)),(OCBND,PTRS(44)), 00080710
00040 4(PRNTR,PTRS(2)) 00080720
00041 DATA ERMSG /' ','I','N',' ','S','T','A','T','E','M','E', 00080730
00042 1'N','T',' ',0,0,0,0,' ','A','T',' ','T','I','M','E', 00080740
00043 2' ','=',' ',0,0,0,0,0,0,0,0,0,0,0/ 00080750
00044 C 00080760
00045 C 00080770
00046 C STATEMENT LABEL 10000 IS RETURNED TO AFTER EACH INSTRUCTION 00080780
00047 C THE OPCODE AND ASSOCIATED OPERAND/VNUM ARE COMPUTED, 00080790
00048 C PC IS INCREMENTED, AND A COMPUTED GO TO IS EXECUTED 00080800
00049 C BASED UPON THE OPCODE. THE PROGRAM IS SET UP SO THAT 00080810
00050 C THE STATEMENT LABEL IS ALWAYS THE OPCODE*100+10000. 00080820
00051 C 00080830
00052 C 00080840
00053 C 00080850
00054 10000 OPCOD=OBJCD(PC) 00080860
00055 OPRND=OBJCD(PC+1) 00080870
00056 PC=PC+2 00080880
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 GO TO (10100,10200,10300,10400,10500,10600,10700,10800,10900, 00080890
00058 111000,11100,11200,11300,11400,11500,11600,11700,11800, 00080900
00059 211900,12000,12100,12200,12300,12400,12500,12500,12700, 00080910
00060 312800,12700,13000,13100,13200,13300,13400,13400,13400, 00080920
00061 413400) ,OPCOD 00080930
00062 C**************************************************************** 00080940
00063 C 00080950
00064 C THE LOAD INSTRUCTION. 00080960
00065 C 00080970
00066 C 00080980
00067 10100 ACCUM=VAR(VNUM) 00080990
00068 GO TO 10000 00081000
00069 C 00081010
00070 C**************************************************************** 00081020
00071 C 00081030
00072 C THE STORE INSTRUCTION. (NOTE, THE STORE ZEROS OUT ACCUM) 00081040
00073 C 00081050
00074 C 00081060
00075 10200 VAR(VNUM)=ACCUM 00081070
00076 ACCUM=0.D0 00081080
00077 GO TO 10000 00081090
00078 C 00081100
00079 C**************************************************************** 00081110
00080 C 00081120
00081 C THE ADD INSTRUCTION. 00081130
00082 C 00081140
00083 C NDTRAN FLOATING POINT EXTREMES ARE SETUP SUCH THAT ADDITIONS 00081150
00084 C AND SUBTRACTIONS CANNOT RESULT IN LOSS OF CONTROL DUE TO 00081160
00085 C ERROR CONDITIONS. THE OPERATIONS ARE SIMPLY PERFORMED 00081170
00086 C AND CHECKED FOR NDTRAN OVERFLOW OR UNDERFLOW AFTERWARD.C 00081180
00087 C 00081190
00088 C THE FLOATING POINT MAXIMUM, RMAX ,WITH THE ORIGINAL SIGN 00081200
00089 C IS SUPPLIED AS THE RESULT IN THE CASE OF OVERFLOW. 00081210
00090 C ZERO IS SUPPLIED FOR THE UNDERFLOW CONDITION. 00081220
00091 C 00081230
00092 C 00081240
00093 C 00081250
00094 10300 ACCUM=ACCUM+VAR(VNUM) 00081260
00095 10310 TEST = DABS(ACCUM) 00081270
00096 IF(TEST .LE. RMAX) GO TO 10320 00081280
00097 CODE = 1 00081290
00098 TEST = RMAX 00081300
00099 IF(ACCUM .LT. 0.D0) TEST = -TEST 00081310
00100 ACCUM = TEST 00081320
00101 GO TO 20000 00081330
00102 10320 IF(TEST.GT. RMIN.OR.TEST.EQ.0.D0) GO TO 10000 00081340
00103 CODE = 2 00081350
00104 ACCUM = 0.D0 00081360
00105 GO TO 20000 00081370
00106 C**************************************************************** 00081380
00107 C 00081390
00108 C THE SUBTRACT INSTRUCTION. 00081400
00109 C 00081410
00110 C 00081420
00111 10400 ACCUM=ACCUM - VAR(VNUM) 00081430
00112 GO TO 10310 00081440
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 C**************************************************************** 00081450
00114 C 00081460
00115 C THE MULTIPLY INSTRUCTION. 00081470
00116 C 00081480
00117 C 00081490
00118 C IF BOTH OPERANDS ARE NON-ZERO THEN LOSS OF CONTROL COULD 00081500
00119 C RESULT BY PERFORMING THE MULTIPLICATION. THEREFORE, 00081510
00120 C BEFORE PERFORMING THE OPERATION WE MUST DETERMINE 00081520
00121 C WHETHER IT IS SAFE TO DO SO. IF THE SUM OF THE CHARACTERISTICS 00081530
00122 C OF THE OPERANDS IS WITHIN THE LIMITS OF EXPMX, THE 00081540
00123 C EXTREMUM CHARACTERISTIC, THEN NO ERROR WILL OCCUR. 00081550
00124 C 00081560
00125 C 00081570
00126 C IF THE SUM IS GREATER THAN EXPMX THEN OVERFLOW WOULD 00081580
00127 C OCCUR AND NDTRAN SUPPLIES THE FLOATING POINT MAXIMUM 00081590
00128 C VALUE WITH THE SIGN OF THE WOULD-BE PRODUCT. Q SUM 00081600
00129 C LESS THAN -EXPMX INDICATES UNDERFLOW FOR WHICH A 00081610
00130 C ZERO PRODUCT IS SUPPLIED. 00081620
00131 C 00081630
00132 C 00081640
00133 10500 A = ACCUM 00081650
00134 B = VAR(VNUM) 00081660
00135 IF(A .EQ. 0.D0 .OR. B .EQ. 0.D0) GO TO 10510 00081670
00136 TEST = DLOG10(DABS(A)) + DLOG10(DABS(B)) 00081680
00137 IF(TEST .GT. FLOAT(EXPMX)) GO TO 10520 00081690
00138 IF(TEST .LT. FLOAT(-EXPMX)) GO TO 10530 00081700
00139 10510 ACCUM = A*B 00081710
00140 GO TO 10000 00081720
00141 10520 CODE = 1 00081730
00142 ACCUM = RMAX *(A/DABS(A)) *(B/DABS(B)) 00081740
00143 GO TO 20000 00081750
00144 10530 CODE = 2 00081760
00145 ACCUM = 0.D0 00081770
00146 GO TO 20000 00081780
00147 C 00081790
00148 C**************************************************************** 00081800
00149 C 00081810
00150 C THE DIVIDE INSTRUCTION. 00081820
00151 C 00081830
00152 C 00081840
00153 C BEFORE PERFORMING A DIVISION WE MUST CHECK FOR POTENTIAL 00081850
00154 C ERROR CONDITIONS. 00081860
00155 C 00081870
00156 C IN THE EVENT OF A ZERO DIVISOR, THE OPERATION IS NOT 00081880
00157 C PERFORMED AND THE DIVIDEND IS PROVIDED AS THE RESULT. 00081890
00158 C 00081900
00159 C IF THE DIFFERENCE OF THE CHARACTERISTICS OF THE DIVIDEND 00081910
00160 C AND THE DIVISOR IS WITHIN EXPMX LIMITS THEN THE OPERATION 00081920
00161 C MAY BE SAFELY PERFORMED. 00081930
00162 C 00081940
00163 C IF THE DIFFERENCE EXCEEDS EXPMX, THEN OVERFLOW WOULD 00081950
00164 C OCCUR AND NDTRAN SUPPLIES THE MAXIMUM VALUE WITH THE 00081960
00165 C SIGN OF THE WOULD BE QUOTIENT. IF THE DIFFERENCE 00081970
00166 C IS LESS THAN -EXPMX, THEN UNDERFLOW WOULD OCCUR AND 00081980
00167 C A ZERO RESULT IS SUPPLIED. 00081990
00168 C 00082000
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 C 00082010
00170 C 00082020
00171 10600 A = ACCUM 00082030
00172 B = VAR(VNUM) 00082040
00173 10610 CODE = 3 00082050
00174 ACCUM = A 00082060
00175 IF(B .EQ. 0.D0) GO TO 20000 00082070
00176 ACCUM = 0.D0 00082080
00177 IF(A .EQ. 0.D0) GO TO 10000 00082090
00178 TEST = DLOG10(DABS(A)) - DLOG10(DABS(B)) 00082100
00179 IF(TEST .GT. FLOAT(EXPMX)) GO TO 10520 00082110
00180 IF(TEST .LT. FLOAT(-EXPMX)) GO TO 10530 00082120
00181 ACCUM = A / B 00082130
00182 GO TO 10000 00082140
00183 C 00082150
00184 C**************************************************************** 00082160
00185 C 00082170
00186 C THE EXPONENTIATE INSTRUCTION. 00082180
00187 C 00082190
00188 C 00082200
00189 10700 B = ACCUM 00082210
00190 A = VAR(VNUM) 00082220
00191 10710 ACCUM=1.D0 00082222
00192 IF(A .EQ. 0.D0) GOTO 10000 00082224
00193 ACCUM=0.D0 00082226
00194 IF (B) 10720,10000,10740 00082230
00195 10740 ACCUM = DEXP(A*DLOG(B)) 00082240
00196 GO TO 10000 00082250
00197 10720 ACCUM = DEXP(A*DLOG(-B))*DFLOAT(1-MOD(IDINT(DABS(A)+.5),2)*2) 00082260
00198 GO TO 10000 00082270
00199 C 00082280
00200 C**************************************************************** 00082290
00201 C 00082300
00202 C THE REVERSE SUBTRACT INSTRUCTION. 00082310
00203 C 00082320
00204 C 00082330
00205 10800 ACCUM=VAR(VNUM)-ACCUM 00082340
00206 GO TO 10310 00082350
00207 C 00082360
00208 C**************************************************************** 00082370
00209 C 00082380
00210 C THE REVERSE DIVIDE INSTRUCTION. 00082390
00211 C 00082400
00212 C 00082410
00213 10900 A = VAR(VNUM) 00082420
00214 B = ACCUM 00082430
00215 GO TO 10610 00082440
00216 C 00082450
00217 C**************************************************************** 00082460
00218 C 00082470
00219 C THE REVERSE EXPONENTIATE INSTRUCTION. 00082480
00220 C 00082490
00221 C 00082500
00222 11000 B=VAR(VNUM) 00082510
00223 A=ACCUM 00082520
00224 GO TO 10710 00082530
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 C 00082540
00226 C**************************************************************** 00082550
00227 C 00082560
00228 C THE INITIALIZATION INSTRUCTION. 00082570
00229 C 00082580
00230 C 00082590
00231 11100 PC=RADDR 00082600
00232 ERRCT = 0 00082610
00233 FLAG=4 00082620
00234 RKCON=DT/6.D0 00082630
00235 ABCON=DT/24.D0 00082640
00236 HAFDT=DT/2.D0 00082650
00237 TOLER=DT/2.1D0 00082660
00238 DO 11110 I=1,OUTCT 00082670
00239 SUB=OAB+I-1 00082680
00240 SUB=OBJCD(SUB) 00082690
00241 IF(MOD(OBJCD(SUB+3)/2**(RUNCT-1),2).EQ.0) GO TO 11110 00082700
00242 OBJCD(SUB+6)=OBJCD(SUB+5)+2*OBJCD(SUB+1)-1 00082710
00243 REC=OBJCD(SUB+4) 00082720
00244 IF(REC.EQ.OCBND+I) GO TO 11110 00082730
00245 HERE=OBJCD(SUB+6)+1 00082740
00246 THERE=HERE+39 00082750
00247 WRITE(DISK'REC) (VAR(J),J=HERE,THERE) 00082760
00248 REC=OCBND+I 00082770
00249 READ(DISK'REC) (VAR(J),J=HERE,THERE) 00082780
00250 OBJCD(SUB+4)=REC 00082790
00251 11110 CONTINUE 00082800
00252 GO TO 10000 00082810
00253 C 00082820
00254 C**************************************************************** 00082830
00255 C 00082840
00256 C THE TIME INSTRUCTION. 00082850
00257 C 00082860
00258 C 00082870
00259 11200 IF(FLAG.NE.4.AND.(INTYP.EQ.2.OR.(INTYP.EQ.3.AND.TIME-START 00082880
00260 1 .LT.3.D0*DT))) GO TO 11250 00082890
00261 PRTBT=0 00082900
00262 PLTBT=0 00082910
00263 IF(PRTPR.EQ.0.D0) GO TO 11211 00082920
00264 IF(DABS(TIME/PRTPR-IDINT(TIME/PRTPR 00082930
00265 1+.5D0)).LE.TOLER/PRTPR) PRTBT=1 00082940
00266 11211 IF(PLTPR.EQ.0.D0) GO TO 11212 00082950
00267 IF(DABS(TIME/PLTPR-IDINT(TIME/PLTPR 00082960
00268 1+.5D0)).LE.TOLER/PLTPR) PLTBT=1 00082970
00269 11212 IF(PRTBT.EQ.1.OR.PLTBT.EQ.1) CALL NDT63 (PRTBT,PLTBT) 00082980
00270 IF(TIME.LT.STOP-TOLER) GO TO 11250 00082990
00271 PC=RERUN 00083000
00272 GO TO 10000 00083010
00273 11250 PC=LADDR 00083020
00274 ARG1=1.D0 00083030
00275 IF(INTYP.EQ.2.OR.(INTYP.EQ.3.AND.(TIME-START.LT.3.1D0*DT))) 00083040
00276 1 FLAG=MOD(FLAG,4)+1 00083050
00277 VARNM=12 00083060
00278 GO TO 11601 00083070
00279 C 00083080
00280 C**************************************************************** 00083090
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
00281 C 00083100
00282 C THE RERUN INSTRUCTION. 00083110
00283 C 00083120
00284 C 00083130
00285 11300 RUNCT=RUNCT+1 00083140
00286 RERUN=RERUN+2 00083150
00287 PC=OBJST 00083160
00288 C 00083170
00289 C THE RERUN CHANGES THEMSELVES ARE MADE. 00083180
00290 C 00083190
00291 REC=RRBST+RUNCT-2 00083200
00292 READ(DISK'REC) RRUN 00083210
00293 IF(INTBT.NE.0) INTYP=INTBT 00083220
00294 IF(RBFPT.EQ.2) GO TO 10000 00083230
00295 DO 11350 I=3,RBFPT,2 00083240
00296 TO=RRUN(I) 00083250
00297 FROM=RRUN(I+1) 00083260
00298 11350 VAR(TO)=VAR(FROM) 00083270
00299 GO TO 10000 00083280
00300 C 00083290
00301 C**************************************************************** 00083300
00302 C 00083310
00303 C THE STOP INSTRUCTION. 00083320
00304 C 00083330
00305 C 00083340
00306 11400 RETURN 00083350
00307 C 00083360
00308 C**************************************************************** 00083370
00309 C 00083380
00310 C THE STMT INSTRUCTION 00083390
00311 C 00083400
00312 11500 STMT = OPRND 00083410
00313 GO TO 10000 00083420
00314 C**************************************************************** 00083430
00315 C 00083440
00316 C THE INTEGRATE INSTRUCTION. 00083450
00317 C 00083460
00318 C 00083470
00319 11600 VARNM=OBJCD(PC+1) 00083480
00320 C 00083490
00321 C**************************************************************** 00083500
00322 C 00083510
00323 C BRANCH TO THE CORRECT INTEGRATOR. 00083520
00324 C 00083530
00325 C 00083540
00326 11601 GO TO (11610,11620,11650),INTYP 00083550
00327 C 00083560
00328 C**************************************************************** 00083570
00329 C 00083580
00330 C EULER INTEGRATION-------- 00083590
00331 C 00083600
00332 C 00083610
00333 11610 ACCUM = VAR(VARNM) + DT * ARG1 00083620
00334 IGO=1 00083625
00335 GO TO 11697 00083630
00336 C 00083640
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-6
00337 C 00083650
00338 C**************************************************************** 00083660
00339 C RUNGE-KUTTA INTEGRATION-------- 00083670
00340 C 00083680
00341 C 00083690
00342 11620 GO TO (11625,11630,11635,11640),FLAG 00083700
00343 11625 VAR(OPRND)=VAR(VARNM) 00083710
00344 VAR(OPRND+1)=ARG1 00083720
00345 ACCUM=VAR(OPRND)+HAFDT*ARG1 00083730
00346 GO TO 11699 00083740
00347 11630 VAR(OPRND+2)=ARG1 00083750
00348 ACCUM=VAR(OPRND)+HAFDT*ARG1 00083760
00349 GO TO 11699 00083770
00350 11635 VAR(OPRND+3)=ARG1 00083780
00351 ACCUM=VAR(OPRND)+DT*ARG1 00083790
00352 GO TO 11699 00083800
00353 11640 ACCUM=VAR(OPRND)+RKCON*(VAR(OPRND+1)+2.D0*VAR(OPRND+2) 00083810
00354 1+2.D0*VAR(OPRND+3)+ARG1) 00083820
00355 GO TO 11699 00083830
00356 C 00083840
00357 C**************************************************************** 00083850
00358 C 00083860
00359 C ADAMS-BASHFORTH INTEGRATION------- 00083870
00360 C 00083880
00361 C 00083890
00362 11650 IF(FLAG.NE.1) GO TO 11620 00083900
00363 COUNT=(TIME-START)/DT+1.1D0 00083910
00364 IF(COUNT.GT.3) GO TO 11670 00083920
00365 SUB=COUNT+OPRND+3 00083930
00366 VAR(SUB)=ARG1 00083940
00367 GO TO 11620 00083950
00368 11670 ACCUM=VAR(VARNM)+ABCON*(55.D0*ARG1-59.D0*VAR(OPRND+6) 00083960
00369 1+37.D0*VAR(OPRND+5)-9.D0*VAR(OPRND+4)) 00083970
00370 VAR(OPRND+4)=VAR(OPRND+5) 00083980
00371 VAR(OPRND+5)=VAR(OPRND+6) 00083990
00372 VAR(OPRND+6)=ARG1 00084000
00373 11699 IGO=1 00084010
00374 TEST=DABS(ACCUM) 00084011
00375 IF(TEST.LE.RMAX) GO TO 11698 00084012
00376 CODE=1 00084013
00377 TEST=RMAX 00084014
00378 IF(ACCUM.LT.0D0) TEST=-TEST 00084015
00379 ACCUM=TEST 00084016
00380 IGO=2 00084017
00381 GO TO 11697 00084018
00382 11698 IF(TEST.GT.RMIN.OR.TEST.EQ.0D0) GO TO 11697 00084019
00383 CODE=2 00084020
00384 ACCUM=0.D0 00084021
00385 IGO=2 00084022
00386 C 00084030
00387 C THE TIME INSTRUCTION IS NOT FOLLOWED BY A STORE. THEREFORE, 00084040
00388 C IF TIME WAS JUST INTEGRATED, THE STORE MUST BE DONE HERE 00084050
00389 C BEFORE THE NEXT INSTRUCTION IS EXECUTED. 00084060
00390 C 00084070
00391 C 00084080
00392 11697 IF(OPCOD.NE.12.AND.OPCOD.NE.28) GO TO (10000,20000),IGO 00084085
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-7
00393 VAR(VARNM)=ACCUM 00084090
00394 IF(OPCOD.EQ.12) ACCUM=0.D0 00084100
00395 GO TO (10000,20000), IGO 00084110
00396 C 00084120
00397 C**************************************************************** 00084130
00398 C 00084140
00399 C THE ABSOLUTE VALUE FUNCTION. 00084150
00400 C 00084160
00401 C 00084170
00402 11700 ACCUM=DABS(ARG1) 00084180
00403 GO TO 10000 00084190
00404 C 00084200
00405 C**************************************************************** 00084210
00406 C 00084220
00407 C THE CLIP FUNCTION. 00084230
00408 C 00084240
00409 C 00084250
00410 11800 ACCUM=ARG1 00084260
00411 IF(ARG3.LT.ARG4) ACCUM=ARG2 00084270
00412 GO TO 10000 00084280
00413 C 00084290
00414 C**************************************************************** 00084300
00415 C 00084310
00416 C THE COSINE FUNCTION. 00084320
00417 C 00084330
00418 C 00084340
00419 11900 ACCUM=DCOS(ARG1) 00084350
00420 GO TO 10000 00084360
00421 C 00084370
00422 C**************************************************************** 00084380
00423 C 00084390
00424 C THE DELAY FUNCTION. 00084400
00425 C 00084410
00426 C 00084420
00427 12000 GO TO 10000 00084430
00428 C**************************************************************** 00084440
00429 C 00084450
00430 C THE EXP FUNCTION. 00084460
00431 C 00084470
00432 C 00084480
00433 12100 IF(ARG1 .LT. 2.3025851D0 * DFLOAT(EXPMX)) GO TO 12110 00084481
00434 CODE = 1 00084482
00435 ACCUM = RMAX 00084483
00436 GO TO 20000 00084484
00437 12110 ACCUM = DEXP(ARG1) 00084485
00438 GO TO 10000 00084486
00439 C 00084510
00440 C**************************************************************** 00084520
00441 C 00084530
00442 C THE NATURAL LOG FUNCTION. 00084540
00443 C 00084550
00444 C 00084560
00445 12200 IF(ARG1 .GT. 0.D0) GO TO 12210 00084570
00446 CODE = 5 00084580
00447 ACCUM = 0.D0 00084590
00448 GO TO 20000 00084600
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-8
00449 12210 ACCUM = DLOG(ARG1) 00084610
00450 GO TO 10000 00084620
00451 C 00084630
00452 C**************************************************************** 00084640
00453 C 00084650
00454 C THE MAX FUNCTION. 00084660
00455 C 00084670
00456 C 00084680
00457 12300 ACCUM=ARG1 00084690
00458 IF(ARG2.GT.ARG1) ACCUM=ARG2 00084700
00459 GO TO 10000 00084710
00460 C 00084720
00461 C**************************************************************** 00084730
00462 C 00084740
00463 C THE MIN FUNCTION. 00084750
00464 C 00084760
00465 C 00084770
00466 12400 ACCUM=ARG1 00084780
00467 IF(ARG2.LT.ARG1) ACCUM=ARG2 00084790
00468 GO TO 10000 00084800
00469 C 00084810
00470 C**************************************************************** 00084820
00471 C 00084830
00472 C THE RANDOM NUMBER GENERATOR (NOISE). 00084840
00473 C 00084850
00474 C 00084860
00475 12500 IF(TIME.GT.START) GO TO 12540 00084870
00476 IF(ARG1.GT.100000.D0.OR.ARG1.LT.1.D0) ARG1=50000.D0 00084880
00477 VAR(OPRND)=ARG1 00084890
00478 12540 Z=899.D0*VAR(OPRND) 00084900
00479 I=Z/65536.D0 00084910
00480 VAR(OPRND)=Z-FLOAT(I)*65536.D0 00084920
00481 ACCUM=VAR(OPRND)/65536.D0 00084930
00482 IF(OPCOD.EQ.25) GO TO 10000 00084940
00483 C 00084950
00484 C**************************************************************** 00084960
00485 C 00084970
00486 C THE NORMALIZED RANDOM NUMBER GENERATOR (NORMN). 00084980
00487 C 00084990
00488 C 00085000
00489 X=2.D0*ACCUM-1.D0 00085010
00490 ACCUM=(((-.38709D0*X*X-.80611D0)*X*X)+(1.24056D0)*X/1.D0-X*X) 00085020
00491 1*ARG3+ARG2 00085030
00492 GO TO 10000 00085040
00493 C 00085050
00494 C**************************************************************** 00085060
00495 C 00085070
00496 C THE PULSE AND SAMPLE FUNCTIONS. 00085080
00497 C 00085090
00498 C 00085100
00499 12700 IF(TIME.NE.START) GO TO 12710 00085110
00500 IF(OPCOD.EQ.29.OR.ARG3.LT.START) GO TO 12725 00085120
00501 VAR(OPRND)=ARG3 00085130
00502 12710 ACCUM=0.D0 00085140
00503 IF(VAR(OPRND).LT.0.D0) GO TO 12750 00085150
00504 IF(VAR(OPRND)-TIME.GT.TOLER.OR.INTYP.EQ.2.AND.FLAG.NE.4)GOTO10000 00085160
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-9
00505 12725 VAR(OPRND)=-(TIME+ARG2) 00085170
00506 VAR(OPRND+1)=ARG1 00085180
00507 ACCUM=ARG1 00085190
00508 GO TO 10000 00085200
00509 12750 IF(-VAR(OPRND).LT.TIME+TOLER) GO TO 12775 00085210
00510 ACCUM=VAR(OPRND+1) 00085220
00511 GO TO 10000 00085230
00512 12775 IF(OPCOD.EQ.29) GO TO 12725 00085240
00513 IF(ARG4.LT.TOLER) ARG4=STOP+1 00085250
00514 VAR(OPRND)=TIME+ARG4 00085260
00515 GO TO 10000 00085270
00516 C 00085280
00517 C**************************************************************** 00085290
00518 C 00085300
00519 C THE RAMP FUNCTION. 00085310
00520 C 00085320
00521 12800 IF(TIME.EQ.START) VAR(OPRND+7)=0.D0 00085330
00522 IF(TIME-ARG2.GT.TOLER) GO TO 12850 00085340
00523 ACCUM=VAR(OPRND+7) 00085350
00524 GO TO 10000 00085360
00525 12850 VARNM=OPRND+7 00085370
00526 GO TO 11601 00085380
00527 C 00085390
00528 C**************************************************************** 00085400
00529 C 00085410
00530 C THE SINE FUNCTION. 00085420
00531 C 00085430
00532 C 00085440
00533 13000 ACCUM=DSIN(ARG1) 00085450
00534 GO TO 10000 00085460
00535 C 00085470
00536 C**************************************************************** 00085480
00537 C 00085490
00538 C THE SQUARE ROOT FUNCTION. 00085500
00539 C 00085510
00540 C 00085520
00541 13100 IF(ARG1 .GE. 0.D0) GO TO 13110 00085530
00542 CODE = 6 00085540
00543 ACCUM = 0.D0 00085550
00544 GO TO 20000 00085560
00545 13110 ACCUM = DSQRT(ARG1) 00085570
00546 GO TO 10000 00085580
00547 C 00085590
00548 C**************************************************************** 00085600
00549 C 00085610
00550 C THE STEP FUNCTION. 00085620
00551 C 00085630
00552 C 00085640
00553 13200 ACCUM=0.D0 00085650
00554 IF(ARG2-TIME.LE.TOLER) ACCUM=ARG1 00085660
00555 GO TO 10000 00085670
00556 C 00085680
00557 C**************************************************************** 00085690
00558 C 00085700
00559 C THE SWITCH FUNCTION. 00085710
00560 C 00085720
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-10
00561 C 00085730
00562 13300 ACCUM=ARG1 00085740
00563 IF(ARG3.LE.0.D0) ACCUM=ARG2 00085750
00564 GO TO 10000 00085760
00565 C 00085770
00566 C**************************************************************** 00085780
00567 C**************************************************************** 00085790
00568 C**************************************************************** 00085800
00569 C 00085810
00570 C THE TABLE FUNCTIONS: TABFL, TABHL, TABLE, AND TABND. 00085820
00571 C 00085830
00572 C 00085840
00573 C GET THE TABLE ADDRESS AND THE NO. OF ELEMENTS IN THE TABLE. 00085850
00574 C 00085860
00575 C 00085870
00576 13400 PNT=ARG1 00085880
00577 COUNT=VAR(PNT) 00085890
00578 C 00085900
00579 C 00085910
00580 C IF THERE IS ONLY ONE ELEMENT IN THE TABLE OUTPUT THAT VALUE. 00085920
00581 C 00085930
00582 C 00085940
00583 IF(COUNT.NE.1) GO TO 13410 00085950
00584 ACCUM=VAR(PNT+1) 00085960
00585 GO TO 10000 00085970
00586 C 00085980
00587 C 00085990
00588 C THE TABLE HAS MORE THAN ONE VALUE. CHECK THE INDEPENDENT 00086000
00589 C VARIABLE AGAINST THE SUPPLIED BOUNDS. IF IT IS OUT OF BOUNDS 00086010
00590 C THE RESULT IS DEPENDENT ON WHICH TABLE FUNCTION WAS USED. 00086020
00591 C 00086030
00592 C 00086040
00593 13410 OPCOD=OPCOD-33 00086050
00594 IF(ARG2.LT.ARG3) GO TO (13550,13530,13420,13560),OPCOD 00086060
00595 IF(ARG2.GT.ARG4) GO TO (13550,13540,13420,13570),OPCOD 00086070
00596 C 00086080
00597 C 00086090
00598 C MAP THE INDEPENDENT VARIABLE'S RANGE ONTO THE TABLE'S RANGE 00086100
00599 C AND SELECT THE TABLE ELEMENT WHOSE PERCENT DISPLACEMENT 00086110
00600 C FROM THE FIRST ELEMENT IS CLOSEST TO BUT NOT HIGHER THAN 00086120
00601 C THE PERCENT DISPLACEMENT OF THE INDEPENDENT VARIABLE FROM 00086130
00602 C IT'S LOWER BOUND. 00086140
00603 C 00086150
00604 C 00086160
00605 13420 DPCT=(ARG2-ARG3)/(ARG4-ARG3) 00086170
00606 I=PNT+1+IDINT(DPCT*DFLOAT(COUNT-1)) 00086180
00607 C 00086190
00608 C**************************************************************** 00086200
00609 C IF TABHL WAS REQUESTED OR THE TABLE ONLY HAS TWO ELEMENTS 00086210
00610 C THEN INTERPOLATE. 00086220
00611 C 00086230
00612 C 00086240
00613 IF(OPCOD.NE.2.AND.COUNT.NE.2) GO TO 13500 00086250
00614 IF(I.EQ.PNT+COUNT) I=I-1 00086260
00615 DISP=DPCT*DFLOAT(COUNT-1)-DFLOAT(I-PNT-1) 00086270
00616 ACCUM=DISP*(VAR(I+1)-VAR(I))+VAR(I) 00086280
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-11
00617 GO TO 10000 00086290
00618 C 00086300
00619 C**************************************************************** 00086310
00620 C ONE OF THE THIRD ORDER TABLE FUNCTIONS WAS REQUESTED. 00086320
00621 C IF THE TABLE ONLY HAS THREE ELEMENTS THEN A SECOND ORDER 00086330
00622 C CURVE FIT IS THE BEST WE CAN DO. 00086340
00623 C 00086350
00624 C 00086360
00625 13500 IF(COUNT.NE.3) GO TO 13510 00086370
00626 I=PNT+1 00086380
00627 A=0.D0 00086390
00628 D=VAR(I+2) 00086400
00629 B=(D+VAR(I))/2.D0-VAR(I+1) 00086410
00630 C=(D-VAR(I))/2.D0+2.D0*B 00086420
00631 GO TO 13520 00086430
00632 C 00086440
00633 C**************************************************************** 00086450
00634 C 00086460
00635 C A THIRD ORDER CURVE FIT IS PERFORMED AS THE TABLE CONTAINS 00086470
00636 C A SUFFICIENT NUMBER OF ELEMENTS. FOUR ELEMENT VALUES ARE 00086480
00637 C USED INCLUDING THE ONE BEFORE THE ELEMENT PREVIOUSLY SELECTED 00086490
00638 C AND TWO AFTER THAT ELEMENT. IF THE ELEMENT SELECTED DOES NOT 00086500
00639 C HAVE ONE ELEMENT BEFORE IT OR TWO AFTER THEN THE INDEPENDENT 00086510
00640 C VARIABLE IS CLOSE TO ONE OF IT'S BOUNDS SO USE THE LAST OR 00086520
00641 C FIRST FOUR ELEMENTS DEPENDING ON WHICH BOUND IS INVOLVED. 00086530
00642 C 00086540
00643 C 00086550
00644 13510 IF(I.LT.PNT+2) I=PNT+2 00086560
00645 IF(I.GT.PNT+COUNT-2) I=PNT+COUNT-2 00086570
00646 D=VAR(I) 00086580
00647 B=(VAR(I-1)+VAR(I+1)-2.D0*D)/2.D0 00086590
00648 C=(8.D0*VAR(I+1)-7.D0*D-VAR(I+2)-4.D0*B)/6.D0 00086600
00649 A=B-C+D-VAR(I-1) 00086610
00650 13520 DISP=DPCT*DFLOAT(COUNT-1)-DFLOAT(I-PNT-1) 00086620
00651 ACCUM=((A*DISP+B)*DISP+C)*DISP+D 00086630
00652 GO TO 10000 00086640
00653 13530 ARG2=ARG3 00086650
00654 GO TO 13420 00086660
00655 13540 ARG2=ARG4 00086670
00656 GO TO 13420 00086680
00657 13550 SUB = PNT + COUNT 00086690
00658 ACCUM=(ARG2-ARG3)/(ARG4-ARG3)*(VAR(SUB)-VAR(PNT+1))+VAR(PNT+1) 00086700
00659 GO TO 10000 00086710
00660 13560 SUB = PNT + 2 00086720
00661 ACCUM=(ARG2-ARG3)/(ARG4-ARG3)*DFLOAT(COUNT-1)* 00086730
00662 1 (VAR(SUB)-VAR(SUB-1)) + VAR(SUB-1) 00086740
00663 GO TO 10000 00086750
00664 13570 SUB = PNT + COUNT 00086760
00665 ACCUM=(ARG2-ARG4)/(ARG4-ARG3)*DFLOAT(COUNT-1)* 00086770
00666 1 (VAR(SUB)-VAR(SUB-1)) + VAR(SUB) 00086780
00667 GO TO 10000 00086790
00668 C**************************************************************** 00086800
00669 C**************************************************************** 00086810
00670 C**************************************************************** 00086820
00671 C 00086840
00672 C 00086850
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-12
00673 C 00086860
00674 C AN EXECUTION TIME ERROR HAS OCCURRED. IF IT IS THE FIRST 00086870
00675 C ERROR OF THE RUN, THEN PRINT A HEADER IDENTIFYING THE RUN. 00086880
00676 C IF 10 ERRORS HAVE OCCURRED THEN TERMINATE THE RUN. TELL THE 00086890
00677 C USER , AND BEGIN THE NEXT RUN. 00086900
00678 C 00086910
00679 C 00086920
00680 20000 IF(ERRCT .NE. 0) GO TO 20020 00086930
00681 CALL NDT78(3) 00086940
00682 WRITE(PRNTR,20010) RUNCT 00086950
00683 20010 FORMAT(/' ERRORS DURING RUN', I2,':'/) 00086960
00684 20020 ERRCT = ERRCT + 1 00086970
00685 IF(ERRCT .LE. 10) GO TO 20040 00086980
00686 CALL NDT78(3) 00086990
00687 WRITE(PRNTR,20030) 00087000
00688 20030 FORMAT(/'RUN',I2,' IS BEING TERMINATED DUE TO THE', 00087010
00689 A' EXCESSIVE NUMBER OF ERRORS.') 00087020
00690 RSTME(RUNCT) = TIME 00087030
00691 PC = RERUN 00087040
00692 GO TO 10000 00087050
00693 20040 CALL NDT78(1) 00087060
00694 CALL NDT45(STMT,ERMSG(15),1) 00087070
00695 CALL NDT44(TIME,ERMSG(30)) 00087080
00696 GO TO (20100,20200,20300,20400,20500,20600,20700,20800),CODE 00087090
00697 20100 WRITE(PRNTR,20110) ERMSG 00087100
00698 20110 FORMAT(' OVERFLOW HAS OCCURRED ',40A1) 00087110
00699 GO TO 10000 00087120
00700 20200 WRITE(PRNTR,20210) ERMSG 00087130
00701 20210 FORMAT(' UNDERFLOW HAS OCCURRED', 40A1) 00087140
00702 GO TO 10000 00087150
00703 20300 WRITE(PRNTR,20310) ERMSG 00087160
00704 20310 FORMAT(' DIVISION BY ZERO HAS OCCURRED', 40A1) 00087170
00705 GO TO 10000 00087180
00706 20400 WRITE(PRNTR,20410) ERMSG 00087190
00707 20410 FORMAT(' A NEGATIVE NUMBER IS BEING RAISED TO A', 00087200
00708 A' FRACTIONAL POWER', 40A1) 00087210
00709 GO TO 10000 00087220
00710 20500 WRITE(PRNTR,20510) ERMSG 00087230
00711 20510 FORMAT(' THE NATURAL LOG OF A NON-POSITIVE', 00087240
00712 A' NUMBER HAS BEEN REQUESTED', 40A1) 00087250
00713 GO TO 10000 00087260
00714 20600 WRITE(PRNTR,20610) ERMSG 00087270
00715 20610 FORMAT(' THE SQUARE ROOT OF A NEGATIVE NUMBER', 00087280
00716 A' HAS BEEN REQUESTED', 40A1) 00087290
00717 GO TO 10000 00087300
00718 20700 GO TO 10000 00087310
00719 20800 GO TO 10000 00087320
00720 END 00087330
EQUIVALENCED VARIABLES
( OPRND 1 VNUM 1 )
NDT64 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-13
COMMON BLOCKS
/.COMM./(+24576)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 OUTPT +356 LINE +736
EXTME +1126 RSTME +1130 ACCUM +1154 VAR +1156 OBJCD +1156
DT +1202 TIME +1204 STOP +1206 START +1210 PRTPR +1212
PLTPR +1214 ARG1 +1216 ARG2 +1220 ARG3 +1222 ARG4 +1224
ARG5 +1226 PC +22 RERUN +20 LADDR +26 INTYP +13
RADDR +30 EXPMX +14 RUNCT +21 RRUN +356 INTBT +356
RRBST +47 DISK +6 OBJST +24 OUTCT +15 OAB +17
OCBND +57 PRNTR +5 RBFPT +357
SUBPROGRAMS CALLED
DCOS. MOD. DLG10. NDT78 IDINT. NDT45
DFLOT. DLOG. DSIN. NDT63 NDT44 FLOAT.
DEXP. DABS. DSQRT.
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
*IGO 2 RKCON 3 PRTBT 5 Z 6 OPCOD 10
.O0012 11 .O0011 12 ERRCT 13 .O0010 14 PLTBT 15
VNUM 1 DISP 16 B 20 FROM 22 FLAG 23
OPRND 1 ABCON 24 COUNT 26 SUB 27 J 30
D 31 .S0003 33 A 34 HAFDT 36 .S0000 40
THERE 41 X 42 ERMSG 44 TO 114 PNT 115
%RANGE .O0007 116 .O0006 120 TEST 121 .O0005 123
STMT 125 I 126 .O0004 127 .O0003 130 .O0002 131
.O0001 132 *DPCT 133 TOLER 134 C 136 .O0000 140
HERE 141 VARNM 142 REC 143 CODE 144 %INDEP
TEMPORARIES
.A0016 275 .Q0002 276 .Q0003 277 .Q0004 300 .Q0005 301
A 19# 133# 135 136 139 142 171# 174 177 178 181 190# 192 195
197 213# 223# 627# 649# 651
ABCON 19# 235# 368
ACCUM 19# 28# 67# 75 76# 94 94# 95 99 100# 104# 111 111# 133
139# 142# 145# 171 174# 176# 181# 189 191# 193# 195# 197# 205 205#
214 223 333# 345# 348# 351# 353# 368# 374 378 379# 384# 393 394#
402# 410# 411# 419# 435# 437# 447# 449# 457# 458# 466# 467# 481# 489
490# 502# 507# 510# 523# 533# 543# 545# 553# 554# 562# 563# 584# 616#
651# 658# 661# 665#
ARG1 19# 31# 274# 333 344 345 347 348 350 351 353 366 368 372
402 410 419 433 437 445 449 457 458 466 467 476 476# 477
506 507 533 541 545 554 562 576
ARG2 19# 31# 411 458 467 490 505 522 554 563 594 595 605 653#
655# 658 661 665
ARG3 19# 31# 411 490 500 501 563 594 605 653 658 661 665
ARG4 19# 31# 411 513 513# 514 595 605 655 658 661 665
ARG5 19# 31#
B 19# 134# 135 136 139 142 172# 175 178 181 189# 194 195 197
214# 222# 629# 630 647# 648 649 651
C 19# 630# 648# 649 651
CODE 24# 97# 103# 141# 144# 173# 376# 383# 434# 446# 542# 696
COUNT 24# 363# 364 365 577# 583 606 613 614 615 625 645 650 657
661 664 665
CRSET 22# 28#
D 19# 628# 629 630 646# 647 648 649 651
DABS. 95 136 142 178 197 264 267 374 402
DCOS. 419
DEXP. 195 197 437
DFLOT. 197 433 606 615 650 661 665
DISK 24# 36# 247 249 292
DISP 19# 615# 616 650# 651
DLG10. 136 178
DLOG. 195 197 449
DPCT 605# 606 615 650
DSIN. 533
DSQRT. 545
DT 19# 31# 234 235 236 237 259 275 333 351 363
ERMSG 24# 41# 694 694# 695 695# 697 700 703 706 710 714
ERRCT 24# 232# 680 684 684# 685
EXPMX 24# 36# 137 138 179 180 433
EXTME 18# 28#
FLAG 24# 233# 259 275 275# 342 362 504
FLOAT. 137 138 179 180 480
FROM 24# 297# 298
HAFDT 19# 236# 345 348
HERE 24# 245# 246 247 249
I 24# 238# 239 244 248 295# 296 297 479# 480 606# 614 614# 615
616 626# 628 629 630 644 644# 645 645# 646 647 648 649 650
IDINT. 197 264 267 606
IGO 334# 373# 380# 385# 392 395
INDEP 19#
INTBT 24# 36# 293
INTYP 24# 31# 259 275 293# 326 504
J 24# 247 247# 249 249#
LADDR 24# 31# 273
LINE 22# 28#
MOD. 197 241 275
NDT44 695
NDT45 694
NDT63 269
NDT64 5#
NDT78 681 686 693
OAB 24# 36# 239
OBJCD 22# 30# 54 55 240 241 242# 242 243 245 250# 319
OBJST 24# 36# 287
OCBND 24# 36# 244 248
OPCOD 24# 54# 57 392 394 482 500 512 593 593# 594 595 613
OPER 22# 28#
OPRND 24# 31# 55# 312 343 344 345 347 348 350 351 353 365 368
370 371 372 477 478 480 481 501 503 504 505 506 509 510
514 521 523 525
OUTCT 24# 36# 238
OUTPT 22# 28# 36#
PC 24# 31# 54 55 56 56# 231# 271# 273# 287# 319 691#
PLTBT 24# 262# 267# 269 269#
PLTPR 19# 31# 266 267
PNT 24# 576# 577 584 606 614 615 626 644 645 650 657 658 660
664
PRNTR 24# 36# 682 687 697 700 703 706 710 714
PRTBT 24# 261# 264# 269 269#
PRTPR 19# 31# 263 264
PTRS 22# 28# 31# 36#
RADDR 24# 31# 231
RANGE 19#
RBFPT 24# 36# 294 295
REC 24# 243# 244 247 248# 249 250 291# 292
RERUN 24# 31# 271 286 286# 691
RKCON 19# 234# 353
RMAX 18# 28# 96 98 142 375 377 435
RMIN 18# 28# 102 382
RRBST 24# 36# 291
RRUN 24# 36# 292# 296 297
RSTME 18# 28# 690#
RUNCT 24# 36# 241 285 285# 291 682 690
START 19# 31# 259 275 363 475 499 500 521
STMT 24# 312# 694 694#
STOP 19# 31# 270 513
SUB 24# 239# 240 240# 241 242 243 245 250 365# 366 657# 658 660#
661 664# 665
SUBSC 22# 28#
SYM 22# 28#
TEST 19# 95# 96 98# 99 99# 100 102 136# 137 138 178# 179 180
374# 375 377# 378 378# 379 382
THERE 24# 246# 247 249
TIME 19# 31# 259 264 267 270 275 363 475 499 504 505 509 514
521 522 554 690 695 695#
TITLE 22# 28#
TO 24# 296# 298
TOLER 19# 237# 264 267 270 504 509 513 522 554
VAR 18# 28# 30# 31# 67 75# 94 111 134 172 190 205 213 222
247 249# 298# 298 333 343# 343 344# 345 347# 348 350# 351 353
366# 368 370# 370 371# 371 372# 393# 477# 478 480# 481 501# 503
504 505# 506# 509 510 514# 521# 523 577 584 616 628 629 630
646 647 648 649 658 661 665
VARNM 24# 277# 319# 333 343 368 393 525#
VNUM 24# 31# 67 75 94 111 134 172 190 205 213 222
X 19# 489# 490
Z 19# 478# 479 480
10000P 54# 68 77 102 140 177 182 192 194 196 198 252 272 294
299 313 392 395 403 412 420 427 438 450 459 468 482 492
504 508 511 515 524 534 546 555 564 585 617 652 659 663
667 692 699 702 705 709 713 717 718 719
10100P 57 67#
10200P 57 75#
10300P 57 94#
10310P 95# 112 206
10320P 96 102#
10400P 57 111#
10500P 57 133#
10510P 135 139#
10520P 137 141# 179
10530P 138 144# 180
10600P 57 171#
10610P 173# 215
10700P 57 189#
10710P 191# 224
10720P 194 197#
10740P 194 195#
10800P 57 205#
10900P 57 213#
11000P 57 222#
11100P 57 231#
11110P 238 241 244 251#
11200P 57 259#
11211P 263 266#
11212P 266 269#
11250P 259 270 273#
11300P 57 285#
11350P 295 298#
11400P 57 306#
11500P 57 312#
11600P 57 319#
11601P 278 326# 526
11610P 326 333#
11620P 326 342# 362 367
11625P 342 343#
11630P 342 347#
11635P 342 350#
11640P 342 353#
11650P 326 362#
11670P 364 368#
11697P 335 381 382 392#
11698P 375 382#
11699P 346 349 352 355 373#
11700P 57 402#
11800P 57 410#
11900P 57 419#
12000P 57 427#
12100P 57 433#
12110P 433 437#
12200P 57 445#
12210P 445 449#
12300P 57 457#
12400P 57 466#
12500P 57 475#
12540P 475 478#
12700P 57 499#
12710P 499 502#
12725P 500 505# 512
12750P 503 509#
12775P 509 512#
12800P 57 521#
12850P 522 525#
13000P 57 533#
13100P 57 541#
13110P 541 545#
13200P 57 553#
13300P 57 562#
13400P 57 576#
13410P 583 593#
13420P 594 595 605# 654 656
13500P 613 625#
13510P 625 644#
13520P 631 650#
13530P 594 653#
13540P 595 655#
13550P 594 595 657#
13560P 594 660#
13570P 595 664#
20000P 101 105 143 146 175 392 395 436 448 544 680#
20010P 682 683#
20020P 680 684#
20030P 687 688#
20040P 685 693#
20100P 696 697#
20110P 697 698#
20200P 696 700#
20210P 700 701#
20300P 696 703#
20310P 703 704#
20400P 696 706#
20410P 706 707#
20500P 696 710#
20510P 710 711#
20600P 696 714#
20610P 714 715#
20700P 696 718#
20800P 696 719#
NDT64 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00087340
00002 C PROGRAM AUTHOR - GARY PELKEY 00087350
00003 C 00087360
00004 C 00087370
00005 SUBROUTINE NDT65 00087380
00006 C 00087390
00007 C 00087400
00008 C THIS SUBROUTINE EXECUTES NDTRAN OBJECT CODE WITHOUT CHECKING 00087410
00009 C FOR CONDITIONS WHICH MIGHT CAUSE ACTUAL FORTRAN BOMBS. THE 00087420
00010 C OBJECT CODE IS ALREADY LOADED INTO THE OBJCD ARRAY SO THIS 00087430
00011 C PROGRAM SIMPLY EXECUTES THE SEQUENTIAL TWO WORD INSTRUCTIONS 00087440
00012 C UNTIL A STOP OPCODE IS EXECUTED, WHEREUPON THE PROGRAM 00087450
00013 C RETURNS. INTERMEDIATE OUTPUT VALUES ARE RETAINED BY THE 00087460
00014 C TIME COMMAND WHICH CALLS NDT63, THE OUTPUT UPDATE PROGRAM, 00087470
00015 C AT THE APPROPRIATE TIMES. RERUNS ARE HANDLED INTERNALLY 00087480
00016 C TO THIS PROGRAM BY EXECUTING THE RERUN INSTRUCTION. 00087490
00017 C 00087500
00018 C 00087510
00019 REAL*8 RMIN,RMAX,VAR(5000), EXTME,RSTME(10) 00087520
00020 REAL*8 ACCUM,TIME,DT,START,STOP,PRTPR,PLTPR,HAFDT,RKCON, 00087530
00021 1ABCON,ARG1,ARG2,ARG3,ARG4,ARG5,Z,X,RANGE,INDEP,DISP,A,B,C,D,TOLER 00087540
00022 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00087550
00023 1SUBSC(6),OUTPT(240),LINE(120),OBJCD(6000) 00087560
00024 INTEGER FLAG,OPCOD,RADDR,INTYP,PC,PRTBT,PLTBT,OPRND,VNUM, 00087570
00025 1RERUN,CRSMT,LADDR,VARNM,I,J,COUNT,SUB,PNT,RRUN(80),RUNCT, 00087580
00026 2RRBST,RBFPT,INTBT,REC,DISK,TO,FROM,OBJST,OUTCT,OAB,HERE, 00087590
00027 3THERE,OCBND 00087600
00028 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE, 00087610
00029 1EXTME,RSTME,ACCUM,VAR 00087620
00030 EQUIVALENCE (VAR(1),OBJCD(1)) 00087630
00031 EQUIVALENCE (DT,VAR(11)),(TIME,VAR(12)),(STOP,VAR(13)), 00087640
00032 1(START,VAR(14)),(PRTPR,VAR(15)),(PLTPR,VAR(16)), 00087650
00033 2(ARG1,VAR(17)),(ARG2,VAR(18)),(ARG3,VAR(19)),(ARG4,VAR(20)), 00087660
00034 3(ARG5,VAR(21)),(OPRND,VNUM),(PC,PTRS(15)),(RADDR,PTRS(21)), 00087670
00035 4(RERUN,PTRS(13)),(LADDR,PTRS(19)),(INTYP,PTRS(8)) 00087680
00036 EQUIVALENCE (LEV,VAR(23)),(RUNCT,PTRS(14)), 00087690
00037 1(RRUN(1),OUTPT(1),INTBT),(RRBST,PTRS(36)),(RBFPT,RRUN(2)), 00087700
00038 2(DISK,PTRS(3)),(OBJST,PTRS(17)),(OUTCT,PTRS(10)), 00087710
00039 3(OAB,PTRS(12)),(OCBND,PTRS(44)) 00087720
00040 C 00087730
00041 C 00087740
00042 C STATEMENT LABEL 10000 IS RETURNED TO AFTER EACH INSTRUCTION. 00087750
00043 C THE OPCODE AND ASSOCIATED OPERAND/VNUM ARE COMPUTED, PC 00087760
00044 C IS INCREMENTED, AND A COMPUTED GO TO IS EXECUTED BASED UPON 00087770
00045 C THE OPCODE. THE PROGRAM IS SET UP SO THAT THE STATEMENT 00087780
00046 C LABEL IS ALWAYS THE OPCODE*100+10000. 00087790
00047 C 00087800
00048 C 00087810
00049 10000 OPCOD=OBJCD(PC) 00087820
00050 OPRND=OBJCD(PC+1) 00087830
00051 PC=PC+2 00087840
00052 GO TO (10100,10200,10300,10400,10500,10600,10700,10800,10900, 00087850
00053 111000,11100,11200,11300,11400,10000,11600,11700,11800, 00087860
00054 211900,12000,12100,12200,12300,12400,12500,12500,12700, 00087870
00055 312800,12700,13000,13100,13200,13300,13400,13400,13400, 00087880
00056 413400) ,OPCOD 00087890
NDT65 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C**************************************************************** 00087900
00058 C 00087910
00059 C THE LOAD INSTRUCTION. 00087920
00060 C 00087930
00061 C 00087940
00062 10100 ACCUM=VAR(VNUM) 00087950
00063 GO TO 10000 00087960
00064 C 00087970
00065 C**************************************************************** 00087980
00066 C 00087990
00067 C THE STORE INSTRUCTION. (NOTE, THE STORE ZEROS OUT ACCUM) 00088000
00068 C 00088010
00069 C 00088020
00070 10200 VAR(VNUM)=ACCUM 00088030
00071 ACCUM=0.D0 00088040
00072 GO TO 10000 00088050
00073 C 00088060
00074 C**************************************************************** 00088070
00075 C 00088080
00076 C THE ADD INSTRUCTION. 00088090
00077 C 00088100
00078 C 00088110
00079 10300 ACCUM=ACCUM+VAR(VNUM) 00088120
00080 GO TO 10000 00088130
00081 C 00088140
00082 C**************************************************************** 00088150
00083 C 00088160
00084 C THE SUBTRACT INSTRUCTION. 00088170
00085 C 00088180
00086 C 00088190
00087 10400 ACCUM=ACCUM-VAR(VNUM) 00088200
00088 GO TO 10000 00088210
00089 C 00088220
00090 C**************************************************************** 00088230
00091 C 00088240
00092 C THE MULTIPLY INSTRUCTION. 00088250
00093 C 00088260
00094 C 00088270
00095 10500 ACCUM=ACCUM*VAR(VNUM) 00088280
00096 GO TO 10000 00088290
00097 C 00088300
00098 C**************************************************************** 00088310
00099 C 00088320
00100 C THE DIVIDE INSTRUCTION. 00088330
00101 C 00088340
00102 C 00088350
00103 10600 ACCUM=ACCUM/VAR(VNUM) 00088360
00104 GO TO 10000 00088370
00105 C 00088380
00106 C**************************************************************** 00088390
00107 C 00088400
00108 C THE EXPONENTIATE INSTRUCTION. 00088410
00109 C 00088420
00110 C 00088430
00111 10700 B=ACCUM 00088440
00112 A=VAR(VNUM) 00088450
NDT65 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 10710 ACCUM = 1.D0 00088460
00114 IF (A .EQ. 0.D0) GO TO 10000 00088470
00115 ACCUM = 0.D0 00088480
00116 IF (B) 10720,10000,10740 00088490
00117 10740 ACCUM = DEXP(A*DLOG(B)) 00088492
00118 GO TO 10000 00088494
00119 10720 ACCUM=DEXP(A*DLOG(-B))*DFLOAT(1-MOD(IDINT(DABS(A)),2)*2) 00088500
00120 GO TO 10000 00088505
00121 C 00088510
00122 C**************************************************************** 00088520
00123 C 00088530
00124 C THE REVERSE SUBTRACT INSTRUCTION. 00088540
00125 C 00088550
00126 C 00088560
00127 10800 ACCUM=VAR(VNUM)-ACCUM 00088570
00128 GO TO 10000 00088580
00129 C 00088590
00130 C**************************************************************** 00088600
00131 C 00088610
00132 C THE REVERSE DIVIDE INSTRUCTION. 00088620
00133 C 00088630
00134 C 00088640
00135 10900 ACCUM=VAR(VNUM)/ACCUM 00088650
00136 GO TO 10000 00088660
00137 C 00088670
00138 C**************************************************************** 00088680
00139 C 00088690
00140 C THE REVERSE EXPONENTIATE INSTRUCTION. 00088700
00141 C 00088710
00142 C 00088720
00143 11000 B=VAR(VNUM) 00088730
00144 A=ACCUM 00088740
00145 GO TO 10710 00088750
00146 C 00088760
00147 C**************************************************************** 00088770
00148 C 00088780
00149 C THE INITIALIZATION INSTRUCTION. 00088790
00150 C 00088800
00151 C 00088810
00152 11100 PC=RADDR 00088820
00153 FLAG=4 00088830
00154 RKCON=DT/6.D0 00088840
00155 ABCON=DT/24.D0 00088850
00156 HAFDT=DT/2.D0 00088860
00157 TOLER=DT/2.1D0 00088870
00158 DO 11110 I=1,OUTCT 00088880
00159 SUB=OAB+I-1 00088890
00160 SUB=OBJCD(SUB) 00088900
00161 IF(MOD(OBJCD(SUB+3)/2**(RUNCT-1),2).EQ.0) GO TO 11110 00088910
00162 OBJCD(SUB+6)=OBJCD(SUB+5)+2*OBJCD(SUB+1)-1 00088920
00163 REC=OBJCD(SUB+4) 00088930
00164 IF(REC.EQ.OCBND+I) GO TO 11110 00088940
00165 HERE=OBJCD(SUB+6)+1 00088950
00166 THERE=HERE+39 00088960
00167 WRITE(DISK'REC) (VAR(J),J=HERE,THERE) 00088970
00168 REC=OCBND+I 00088980
NDT65 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
00169 READ(DISK'REC) (VAR(J),J=HERE,THERE) 00088990
00170 OBJCD(SUB+4)=REC 00089000
00171 11110 CONTINUE 00089010
00172 GO TO 10000 00089020
00173 C 00089030
00174 C**************************************************************** 00089040
00175 C 00089050
00176 C THE TIME INSTRUCTION. 00089060
00177 C 00089070
00178 C 00089080
00179 11200 IF(FLAG.NE.4.AND.(INTYP.EQ.2.OR.(INTYP.EQ.3.AND.TIME-START 00089090
00180 1 .LT.3.D0*DT))) GO TO 11250 00089100
00181 PRTBT=0 00089110
00182 PLTBT=0 00089120
00183 IF(PRTPR.EQ.0.D0) GO TO 11211 00089130
00184 IF(DABS(TIME/PRTPR-IDINT(TIME/PRTPR 00089140
00185 1+.5D0)).LE.TOLER/PRTPR) PRTBT=1 00089150
00186 11211 IF(PLTPR.EQ.0.D0) GO TO 11212 00089160
00187 IF(DABS(TIME/PLTPR-IDINT(TIME/PLTPR 00089170
00188 1+.5D0)).LE.TOLER/PLTPR) PLTBT=1 00089180
00189 11212 IF(PRTBT.EQ.1.OR.PLTBT.EQ.1) CALL NDT63 (PRTBT,PLTBT) 00089190
00190 IF(TIME.LT.STOP-TOLER) GO TO 11250 00089200
00191 PC=RERUN 00089210
00192 GO TO 10000 00089220
00193 11250 PC=LADDR 00089230
00194 ARG1=1.D0 00089240
00195 IF(INTYP.EQ.2.OR.(INTYP.EQ.3.AND.(TIME-START.LT.3.1D0*DT))) 00089250
00196 1 FLAG=MOD(FLAG,4)+1 00089260
00197 VARNM=12 00089270
00198 GO TO 11601 00089280
00199 C 00089290
00200 C**************************************************************** 00089300
00201 C 00089310
00202 C THE RERUN INSTRUCTION. 00089320
00203 C 00089330
00204 C 00089340
00205 11300 RUNCT=RUNCT+1 00089350
00206 RERUN=RERUN+2 00089360
00207 PC=OBJST 00089370
00208 C 00089380
00209 C THE RERUN CHANGES THEMSELVES ARE MADE. 00089390
00210 C 00089400
00211 REC=RRBST+RUNCT-2 00089410
00212 READ(DISK'REC) RRUN 00089420
00213 IF(INTBT.NE.0) INTYP=INTBT 00089430
00214 IF(RBFPT.EQ.2) GO TO 10000 00089440
00215 DO 11350 I=3,RBFPT,2 00089450
00216 TO=RRUN(I) 00089460
00217 FROM=RRUN(I+1) 00089470
00218 11350 VAR(TO)=VAR(FROM) 00089480
00219 GO TO 10000 00089490
00220 C 00089500
00221 C**************************************************************** 00089510
00222 C 00089520
00223 C THE STOP INSTRUCTION. 00089530
00224 C 00089540
NDT65 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-4
00225 C 00089550
00226 11400 RETURN 00089560
00227 C 00089570
00228 C**************************************************************** 00089580
00229 C 00089590
00230 C THE INTEGRATE INSTRUCTION. 00089600
00231 C 00089610
00232 C 00089620
00233 11600 VARNM=OBJCD(PC+1) 00089630
00234 C 00089640
00235 C 00089650
00236 C BRANCHING TO THE CORRECT INTEGRATOR. 00089660
00237 C 00089670
00238 C 00089680
00239 11601 GO TO (11610,11620,11650),INTYP 00089690
00240 C 00089700
00241 C 00089710
00242 C EULER INTEGRATION-------- 00089720
00243 C 00089730
00244 C 00089740
00245 11610 ACCUM=VAR(VARNM)+DT*ARG1 00089750
00246 GO TO 11699 00089760
00247 C 00089770
00248 C 00089780
00249 C RUNGE-KUTTA INTEGRATION-------- 00089790
00250 C 00089800
00251 C 00089810
00252 11620 GO TO (11625,11630,11635,11640),FLAG 00089820
00253 11625 VAR(OPRND)=VAR(VARNM) 00089830
00254 VAR(OPRND+1)=ARG1 00089840
00255 ACCUM=VAR(OPRND)+HAFDT*ARG1 00089850
00256 GO TO 11699 00089860
00257 11630 VAR(OPRND+2)=ARG1 00089870
00258 ACCUM=VAR(OPRND)+HAFDT*ARG1 00089880
00259 GO TO 11699 00089890
00260 11635 VAR(OPRND+3)=ARG1 00089900
00261 ACCUM=VAR(OPRND)+DT*ARG1 00089910
00262 GO TO 11699 00089920
00263 11640 ACCUM=VAR(OPRND)+RKCON*(VAR(OPRND+1)+2.D0*VAR(OPRND+2) 00089930
00264 1+2.D0*VAR(OPRND+3)+ARG1) 00089940
00265 GO TO 11699 00089950
00266 C 00089960
00267 C 00089970
00268 C ADAMS-BASHFORTH INTEGRATION------- 00089980
00269 C 00089990
00270 C 00090000
00271 11650 IF(FLAG.NE.1) GO TO 11620 00090010
00272 COUNT=(TIME-START)/DT+1.1 00090020
00273 IF(COUNT.GT.3) GO TO 11670 00090030
00274 SUB=COUNT+OPRND+3 00090040
00275 VAR(SUB)=ARG1 00090050
00276 GO TO 11620 00090060
00277 11670 ACCUM=VAR(VARNM)+ABCON*(55.D0*ARG1-59.D0*VAR(OPRND+6) 00090070
00278 1+37.D0*VAR(OPRND+5)-9.D0*VAR(OPRND+4)) 00090080
00279 VAR(OPRND+4)=VAR(OPRND+5) 00090090
00280 VAR(OPRND+5)=VAR(OPRND+6) 00090100
NDT65 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-5
00281 VAR(OPRND+6)=ARG1 00090110
00282 11699 IF(OPCOD.NE.12.AND.OPCOD.NE.28) GO TO 10000 00090120
00283 C 00090130
00284 C 00090140
00285 C THE TIME INSTRUCTION IS NOT FOLLOWED BY A STORE. THEREFORE, 00090150
00286 C IF TIME WAS JUST INTEGRATED, THE STORE MUST BE DONE HERE 00090160
00287 C BEFORE THE NEXT INSTRUCTION IS EXECUTED. 00090170
00288 C 00090180
00289 C 00090190
00290 VAR(VARNM)=ACCUM 00090200
00291 IF(OPCOD.EQ.12) ACCUM=0.D0 00090210
00292 GO TO 10000 00090220
00293 C 00090230
00294 C**************************************************************** 00090240
00295 C 00090250
00296 C THE ABSOLUTE VALUE FUNCTION. 00090260
00297 C 00090270
00298 C 00090280
00299 11700 ACCUM=DABS(ARG1) 00090290
00300 GO TO 10000 00090300
00301 C 00090310
00302 C**************************************************************** 00090320
00303 C 00090330
00304 C THE CLIP FUNCTION. 00090340
00305 C 00090350
00306 C 00090360
00307 11800 ACCUM=ARG1 00090370
00308 IF(ARG3.LT.ARG4) ACCUM=ARG2 00090380
00309 GO TO 10000 00090390
00310 C 00090400
00311 C**************************************************************** 00090410
00312 C 00090420
00313 C THE COSINE FUNCTION. 00090430
00314 C 00090440
00315 C 00090450
00316 11900 ACCUM=DCOS(ARG1) 00090460
00317 GO TO 10000 00090470
00318 C 00090480
00319 C**************************************************************** 00090490
00320 C 00090500
00321 C THE DELAY FUNCTION. 00090510
00322 C 00090520
00323 00090530
00324 00090540
00325 00090550
00326 00090560
00327 00090570
00328 00090580
00329 00090590
00330 00090600
00331 00090610
00332 C 00090620
00333 12000 GO TO 10000 00090630
00334 C**************************************************************** 00090640
00335 C 00090650
00336 C THE EXP FUNCTION. 00090660
NDT65 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-6
00337 C 00090670
00338 C 00090680
00339 12100 ACCUM=DEXP(ARG1) 00090690
00340 GO TO 10000 00090700
00341 C 00090710
00342 C**************************************************************** 00090720
00343 C 00090730
00344 C THE NATURAL LOG FUNCTION. 00090740
00345 C 00090750
00346 C 00090760
00347 12200 ACCUM=DLOG(ARG1) 00090770
00348 GO TO 10000 00090780
00349 C 00090790
00350 C**************************************************************** 00090800
00351 C 00090810
00352 C THE MAX FUNCTION. 00090820
00353 C 00090830
00354 C 00090840
00355 12300 ACCUM=ARG1 00090850
00356 IF(ARG2.GT.ARG1) ACCUM=ARG2 00090860
00357 GO TO 10000 00090870
00358 C 00090880
00359 C**************************************************************** 00090890
00360 C 00090900
00361 C THE MIN FUNCTION. 00090910
00362 C 00090920
00363 C 00090930
00364 12400 ACCUM=ARG1 00090940
00365 IF(ARG2.LT.ARG1) ACCUM=ARG2 00090950
00366 GO TO 10000 00090960
00367 C 00090970
00368 C**************************************************************** 00090980
00369 C 00090990
00370 C THE RANDOM NUMBER GENERATOR (NOISE). 00091000
00371 C 00091010
00372 C 00091020
00373 12500 IF(TIME.GT.START) GO TO 12540 00091030
00374 IF(ARG1.GT.100000.D0.OR.ARG1.LT.1.D0) ARG1=50000.D0 00091040
00375 VAR(OPRND)=ARG1 00091050
00376 12540 Z=899.D0*VAR(OPRND) 00091060
00377 I=Z/65536.D0 00091070
00378 VAR(OPRND)=Z-FLOAT(I)*65536.D0 00091080
00379 ACCUM=VAR(OPRND)/65536.D0 00091090
00380 IF(OPCOD.EQ.25) GO TO 10000 00091100
00381 C 00091110
00382 C**************************************************************** 00091120
00383 C 00091130
00384 C THE NORMALIZED RANDOM NUMBER GENERATOR (NORMN). 00091140
00385 C 00091150
00386 C 00091160
00387 X=2.D0*ACCUM-1.D0 00091170
00388 ACCUM=(((-.38709D0*X*X-.80611D0)*X*X)+(1.24056D0)*X/1.D0-X*X) 00091180
00389 1*ARG3+ARG2 00091190
00390 GO TO 10000 00091200
00391 C 00091210
00392 C**************************************************************** 00091220
NDT65 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-7
00393 C 00091230
00394 C THE PULSE AND SAMPLE FUNCTIONS. 00091240
00395 C 00091250
00396 C 00091260
00397 12700 IF(TIME.NE.START) GO TO 12710 00091270
00398 IF(ARG3.LT.0.D0) GO TO 12725 00091280
00399 VAR(OPRND)=ARG3 00091290
00400 12710 ACCUM=0.D0 00091300
00401 IF(VAR(OPRND).LT.0.D0) GO TO 12750 00091310
00402 IF(VAR(OPRND)-TIME.GT.TOLER.OR.INTYP.EQ.2.AND.FLAG.NE.4)GOTO10000 00091320
00403 12725 VAR(OPRND)=-(TIME+ARG2) 00091330
00404 VAR(OPRND+1)=ARG1 00091340
00405 ACCUM=ARG1 00091350
00406 GO TO 10000 00091360
00407 12750 IF(-VAR(OPRND).LT.TIME+TOLER) GO TO 12775 00091370
00408 ACCUM=VAR(OPRND+1) 00091380
00409 GO TO 10000 00091390
00410 12775 IF(OPCOD.EQ.29) GO TO 12725 00091400
00411 IF(ARG4.LT.TOLER) ARG4=STOP+1 00091410
00412 VAR(OPRND)=TIME+ARG4 00091420
00413 GO TO 10000 00091430
00414 C 00091440
00415 C**************************************************************** 00091450
00416 C 00091460
00417 C THE RAMP FUNCTION. 00091470
00418 C 00091480
00419 12800 IF(TIME.EQ.START) VAR(OPRND+7)=0.D0 00091490
00420 IF(TIME-ARG2.GT.TOLER) GO TO 12850 00091500
00421 ACCUM=VAR(OPRND+7) 00091510
00422 GO TO 10000 00091520
00423 12850 VARNM=OPRND+7 00091530
00424 GO TO 11601 00091540
00425 C 00091550
00426 C**************************************************************** 00091560
00427 C 00091570
00428 C THE SINE FUNCTION. 00091580
00429 C 00091590
00430 C 00091600
00431 13000 ACCUM=DSIN(ARG1) 00091610
00432 GO TO 10000 00091620
00433 C 00091630
00434 C**************************************************************** 00091640
00435 C 00091650
00436 C THE SQUARE ROOT FUNCTION. 00091660
00437 C 00091670
00438 C 00091680
00439 13100 ACCUM=DSQRT(ARG1) 00091690
00440 GO TO 10000 00091700
00441 C 00091710
00442 C**************************************************************** 00091720
00443 C 00091730
00444 C THE STEP FUNCTION. 00091740
00445 C 00091750
00446 C 00091760
00447 13200 ACCUM=0.D0 00091770
00448 IF(ARG2-TIME.LE.TOLER) ACCUM=ARG1 00091780
NDT65 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-8
00449 GO TO 10000 00091790
00450 C 00091800
00451 C**************************************************************** 00091810
00452 C 00091820
00453 C THE SWITCH FUNCTION. 00091830
00454 C 00091840
00455 C 00091850
00456 13300 ACCUM=ARG1 00091860
00457 IF(ARG3.LE.0.D0) ACCUM=ARG2 00091870
00458 GO TO 10000 00091880
00459 C 00091890
00460 C**************************************************************** 00091900
00461 C 00091910
00462 C THE TABLE FUNCTIONS: TABFL, TABHL, TABLE, AND TABND. 00091920
00463 C 00091930
00464 C 00091940
00465 C GET THE TABLE ADDRESS AND THE NO. OF ELEMENTS IN THE TABLE. 00091950
00466 C 00091960
00467 C 00091970
00468 13400 PNT=ARG1 00091980
00469 COUNT=VAR(PNT) 00091990
00470 C 00092000
00471 C 00092010
00472 C IF THERE IS ONLY ONE ELEMENT IN THE TABLE OUTPUT THAT VALUE. 00092020
00473 C 00092030
00474 C 00092040
00475 IF(COUNT.NE.1) GO TO 13410 00092050
00476 ACCUM=VAR(PNT+1) 00092060
00477 GO TO 10000 00092070
00478 C 00092080
00479 C 00092090
00480 C THE TABLE HAS MORE THAN ONE VALUE. CHECK THE INDEPENDENT 00092100
00481 C VARIABLE AGAINST THE SUPPLIED BOUNDS. IF IT IS OUT OF BOUNDS 00092110
00482 C THE RESULT IS DEPENDENT ON WHICH TABLE FUNCTION WAS USED. 00092120
00483 C 00092130
00484 C 00092140
00485 13410 OPCOD=OPCOD-33 00092150
00486 IF(ARG2.LT.ARG3) GO TO (13550,13530,13420,13560),OPCOD 00092160
00487 IF(ARG2.GT.ARG4) GO TO (13550,13540,13420,13570),OPCOD 00092170
00488 C 00092180
00489 C 00092190
00490 C MAP THE INDEPENDENT VARIABLE'S RANGE ONTO THE TABLE'S RANGE 00092200
00491 C AND SELECT THE TABLE ELEMENT WHOSE PERCENT DISPLACEMENT 00092210
00492 C FROM THE FIRST ELEMENT IS CLOSEST TO BUT NOT HIGHER THAN 00092220
00493 C THE PERCENT DISPLACEMENT OF THE INDEPENDENT VARIABLE FROM 00092230
00494 C IT'S LOWER BOUND. 00092240
00495 C 00092250
00496 C 00092260
00497 13420 DPCT=(ARG2-ARG3)/(ARG4-ARG3) 00092270
00498 I=PNT+1+IDINT(DPCT*DFLOAT(COUNT-1)) 00092280
00499 C 00092290
00500 C 00092300
00501 C IF TABHL WAS REQUESTED OR THE TABLE ONLY HAS TWO ELEMENTS 00092310
00502 C THEN INTERPOLATE. 00092320
00503 C 00092330
00504 C 00092340
NDT65 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-9
00505 IF(OPCOD.NE.2.AND.COUNT.NE.2) GO TO 13500 00092350
00506 IF(I.EQ.PNT+COUNT) I=I-1 00092360
00507 DISP=DPCT*DFLOAT(COUNT-1)-DFLOAT(I-PNT-1) 00092370
00508 ACCUM=DISP*(VAR(I+1)-VAR(I))+VAR(I) 00092380
00509 GO TO 10000 00092390
00510 C 00092400
00511 C 00092410
00512 C ONE OF THE THIRD ORDER TABLE FUNCTIONS WAS REQUESTED. 00092420
00513 C IF THE TABLE ONLY HAS THREE ELEMENTS THEN A SECOND ORDER 00092430
00514 C CURVE FIT IS THE BEST WE CAN DO. 00092440
00515 C 00092450
00516 C 00092460
00517 13500 IF(COUNT.NE.3) GO TO 13510 00092470
00518 I=PNT+1 00092480
00519 A=0.D0 00092490
00520 D=VAR(I+2) 00092500
00521 B=(D+VAR(I))/2.D0-VAR(I+1) 00092510
00522 C=(D-VAR(I))/2.D0+2.D0*B 00092520
00523 GO TO 13520 00092530
00524 C 00092540
00525 C 00092550
00526 C A THIRD ORDER CURVE FIT IS PERFORMED AS THE TABLE CONTAINS 00092560
00527 C A SUFFICIENT NUMBER OF ELEMENTS. FOUR ELEMENT VALUES ARE 00092570
00528 C USED INCLUDING THE ONE BEFORE THE ELEMENT PREVIOUSLY SELECTED 00092580
00529 C AND TWO AFTER THAT ELEMENT. IF THE ELEMENT SELECTED DOES NOT 00092590
00530 C HAVE ONE ELEMENT BEFORE IT OR TWO AFTER THEN THE INDEPENDENT 00092600
00531 C VARIABLE IS CLOSE TO ONE OF IT'S BOUNDS SO USE THE LAST OR 00092610
00532 C FIRST FOUR ELEMENTS DEPENDING ON WHICH BOUND IS INVOLVED. 00092620
00533 C 00092630
00534 C 00092640
00535 13510 IF(I.LT.PNT+2) I=PNT+2 00092650
00536 IF(I.GT.PNT+COUNT-2) I=PNT+COUNT-2 00092660
00537 D=VAR(I) 00092670
00538 B=(VAR(I-1)+VAR(I+1)-2.D0*D)/2.D0 00092680
00539 C=(8.D0*VAR(I+1)-7.D0*D-VAR(I+2)-4.D0*B)/6.D0 00092690
00540 A=B-C+D-VAR(I-1) 00092700
00541 13520 DISP=DPCT*DFLOAT(COUNT-1)-DFLOAT(I-PNT-1) 00092710
00542 ACCUM=((A*DISP+B)*DISP+C)*DISP+D 00092720
00543 GO TO 10000 00092730
00544 13530 ARG2=ARG3 00092740
00545 GO TO 13420 00092750
00546 13540 ARG2=ARG4 00092760
00547 GO TO 13420 00092770
00548 13550 SUB = PNT + COUNT 00092780
00549 ACCUM=(ARG2-ARG3)/(ARG4-ARG3)*(VAR(SUB)-VAR(PNT+1))+VAR(PNT+1) 00092790
00550 GO TO 10000 00092800
00551 13560 SUB = PNT + 2 00092810
00552 ACCUM=(ARG2-ARG3)/(ARG4-ARG3)*DFLOAT(COUNT-1)* 00092820
00553 1 (VAR(SUB)-VAR(SUB-1)) + VAR(SUB-1) 00092830
00554 GO TO 10000 00092840
00555 13570 SUB = PNT + COUNT 00092850
00556 ACCUM=(ARG2-ARG4)/(ARG4-ARG3)*DFLOAT(COUNT-1)* 00092860
00557 1 (VAR(SUB)-VAR(SUB-1)) + VAR(SUB) 00092870
00558 GO TO 10000 00092880
00559 END 00092900
NDT65 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-10
EQUIVALENCED VARIABLES
( OPRND 1 VNUM 1 )
COMMON BLOCKS
/.COMM./(+24576)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 OUTPT +356 LINE +736
EXTME +1126 RSTME +1130 ACCUM +1154 VAR +1156 OBJCD +1156
DT +1202 TIME +1204 STOP +1206 START +1210 PRTPR +1212
PLTPR +1214 ARG1 +1216 ARG2 +1220 ARG3 +1222 ARG4 +1224
ARG5 +1226 PC +22 RADDR +30 RERUN +20 LADDR +26
INTYP +13 LEV +1232 RUNCT +21 RRUN +356 INTBT +356
RRBST +47 DISK +6 OBJST +24 OUTCT +15 OAB +17
OCBND +57 RBFPT +357
SUBPROGRAMS CALLED
DCOS. MOD. IDINT. DFLOT. DLOG. DSIN.
NDT63 FLOAT. DEXP. DABS. DSQRT.
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
RKCON 2 PRTBT 4 Z 5 OPCOD 7 .O0012 10
.O0011 11 .O0010 12 PLTBT 13 VNUM 1 DISP 14
B 16 FROM 20 FLAG 21 OPRND 1 ABCON 22
COUNT 24 SUB 25 J 26 %CRSMT D 27
.S0003 31 A 32 HAFDT 34 .S0000 36 THERE 37
X 40 TO 42 PNT 43 %RANGE .O0007 44
.O0006 46 .O0005 47 I 51 .O0004 52 .O0003 53
.O0002 54 .O0001 55 *DPCT 56 TOLER 57 C 61
.O0000 63 HERE 64 VARNM 65 REC 66 %INDEP
TEMPORARIES
.A0016 67 .Q0002 70 .Q0003 71 .Q0004 72 .Q0005 73
A 20# 112# 114 117 119 144# 519# 540# 542
ABCON 20# 155# 277
ACCUM 20# 28# 62# 70 71# 79 79# 87 87# 95 95# 103 103# 111
113# 115# 117# 119# 127 127# 135 135# 144 245# 255# 258# 261# 263#
277# 290 291# 299# 307# 308# 316# 339# 347# 355# 356# 364# 365# 379#
387 388# 400# 405# 408# 421# 431# 439# 447# 448# 456# 457# 476# 508#
542# 549# 552# 556#
ARG1 20# 31# 194# 245 254 255 257 258 260 261 263 275 277 281
299 307 316 339 347 355 356 364 365 374 374# 375 404 405
431 439 448 456 468
ARG2 20# 31# 308 356 365 388 403 420 448 457 486 487 497 544#
546# 549 552 556
ARG3 20# 31# 308 388 398 399 457 486 497 544 549 552 556
ARG4 20# 31# 308 411 411# 412 487 497 546 549 552 556
ARG5 20# 31#
B 20# 111# 116 117 119 143# 521# 522 538# 539 540 542
C 20# 522# 539# 540 542
COUNT 24# 272# 273 274 469# 475 498 505 506 507 517 536 541 548
552 555 556
CRSET 22# 28#
CRSMT 24#
D 20# 520# 521 522 537# 538 539 540 542
DABS. 119 184 187 299
DCOS. 316
DEXP. 117 119 339
DFLOT. 119 498 507 541 552 556
DISK 24# 36# 167 169 212
DISP 20# 507# 508 541# 542
DLOG. 117 119 347
DPCT 497# 498 507 541
DSIN. 431
DSQRT. 439
DT 20# 31# 154 155 156 157 179 195 245 261 272
EXTME 19# 28#
FLAG 24# 153# 179 195 195# 252 271 402
FLOAT. 378
FROM 24# 217# 218
HAFDT 20# 156# 255 258
HERE 24# 165# 166 167 169
I 24# 158# 159 164 168 215# 216 217 377# 378 498# 506 506# 507
508 518# 520 521 522 535 535# 536 536# 537 538 539 540 541
IDINT. 119 184 187 498
INDEP 20#
INTBT 24# 36# 213
INTYP 24# 31# 179 195 213# 239 402
J 24# 167 167# 169 169#
LADDR 24# 31# 193
LEV 36#
LINE 22# 28#
MOD. 119 161 195
NDT63 189
NDT65 5#
OAB 24# 36# 159
OBJCD 22# 30# 49 50 160 161 162# 162 163 165 170# 233
OBJST 24# 36# 207
OCBND 24# 36# 164 168
OPCOD 24# 49# 52 282 291 380 410 485 485# 486 487 505
OPER 22# 28#
OPRND 24# 31# 50# 253 254 255 257 258 260 261 263 274 277 279
280 281 375 376 378 379 399 401 402 403 404 407 408 412
419 421 423
OUTCT 24# 36# 158
OUTPT 22# 28# 36#
PC 24# 31# 49 50 51 51# 152# 191# 193# 207# 233
PLTBT 24# 182# 187# 189 189#
PLTPR 20# 31# 186 187
PNT 24# 468# 469 476 498 506 507 518 535 536 541 548 549 551
555
PRTBT 24# 181# 184# 189 189#
PRTPR 20# 31# 183 184
PTRS 22# 28# 31# 36#
RADDR 24# 31# 152
RANGE 20#
RBFPT 24# 36# 214 215
REC 24# 163# 164 167 168# 169 170 211# 212
RERUN 24# 31# 191 206 206#
RKCON 20# 154# 263
RMAX 19# 28#
RMIN 19# 28#
RRBST 24# 36# 211
RRUN 24# 36# 212# 216 217
RSTME 19# 28#
RUNCT 24# 36# 161 205 205# 211
START 20# 31# 179 195 272 373 397 419
STOP 20# 31# 190 411
SUB 24# 159# 160 160# 161 162 163 165 170 274# 275 548# 549 551#
552 555# 556
SUBSC 22# 28#
SYM 22# 28#
THERE 24# 166# 167 169
TIME 20# 31# 179 184 187 190 195 272 373 397 402 403 407 412
419 420 448
TITLE 22# 28#
TO 24# 216# 218
TOLER 20# 157# 184 187 190 402 407 411 420 448
VAR 19# 28# 30# 31# 36# 62 70# 79 87 95 103 112 127 135
143 167 169# 218# 218 245 253# 253 254# 255 257# 258 260# 261
263 275# 277 279# 279 280# 280 281# 290# 375# 376 378# 379 399#
401 402 403# 404# 407 408 412# 419# 421 469 476 508 520 521
522 537 538 539 540 549 552 556
VARNM 24# 197# 233# 245 253 277 290 423#
VNUM 24# 31# 62 70 79 87 95 103 112 127 135 143
X 20# 387# 388
Z 20# 376# 377 378
10000P 49# 52 63 72 80 88 96 104 114 116 118 120 128 136
172 192 214 219 282 292 300 309 317 333 340 348 357 366
380 390 402 406 409 413 422 432 440 449 458 477 509 543
550 554 558
10100P 52 62#
10200P 52 70#
10300P 52 79#
10400P 52 87#
10500P 52 95#
10600P 52 103#
10700P 52 111#
10710P 113# 145
10720P 116 119#
10740P 116 117#
10800P 52 127#
10900P 52 135#
11000P 52 143#
11100P 52 152#
11110P 158 161 164 171#
11200P 52 179#
11211P 183 186#
11212P 186 189#
11250P 179 190 193#
11300P 52 205#
11350P 215 218#
11400P 52 226#
11600P 52 233#
11601P 198 239# 424
11610P 239 245#
11620P 239 252# 271 276
11625P 252 253#
11630P 252 257#
11635P 252 260#
11640P 252 263#
11650P 239 271#
11670P 273 277#
11699P 246 256 259 262 265 282#
11700P 52 299#
11800P 52 307#
11900P 52 316#
12000P 52 333#
12100P 52 339#
12200P 52 347#
12300P 52 355#
12400P 52 364#
12500P 52 373#
12540P 373 376#
12700P 52 397#
12710P 397 400#
12725P 398 403# 410
12750P 401 407#
12775P 407 410#
12800P 52 419#
12850P 420 423#
13000P 52 431#
13100P 52 439#
13200P 52 447#
13300P 52 456#
13400P 52 468#
13410P 475 485#
13420P 486 487 497# 545 547
13500P 505 517#
13510P 517 535#
13520P 523 541#
13530P 486 544#
13540P 487 546#
13550P 486 487 548#
13560P 486 551#
13570P 487 555#
NDT65 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00092910
00002 C PROGRAM AUTHOR - GARY PELKEY 00092920
00003 C 00092930
00004 C 00092940
00005 SUBROUTINE NDT66 00092950
00006 C 00092960
00007 C 00092970
00008 C THIS PROGRAM, THE OPTIONS PROCESSOR, GIVES THE USER A 00092980
00009 C SUMMARY OF ERRORS FOR HIS PROGRAM, A LISTING AND COUNT OF 00092990
00010 C EACH CARD TYPE IN THE PROGRAM, AND A LISTING OF THE VARIOUS 00093000
00011 C OPTIONS CURRENTLY IN EFFECT. 00093010
00012 C 00093020
00013 C 00093030
00014 REAL*8 RMIN,RMAX,LITBL(1024) 00093040
00015 REAL SECND(3),THIRD(2,3),OUT(12),OPTS(3,2,12),TYPE1(19),TYPE2(19) 00093050
00016 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00093060
00017 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00093070
00018 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00093080
00019 3SYMTB(5,512) 00093090
00020 INTEGER LINCT,STMTS,PGMND,STPGM,SUM,WARNS,ERRS,CRITS,INTYP 00093100
00021 INTEGER I,TRDPT,BAD(3),FIRST(3),J,K,PTR,BIT,OPTNS,OUTPT,PRNTR 00093110
00022 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00093120
00023 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00093130
00024 2SYMTB,LITBL 00093140
00025 EQUIVALENCE (LINCT,PTRS(5)),(PGMND,PTRS(23)),(STPGM,PTRS(2 00093150
00026 1 1)),(WARNS,PTRS(11)),(ERRS,PTRS(12)),(CRITS,PTRS(13)), 00093160
00027 2(BAD(1),PTRS(11)),(OPTNS,PTRS(7)),(INTYP,PTRS(8)) 00093170
00028 3,(PRNTR,PTRS(2)) 00093180
00029 DATA FIRST /'W','E','C'/ 00093190
00030 DATA SECND /'ARNI','RROR','RITI'/ 00093200
00031 DATA THIRD /'NGS ','NG ','S ',' ','CALS','CAL '/ 00093210
00032 DATA TYPE1 /'T ','C ','PARM','N ','L ','A ','R ', 00093220
00033 1'S ','X ','* ','NOTE','PRIN','PLOT','RERU','MACR', 00093230
00034 2'MEND','EXPN','DEF ','TITL'/ 00093240
00035 DATA TYPE2 /' ',' ',' ',' ',' ',' ',' ', 00093250
00036 1' ',' ',' ',' ','T ',' ','N ','O ', 00093260
00037 2' ','D ',' ','E '/ 00093270
00038 DATA OPTS /'NOCH','ECK ',' ','CHEC','K ',' ','NOSY','STEM',00093280
00039 1' ','SYST','EM ',' ','NODO','CUME','NT ','DOCU', 00093290
00040 2'MENT',' ','WIDE',' ',' ','NARR','OW ',' ', 00093300
00041 3'STAT','S ',' ','A JO','KE I','T IS','GO ',' ', 00093310
00042 4' ','NOGO',' ',' ','NOSY','MBOL',' ','SYMB', 00093320
00043 5'OL ',' ','NOXR','EF ',' ','XREF',' ',' ', 00093330
00044 6'WARN',' ',' ','NOWA','RN ',' ','NOOB','JECT', 00093340
00045 7' ','OBJE','CT ',' ','SOUR','CE ',' ','NOSO', 00093350
00046 8'URCE',' ','NOTI','ME ',' ','TIME',' ',' '/ 00093360
00047 C 00093370
00048 C 00093380
00049 C WRITING OUT THE HEADING. 00093390
00050 C 00093400
00051 C 00093410
00052 LINCT=-1 00093420
00053 CALL NDT57 (5) 00093430
00054 WRITE(PRNTR,200) 00093440
00055 WRITE(PRNTR,100) 00093450
00056 100 FORMAT(1X) 00093460
NDT66 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 200 FORMAT(5X,'* * * S T A T S A N D O P T I O N S *', 00093470
00058 1' * *') 00093480
00059 C 00093490
00060 C 00093500
00061 C COMPUTING AND WRITING OUT THE NUMBER OF SOURCE STATEMENTS. 00093510
00062 C 00093520
00063 C 00093530
00064 STMTS=(PGMND-STPGM+1)/9 00093540
00065 WRITE(PRNTR,300) STMTS 00093550
00066 300 FORMAT(5X,I4,' SOURCE STATEMENTS') 00093560
00067 WRITE(PRNTR,100) 00093570
00068 C 00093580
00069 C 00093590
00070 C A SUMMARY OF ERRORS IS GIVEN. IF NO ERRORS HAVE BEEN 00093600
00071 C DETECTED, A MESSAGE TO THAT EFFECT IS GIVEN AND THE SUMMARY 00093610
00072 C IS SKIPPED. 00093620
00073 C 00093630
00074 C 00093640
00075 SUM=WARNS+ERRS+CRITS 00093650
00076 IF(SUM-1) 900,350,360 00093660
00077 350 WRITE(PRNTR,355) SUM 00093670
00078 355 FORMAT(5X,I4,' DIAGNOSTIC MESSAGE') 00093680
00079 GO TO 390 00093690
00080 360 WRITE(PRNTR,365) SUM 00093700
00081 365 FORMAT(5X,I4,' DIAGNOSTIC MESSAGES') 00093710
00082 390 WRITE(PRNTR,100) 00093720
00083 DO 700 I=1,3 00093730
00084 TRDPT=1 00093740
00085 IF(BAD(I)-1) 700,400,500 00093750
00086 400 TRDPT=2 00093760
00087 500 WRITE(PRNTR,600) BAD(I),FIRST(I),SECND(I),THIRD(TRDPT,I) 00093770
00088 WRITE(PRNTR,100) 00093780
00089 600 FORMAT(11X,I3,1X,A1,A4,A4) 00093790
00090 700 CONTINUE 00093800
00091 GO TO 1000 00093810
00092 900 WRITE(PRNTR,950) 00093820
00093 950 FORMAT(7X,'NO DIAGNOSTIC MESSAGES') 00093830
00094 WRITE(PRNTR,100) 00093840
00095 1000 WRITE(PRNTR,100) 00093850
00096 C 00093860
00097 C 00093870
00098 C A SUMMARY OF THE TYPES AND HOW MANY OF EACH TYPE OF CARD 00093880
00099 C IN THE USERS PROGRAM IS GIVEN. 00093890
00100 C 00093900
00101 C 00093910
00102 WRITE(PRNTR,1100) 00093920
00103 1100 FORMAT(6X,'CARD TYPE OCCURRENCE') 00093930
00104 WRITE(PRNTR,100) 00093940
00105 DO 2000 I=1,19 00093950
00106 IF(TYPCT(I).EQ.0) GO TO 2000 00093960
00107 WRITE(PRNTR,1500) TYPE1(I),TYPE2(I),TYPCT(I) 00093970
00108 1500 FORMAT(8X,A4,A4,8X,I4) 00093980
00109 2000 CONTINUE 00093990
00110 IF(TYPCT(20).EQ.0) GO TO 3000 00094000
00111 WRITE(PRNTR,2500) TYPCT(20) 00094010
00112 2500 FORMAT(8X,'UNRECOGNIZED',5X,I3) 00094020
NDT66 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 3000 WRITE(PRNTR,100) 00094030
00114 WRITE(PRNTR,100) 00094040
00115 C 00094050
00116 C 00094060
00117 C A LISTING OF WHICH OPTIONS ARE IN EFFECT OR NOT IN EFFECT 00094070
00118 C IS GIVEN IN BLOCKED FORM. 00094080
00119 C 00094090
00120 C 00094100
00121 WRITE(PRNTR,3100) 00094110
00122 3100 FORMAT(6X,'OPTIONS IN EFFECT:') 00094120
00123 WRITE(PRNTR,100) 00094130
00124 DO 5000 I=1,3 00094140
00125 DO 4000 J=1,4 00094150
00126 PTR=4*(I-1)+J 00094160
00127 BIT=MOD(OPTNS/2**(PTR-1),2) 00094170
00128 DO 4000 K=1,3 00094180
00129 OUTPT=3*(J-1)+K 00094190
00130 4000 OUT(OUTPT)=OPTS(K,BIT+1,PTR) 00094200
00131 4500 FORMAT(8X,12A4) 00094210
00132 5000 WRITE(PRNTR,4500) OUT 00094220
00133 WRITE(PRNTR,100) 00094230
00134 WRITE(PRNTR,100) 00094240
00135 C 00094250
00136 C 00094260
00137 C FINALLY, THE INTEGRATION TYPE BEING USED IN THE FIRST RUN 00094270
00138 C IS LISTED. 00094280
00139 C 00094290
00140 C 00094300
00141 WRITE(PRNTR,6000) 00094310
00142 WRITE(PRNTR,100) 00094320
00143 6000 FORMAT(6X,'INTEGRATION METHOD:') 00094330
00144 GO TO (6100,6200,6300),INTYP 00094340
00145 6100 WRITE(PRNTR,6150) 00094350
00146 6150 FORMAT(11X,'EULER LOWER SUM') 00094360
00147 GO TO 7000 00094370
00148 6200 WRITE(PRNTR,6250) 00094380
00149 6250 FORMAT(11X,'FOURTH ORDER RUNGE-KUTTA') 00094390
00150 GO TO 7000 00094400
00151 6300 WRITE(PRNTR,6350) 00094410
00152 6350 FORMAT(11X,'ADAMS-BASHFORTH PREDICTOR') 00094420
00153 7000 WRITE(PRNTR,100) 00094430
00154 WRITE(PRNTR,100) 00094440
00155 RETURN 00094450
00156 END 00094460
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
NDT66 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 LINCT +10 PGMND +32 STPGM +30 WARNS +16
ERRS +17 CRITS +20 BAD +16 OPTNS +12 INTYP +13
PRNTR +5
SUBPROGRAMS CALLED
MOD. NDT57
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
OPTS 1 TRDPT 111 PTR 112 K 113 STMTS 114
TYPE2 115 .R0000 140 BIT 141 J 142 TYPE1 143
.S0004 166 SUM 167 .S0003 170 .S0002 171 .S0001 172
.S0000 173 OUTPT 174 SECND 175 .O0006 200 I 201
.O0004 202 .O0003 203 OUT 204 FIRST 220 THIRD 223
TEMPORARIES
.A0016 363 .Q0001 364
BAD 21# 25# 85 87
BIT 21# 127# 130
CARD1 16# 22#
CARD2 16# 22#
CRITS 20# 25# 75
CRSET 16# 22#
DEF 16# 22#
EQCHN 16# 22#
ERROR 16# 22#
ERRS 20# 25# 75
FCTN 16# 22#
FIRST 21# 29# 87
I 21# 83# 85 87 105# 106 107 124# 126
INTYP 20# 25# 144
J 21# 125# 126 129
K 21# 128# 129 130
LINCT 20# 25# 52#
LITBL 14# 22#
MOD. 127
NDT57 53
NDT66 5#
OBJCD 16# 22#
OPER 16# 22#
OPTNS 21# 25# 127
OPTS 15# 38# 130
OUT 15# 130# 132
OUTPT 21# 129# 130
PGMND 20# 25# 64
PRNTR 21# 25# 54 55 65 67 77 80 82 87 88 92 94 95
102 104 107 111 113 114 121 123 132 133 134 141 142 145
148 151 153 154
PTR 21# 126# 127 130
PTRS 16# 22# 25#
RMAX 14# 22#
RMIN 14# 22#
SECND 15# 30# 87
STMTS 20# 64# 65
STPGM 20# 25# 64
SUBSC 16# 22#
SUM 20# 75# 76 77 80
SYM 16# 22#
SYMTB 16# 22#
THIRD 15# 31# 87
TITLE 16# 22#
TMAP 16# 22#
TOKEN 16# 22#
TRDPT 21# 84# 86# 87
TYPCT 16# 22# 106 107 110 111
TYPE1 15# 32# 107
TYPE2 15# 35# 107
WARNS 20# 25# 75
XREF 16# 22#
1000P 91 95#
100P 55 56# 67 82 88 94 95 104 113 114 123 133 134 142
153 154
1100P 102 103#
1500P 107 108#
2000P 105 106 109#
200P 54 57#
2500P 111 112#
3000P 110 113#
300P 65 66#
3100P 121 122#
350P 76 77#
355P 77 78#
360P 76 80#
365P 80 81#
390P 79 82#
4000P 125 128 130#
400P 85 86#
4500P 131# 132
5000P 124 132#
500P 85 87#
6000P 141 143#
600P 87 89#
6100P 144 145#
6150P 145 146#
6200P 144 148#
6250P 148 149#
6300P 144 151#
6350P 151 152#
7000P 147 150 153#
700P 83 85 90#
900P 76 92#
950P 92 93#
NDT66 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00094470
00002 C PROGRAM AUTHOR - GARY PELKEY 00094480
00003 C 00094490
00004 C 00094500
00005 SUBROUTINE NDT67 (SRTPT) 00094510
00006 C 00094520
00007 C 00094530
00008 C THIS SUBROUTINE PRODUCES A SYMBOL TABLE LISTING. A TAG SORT 00094540
00009 C HAS ALREADY BEEN PERFORMED ON THE SYMBOLS TO GET THEM IN 00094550
00010 C ALPHABETICAL ORDER. THE TAGS ARE POINTERS TO THE SYMBOL 00094560
00011 C TABLE AND ARE LOCATED IN THE SORT ARRAY FROM 1 TO SRTPT. 00094570
00012 C BY UNPACKING THE VARIABLES ENTRY INTO THE SYM ARRAY, ALL 00094580
00013 C THE INFORMATION IS PRESENT TO PRINT OUT THE VARIABLE'S 00094590
00014 C NAME, NUMBER, TYPE AND OUTPUT REQUEST. 00094600
00015 C 00094610
00016 C 00094620
00017 REAL*8 RMIN,RMAX,LITBL(1024) 00094630
00018 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00094640
00019 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00094650
00020 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00094660
00021 3SYMTB(5,512) 00094670
00022 INTEGER LINCT,TAG,TYPE,SMART,NAME(6),J,VNUM,SRTPT,PRNTR, 00094680
00023 1SORT(2048) 00094690
00024 REAL TNAME(4,8),REQST(4,4) 00094700
00025 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00094710
00026 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00094720
00027 2SYMTB,LITBL 00094730
00028 EQUIVALENCE (LINCT,PTRS(5)),(TYPE,SYM(7)),(NAME(1),SYM(1)) 00094740
00029 1,(VNUM,SYM(14)),(PRNTR,PTRS(2)),(LITBL(1),SORT(1)) 00094750
00030 DATA TNAME /' ',' TA','BLE ',' ',' ','CONS','TANT', 00094760
00031 1' ',' ','PARA','METE','R ',' ',' ',' ', 00094770
00032 2' ',' ',' LE','VEL ',' ',' ','AUXI','LIAR', 00094780
00033 3'Y ',' ',' RA','TE ',' ',' SU','PPLE','MENT', 00094790
00034 4'ARY '/ 00094800
00035 DATA REQST /' ',' ',' ',' ',' ','PRIN','T ', 00094810
00036 1' ',' ',' PLO','T ',' ','PRIN','T AN','D PL', 00094820
00037 2'OT '/ 00094830
00038 C 00094840
00039 C 00094850
00040 C PAGING IS FORCED BY SETTING LINCT TO -1 AND CALLING NDT57. 00094860
00041 C THE HEADING IS PRINTED OUT. 00094870
00042 C 00094880
00043 C 00094890
00044 LINCT=-1 00094900
00045 CALL NDT57 (4) 00094910
00046 WRITE(PRNTR,700) 00094920
00047 WRITE(PRNTR,800) 00094930
00048 WRITE(PRNTR,900) 00094940
00049 WRITE(PRNTR,800) 00094950
00050 700 FORMAT(5X,'* * * * * * S Y M B O L T A B L E *', 00094960
00051 1' * * * * *') 00094970
00052 800 FORMAT(1X) 00094980
00053 900 FORMAT(5X,'VARIABLE NAME VARIABLE TYPE OUTPUT REQ', 00094990
00054 1'UEST VARIABLE NUMBER') 00095000
00055 C 00095010
00056 C 00095020
NDT67 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C THE TITLES AND HEADINGS HAVE BEEN PRINTED OUT AND ALL THAT 00095030
00058 C REMAINS IS TO LOOP FROM 1 TO SRTPT, FORMAT THE OUTPUT FOR 00095040
00059 C EACH VARIABLE, AND WRITE IT OUT. 00095050
00060 C 00095060
00061 C 00095070
00062 DO 2000 I=1,SRTPT 00095080
00063 TAG=SORT(I) 00095090
00064 CALL NDT41 (SYMTB(1,TAG)) 00095100
00065 SMART=SYM(9)*2+SYM(8)+1 00095110
00066 2000 WRITE(PRNTR,3000) NAME,(TNAME(J,TYPE),J=1,4),(REQST(J,SMART 00095120
00067 1),J=1,4),VNUM 00095130
00068 3000 FORMAT(9X,6A1,5X,4A4,3X,4A4,8X,I4) 00095140
00069 RETURN 00095150
00070 END 00095170
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 LINCT +10 TYPE +337 NAME +331 VNUM +346
PRNTR +5 SORT +7220
SUBPROGRAMS CALLED
NDT57 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
TAG 1 SMART 2 REQST 3 TNAME 23 J 63
.S0000 64 *I 65 SRTPT 66
TEMPORARIES
.A0016 133 .Q0000 134 .Q0001 135
CARD1 18# 25#
CARD2 18# 25#
CRSET 18# 25#
DEF 18# 25#
EQCHN 18# 25#
ERROR 18# 25#
FCTN 18# 25#
I 62# 63
J 22# 66 66#
LINCT 22# 28# 44#
LITBL 17# 25# 28#
NAME 22# 28# 66
NDT41 64
NDT57 45
NDT67 5#
OBJCD 18# 25#
OPER 18# 25#
PRNTR 22# 28# 46 47 48 49 66
PTRS 18# 25# 28#
REQST 24# 35# 66
RMAX 17# 25#
RMIN 17# 25#
SMART 22# 65# 66
SORT 22# 28# 63
SRTPT 5# 22# 62
SUBSC 18# 25#
SYM 18# 25# 28# 65
SYMTB 18# 25# 64 64#
TAG 22# 63# 64
TITLE 18# 25#
TMAP 18# 25#
TNAME 24# 30# 66
TOKEN 18# 25#
TYPCT 18# 25#
TYPE 22# 28# 66
VNUM 22# 28# 66
XREF 18# 25#
2000P 62 66#
3000P 66 68#
700P 46 50#
800P 47 49 52#
900P 48 53#
NDT67 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00095180
00002 C PROGRAM AUTHOR - GARY PELKEY 00095190
00003 C 00095200
00004 C 00095210
00005 SUBROUTINE NDT68 (SRTPT) 00095220
00006 C 00095230
00007 C 00095240
00008 C THIS ROUTINE PERFORMS A CROSS REFERENCE LISTING ON ALL 00095250
00009 C THE VARIABLES DEFINED IN THE USERS PROGRAM. ITS OUTPUT 00095260
00010 C IS IN THE FORM OF A LIST WHICH CONTAINS THE VARIABLE'S 00095270
00011 C NAME, THE STATEMENT NUMBER IT WAS DEFINED IN, AND THE 00095280
00012 C STATEMENT NUMBERS OF ALL THE STATEMENTS IN WHICH IT IS 00095290
00013 C REFERENCED. 00095300
00014 C 00095310
00015 C 00095320
00016 REAL*8 RMIN,RMAX,LITBL(1024) 00095330
00017 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00095340
00018 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00095350
00019 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00095360
00020 3SYMTB(5,512) 00095370
00021 INTEGER LINCT,PRNTR,SETPT,I,SRTPT,TAG,J,OUT(120),BLANK, 00095380
00022 1RECNO,DISK,LOC,SUB,NUM(10),FIRST,LAST,REFPT,RFCPT,DIST, 00095390
00023 2START,STOP,FLAG,PNT,PNT2,TLIMT,REF,SORT(2048),VNUM, 00095400
00024 3DEFBT,USDBT 00095410
00025 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00095420
00026 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00095430
00027 2SYMTB,LITBL 00095440
00028 EQUIVALENCE (LINCT,PTRS(5)),(PRNTR,PTRS(2)),(BLANK,CRSET(1)), 00095450
00029 1(RECNO,SYM(15)),(DISK,PTRS(3)),(NUM(1),CRSET(30)), 00095460
00030 2(REFPT,XREF(1)),(RFCPT,XREF(2)),(TLIMT,PTRS(33)),(SORT(1), 00095470
00031 3LITBL(1)),(VNUM,SYM(14)),(DEFBT,SYM(11)),(USDBT,SYM(10)), 00095480
00032 4(OUT(1),OBJCD(1)) 00095490
00033 C 00095500
00034 C 00095510
00035 C THE TITLE, HEADING, AND BLANK LINES ARE PRINTED. 00095520
00036 C 00095530
00037 C 00095540
00038 LINCT=-1 00095550
00039 CALL NDT57 (4) 00095560
00040 WRITE(PRNTR,200) 00095570
00041 WRITE(PRNTR,300) 00095580
00042 200 FORMAT(5X,'* * * * * C R O S S R E F E R E N C', 00095590
00043 1' E * * * * *'/) 00095600
00044 300 FORMAT(5X,'VARIABLE NAME DEFINITION REFERENCES'/) 00095610
00045 C 00095620
00046 C 00095630
00047 C MAINLINE ITERATIVE PROCESSING IS BEGUN. 00095640
00048 C 00095650
00049 C 00095660
00050 SETPT=26 00095670
00051 DO 5000 I=1,SRTPT 00095680
00052 TAG=SORT(I) 00095690
00053 CALL NDT41 (SYMTB(1,TAG)) 00095700
00054 C 00095710
00055 C 00095720
00056 C THE LISTING OF THIS VARIABLE IS SUPPRESSED IF IT HAS NOT 00095730
NDT68 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C BEEN DEFINED IN AN EQUATION. 00095740
00058 C 00095750
00059 C 00095760
00060 IF(DEFBT.EQ.0) GO TO 5000 00095770
00061 C 00095780
00062 C 00095790
00063 C THE OUTPUT BUFFER IS BLANKED OUT. 00095800
00064 C 00095810
00065 C 00095820
00066 DO 400 J=1,TLIMT 00095830
00067 400 OUT(J)=BLANK 00095840
00068 C 00095850
00069 C 00095860
00070 C THE VARIABLE'S NAME IS MOVED INTO THE NAME FIELD. 00095870
00071 C 00095880
00072 C 00095890
00073 DO 500 J=1,6 00095900
00074 500 OUT(J+8)=SYM(J) 00095910
00075 C 00095920
00076 C 00095930
00077 C THE CROSS REFERENCE INFORMATION FOR THIS VARIABLE IS MOVED 00095940
00078 C INTO MEMORY FROM DISK. 00095950
00079 C 00095960
00080 C 00095970
00081 READ(DISK'RECNO+7) XREF 00095980
00082 C 00095990
00083 C 00096000
00084 C THE STATEMENT DEFINITION NUMBER IS PLACED INTO ITS FIELD. 00096010
00085 C THIS STEP IS SKIPPED IF THE VARIABLE IS TIME. 00096020
00086 C 00096030
00087 C 00096040
00088 IF(VNUM.EQ.12) GO TO 600 00096050
00089 CALL NDT45 (XREF(3),OUT(25),1) 00096060
00090 C 00096070
00091 C 00096080
00092 C BRING ALL REFERENCES INTO SORT STARTING AFTER SRTPT IF THERE 00096090
00093 C ARE ANY (USDBT=1). OTHERWISE SIMPLY WRITE OUT THE NAME AND 00096100
00094 C THE STATEMENT DEFINITION NUMBER AND PROCESS THE NEXT VARIABLE. 00096110
00095 C 00096120
00096 C 00096130
00097 600 IF(USDBT.EQ.0) GO TO 4900 00096140
00098 FIRST=SRTPT+1 00096150
00099 LAST=SRTPT 00096160
00100 900 DO 1000 J=4,REFPT 00096170
00101 LAST=LAST+1 00096180
00102 1000 SORT(LAST)=XREF(J) 00096190
00103 IF(RFCPT.EQ.0) GO TO 3000 00096200
00104 READ(DISK'RFCPT) XREF 00096210
00105 GO TO 900 00096220
00106 C 00096230
00107 C 00096240
00108 C THE REFERENCES ARE NOW PLACED IN THE OUT ARRAY AND 00096250
00109 C THE ARRAY IS PRINTED OUT WHEN IT IS FILLED UP TO 'TLIMT'. 00096260
00110 C 00096270
00111 C 00096280
00112 3000 PNT=SETPT 00096290
NDT68 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 DO 4000 REF=FIRST,LAST 00096300
00114 PNT=PNT+6 00096310
00115 OUT(PNT)=BLANK 00096320
00116 OUT(PNT+1)=BLANK 00096330
00117 CALL NDT45 (SORT(REF),OUT(PNT+2),1) 00096340
00118 IF(PNT+13.LE.TLIMT) GO TO 4000 00096350
00119 CALL NDT57 (1) 00096360
00120 WRITE(PRNTR,3300) (OUT(K),K=1,TLIMT) 00096370
00121 3300 FORMAT(1X,120A1) 00096380
00122 STOP=SETPT+6 00096390
00123 DO 3500 J=1,STOP 00096400
00124 3500 OUT(J)=BLANK 00096410
00125 PNT=SETPT 00096420
00126 4000 CONTINUE 00096430
00127 C 00096440
00128 C 00096450
00129 C THE OUT BUFFER MUST BE PRINTED OUT ONE MORE TIME IF IT IS 00096460
00130 C JUST PARTIALLY FILLED. (IF PNT=SETPT, IT HAS JUST BEEN 00096470
00131 C PRINTED OUT ABOVE.) 00096480
00132 C 00096490
00133 C 00096500
00134 IF(PNT.EQ.SETPT) GO TO 5000 00096510
00135 4900 CALL NDT57 (1) 00096520
00136 WRITE(PRNTR,3300) (OUT(K),K=1,TLIMT) 00096530
00137 5000 CONTINUE 00096540
00138 RETURN 00096550
00139 END 00096570
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 LINCT +10 PRNTR +5 BLANK +251 RECNO +347
DISK +6 NUM +306 REFPT +1602 RFCPT +1603 TLIMT +44
SORT +7220 VNUM +346 DEFBT +343 USDBT +342 OUT +1222
SUBPROGRAMS CALLED
NDT45 NDT57 NDT41
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
STOP 1 %PNT2 TAG 2 *K 3 SETPT 4
%LOC LAST 5 %FLAG %SUB J 6
.S0006 7 .S0004 10 .S0003 11 .S0002 12 %DIST
.S0001 13 .S0000 14 PNT 15 REF 16 I 17
SRTPT 20 FIRST 21 %START
NDT68 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-3
TEMPORARIES
.A0016 54 .Q0000 55 .Q0001 56
BLANK 21# 28# 67 115 116 124
CARD1 17# 25#
CARD2 17# 25#
CRSET 17# 25# 28#
DEF 17# 25#
DEFBT 21# 28# 60
DISK 21# 28# 81 104
DIST 21#
EQCHN 17# 25#
ERROR 17# 25#
FCTN 17# 25#
FIRST 21# 98# 113
FLAG 21#
I 21# 51# 52
J 21# 66# 67 73# 74 100# 102 123# 124
K 120 120# 136 136#
LAST 21# 99# 101 101# 102 113
LINCT 21# 28# 38#
LITBL 16# 25# 28#
LOC 21#
NDT41 53
NDT45 89 117
NDT57 39 119 135
NDT68 5#
NUM 21# 28#
OBJCD 17# 25# 28#
OPER 17# 25#
OUT 21# 28# 67# 74# 89 89# 115# 116# 117 117# 120 124# 136
PNT 21# 112# 114 114# 115 116 117 118 125# 134
PNT2 21#
PRNTR 21# 28# 40 41 120 136
PTRS 17# 25# 28#
RECNO 21# 28# 81
REF 21# 113# 117
REFPT 21# 28# 100
RFCPT 21# 28# 103 104
RMAX 16# 25#
RMIN 16# 25#
SETPT 21# 50# 112 122 125 134
SORT 21# 28# 52 102# 117 117#
SRTPT 5# 21# 51 98 99
START 21#
STOP 21# 122# 123
SUB 21#
SUBSC 17# 25#
SYM 17# 25# 28# 74
SYMTB 17# 25# 53 53#
TAG 21# 52# 53
TITLE 17# 25#
TLIMT 21# 28# 66 118 120 136
TMAP 17# 25#
TOKEN 17# 25#
TYPCT 17# 25#
USDBT 21# 28# 97
VNUM 21# 28# 88
XREF 17# 25# 28# 81# 89 89# 102 104#
1000P 100 102#
200P 40 42#
3000P 103 112#
300P 41 44#
3300P 120 121# 136
3500P 123 124#
4000P 113 118 126#
400P 66 67#
4900P 97 135#
5000P 51 60 134 137#
500P 73 74#
600P 88 97#
900P 100# 105
NDT68 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME 00096580
00002 C PROGRAM AUTHOR - DANIEL A. POYDENCE 00096590
00003 C 00096600
00004 C 00096610
00005 SUBROUTINE NDT69 00096620
00006 REAL*8 RMIN,RMAX,LITBL(1024) 00096630
00007 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00096640
00008 1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80), 00096650
00009 2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22), 00096660
00010 3SYMTB(5,512) 00096670
00011 INTEGER PRNTR,LINCT 00096680
00012 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT, 00096690
00013 1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN, 00096700
00014 2SYMTB,LITBL 00096710
00015 EQUIVALENCE (PRNTR,PTRS(2)),(LINCT,PTRS(5)) 00096720
00016 LINCT=-1 00096730
00017 CALL NDT57 (1) 00096740
00018 WRITE(PRNTR,100) 00096750
00019 100 FORMAT('A SYSTEM ANALYSIS IS CURRENTLY UNAVAILABLE.') 00096760
00020 RETURN 00096770
00021 END 00096780
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+13220)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 TYPCT +356 EQCHN +402
TOKEN +522 CARD1 +642 CARD2 +762 ERROR +1102 OBJCD +1222
DEF +1462 XREF +1602 TMAP +1722 FCTN +2042 SYMTB +2220
LITBL +7220 PRNTR +5 LINCT +10
SUBPROGRAMS CALLED
NDT57
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
TEMPORARIES
.A0016 13
CARD1 7# 12#
CARD2 7# 12#
CRSET 7# 12#
DEF 7# 12#
EQCHN 7# 12#
ERROR 7# 12#
FCTN 7# 12#
LINCT 11# 15# 16#
LITBL 6# 12#
NDT57 17
NDT69 5#
OBJCD 7# 12#
OPER 7# 12#
PRNTR 11# 15# 18
PTRS 7# 12# 15#
RMAX 6# 12#
RMIN 6# 12#
SUBSC 7# 12#
SYM 7# 12#
SYMTB 7# 12#
TITLE 7# 12#
TMAP 7# 12#
TOKEN 7# 12#
TYPCT 7# 12#
XREF 7# 12#
100P 18 19#
NDT69 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C* 00096790
00002 C 00096800
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00096810
00004 C PROGRAM AUTHOR - TIMOTHY J. MALLOY 00096820
00005 C 00096830
00006 C* 00096840
00007 SUBROUTINE NDT70 00096850
00008 C* 00096860
00009 C 00096870
00010 C OUTPUT PHASE 00096880
00011 C 00096890
00012 C THIS PROGRAM COORDINATES ALL OUTPUT. IT BRINGS IN THE DATA 00096900
00013 C AND THE OUTPUT BUFFERS FROM DISK, AND COMPLETES THE TITLE 00096910
00014 C DATA FOR OUTPUTTING. THEN IT WILL CALL THE PRINT OR PLOT 00096920
00015 C ROUTINE APPROPRIATELY. 00096930
00016 C 00096940
00017 C* 00096950
00018 REAL*8 RMIN,RMAX,VAR(5000), ACCUM,EXTME,RSTME(10) 00096960
00019 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00096970
00020 1SUBSC(6),OUTPT(240),LINE(120),OBJCD(6000) 00096980
00021 INTEGER DISK,LINCT,TPNT,TLIMT,OCBST,OCBPT,OCBND,BLANK,DASH, 00096990
00022 1VARCT,TYPE,CFLAG,OUT1(80),OUT2(80),OUT3(80),OAB, 00097000
00023 2OUTCT,DBEND,FIRST,LAST,LOOP,SUB,FADDR,PNTR,FLOC,START, 00097010
00024 3STOP,TEND,FHIGH,REC,VARND 00097020
00025 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE, 00097030
00026 1EXTME,RSTME,ACCUM,VAR 00097040
00027 EQUIVALENCE (DISK,PTRS(3)),(LINCT,PTRS(5)),(TPNT,PTRS(30)), 00097050
00028 1(TLIMT,PTRS(33)),(OCBST,PTRS(42)),(OCBPT,PTRS(43)), 00097060
00029 2(OCBND,PTRS(44)),(BLANK,CRSET(1)),(DASH,OPER(3)), 00097070
00030 3(OAB,PTRS(12)),(OUTCT,PTRS(10)),(DBEND,PTRS(22)) 00097080
00031 EQUIVALENCE (VARCT,OUTPT(1),OUT1(1)),(TYPE,OUTPT(2)), 00097090
00032 1(OUT2(1),OUTPT(81)),(OUT3(1),OUTPT(161),FHIGH), 00097100
00033 2(START,OUTPT(162)),(STOP,OUTPT(163)),(CFLAG,OUTPT(200)) 00097110
00034 EQUIVALENCE (VAR(1),OBJCD(1)),(VARND,PTRS(26)) 00097120
00035 C* 00097130
00036 C 00097140
00037 C OCBPT SETS UP THE MASTER LOOP, GOING THROUGH ONCE FOR EACH 00097150
00038 C OUTPUT REQUEST. 00097160
00039 C 00097170
00040 C LINCT IS SET TO -1 TO FORCE PAGING. 00097180
00041 C 00097190
00042 C* 00097200
00043 DO 3000 OCBPT = OCBST, OCBND, 3 00097210
00044 LINCT = -1 00097220
00045 C* 00097230
00046 C 00097240
00047 C READ THE OUTPT ARRAY IN TO COMMON FROM DISK. 00097250
00048 C 00097260
00049 C* 00097270
00050 READ (DISK'OCBPT) OUT1 00097280
00051 READ (DISK'OCBPT+1) OUT2 00097290
00052 READ (DISK'OCBPT+2) OUT3 00097300
00053 C* 00097310
00054 C 00097320
00055 C COMPLETE THE TITLE ARRAY FOR THIS OUTPUT REQUEST. 00097330
00056 C 00097340
NDT70 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 C IF THERE IS NO SUBTITLE DATA (CFLAG=0), OR IF THERE IS 00097350
00058 C NO ROOM FOR IT, DO NOT ATTEMPT TO PROCESS THE DATA. 00097360
00059 C 00097370
00060 C IF THE PROGRAM IS TITLE-LESS, SUPPRESS THE PRINTING OF 00097380
00061 C DASH. 00097390
00062 C 00097400
00063 C* 00097410
00064 FIRST = TPNT + 1 00097420
00065 IF (FIRST .GT. TLIMT-3) GO TO 1000 00097430
00066 TEND = TLIMT - 14 00097440
00067 DO 100 LOOP = FIRST, TEND 00097450
00068 100 TITLE(LOOP) = BLANK 00097460
00069 IF (CFLAG .EQ. 0) GO TO 1000 00097470
00070 IF (FIRST .EQ. 10) GO TO 200 00097480
00071 TITLE(FIRST+1) = DASH 00097490
00072 FIRST = FIRST + 3 00097500
00073 200 LAST = FIRST + 39 00097510
00074 IF (LAST .GT. TEND) LAST = TEND 00097520
00075 DO 300 LOOP = FIRST, LAST 00097530
00076 SUB = 201 + LOOP - FIRST 00097540
00077 300 TITLE(LOOP) = OUTPT(SUB) 00097550
00078 C* 00097560
00079 C 00097570
00080 C CALCULATE THE ADDRESSES FOR THE DATA BUFFER. 00097580
00081 C 00097590
00082 C* 00097600
00083 1000 FADDR = OAB + (OCBPT-OCBST)/3 00097610
00084 FLOC = OBJCD(FADDR) 00097620
00085 FHIGH = OBJCD(FLOC + 5) 00097630
00086 C* 00097640
00087 C 00097650
00088 C PULL DATA IN FROM DISK TO CORE. 00097660
00089 C 00097670
00090 C FIRST, READ IN ANY DATA THAT WAS WRITTEN OUT TO DISK. 00097680
00091 C 00097690
00092 C* 00097700
00093 FIRST = (OCBPT-OCBST)/3 + 1 + OCBND 00097710
00094 START = DBEND + 1 00097720
00095 REC = OBJCD(FLOC + 4) 00097730
00096 LAST = REC - OUTCT 00097740
00097 IF (LAST .LT. FIRST) GO TO 2100 00097750
00098 DO 2000 LOOP = FIRST, LAST, OUTCT 00097760
00099 STOP = START + 39 00097770
00100 IF (STOP .GT. VARND) CALL NDT12(8) 00097780
00101 READ (DISK'LOOP) (VAR(SUB),SUB=START,STOP) 00097790
00102 2000 START = STOP + 1 00097800
00103 C* 00097810
00104 C 00097820
00105 C BRING IN ANY DATA THAT WAS STILL IN THE OBJCD ARRAY TO 00097830
00106 C THE VAR ARRAY, BEHIND THE DATA FROM DISK. 00097840
00107 C 00097850
00108 C* 00097860
00109 2100 LOOP = START 00097870
00110 START = FHIGH + 2*VARCT 00097880
00111 STOP = OBJCD(FLOC + 6) 00097890
00112 IF (STOP .LT. START) GO TO 2300 00097900
NDT70 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-2
00113 DO 2200 SUB = START, STOP 00097910
00114 VAR(LOOP) = VAR(SUB) 00097920
00115 2200 LOOP = LOOP + 1 00097930
00116 2300 START = DBEND + 1 00097940
00117 STOP = LOOP - VARCT 00097950
00118 C* 00097960
00119 C 00097970
00120 C CALL EITHER THE PRINT OR PLOT ROUTINE. 00097980
00121 C 00097990
00122 C* 00098000
00123 IF (STOP .LT. START) GO TO 3000 00098010
00124 IF (TYPE .EQ. 12) CALL NDT71 00098020
00125 IF (TYPE .EQ. 13) CALL NDT72 00098030
00126 3000 CONTINUE 00098040
00127 RETURN 00098050
00128 END 00098070
EQUIVALENCED VARIABLES
COMMON BLOCKS
/.COMM./(+24576)
RMIN +0 RMAX +2 PTRS +4 TITLE +61 CRSET +251
OPER +320 SYM +331 SUBSC +350 OUTPT +356 LINE +736
EXTME +1126 RSTME +1130 ACCUM +1154 VAR +1156 DISK +6
LINCT +10 TPNT +41 TLIMT +44 OCBST +55 OCBPT +56
OCBND +57 BLANK +251 DASH +322 OAB +17 OUTCT +15
DBEND +31 VARCT +356 OUT1 +356 TYPE +357 OUT2 +476
OUT3 +616 FHIGH +616 START +617 STOP +620 CFLAG +665
OBJCD +1156 VARND +35
SUBPROGRAMS CALLED
NDT12 NDT72 NDT71
SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]
FADDR 1 %PNTR LAST 2 LOOP 3 .R0001 4
SUB 5 .S0005 6 .S0003 7 .S0002 10 .S0001 11
.S0000 12 FLOC 13 TEND 14 .O0000 15 FIRST 16
REC 17
TEMPORARIES
.A0016 20 .Q0002 21 .Q0003 22
ACCUM 18# 25#
BLANK 21# 27# 68
CFLAG 21# 31# 69
CRSET 19# 25# 27#
DASH 21# 27# 71
DBEND 21# 27# 94 116
DISK 21# 27# 50 51 52 101
EXTME 18# 25#
FADDR 21# 83# 84
FHIGH 21# 31# 85# 110
FIRST 21# 64# 65 67 70 71 72 72# 73 75 76 93# 97 98
FLOC 21# 84# 85 95 111
LAST 21# 73# 74 74# 75 96# 97 98
LINCT 21# 27# 44#
LINE 19# 25#
LOOP 21# 67# 68 75# 76 77 98# 101 109# 114 115 115# 117
NDT12 100
NDT70 7#
NDT71 124
NDT72 125
OAB 21# 27# 83
OBJCD 19# 34# 84 85 95 111
OCBND 21# 27# 43 93
OCBPT 21# 27# 43# 50 51 52 83 93
OCBST 21# 27# 43 83 93
OPER 19# 25# 27#
OUT1 21# 31# 50#
OUT2 21# 31# 51#
OUT3 21# 31# 52#
OUTCT 21# 27# 96 98
OUTPT 19# 25# 31# 77
PNTR 21#
PTRS 19# 25# 27# 34#
REC 21# 95# 96
RMAX 18# 25#
RMIN 18# 25#
RSTME 18# 25#
START 21# 31# 94# 99 101 102# 109 110# 112 113 116# 123
STOP 21# 31# 99# 100 101 102 111# 112 113 117# 123
SUB 21# 76# 77 101 101# 113# 114
SUBSC 19# 25#
SYM 19# 25#
TEND 21# 66# 67 74
TITLE 19# 25# 68# 71# 77#
TLIMT 21# 27# 65 66
TPNT 21# 27# 64
TYPE 21# 31# 124 125
VAR 18# 25# 34# 101# 114# 114
VARCT 21# 31# 110 117
VARND 21# 34# 100
1000P 65 69 83#
100P 67 68#
2000P 98 102#
200P 70 73#
2100P 97 109#
2200P 113 115#
2300P 112 116#
3000P 43 123 126#
300P 75 77#
NDT70 [ NO ERRORS DETECTED ]
MAIN. STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1
00001 C* 00098080
00002 C 00098090
00003 C COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME 00098100
00004 C PROGRAM AUTHOR - GARY PELKEY 00098110
00005 C TRANSLATED BY - TIMOTHY J. MALLOY 00098120
00006 C 00098130
00007 C* 00098140
00008 SUBROUTINE NDT71 00098150
00009 C* 00098160
00010 C 00098170
00011 C PRINT 00098180
00012 C 00098190
00013 C THIS ROUTINE HANDLES PRINTED OUTPUT. 00098200
00014 C 00098210
00015 C* 00098220
00016 REAL*8 RMIN,RMAX,VAR(5000), ACCUM,EXTME,RSTME(10) 00098230
00017 INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15), 00098240
00018 1SUBSC(6),OUTPT(240),LINE(120),OBJCD(6000) 00098250
00019 INTEGER VARCT,PLINS,AFTER(11),CRSTC(11),ECHAR(4,11),FLOC, 00098260
00020 1START,STOP,OUT(7,11),PRNTR,BLANK,E,PLUS,MINUS,NUM(10) 00098270
00021 INTEGER LOOP,HIPNT,FHIGH,HCRST,LCRST,MOVES,SUB,BUFF 00098280
00022 COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE, 00098290
00023 1EXTME,RSTME,ACCUM,VAR 00098300
00024 EQUIVALENCE (VAR(1),OBJCD(1)) 00098310
00025 EQUIVALENCE (VARCT,OUTPT(1)),(PLINS,PTRS(32)),(AFTER(1), 00098320
00026 1OUTPT(92)),(CRSTC(1),OUTPT(103)),(ECHAR(1,1),OUTPT(114)), 00098330
00027 2(FLOC,OUTPT(161)),(START,OUTPT(162)),(STOP,OUTPT(163)), 00098340
00028 3(OUT(1,1),OUTPT(164)),(FHIGH,OUTPT(161)) 00098350
00029 EQUIVALENCE (PRNTR,PTRS(2)),(BLANK,CRSET(1)),(E,CRSET(8)), 00098360
00030 1(PLUS,OPER(2)),(MINUS,OPER(3)),(NUM(1),CRSET(30)) 00098370
00031 C* 00098380
00032 C 00098390
00033 C SET PLINS --- THE NUMBER OF LINES IN THE OUTPUT HEADING 00098400
00034 C 00098410
00035 C* 00098420
00036 PLINS = 2 00098430
00037 C* 00098440
00038 C 00098450
00039 C ENTER A LOOP TO DETERMINE EACH VARIABLE'S PRINT 00098460
00040 C CHARACTERISTIC. 00098470
00041 C 00098480
00042 C SCALE IS A 2 BY 11 ARRAY WHICH HOLDS THIS CHARACTERISTIC 00098490
00043 C INFORMATION. THE FIRST ROW IN SCALE CONTAINS THE NUMBER 00098500
00044 C OF PLACES AFTER THE DECIMAL POINT FOR THE CORRESPONDING 00098510
00045 C VARIABLE, AND THE SECOND ROW CONTAINS THE CHARACTERISTIC. 00098520
00046 C 00098530
00047 C* 00098540
00048 DO 500 LOOP = 1, VARCT 00098550
00049 HIPNT = FHIGH + 2*(LOOP-1) 00098560
00050 CALL NDT77(VAR(HIPNT),HCRST) 00098570
00051 IF (HCRST .LE. -1 .OR. HCRST .GE. 3) GO TO 200 00098580
00052 AFTER(LOOP) = 4 - HCRST 00098590
00053 CRSTC(LOOP) = 0 00098600
00054 GO TO 500 00098610
00055 200 AFTER(LOOP) = 4 00098620
00056 CRSTC(LOOP) = HCRST 00098630
NDT71 STNDRD FORTRAN V.5A(700) /KI/OPT/C 4-SEP-81 16:37 PAGE 1-1
00057 400 MOVES = MOD(IABS(HCRST),3) 00098640
00058 IF(HCRST .LT. 0 .AND. MOVES .NE. 0) MOVES = 3 - MOVES 00098650
00059 AFTER(LOOP) = AFTER(LOOP) - MOVES 00098660
00060 CRSTC(LOOP) = CRSTC(LOOP) - MOVES 00098670
00061 IF (CRSTC(LOOP) .NE. 0) PLINS = 3 00098680
00062 500 CONTINUE 00098690
00063 C 00098700
00064 C BLANK OUT THE ECHAR ARRAY, AND THEN FILL IT TO HOLD THE 00098710
00065 C EXPONENTIAL CHARACTERS FOR PRINTING.