Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-06 - decus/20-160/ndtrn2.lst
There are no other files named ndtrn2.lst in the archive.
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     00000190
00020	      INTEGER INIT0(21644),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     38,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(38000,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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	      DO 10 I=1,21644                                                   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=4096                                                        00001000
00107	      LITND=8192                                                        00001010
00108	      DSKND=38000                                                       00001020
00109	      VARND=18705                                                       00001030
00110	      OBJND=37410                                                       00001040
00111	C                                                                       00001050
00112	C                                                                       00001060
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-7




COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
RMIN	+0	RMAX	+2	PTRS	+4	TITLE	+61	CRSET	+251
OPER	+320	SYM	+331	SUBSC	+350	TYPCT	+356	EQCHN	+402
NDT04 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-5


TOKEN	+522	CARD1	+642	CARD2	+762	ERROR	+1102	OBJCD	+1222
DEF	+1462	XREF	+1602	TMAP	+1722	FCTN	+2042	SYMTB	+2220
LITBL	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-5



EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-3




COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
RMIN	+0	RMAX	+2	PTRS	+4	TITLE	+61	CRSET	+251
NDT08 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220	DISK	+6	MAC1	+1462	MAC2	+1602
NDT10 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220

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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220

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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1




COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-7



EQUIVALENCED VARIABLES


(  I	1	 BRNCH	1	)


COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2



EQUIVALENCED VARIABLES


(  BLANK	1	 DASH	1	)


COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1




COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
RMIN	+0	RMAX	+2	PTRS	+4	TITLE	+61	CRSET	+251
NDT21 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
RMIN	+0	RMAX	+2	PTRS	+4	TITLE	+61	CRSET	+251
NDT22 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1




COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
RMIN	+0	RMAX	+2	PTRS	+4	TITLE	+61	CRSET	+251
OPER	+320	SYM	+331	SUBSC	+350	TYPCT	+356	EQCHN	+402
NDT28 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


TOKEN	+522	CARD1	+642	CARD2	+762	ERROR	+1102	OBJCD	+1222
DEF	+1462	XREF	+1602	TMAP	+1722	FCTN	+2042	SYMTB	+2220
LITBL	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
RMIN	+0	RMAX	+2	PTRS	+4	TITLE	+61	CRSET	+251
OPER	+320	SYM	+331	SUBSC	+350	TYPCT	+356	EQCHN	+402
NDT29 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


TOKEN	+522	CARD1	+642	CARD2	+762	ERROR	+1102	OBJCD	+1222
DEF	+1462	XREF	+1602	TMAP	+1722	FCTN	+2042	SYMTB	+2220
LITBL	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
NDT32 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220	CDATA	+1222	OUTPT	+1462	LOOP	+1775
NDT35 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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	      MACRO(11) = PGMCT + 11                                            00057590
00258	      MACRO(10) = ARGS                                                  00057600
00259	      MACRO(9) = 0                                                      00057610
00260	      RETURN                                                            00057620
00261	      END                                                               00057640

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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#	   258
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
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#	   257#	   258#	   259#
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
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	   257
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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220

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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220
NDT41 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220	OBJPT	+1222


SUBPROGRAMS CALLED

NDT12	
NDT46 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2




COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220	EQPOS	+1724	TOKPT	+524


SUBPROGRAMS CALLED

NDT14	
NDT49 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2



EQUIVALENCED VARIABLES


(  FNUM	1	 OPTYP	1	)


COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
RMIN	+0	RMAX	+2	PTRS	+4	TITLE	+61	CRSET	+251
NDT52 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2




COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	      RETURN                                                            00072200
00058	      END                                                               00072220

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2



EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     00074420
00028	      INTEGER SYMND,I,VTYPE,RECNO,START,REC,EQNPT,EQEND,DISK,DIST,      00074430
00029	     1EQSRT(16384),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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	SYMND	+24	VTYPE	+337	RECNO	+347	EQNPT	+37
DISK	+6	EQSRT	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(18705),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(37410)                        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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2




COMMON BLOCKS

/.COMM./(+112220)
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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(18705),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(37410)                        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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-13




COMMON BLOCKS

/.COMM./(+112220)
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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(18705),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(37410)                        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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-10



EQUIVALENCED VARIABLES


(  OPRND	1	 VNUM	1	)


COMMON BLOCKS

/.COMM./(+112220)
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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-3


DEF	+1462	XREF	+1602	TMAP	+1722	FCTN	+2042	SYMTB	+2220
LITBL	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     00094670
00022	      INTEGER LINCT,TAG,TYPE,SMART,NAME(6),J,VNUM,SRTPT,PRNTR,          00094680
00023	     1SORT(16384)                                                       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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	LINCT	+10	TYPE	+337	NAME	+331	VNUM	+346
PRNTR	+5	SORT	+52220


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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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(16384),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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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	+52220	LINCT	+10	PRNTR	+5	BLANK	+251	RECNO	+347
DISK	+6	NUM	+306	REFPT	+1602	RFCPT	+1603	TLIMT	+44
SORT	+52220	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(8192)                                      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,4096)                                                     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./(+112220)
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	+52220	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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(18705),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(37410)                        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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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./(+112220)
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. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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(18705),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(37410)                        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 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	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.                              00098720
00066	C                                                                       00098730
00067	C*                                                                      00098740
00068	      DO 600 LOOP = 114, 157                                            00098750
00069	  600 OUTPT(LOOP) = BLANK                                               00098760
00070	      IF (PLINS .EQ. 2) GO TO 800                                       00098770
00071	      DO 700 LOOP = 1, VARCT                                            00098780
00072	      ECHAR(1,LOOP) = E                                                 00098790
00073	      ECHAR(2,LOOP) = PLUS                                              00098800
00074	      IF (CRSTC(LOOP) .LT. 0) ECHAR(2,LOOP) = MINUS                     00098810
00075	      SUB = IABS(CRSTC(LOOP)/10) + 1                                    00098820
00076	      ECHAR(3,LOOP) = NUM(SUB)                                          00098830
00077	      SUB = IABS(CRSTC(LOOP)) - SUB*10 + 11                             00098840
00078	  700 ECHAR(4,LOOP) = NUM(SUB)                                          00098850
00079	C*                                                                      00098860
00080	C                                                                       00098870
00081	C     BLANK OUT THE OUT ARRAY, WHICH WILL BE USED TO STORE THE          00098880
00082	C     ACTUAL CHARACTERS USED FOR OUTPUT.                                00098890
00083	C                                                                       00098900
00084	C*                                                                      00098910
00085	  800 DO 900 LOOP = 164, 240                                            00098920
00086	  900 OUTPT(LOOP) = BLANK                                               00098930
00087	C*                                                                      00098940
00088	C                                                                       00098950
00089	C     GO THROUGH THE DATA BUFFERS, CONVERT THE DATA TO CHARACTERS       00098960
00090	C     BY CALLING NDT43, AND PRINT OUT THE OUTPUT.                       00098970
00091	C                                                                       00098980
00092	C*                                                                      00098990
00093	      DO 1100 BUFF = START, STOP, VARCT                                 00099000
00094	      DO 1000 LOOP = 1, VARCT                                           00099010
00095	      SUB = BUFF + LOOP - 1                                             00099020
00096	 1000 CALL NDT43(VAR(SUB),OUT(1,LOOP),CRSTC(LOOP),AFTER(LOOP))          00099030
00097	      CALL NDT78(1)                                                     00099040
00098	      WRITE (PRNTR,1200) ((OUT(SUB,LOOP),SUB=1,7),LOOP=1,VARCT)         00099050
00099	 1100 CONTINUE                                                          00099060
00100	 1200 FORMAT(5X,11(1X,7A1,2X))                                          00099070
00101	      RETURN                                                            00099080
00102	      END                                                               00099100

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
RMIN	+0	RMAX	+2	PTRS	+4	TITLE	+61	CRSET	+251
NDT71 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2


OPER	+320	SYM	+331	SUBSC	+350	OUTPT	+356	LINE	+736
EXTME	+1126	RSTME	+1130	ACCUM	+1154	VAR	+1156	OBJCD	+1156
VARCT	+356	PLINS	+43	AFTER	+511	CRSTC	+524	ECHAR	+537
FLOC	+616	START	+617	STOP	+620	OUT	+621	FHIGH	+616
PRNTR	+5	BLANK	+251	E	+260	PLUS	+321	MINUS	+322
NUM	+306

SUBPROGRAMS CALLED

MOD.	IABS.	NDT78	NDT77	NDT43	

SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 HCRST	1	 LOOP	2	 .R0002	3	 .R0001	4	 HIPNT	5	
 .R0000	6	 SUB	7	 .S0006	10	 .S0005	11	 .S0004	12	
 .S0003	13	 .S0002	14	 .S0001	15	 .S0000	16	 BUFF	17	
 MOVES	20	%LCRST		

TEMPORARIES

 .A0016	25	 .Q0003	26	 .Q0004	27	 .Q0005	30	 .Q0006	31	
ACCUM	    16#	    22#
AFTER	    19#	    25#	    52#	    55#	    59#	    59	    96	    96#
BLANK	    19#	    29#	    69	    86
BUFF	    21#	    93#	    95
CRSET	    17#	    22#	    29#
CRSTC	    19#	    25#	    53#	    56#	    60#	    60	    61	    74	    75	    77	    96	    96#
E	    19#	    29#	    72
ECHAR	    19#	    25#	    72#	    73#	    74#	    76#	    78#
EXTME	    16#	    22#
FHIGH	    21#	    25#	    49
FLOC	    19#	    25#
HCRST	    21#	    50	    50#	    51	    52	    56	    57	    58
HIPNT	    21#	    49#	    50
IABS.	    57	    75	    77
LCRST	    21#
LINE	    17#	    22#
LOOP	    21#	    48#	    49	    52	    53	    55	    56	    59	    60	    61	    68#	    69	    71#	    72
	    73	    74	    75	    76	    77	    78	    85#	    86	    94#	    95	    96	    98	    98#
MINUS	    19#	    29#	    74
MOD.	    57
MOVES	    21#	    57#	    58	    58#	    59	    60
NDT43	    96
NDT71	     8#
NDT77	    50
NDT78	    97
NUM	    19#	    29#	    76	    78
OBJCD	    17#	    24#
OPER	    17#	    22#	    29#
OUT	    19#	    25#	    96	    96#	    98
OUTPT	    17#	    22#	    25#	    69#	    86#
PLINS	    19#	    25#	    36#	    61#	    70
PLUS	    19#	    29#	    73
PRNTR	    19#	    29#	    98
PTRS	    17#	    22#	    25#	    29#
RMAX	    16#	    22#
RMIN	    16#	    22#
RSTME	    16#	    22#
START	    19#	    25#	    93
STOP	    19#	    25#	    93
SUB	    21#	    75#	    76	    77	    77#	    78	    95#	    96	    98	    98#
SUBSC	    17#	    22#
SYM	    17#	    22#
TITLE	    17#	    22#
VAR	    16#	    22#	    24#	    50	    50#	    96	    96#
VARCT	    19#	    25#	    48	    71	    93	    94	    98
1000P	    94	    96#
1100P	    93	    99#
1200P	    98	   100#
200P	    51	    55#
400P	    57#
500P	    48	    54	    62#
600P	    68	    69#
700P	    71	    78#
800P	    70	    85#
900P	    85	    86#

NDT71 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*                                                                      00099110
00002	C                                                                       00099120
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME                     00099130
00004	C     PROGRAM AUTHOR - TIMOTHY J. MALLOY                                00099140
00005	C                                                                       00099150
00006	C*                                                                      00099160
00007	      SUBROUTINE NDT72                                                  00099170
00008	C*                                                                      00099180
00009	C                                                                       00099190
00010	C          PLOT PRELIMINARIES                                           00099200
00011	C                                                                       00099210
00012	C*                                                                      00099220
00013	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00099230
00014	      REAL*8 LOW(11),HIGH(11)                                           00099240
00015	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00099250
00016	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00099260
00017	      INTEGER VARCT,SRNUM,FLAG(11),PLINS,SRCNT,LSTSR,CLNUM,             00099270
00018	     1POS,OPTNS,NARO,PLTSZ,PLTBG,PLTND,PLTDV,IVPLT,I,                   00099280
00019	     2IVNAM(10),BLANK                                                   00099290
00020	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00099300
00021	     1EXTME,RSTME,ACCUM,VAR                                             00099310
00022	      EQUIVALENCE (VARCT,OUTPT(1)),(SRNUM,OUTPT(171)),(LOW(1),          00099320
00023	     1OUTPT(103)),(HIGH(1),OUTPT(125)),(FLAG(1),OUTPT(147)),            00099330
00024	     2(PLINS,PTRS(32)),(OPTNS,PTRS(7)),(PLTSZ,OUTPT(164)),(PLTDV,       00099340
00025	     3OUTPT(165)),(PLTBG,OUTPT(166)),(PLTND,OUTPT(167)),                00099350
00026	     4(VAR(1),OBJCD(1)),(SRCNT,OUTPT(178)),(IVPLT,OUTPT(158)),          00099360
00027	     5(BLANK,CRSET(1)),(IVNAM(1),OUTPT(2))                              00099370
00028	C*                                                                      00099380
00029	C                                                                       00099390
00030	C     SET PLINS --- THE NUMBER OF LINES IN THE OUTPUT HEADING           00099400
00031	C                                                                       00099410
00032	C*                                                                      00099420
00033	      PLINS = - (SRCNT + 2)                                             00099430
00034	C*                                                                      00099440
00035	C                                                                       00099450
00036	C     SET THE PLOT VARIABLES WHICH DESIGNATE THE SIZE OF THE PLOT,      00099460
00037	C     ITS BEGINNING AND END POSITIONS ON THE OUTPUT PAGE, AND THE       00099470
00038	C     SIZE OF THE DIVISION BETWEEN THE GRIDS ON THE PLOTTED PAGE.       00099480
00039	C                                                                       00099490
00040	C*                                                                      00099500
00041	      NARO = MOD(OPTNS/8,2)                                             00099510
00042	      PLTSZ = 89 - 32*NARO                                              00099520
00043	      PLTBG = 1 + 6*NARO                                                00099530
00044	      PLTND = 120 - 42*NARO                                             00099540
00045	      PLTDV = (PLTSZ - 1)/4                                             00099550
00046	C*                                                                      00099560
00047	C                                                                       00099570
00048	C     GO THROUGH THE FLAG ARRAY, AND FOR EACH DISTINCT SERIES           00099580
00049	C     CALL NDT79 TO GET THE HIGH AND LOW VALUES FOR THAT SERIES.        00099590
00050	C                                                                       00099600
00051	C*                                                                      00099610
00052	      LSTSR = 0                                                         00099620
00053	      DO 100 CLNUM = 1, VARCT                                           00099630
00054	      SRNUM = FLAG(CLNUM)/10                                            00099640
00055	      IF (SRNUM .EQ. LSTSR) GO TO 100                                   00099650
00056	      CALL NDT79                                                        00099660
NDT72 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	      LSTSR = SRNUM                                                     00099670
00058	  100 CONTINUE                                                          00099680
00059	C*                                                                      00099690
00060	C                                                                       00099700
00061	C     NOW COPY THE HIGH AND LOW VALUES FOR EACH VARIABLE,               00099710
00062	C     ACCORDING TO ITS SERIES.                                          00099720
00063	C                                                                       00099730
00064	C     REMEMBER:  DIVIDING FLAG BY TEN LEAVES THE SERIES NUMBER.         00099740
00065	C                                                                       00099750
00066	C*                                                                      00099760
00067	      DO 200 CLNUM = 1, VARCT                                           00099770
00068	      FLAG(CLNUM) = FLAG(CLNUM)/10                                      00099780
00069	      POS = FLAG(CLNUM)                                                 00099790
00070	      LOW(CLNUM) = LOW(POS)                                             00099800
00071	  200 HIGH(CLNUM) = HIGH(POS)                                           00099810
00072	C*                                                                      00099820
00073	C                                                                       00099830
00074	C     MOVE THE INDEP VAR NAME FIELD FROM AN                             00099840
00075	C     EIGHT WORD ARRAY TO A TEN WORD ARRAY.                             00099850
00076	C                                                                       00099860
00077	C*                                                                      00099870
00078	      DO 400 I = 2, 9                                                   00099880
00079	  400 IVNAM(I) = IVNAM(I+1)                                             00099890
00080	      IVNAM(1) = BLANK                                                  00099900
00081	      IVNAM(10) = BLANK                                                 00099910
00082	C*                                                                      00099920
00083	C                                                                       00099930
00084	C     IVPLT IS 0 FOR A TIME PLOT, 1 FOR AN X//Y PLOT.                   00099940
00085	C                                                                       00099950
00086	C     CALL THE APPROPRIATE PLOT ROUTINE.                                00099960
00087	C                                                                       00099970
00088	C     BUT FIRST MAKE SURE THE LINE ARRAY IS BLANK.                      00099980
00089	C                                                                       00099981
00090	C*                                                                      00099982
00091	      DO 450 I = 1, 120                                                 00099983
00092	450   LINE(I) = BLANK                                                   00099984
00093	      IF (IVPLT .EQ. 0) GO TO 300                                       00099990
00094	      CALL NDT74                                                        00100000
00095	      GO TO 500                                                         00100010
00096	  300 CALL NDT73                                                        00100020
00097	  500 RETURN                                                            00100030
00098	      END                                                               00100050

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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	VARCT	+356
SRNUM	+630	LOW	+524	HIGH	+552	FLAG	+600	PLINS	+43
OPTNS	+12	PLTSZ	+621	PLTDV	+622	PLTBG	+623	PLTND	+624
NDT72 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2


OBJCD	+1156	SRCNT	+637	IVPLT	+613	BLANK	+251	IVNAM	+357


SUBPROGRAMS CALLED

NDT79	MOD.	NDT73	NDT74	

SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 LSTSR	1	 NARO	2	 CLNUM	3	 POS	4	 .R0000	5	
 .S0003	6	 .S0002	7	 .S0001	10	 .S0000	11	 I	12	
 .O0001	13	

TEMPORARIES

 .A0016	14	
ACCUM	    13#	    20#
BLANK	    17#	    22#	    80	    81	    92
CLNUM	    17#	    53#	    54	    67#	    68	    69	    70	    71
CRSET	    15#	    20#	    22#
EXTME	    13#	    20#
FLAG	    17#	    22#	    54	    68#	    68	    69
HIGH	    14#	    22#	    71#	    71
I	    17#	    78#	    79	    91#	    92
IVNAM	    17#	    22#	    79#	    79	    80#	    81#
IVPLT	    17#	    22#	    93
LINE	    15#	    20#	    92#
LOW	    14#	    22#	    70#	    70
LSTSR	    17#	    52#	    55	    57#
MOD.	    41
NARO	    17#	    41#	    42	    43	    44
NDT72	     7#
NDT73	    96
NDT74	    94
NDT79	    56
OBJCD	    15#	    22#
OPER	    15#	    20#
OPTNS	    17#	    22#	    41
OUTPT	    15#	    20#	    22#
PLINS	    17#	    22#	    33#
PLTBG	    17#	    22#	    43#
PLTDV	    17#	    22#	    45#
PLTND	    17#	    22#	    44#
PLTSZ	    17#	    22#	    42#	    45
POS	    17#	    69#	    70	    71
PTRS	    15#	    20#	    22#
RMAX	    13#	    20#
RMIN	    13#	    20#
RSTME	    13#	    20#
SRCNT	    17#	    22#	    33
SRNUM	    17#	    22#	    54#	    55	    57
SUBSC	    15#	    20#
SYM	    15#	    20#
TITLE	    15#	    20#
VAR	    13#	    20#	    22#
VARCT	    17#	    22#	    53	    67
100P	    53	    55	    58#
200P	    67	    71#
300P	    93	    96#
400P	    78	    79#
450P	    91	    92#
500P	    95	    97#

NDT72 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*                                                                      00100060
00002	C                                                                       00100070
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME                     00100080
00004	C     PROGRAM AUTHOR - TIMOTHY J. MALLOY                                00100090
00005	C                                                                       00100100
00006	C*                                                                      00100110
00007	      SUBROUTINE NDT73                                                  00100120
00008	C*                                                                      00100130
00009	C                                                                       00100140
00010	C          TIME PLOT                                                    00100150
00011	C                                                                       00100160
00012	C*                                                                      00100170
00013	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00100180
00014	      REAL*8 LOW(11),HIGH(11)                                           00100190
00015	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00100200
00016	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00100210
00017	      INTEGER PRNTR,BLANK,DOT,COMMA,VARCT,START,STOP,PLTSZ,PLTDV,       00100220
00018	     1PLTBG,PLTND,PCHAR,ODD,IVPRT,CHAR(10),PLOT(89),DUP(17),            00100230
00019	     2OVRLP(11),LOOP,I,CLNUM,PLACE,HERE,POS,END                         00100240
00020	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00100250
00021	     1EXTME,RSTME,ACCUM,VAR                                             00100260
00022	      EQUIVALENCE (VAR(1),OBJCD(1))                                     00100270
00023	      EQUIVALENCE (PRNTR,PTRS(2)),(BLANK,CRSET(1)),(DOT,OPER(1)),       00100280
00024	     1(COMMA,OPER(9)),(VARCT,OUTPT(1)),(LOW(1),OUTPT(103)),             00100290
00025	     2(HIGH(1),OUTPT(125)),(START,OUTPT(162)),(STOP,OUTPT(163)),        00100300
00026	     3(PLTSZ,OUTPT(164)),(PLTDV,OUTPT(165)),(PLTBG,OUTPT(166)),         00100310
00027	     4(PLTND,OUTPT(167)),(PCHAR,OUTPT(168)),(ODD,OUTPT(169)),           00100320
00028	     5(IVPRT,OUTPT(170)),(CHAR(1),OUTPT(190)),(PLOT(1),LINE(14)),       00100330
00029	     6(DUP(1),LINE(105)),(OVRLP(1),OUTPT(179))                          00100340
00030	C*                                                                      00100350
00031	C                                                                       00100360
00032	C     PHASE I --- INITIALIZATION                                        00100370
00033	C                                                                       00100380
00034	C                                                                       00100390
00035	C     LOOP IS USED TO KEEP TRACK OF THE BUFFER ADDRESS.                 00100400
00036	C                                                                       00100410
00037	C     IVPRT CAUSES EVERY TENTH LINE TO BE GRIDDED.                      00100420
00038	C                                                                       00100430
00039	C*                                                                      00100440
00040	      IVPRT = 1                                                         00100450
00041	      DO 1300 LOOP = START, STOP, VARCT                                 00100460
00042	C*                                                                      00100470
00043	C                                                                       00100480
00044	C     THE LAST LINE OF DATA IS ALWAYS GRIDDED.                          00100490
00045	C                                                                       00100500
00046	C     CHECK FOR THE NEED TO GRID THIS LINE (NDT82).                     00100510
00047	C                                                                       00100520
00048	C*                                                                      00100530
00049	      IF (LOOP .GT. STOP-VARCT) IVPRT = 1                               00100540
00050	      CALL NDT82(VAR(LOOP))                                             00100550
00051	C*                                                                      00100560
00052	C                                                                       00100570
00053	C     ZERO OUT THE PLOT AND OVERLAP ARRAYS.                             00100580
00054	C                                                                       00100590
00055	C*                                                                      00100600
00056	      DO 200 I = 1, PLTSZ                                               00100610
NDT73 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	  200 PLOT(I) = 0                                                       00100620
00058	      DO 300 I = 1, 11                                                  00100630
00059	  300 OVRLP(I) = 0                                                      00100640
00060	C*                                                                      00100650
00061	C                                                                       00100660
00062	C     PHASE II  ---  INTERPRETATION                                     00100670
00063	C                                                                       00100680
00064	C                                                                       00100690
00065	C     TRANSFER DATA FROM THE BUFFER TO THE PLOT.                        00100700
00066	C                                                                       00100710
00067	C     IF THE PLACE THE DATA WOULD APPEAR ON THE PLOT LINE IS NOT        00100720
00068	C     IN THE RANGE, IGNORE IT.                                          00100730
00069	C                                                                       00100740
00070	C*                                                                      00100750
00071	      DO 500 CLNUM = 2, VARCT                                           00100760
00072	      POS = LOOP + CLNUM - 1                                            00100770
00073	      PLACE=(VAR(POS)-LOW(CLNUM))*((PLTSZ-1)/(HIGH(CLNUM)-LOW(CLNUM)))  00100780
00074	     A+1.5D0                                                            00100790
00075	      IF (PLACE .LT. 1 .OR. PLACE .GT. PLTSZ) GO TO 500                 00100800
00076	C*                                                                      00100810
00077	C                                                                       00100820
00078	C     CHECK FOR OVERLAPS.                                               00100830
00079	C                                                                       00100840
00080	C*                                                                      00100850
00081	      IF (PLOT(PLACE) .EQ. 0) GO TO 400                                 00100860
00082	      HERE = PLOT(PLACE)                                                00100870
00083	      OVRLP(CLNUM) = HERE                                               00100880
00084	      OVRLP(HERE) = -1                                                  00100890
00085	      GO TO 500                                                         00100900
00086	C*                                                                      00100910
00087	C                                                                       00100920
00088	C     STORE THE VARIABLE NUMBER ON THE PLOT LINE.                       00100930
00089	C                                                                       00100940
00090	C*                                                                      00100950
00091	  400 PLOT(PLACE) = CLNUM                                               00100960
00092	  500 CONTINUE                                                          00100970
00093	C*                                                                      00100980
00094	C                                                                       00100990
00095	C     PHASE III  ---  OVERLAP                                           00101000
00096	C                                                                       00101010
00097	C                                                                       00101020
00098	C     GO THROUGH THE OVERLAP ARRAY.  IF OVRLP IS NOT ZERO,              00101030
00099	C     THERE WAS NO OVERLAP.                                             00101040
00100	C                                                                       00101050
00101	C*                                                                      00101060
00102	      HERE = 1                                                          00101070
00103	      DO 700 CLNUM = 2, VARCT                                           00101080
00104	      IF (OVRLP(CLNUM) .GE. 0) GO TO 700                                00101090
00105	C*                                                                      00101100
00106	C                                                                       00101110
00107	C     AN OVERLAP OCCURRED --- NOW CHECK TO SEE WHICH WERE SUPPRESSED    00101120
00108	C     AND NOTE THEM IN THE DUP ARRAY.                                   00101130
00109	C                                                                       00101140
00110	C*                                                                      00101150
00111	      DUP(HERE) = CHAR(CLNUM - 1)                                       00101160
00112	      HERE = HERE + 1                                                   00101170
NDT73 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2


00113	      PLACE = CLNUM + 1                                                 00101180
00114	      DO 600 I = PLACE, VARCT                                           00101190
00115	      IF (OVRLP(I) .NE. CLNUM) GO TO 600                                00101200
00116	      DUP(HERE) = CHAR(I - 1)                                           00101210
00117	      HERE = HERE + 1                                                   00101220
00118	  600 CONTINUE                                                          00101230
00119	      DUP(HERE) = COMMA                                                 00101240
00120	      HERE = HERE + 1                                                   00101250
00121	  700 CONTINUE                                                          00101260
00122	C*                                                                      00101270
00123	C                                                                       00101280
00124	C     BLANK OUT THE REST OF THE DUP ARRAY.                              00101290
00125	C                                                                       00101300
00126	C*                                                                      00101310
00127	      IF (HERE .NE. 1) HERE = HERE - 1                                  00101320
00128	      DO 800 I = HERE, 17                                               00101330
00129	  800 DUP(I) = BLANK                                                    00101340
00130	C*                                                                      00101350
00131	C                                                                       00101360
00132	C     TRANSFER DUP ARRAY ONTO THE PLOT LINE.                            00101370
00133	C                                                                       00101380
00134	C*                                                                      00101390
00135	      DO 900 I = 1, 16                                                  00101400
00136	      POS = PLTSZ + 15 + I                                              00101410
00137	  900 LINE(POS) = DUP(I)                                                00101420
00138	      LINE(PLTSZ + 14) = BLANK                                          00101430
00139	      LINE(PLTSZ + 15) = BLANK                                          00101440
00140	C*                                                                      00101450
00141	C                                                                       00101460
00142	C     PHASE IV  ---  CHARACTER TRANSFER                                 00101470
00143	C                                                                       00101480
00144	C                                                                       00101490
00145	C     CHANGE THE VARIABLE NUMBERS TO CHARACTERS.                        00101500
00146	C     CHECK THE FIRST POSITION, AND THEN EACH PLACE ON THE              00101510
00147	C     PLOT LINE.                                                        00101520
00148	C                                                                       00101530
00149	C*                                                                      00101540
00150	      PCHAR = DOT                                                       00101550
00151	      CALL NDT81(PLOT(1))                                               00101560
00152	      DO 1100 I = 2, PLTSZ, PLTDV                                       00101570
00153	      END = PLTDV - 2 + I                                               00101580
00154	      DO 1000 PLACE = I, END                                            00101590
00155	      PCHAR = BLANK                                                     00101600
00156	      IF (PLACE .NE. PLACE/2*2) PCHAR = ODD                             00101610
00157	      CALL NDT81(PLOT(PLACE))                                           00101620
00158	 1000 CONTINUE                                                          00101630
00159	C*                                                                      00101640
00160	C                                                                       00101650
00161	C     CHECK END + 1                                                     00101660
00162	C                                                                       00101670
00163	C*                                                                      00101680
00164	      PCHAR = DOT                                                       00101690
00165	      CALL NDT81(PLOT(END + 1))                                         00101700
00166	 1100 CONTINUE                                                          00101710
00167	C*                                                                      00101720
00168	C                                                                       00101730
NDT73 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-3


00169	C     PHASE V  ---  OUTPUTTING THE FINISHED PLOT LINE                   00101740
00170	C                                                                       00101750
00171	C                                                                       00101760
00172	C*                                                                      00101770
00173	      CALL NDT78(1)                                                     00101780
00174	      WRITE (PRNTR,1200) (LINE(I),I=PLTBG,PLTND)                        00101790
00175	 1200 FORMAT (1X, 120A1)                                                00101800
00176	 1300 CONTINUE                                                          00101810
00177	      RETURN                                                            00101820
00178	      END                                                               00101840

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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
PRNTR	+5	BLANK	+251	DOT	+320	COMMA	+330	VARCT	+356
LOW	+524	HIGH	+552	START	+617	STOP	+620	PLTSZ	+621
PLTDV	+622	PLTBG	+623	PLTND	+624	PCHAR	+625	ODD	+626
IVPRT	+627	CHAR	+653	PLOT	+753	DUP	+1106	OVRLP	+640


SUBPROGRAMS CALLED

NDT82	NDT78	NDT81	

SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 END	1	 LOOP	2	 CLNUM	3	 POS	4	 .R0001	5	
 .R0000	6	 PLACE	7	 .S0007	10	 .S0006	11	 .S0005	12	
 .S0004	13	 .S0003	14	 .S0002	15	 .S0001	16	 .S0000	17	
 .S0011	20	 .S0010	21	 I	22	 .O0001	23	 HERE	24	


TEMPORARIES

 .A0016	27	 .Q0002	30	 .Q0003	31	
ACCUM	    13#	    20#
BLANK	    17#	    23#	   129	   138	   139	   155
CHAR	    17#	    23#	   111	   116
CLNUM	    17#	    71#	    72	    73	    83	    91	   103#	   104	   111	   113	   115
COMMA	    17#	    23#	   119
CRSET	    15#	    20#	    23#
DOT	    17#	    23#	   150	   164
DUP	    17#	    23#	   111#	   116#	   119#	   129#	   137
END	    17#	   153#	   154	   165
EXTME	    13#	    20#
HERE	    17#	    82#	    83	    84	   102#	   111	   112	   112#	   116	   117	   117#	   119	   120	   120#
	   127	   127#	   128
HIGH	    14#	    23#	    73
I	    17#	    56#	    57	    58#	    59	   114#	   115	   116	   128#	   129	   135#	   136	   137	   152#
	   153	   154	   174	   174#
IVPRT	    17#	    23#	    40#	    49#
LINE	    15#	    20#	    23#	   137#	   138#	   139#	   174
LOOP	    17#	    41#	    49	    50	    72
LOW	    14#	    23#	    73
NDT73	     7#
NDT78	   173
NDT81	   151	   157	   165
NDT82	    50
OBJCD	    15#	    22#
ODD	    17#	    23#	   156
OPER	    15#	    20#	    23#
OUTPT	    15#	    20#	    23#
OVRLP	    17#	    23#	    59#	    83#	    84#	   104	   115
PCHAR	    17#	    23#	   150#	   155#	   156#	   164#
PLACE	    17#	    73#	    75	    81	    82	    91	   113#	   114	   154#	   156	   157
PLOT	    17#	    23#	    57#	    81	    82	    91#	   151	   151#	   157	   157#	   165	   165#
PLTBG	    17#	    23#	   174
PLTDV	    17#	    23#	   152	   153
PLTND	    17#	    23#	   174
PLTSZ	    17#	    23#	    56	    73	    75	   136	   138	   139	   152
POS	    17#	    72#	    73	   136#	   137
PRNTR	    17#	    23#	   174
PTRS	    15#	    20#	    23#
RMAX	    13#	    20#
RMIN	    13#	    20#
RSTME	    13#	    20#
START	    17#	    23#	    41
STOP	    17#	    23#	    41	    49
SUBSC	    15#	    20#
SYM	    15#	    20#
TITLE	    15#	    20#
VAR	    13#	    20#	    22#	    50	    50#	    73
VARCT	    17#	    23#	    41	    49	    71	   103	   114
1000P	   154	   158#
1100P	   152	   166#
1200P	   174	   175#
1300P	    41	   176#
200P	    56	    57#
300P	    58	    59#
400P	    81	    91#
500P	    71	    75	    85	    92#
600P	   114	   115	   118#
700P	   103	   104	   121#
800P	   128	   129#
900P	   135	   137#

NDT73 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*                                                                      00101850
00002	C                                                                       00101860
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME                     00101870
00004	C     PROGRAM AUTHOR - TIMOTHY J. MALLOY                                00101880
00005	C                                                                       00101890
00006	C*                                                                      00101900
00007	      SUBROUTINE NDT74                                                  00101910
00008	C*                                                                      00101920
00009	C                                                                       00101930
00010	C          INDEPENDENT VARIABLE PLOT                                    00101940
00011	C                                                                       00101950
00012	C*                                                                      00101960
00013	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00101970
00014	      REAL*8 LOW(11),HIGH(11),IVHI,IVLOW,INVAL,INRNG,IVVAL,RANGE        00101980
00015	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00101990
00016	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00102000
00017	      INTEGER PRNTR,LINPP,PLINS,BLANK,DOT,VARCT,START,STOP,PLTSZ,       00102010
00018	     1PLTDV,PLTBG,PLTND,PCHAR,ODD,IVPRT,CHAR(10),PLOT(89),SUB,          00102020
00019	     2END,NARO,DPLOT,LNLFT,CLNUM,NVAR,PLACE,OPTNS                       00102030
00020	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00102040
00021	     1EXTME,RSTME,ACCUM,VAR                                             00102050
00022	      EQUIVALENCE (VAR(1),OBJCD(1))                                     00102060
00023	      EQUIVALENCE (PRNTR,PTRS(2)),(LINPP,PTRS(6)),(PLINS,PTRS(32)),     00102070
00024	     1(BLANK,CRSET(1)),(DOT,OPER(1)),(VARCT,OUTPT(1)),(LOW(1),          00102080
00025	     2OUTPT(103),IVLOW),(HIGH(1),OUTPT(125),IVHI),(START,               00102090
00026	     3OUTPT(162)),(STOP,OUTPT(163)),(PLTSZ,OUTPT(164)),(PLTDV,          00102100
00027	     4OUTPT(165)),(PLTBG,OUTPT(166)),(PLTND,OUTPT(167)),(PCHAR,         00102110
00028	     5OUTPT(168)),(ODD,OUTPT(169)),(IVPRT,OUTPT(170)),(CHAR(1),         00102120
00029	     6OUTPT(190)),(PLOT(1),LINE(14)),(SUB,END),(OPTNS,PTRS(7))          00102130
00030	C*                                                                      00102140
00031	C                                                                       00102150
00032	C     NARROW VARIABLE-VARIABLE PLOT IS SHIFTED TWO PLACES.              00102160
00033	C                                                                       00102170
00034	C*                                                                      00102180
00035	      NARO = MOD(OPTNS/8,2)                                             00102190
00036	      PLTBG = PLTBG - 2*NARO                                            00102200
00037	      PLTND = PLTND - 2*NARO                                            00102210
00038	      DPLOT = 51 - NARO*10                                              00102220
00039	C*                                                                      00102230
00040	C                                                                       00102240
00041	C     CALCULATE THE SIZE OF THE PLOT.                                   00102250
00042	C                                                                       00102260
00043	C*                                                                      00102270
00044	      LNLFT = LINPP + PLINS - 2                                         00102280
00045	      LNLFT = LNLFT - MOD(LNLFT,10)                                     00102290
00046	      IF (LNLFT .GT. DPLOT) LNLFT = DPLOT                               00102300
00047	      IVPRT = 1                                                         00102310
00048	C*                                                                      00102320
00049	C                                                                       00102330
00050	C     SORT THE DATA TO MAKE CERTAIN IT IS IN ORDER.                     00102340
00051	C                                                                       00102350
00052	C*                                                                      00102360
00053	      CALL NDT83                                                        00102370
00054	C*                                                                      00102380
00055	C                                                                       00102390
00056	C     THE VARIABLE-VARIABLE PLOT HAS ONE LINE FOR EVERY RANGE           00102400
NDT74 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	C     OF VALUES.  IVVAL KEEPS TRACK OF THE CURRENT LOCATION.            00102410
00058	C                                                                       00102420
00059	C*                                                                      00102430
00060	      RANGE = (IVHI - IVLOW)/FLOAT(LNLFT)                               00102440
00061	      INRNG = (IVHI - IVLOW)/(FLOAT(DPLOT-1)/10)                        00102450
00062	      IVVAL = IVLOW - RANGE/2.                                          00102460
00063	      INVAL = IVLOW                                                     00102470
00064	C*                                                                      00102480
00065	C                                                                       00102490
00066	C     LOOP IS THE COUNTER FOR THE DATA BUFFERS.                         00102500
00067	C                                                                       00102510
00068	C     CHECK FOR THE NEED TO PRINT THE INDEPENDENT VARIABLE VALUE.       00102520
00069	C                                                                       00102530
00070	C*                                                                      00102540
00071	      LOOP = START                                                      00102550
00072	  100 IVVAL = IVVAL + RANGE                                             00102560
00073	      IF (IVVAL .GT. IVHI) GO TO 900                                    00102570
00074	      IF (IVVAL .GT. IVHI-RANGE) IVPRT=1                                00102580
00075	      CALL NDT82(INVAL)                                                 00102590
00076	      IF (IVPRT .EQ. 2) INVAL = INVAL + INRNG                           00102600
00077	C*                                                                      00102610
00078	C                                                                       00102620
00079	C     BLANK OUT THE PLOT LINE.                                          00102630
00080	C                                                                       00102640
00081	C*                                                                      00102650
00082	      DO 200 I = 1, PLTSZ                                               00102660
00083	  200 PLOT(I) = BLANK                                                   00102670
00084	C*                                                                      00102680
00085	C                                                                       00102690
00086	C     CHECK FOR DATA WITHIN THE RANGE FOR THIS LINE.                    00102700
00087	C                                                                       00102710
00088	C*                                                                      00102720
00089	      LOOP = LOOP - VARCT                                               00102730
00090	  300 LOOP = LOOP + VARCT                                               00102740
00091	      IF (VAR(LOOP) .LT. IVLOW .OR. VAR(LOOP) .GT. IVVAL+RANGE          00102750
00092	     1 .OR. LOOP .GT. STOP) GO TO 500                                   00102760
00093	C*                                                                      00102770
00094	C                                                                       00102780
00095	C     TRANSFER DATA FROM THE BUFFER TO THE PLOT.                        00102790
00096	C     IF THE PLACE THE DATA WOULD APPEAR ON THE PLOT LINE               00102800
00097	C     IS NOT IN THE RANGE, IGNORE IT.                                   00102810
00098	C                                                                       00102820
00099	C*                                                                      00102830
00100	      DO 400 CLNUM = 2, VARCT                                           00102840
00101	      SUB = LOOP + CLNUM - 1                                            00102850
00102	      PLACE=(VAR(SUB)-LOW(CLNUM))*((PLTSZ-1)/(HIGH(CLNUM)-LOW(CLNUM)))  00102860
00103	     A+1.5                                                              00102870
00104	      IF (PLACE .LT. 1 .OR. PLACE .GT. PLTSZ ) GO TO 400                00102880
00105	      IF ( PLOT(PLACE) .EQ. BLANK) PLOT(PLACE) = CHAR(CLNUM - 1)        00102890
00106	  400 CONTINUE                                                          00102900
00107	      GO TO 300                                                         00102910
00108	C*                                                                      00102920
00109	C                                                                       00102930
00110	C     THIS ALGORITHM CREATES THE FRAME FOR THE PLOT.                    00102940
00111	C                                                                       00102950
00112	C*                                                                      00102960
NDT74 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2


00113	  500 IF (PLOT(1) .EQ. BLANK) PLOT(1) = DOT                             00102970
00114	      DO 700 I = 2, PLTSZ, PLTDV                                        00102980
00115	      END = PLTDV - 2 + I                                               00102990
00116	      DO 600 PLACE = I, END                                             00103000
00117	      PCHAR = BLANK                                                     00103010
00118	      IF (PLACE .NE. PLACE/2*2) PCHAR = ODD                             00103020
00119	      IF (PLOT(PLACE) .EQ. BLANK) PLOT(PLACE) = PCHAR                   00103030
00120	  600 CONTINUE                                                          00103040
00121	      IF (PLOT(END + 1) .EQ. BLANK) PLOT(END + 1) = DOT                 00103050
00122	  700 CONTINUE                                                          00103060
00123	C*                                                                      00103070
00124	C                                                                       00103080
00125	C     OUTPUT THE FINISHED PLOT LINE.                                    00103090
00126	C                                                                       00103100
00127	C*                                                                      00103110
00128	      CALL NDT78(1)                                                     00103120
00129	      WRITE(PRNTR,800) (LINE(I),I=PLTBG,PLTND)                          00103130
00130	  800 FORMAT (1X, 120A1)                                                00103140
00131	      GO TO 100                                                         00103150
00132	  900 RETURN                                                            00103160
00133	      END                                                               00103180

EQUIVALENCED VARIABLES


(  SUB	1	 END	1	)


COMMON BLOCKS

/.COMM./(+112220)
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
PRNTR	+5	LINPP	+11	PLINS	+43	BLANK	+251	DOT	+320
VARCT	+356	LOW	+524	IVLOW	+524	HIGH	+552	IVHI	+552
START	+617	STOP	+620	PLTSZ	+621	PLTDV	+622	PLTBG	+623
PLTND	+624	PCHAR	+625	ODD	+626	IVPRT	+627	CHAR	+653
PLOT	+753	OPTNS	+12


SUBPROGRAMS CALLED

MOD.	NDT82	NDT78	FLOAT.	NDT83	

SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 NARO	2	 END	1	%NVAR		 INRNG	3	 LNLFT	5	
*LOOP	6	 DPLOT	7	 CLNUM	10	 INVAL	11	 .R0000	13	
 PLACE	14	 SUB	1	 .S0003	15	 .S0002	16	 .S0001	17	
 .S0000	20	 RANGE	21	*I	23	 .O0002	24	 .O0001	25	
 IVVAL	26	
NDT74 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-3



TEMPORARIES

 .A0016	32	 .Q0001	33	 .Q0002	34	
ACCUM	    13#	    20#
BLANK	    17#	    23#	    83	   105	   113	   117	   119	   121
CHAR	    17#	    23#	   105
CLNUM	    17#	   100#	   101	   102	   105
CRSET	    15#	    20#	    23#
DOT	    17#	    23#	   113	   121
DPLOT	    17#	    38#	    46	    61
END	    17#	    23#	   115#	   116	   121
EXTME	    13#	    20#
FLOAT.	    60	    61
HIGH	    14#	    23#	   102
I	    82#	    83	   114#	   115	   116	   129	   129#
INRNG	    14#	    61#	    76
INVAL	    14#	    63#	    75	    75#	    76	    76#
IVHI	    14#	    23#	    60	    61	    73	    74
IVLOW	    14#	    23#	    60	    61	    62	    63	    91
IVPRT	    17#	    23#	    47#	    74#	    76
IVVAL	    14#	    62#	    72	    72#	    73	    74	    91
LINE	    15#	    20#	    23#	   129
LINPP	    17#	    23#	    44
LNLFT	    17#	    44#	    45	    45#	    46	    46#	    60
LOOP	    71#	    89	    89#	    90	    90#	    91	   101
LOW	    14#	    23#	   102
MOD.	    35	    45
NARO	    17#	    35#	    36	    37	    38
NDT74	     7#
NDT78	   128
NDT82	    75
NDT83	    53
NVAR	    17#
OBJCD	    15#	    22#
ODD	    17#	    23#	   118
OPER	    15#	    20#	    23#
OPTNS	    17#	    23#	    35
OUTPT	    15#	    20#	    23#
PCHAR	    17#	    23#	   117#	   118#	   119
PLACE	    17#	   102#	   104	   105	   116#	   118	   119
PLINS	    17#	    23#	    44
PLOT	    17#	    23#	    83#	   105	   105#	   113	   113#	   119	   119#	   121	   121#
PLTBG	    17#	    23#	    36	    36#	   129
PLTDV	    17#	    23#	   114	   115
PLTND	    17#	    23#	    37	    37#	   129
PLTSZ	    17#	    23#	    82	   102	   104	   114
PRNTR	    17#	    23#	   129
PTRS	    15#	    20#	    23#
RANGE	    14#	    60#	    62	    72	    74	    91
RMAX	    13#	    20#
RMIN	    13#	    20#
RSTME	    13#	    20#
START	    17#	    23#	    71
STOP	    17#	    23#	    91
SUB	    17#	    23#	   101#	   102
SUBSC	    15#	    20#
SYM	    15#	    20#
TITLE	    15#	    20#
VAR	    13#	    20#	    22#	    91	   102
VARCT	    17#	    23#	    89	    90	   100
100P	    72#	   131
200P	    82	    83#
300P	    90#	   107
400P	   100	   104	   106#
500P	    91	   113#
600P	   116	   120#
700P	   114	   122#
800P	   129	   130#
900P	    73	   132#

NDT74 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*****************************************************************      00103190
00002	C                                                                *      00103200
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME              *      00103210
00004	C     WRITTEN BY THOMAS L EVERMAN JR                             *      00103220
00005	C                                                                *      00103230
00006	C*****************************************************************      00103240
00007	      SUBROUTINE NDT75                                                  00103250
00008	C*****************************************************************      00103260
00009	C                                                                *      00103270
00010	C     THIS PROGRAM LOADS THE LITERAL POOL AND OBJECT CODE.       *      00103280
00011	C     IT ALSO PERFORMS PASS 3 INITIALIZATION AND BUILDS OCB'S.   *      00103290
00012	C                                                                *      00103300
00013	C*****************************************************************      00103310
00014	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00103320
00015	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00103330
00016	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00103340
00017	      INTEGER INPUT(160),START,RELOC,DSKCT,XRFND,STOP,LITCT,DISK,VALCT  00103350
00018	      INTEGER CHAIN(80),CHREC,CHNPT,CHOBJ,PC,OBJST,OBJIN                00103360
00019	      INTEGER LADDR,RADDR,OBJLN,I,IN1(80),IN2(80),INPVL,RERUN           00103370
00020	      INTEGER RUNCT,RUNNO,DBEND,LINCT                                   00103380
00021	      INTEGER BIT(10),RUN(11),VNUM(11),PRTCT,PLTCT,OUTCT,OAB,OUT1(80)   00103390
00022	      INTEGER OUT2(80),OUT3(80),TYPE,VARCT,OCBST,OCBND,OCBPT,DBPNT      00103400
00023	      INTEGER LOWRN,RSTRT,SUB1,SUB2,EXPMX,TSAPT,SKSMT,OPTNS             00103410
00024	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00103420
00025	     1EXTME,RSTME,ACCUM,VAR                                             00103430
00026	      EQUIVALENCE (VAR(1),OBJCD(1)),(RELOC,PTRS(40)),(XRFND,PTRS(16)),  00103440
00027	     1(LITCT,PTRS(18)),(DISK,PTRS(3)),(VALCT,PTRS(20)),                 00103450
00028	     2(PC,PTRS(15)),(OBJST,PTRS(17)),(OBJIN,START),(RUNNO,OUTPT(14)),   00103460
00029	     3(LADDR,PTRS(19)),(RADDR,PTRS(21)),(OBJLN,INPUT(1)),               00103470
00030	     4(IN1(1),INPUT(1)),(IN2(1),INPUT(81)),(RERUN,PTRS(13)),            00103480
00031	     5(RUNCT,PTRS(14)),(DBEND,PTRS(22)),(OPTNS,PTRS(7))                 00103490
00032	      EQUIVALENCE (INPUT(1),OUTPT(1)),(CHAIN(1),OUTPT(161)),            00103500
00033	     1(RUN(1),OUTPT(179)),(VNUM(1),OUTPT(92)),(OUTCT,PTRS(10)),         00103510
00034	     2(OAB,PTRS(12)),(OUT1(1),OUTPT(1)),(OUT2(1),OUTPT(81)),            00103520
00035	     3(OUT3(1),OUTPT(161)),(PRTCT,OUTPT(12)),(PLTCT,OUTPT(13)),         00103530
00036	     4(TYPE,OUTPT(2)),(VARCT,OUTPT(1)),(OCBST,PTRS(42)),                00103540
00037	     5(OCBND,PTRS(44)),(OCBPT,PTRS(43)),(EXPMX,PTRS(9))                 00103550
00038	      EQUIVALENCE(LOWRN,RSTRT),(LINCT,PTRS(5))                          00103560
00039	C*****************************************************************      00103570
00040	C                                                                *      00103580
00041	C     READ IN THE LITERAL POOL AND STORE IT STARTING AT LOCATION *      00103590
00042	C     RELOC + 1.  EACH LITERAL OCCUPIES TWO INTEGER WORDS.       *      00103600
00043	C                                                                *      00103610
00044	C*****************************************************************      00103620
00045	      OUTCT = PRTCT + PLTCT                                             00103630
00046	      START = RELOC + 1                                                 00103640
00047	      DSKCT = XRFND                                                     00103650
00048	  100 STOP = START + 39                                                 00103660
00049	      IF (STOP .GT. LITCT + RELOC) STOP = LITCT + RELOC                 00103670
00050	      DSKCT = DSKCT + 1                                                 00103680
00051	      READ (DISK'DSKCT) (VAR(I), I = START, STOP)                       00103690
00052	      IF (STOP .EQ. LITCT + RELOC) GO TO 200                            00103700
00053	      START = STOP + 1                                                  00103710
00054	      GO TO 100                                                         00103720
00055	C*****************************************************************      00103730
00056	C                                                                *      00103740
NDT75 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	C     SET THE VARIABLE ALLOCATION COUNTER AND OBJECT CODE START. *      00103750
00058	C     OBTAIN CHAIN RECORDS WHICH POINT TO TOKEN BUFFERS OF EACH  *      00103760
00059	C     STATEMENT IN ORDER BY WHICH THEY SHOULD BE EXECUTED.       *      00103770
00060	C                                                                *      00103780
00061	C*****************************************************************      00103790
00062	  200 VALCT = STOP                                                      00103800
00063	      OBJST = 2 * VALCT + 1                                             00103810
00064	      CHREC = 0                                                         00103820
00065	      RADDR = 0                                                         00103830
00066	      SKSMT = 3                                                         00103840
00067	      IF (MOD (OPTNS, 2) .EQ. 0) SKSMT = 5                              00103850
00068	      OBJIN = OBJST                                                     00103860
00069	  300 CHREC = CHREC + 1                                                 00103870
00070	      READ (DISK'CHREC) CHAIN                                           00103880
00071	      CHNPT = 0                                                         00103890
00072	  400 CHNPT = CHNPT + 1                                                 00103900
00073	      IF (CHNPT .GT. 80) GO TO 300                                      00103910
00074	      CHOBJ = CHAIN(CHNPT)                                              00103920
00075	      IF (CHOBJ .EQ. 0) GO TO 1000                                      00103930
00076	      IF (CHOBJ .GT. 0) GO TO 800                                       00103940
00077	C*****************************************************************      00103950
00078	C                                                                *      00103960
00079	C     CHAIN ELEMENT IS NEGATIVE.  THIS INDICATES THAT THE NEXT OB*      00103970
00080	C     CODE BUFFER WILL REPRESENT A STATEMENT WHOSE TYPE IS THE   *      00103980
00081	C     ABSOLUTE VALUE OF THE CHAIN ELEMENT. THIS VALUE SHOULD BE  *      00103990
00082	C     STORED IN THE OBJECT CODE AS AN INDICATOR.  ALSO, THE LOCAT*      00104000
00083	C     OF THE FIRST RATE AND LEVEL EQUATIONS SHOULD BE STORED, AND*      00104010
00084	C     A SKIP INSTRUCTION SHOULD BE INSERTED BEFORE THE FIRST LEVE*      00104020
00085	C                                                                *      00104030
00086	C*****************************************************************      00104040
00087	      CHOBJ = - CHOBJ                                                   00104050
00088	      GO TO (400,400,400,700,500,600,600,400), CHOBJ                    00104060
00089	  500 OBJCD(OBJIN) = 11                                                 00104070
00090	      OBJCD(OBJIN + 1) = 0                                              00104080
00091	      OBJIN = OBJIN + 2                                                 00104090
00092	      LADDR = OBJIN                                                     00104100
00093	      GO TO 400                                                         00104110
00094	  600 IF(RADDR .EQ. 0) RADDR = OBJIN                                    00104120
00095	      GO TO 400                                                         00104130
00096	  700 OBJCD(OBJIN) = 1                                                  00104140
00097	      OBJCD(OBJIN + 1) = 14                                             00104150
00098	      OBJCD(OBJIN + 2) = 2                                              00104160
00099	      OBJCD(OBJIN + 3) = 12                                             00104170
00100	      OBJIN = OBJIN + 4                                                 00104180
00101	      GO TO 400                                                         00104190
00102	C*****************************************************************      00104200
00103	C                                                                *      00104210
00104	C     CHAIN ELEMENT INDICATES A TOKEN RECORD NUMBER. INCREMENT   *      00104220
00105	C     IT TO POINT TO THE OBJECT CODE BUFFER AND READ IN THE      *      00104230
00106	C     BUFFER AND, IF NECESSARY, ITS CONTINUATION. RELOCATE       *      00104240
00107	C     ANY NEGATIVE VALUES FOUND IN THE OBJECT CODE AND STORE     *      00104250
00108	C     THE RELOCATED CODE IN THE OBJCD ARRAY.                     *      00104260
00109	C                                                                *      00104270
00110	C*****************************************************************      00104280
00111	  800 CHOBJ = CHOBJ + 4                                                 00104290
00112	      READ (DISK'CHOBJ) IN1                                             00104300
NDT75 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2


00113	      IF (OBJLN .GT. 80) READ (DISK'CHOBJ + 1) IN2                      00104310
00114	      DO 900 I = SKSMT, OBJLN                                           00104320
00115	      INPVL = INPUT(I)                                                  00104330
00116	      IF (INPVL .LT. 0) INPVL = RELOC - INPVL                           00104340
00117	      OBJCD(OBJIN) = INPVL                                              00104350
00118	  900 OBJIN = OBJIN + 1                                                 00104360
00119	      GO TO 400                                                         00104370
00120	C*****************************************************************      00104380
00121	C                                                                *      00104390
00122	C     A CHAIN ELEMENT WITH A VALUE OF 0 HAS INDICATED THE END    *      00104400
00123	C     OF THE OBJECT CODE CHAIN.  IT IS NOW NECESSARY TO          *      00104410
00124	C     GENERATE THE TIME AND RERUN INSTRUCTIONS.                  *      00104420
00125	C                                                                *      00104430
00126	C*****************************************************************      00104440
00127	 1000 OBJCD(OBJIN) = 12                                                 00104450
00128	      TSAPT = OBJIN + 1                                                 00104460
00129	      OBJIN = OBJIN + 2                                                 00104470
00130	      RERUN = OBJIN                                                     00104480
00131	      RUNCT = RUNCT - 1                                                 00104490
00132	      IF (RUNCT .EQ. 0) GO TO 1200                                      00104500
00133	      DO 1100 I = 1, RUNCT                                              00104510
00134	      OBJCD(OBJIN) = 13                                                 00104520
00135	      OBJCD(OBJIN + 1) = I                                              00104530
00136	 1100 OBJIN = OBJIN + 2                                                 00104540
00137	 1200 OBJCD(OBJIN) = 14                                                 00104550
00138	      OBJCD(OBJIN + 1) = 0                                              00104560
00139	      VALCT = (OBJIN + 2) / 2                                           00104570
00140	C*                                                                      00104580
00141	C                                                                       00104590
00142	C     ALLOCATE SAVE AREA SPACE FOR THE TIME INSTRUCTION.                00104600
00143	C                                                                       00104610
00144	C*                                                                      00104620
00145	      OBJCD(TSAPT) = VALCT + 1                                          00104630
00146	      VALCT = VALCT + 7                                                 00104640
00147	      PC = OBJST                                                        00104650
00148	      RUNCT = 1                                                         00104660
00149	C*****************************************************************      00104670
00150	C                                                                *      00104680
00151	C     ALLOCATE SPACE FOR THE DATA BUFFER POINTERS                       00104690
00152	C     THERE ARE OUTCT NUMBER OF THEM. OAB POINTS                        00104700
00153	C     TO THE FIRST OF THE DATA BUFFER POINTERS.                         00104710
00154	C                                                                       00104720
00155	C*                                                                      00104730
00156	      OAB = 2 * VALCT + 1                                               00104740
00157	      OABPT = OAB - 1                                                   00104750
00158	      VALCT = (OABPT + OUTCT + 1) / 2                                   00104760
00159	      OCBPT = OCBST                                                     00104770
00160	C*                                                                      00104780
00161	C     READ THREE DATA BUFFERS FOR EACH PRINT OR PLOT CARD.              00104790
00162	C                                                                       00104800
00163	C*                                                                      00104810
00164	 1300 IF (OCBPT .GT. OCBND) GO TO 1800                                  00104820
00165	      READ (DISK'OCBPT) OUT1                                            00104830
00166	      READ (DISK'OCBPT + 1) OUT2                                        00104840
00167	      READ (DISK'OCBPT + 2) OUT3                                        00104850
00168	      OCBPT = OCBPT + 3                                                 00104860
NDT75 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-3


00169	C*                                                                      00104870
00170	C                                                                       00104880
00171	C     ALLOCATE STORAGE FOR THE NEXT DATA BUFFER.                        00104890
00172	C     SET THE NEXT BUFFER POINTER TO THE FIRST INTEGER WORD.            00104900
00173	C                                                                       00104910
00174	C*                                                                      00104920
00175	      OABPT = OABPT + 1                                                 00104930
00176	      DBPNT = 2 * VALCT + 1                                             00104940
00177	      OBJCD(OABPT) = DBPNT                                              00104950
00178	      VALCT = VALCT + 44 + 3 * VARCT                                    00104960
00179	C*                                                                      00104970
00180	C                                                                       00104980
00181	C     BEGIN BUILDING DATA BUFFERS. INSERT TYPE OF BUFFER,               00104990
00182	C     NUMBER OF VARIABLE, LOWEST RUN NUMBER, RUN NUMBER USAGE           00105000
00183	C     INDICATORS, RECORD NUMBER, AND POINTERS TO REAL BUFFERS.          00105010
00184	C                                                                       00105020
00185	C*                                                                      00105030
00186	      OBJCD(DBPNT) = TYPE                                               00105040
00187	      OBJCD(DBPNT + 1) = VARCT                                          00105050
00188	      LOWRN = 10                                                        00105060
00189	      DO 1400 I = 1, 10                                                 00105070
00190	 1400 BIT(I) = 0                                                        00105080
00191	      DO 1500 I = 1, VARCT                                              00105090
00192	      RUNNO = RUN(I)                                                    00105100
00193	      BIT(RUNNO) = I                                                    00105110
00194	      IF (RUNNO .LT. LOWRN) LOWRN = RUNNO                               00105120
00195	 1500 CONTINUE                                                          00105130
00196	      OBJCD(DBPNT + 2) = LOWRN                                          00105140
00197	      RUNNO = 0                                                         00105150
00198	      DO 1600 I = 1, 10                                                 00105160
00199	      IF (BIT(I) .NE. 0) RUNNO = RUNNO + 2 ** (I - 1)                   00105170
00200	 1600 CONTINUE                                                          00105180
00201	      OBJCD(DBPNT + 3) = RUNNO                                          00105190
00202	      OBJCD(DBPNT + 4) = OABPT - OAB + 1 + OCBND                        00105200
00203	      RSTRT = (DBPNT + 8 + 2 * VARCT) / 2 + 1                           00105210
00204	      OBJCD(DBPNT + 5) = RSTRT                                          00105220
00205	      OBJCD(DBPNT + 6) = RSTRT - 1 + 2 * VARCT                          00105230
00206	      DBPNT = DBPNT + 7                                                 00105240
00207	      DO 1700 I = 1, VARCT                                              00105250
00208	C*                                                                      00105260
00209	C                                                                       00105270
00210	C     STORE PAIRS OF VNUM AND RUN IN CONSECUTIVE INTEGER WORDS.         00105280
00211	C                                                                       00105290
00212	C*                                                                      00105300
00213	      SUB2 = DBPNT + I * 2                                              00105310
00214	      SUB1 = SUB2 - 1                                                   00105320
00215	      OBJCD(SUB1) = VNUM(I)                                             00105330
00216	      OBJCD(SUB2) = RUN(I)                                              00105340
00217	C*                                                                      00105350
00218	C                                                                       00105360
00219	C     INITIALIZE HIGH AND LOW VALUES OF EACH VARIABLE IN                00105370
00220	C     CONSECUTIVE REAL WORDS.                                           00105380
00221	C                                                                       00105390
00222	C*                                                                      00105400
00223	      SUB2 = RSTRT - 1 + 2 * I                                          00105410
00224	      SUB1 = SUB2 - 1                                                   00105420
NDT75 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-4


00225	      VAR(SUB1) = 0.D0                                                  00105430
00226	      IF (TYPE .EQ. 13) VAR(SUB1) = -1.1D0 * 10.D0 ** EXPMX             00105440
00227	 1700 VAR(SUB2) = 1.1D0 * 10.D0 ** EXPMX                                00105450
00228	C*                                                                      00105460
00229	C                                                                       00105470
00230	C     INITIALIZE THE 40 WORD STORAGE BUFFER TO ZEROS.                   00105480
00231	C                                                                       00105490
00232	C*                                                                      00105500
00233	      SUB1 = OBJCD(DBPNT - 1) + 1                                       00105510
00234	      SUB2 = SUB1 + 39                                                  00105520
00235	      DO 1750 I = SUB1, SUB2                                            00105530
00236	 1750 VAR(I) = 0.D0                                                     00105540
00237	      GO TO 1300                                                        00105550
00238	 1800 DBEND = VALCT                                                     00105560
00239	C*                                                                      00105570
00240	C                                                                       00105580
00241	C     INITIALIZE ALL PARAMETER LOCATIONS.                               00105590
00242	C                                                                       00105600
00243	C*                                                                      00105610
00244	      DO 1900 I = 11, 16                                                00105620
00245	 1900 VAR(I) = 0.D0                                                     00105630
00246	      IF (MOD (OPTNS / 512, 2) .EQ. 1) CALL NDT84                       00105640
00247	      IF (MOD (OPTNS / 2048, 2) .EQ. 1) CALL NDT86                      00105650
00248	C                                                                       00105660
00249	C                                                                       00105670
00250	C    FORCE PAGE EJECT FOR EXECUTION ERROR MESSAGES                      00105680
00251	C                                                                       00105690
00252	C                                                                       00105700
00253	      LINCT = -1                                                        00105710
00254	      RETURN                                                            00105720
00255	      END                                                               00105740

EQUIVALENCED VARIABLES


(  OBJIN	1	 START	1	)

(  LOWRN	2	 RSTRT	2	)


COMMON BLOCKS

/.COMM./(+112220)
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
RELOC	+53	XRFND	+23	LITCT	+25	DISK	+6	VALCT	+27
PC	+22	OBJST	+24	RUNNO	+373	LADDR	+26	RADDR	+30
RERUN	+20	RUNCT	+21	DBEND	+31	OPTNS	+12	INPUT	+356
CHAIN	+616	RUN	+640	VNUM	+511	OUTCT	+15	OAB	+17
OUT1	+356	OUT2	+476	OUT3	+616	PRTCT	+371	PLTCT	+372
TYPE	+357	VARCT	+356	OCBST	+55	OCBND	+57	OCBPT	+56
EXPMX	+14	LINCT	+10	OBJLN	+356	IN1	+356	IN2	+476
NDT75 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-5




SUBPROGRAMS CALLED

MOD.	NDT86	NDT84	

SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 STOP	3	 DBPNT	4	 TSAPT	5	*OABPT	6	 SKSMT	7	
 DSKCT	10	 .R0003	11	 .R0002	12	 .R0001	13	 BIT	14	
 CHNPT	26	 CHREC	27	 LOWRN	2	 INPVL	30	 OBJIN	1	
 .S0007	31	 .S0006	32	 .S0005	33	 .S0004	34	 .S0003	35	
 .S0002	36	 .S0001	37	 RSTRT	2	 CHOBJ	40	 SUB2	41	
 .S0010	42	 I	43	 .O0001	44	 SUB1	45	 START	1	


TEMPORARIES

 .A0016	46	 .Q0004	47	 .Q0005	50	
ACCUM	    14#	    24#
BIT	    21#	   190#	   193#	   199
CHAIN	    18#	    32#	    70#	    74
CHNPT	    18#	    71#	    72	    72#	    73	    74
CHOBJ	    18#	    74#	    75	    76	    87	    87#	    88	   111	   111#	   112	   113
CHREC	    18#	    64#	    69	    69#	    70
CRSET	    15#	    24#
DBEND	    20#	    26#	   238#
DBPNT	    22#	   176#	   177	   186	   187	   196	   201	   202	   203	   204	   205	   206	   206#	   213
	   233
DISK	    17#	    26#	    51	    70	   112	   113	   165	   166	   167
DSKCT	    17#	    47#	    50	    50#	    51
EXPMX	    23#	    32#	   226	   227
EXTME	    14#	    24#
I	    19#	    51	    51#	   114#	   115	   133#	   135	   189#	   190	   191#	   192	   193	   198#	   199
	   207#	   213	   215	   216	   223	   235#	   236	   244#	   245
IN1	    19#	    26#	   112#
IN2	    19#	    26#	   113#
INPUT	    17#	    26#	    32#	   115
INPVL	    19#	   115#	   116	   116#	   117
LADDR	    19#	    26#	    92#
LINCT	    20#	    38#	   253#
LINE	    15#	    24#
LITCT	    17#	    26#	    49	    52
LOWRN	    23#	    38#	   188#	   194	   194#	   196
MOD.	    67	   246	   247
NDT75	     7#
NDT84	   246
NDT86	   247
OAB	    21#	    32#	   156#	   157	   202
OABPT	   157#	   158	   175	   175#	   177	   202
OBJCD	    15#	    26#	    89#	    90#	    96#	    97#	    98#	    99#	   117#	   127#	   134#	   135#	   137#	   138#
	   145#	   177#	   186#	   187#	   196#	   201#	   202#	   204#	   205#	   215#	   216#	   233
OBJIN	    18#	    26#	    68#	    89	    90	    91	    91#	    92	    94	    96	    97	    98	    99	   100
	   100#	   117	   118	   118#	   127	   128	   129	   129#	   130	   134	   135	   136	   136#	   137
	   138	   139
OBJLN	    19#	    26#	   113	   114
OBJST	    18#	    26#	    63#	    68	   147
OCBND	    22#	    32#	   164	   202
OCBPT	    22#	    32#	   159#	   164	   165	   166	   167	   168	   168#
OCBST	    22#	    32#	   159
OPER	    15#	    24#
OPTNS	    23#	    26#	    67	   246	   247
OUT1	    21#	    32#	   165#
OUT2	    22#	    32#	   166#
OUT3	    22#	    32#	   167#
OUTCT	    21#	    32#	    45#	   158
OUTPT	    15#	    24#	    26#	    32#
PC	    18#	    26#	   147#
PLTCT	    21#	    32#	    45
PRTCT	    21#	    32#	    45
PTRS	    15#	    24#	    26#	    32#	    38#
RADDR	    19#	    26#	    65#	    94	    94#
RELOC	    17#	    26#	    46	    49	    52	   116
RERUN	    19#	    26#	   130#
RMAX	    14#	    24#
RMIN	    14#	    24#
RSTME	    14#	    24#
RSTRT	    23#	    38#	   203#	   204	   205	   223
RUN	    21#	    32#	   192	   216
RUNCT	    20#	    26#	   131	   131#	   132	   133	   148#
RUNNO	    20#	    26#	   192#	   193	   194	   197#	   199	   199#	   201
SKSMT	    23#	    66#	    67#	   114
START	    17#	    26#	    46#	    48	    51	    53#
STOP	    17#	    48#	    49	    49#	    51	    52	    53	    62
SUB1	    23#	   214#	   215	   224#	   225	   226	   233#	   234	   235
SUB2	    23#	   213#	   214	   216	   223#	   224	   227	   234#	   235
SUBSC	    15#	    24#
SYM	    15#	    24#
TITLE	    15#	    24#
TSAPT	    23#	   128#	   145
TYPE	    22#	    32#	   186	   226
VALCT	    17#	    26#	    62#	    63	   139#	   145	   146	   146#	   156	   158#	   176	   178	   178#	   238
VAR	    14#	    24#	    26#	    51#	   225#	   226#	   227#	   236#	   245#
VARCT	    22#	    32#	   178	   187	   191	   203	   205	   207
VNUM	    21#	    32#	   215
XRFND	    17#	    26#	    47
1000P	    75	   127#
100P	    48#	    54
1100P	   133	   136#
1200P	   132	   137#
1300P	   164#	   237
1400P	   189	   190#
1500P	   191	   195#
1600P	   198	   200#
1700P	   207	   227#
1750P	   235	   236#
1800P	   164	   238#
1900P	   244	   245#
200P	    52	    62#
300P	    69#	    73
400P	    72#	    88	    93	    95	   101	   119
500P	    88	    89#
600P	    88	    94#
700P	    88	    96#
800P	    76	   111#
900P	   114	   118#

NDT75 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C     COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME                         00105750
00002	C     PROGRAM AUTHOR - GARY PELKEY                                      00105760
00003	C                                                                       00105770
00004	C                                                                       00105780
00005	      SUBROUTINE NDT76 (SRTPT)                                          00105790
00006	C                                                                       00105800
00007	C                                                                       00105810
00008	C     THIS ROUTINE PERFORMS A TAG SORT ON THE SYMBOL TABLE              00105820
00009	C     FOR THE SYMBOL TABLE LISTING PROGRAM AND THE CROSS                00105830
00010	C     REFERENCE PROGRAM.  IT IS CALLED BY NDT61 IF EITHER OF            00105840
00011	C     THESE OPTIONS IS IN EFFECT.                                       00105850
00012	C                                                                       00105860
00013	C                                                                       00105870
00014	      REAL*8 RMIN,RMAX,LITBL(8192)                                      00105880
00015	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00105890
00016	     1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80),       00105900
00017	     2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22),        00105910
00018	     3SYMTB(5,4096),SORT(16384)                                         00105920
00019	      INTEGER SRTPT,I,DIST,START,STOP,FLAG,PNT,PNT2,TAG1,TAG2,SYMND     00105930
00020	      REAL TNAME(4,8),REQST(4,4)                                        00105950
00021	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT,           00105960
00022	     1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN,           00105970
00023	     2SYMTB,LITBL                                                       00105980
00024	      EQUIVALENCE (SORT(1),LITBL(1)),(SYMND,PTRS(17))                   00105990
00025	C                                                                       00106000
00026	C                                                                       00106010
00027	C     A TAG (POINTER TO THE SYMBOL TABLE) IS CREATED FOR EACH NON-      00106020
00028	C     EMPTY LOCATION IN THE SYMBOL TABLE. AN EMPTY LOCATION IS          00106030
00029	C     SPECIFIED BY THE FIRST WORD = 32767.                              00106040
00030	C                                                                       00106050
00031	C                                                                       00106060
00032	      SRTPT=0                                                           00106070
00033	      DO 100 I=1,SYMND                                                  00106080
00034	      IF(SYMTB(1,I).EQ.32767) GO TO 100                                 00106090
00035	      SRTPT=SRTPT+1                                                     00106100
00036	      SORT(SRTPT)=I                                                     00106110
00037	  100 CONTINUE                                                          00106120
00038	C                                                                       00106130
00039	C                                                                       00106140
00040	C     A SHELL D SORT IS NOW PERFORMED ON THE TAGS.  THE TAGS RATHER     00106150
00041	C     THAN THE SYMBOLS THEMSELVES ARE INTERCHANGED FOR ORDERING         00106160
00042	C     BECAUSE THE SYMBOL TABLE MUST BE PRESERVED INTACT FOR FUTURE      00106170
00043	C     REFERENCING.                                                      00106180
00044	C                                                                       00106190
00045	C                                                                       00106200
00046	      DIST=SRTPT                                                        00106210
00047	  200 DIST=DIST/2                                                       00106220
00048	      IF(DIST.EQ.0) GO TO 600                                           00106230
00049	      DO 500 START=1,DIST                                               00106240
00050	      STOP=SRTPT-DIST                                                   00106250
00051	      FLAG=1                                                            00106260
00052	  300 IF(FLAG.EQ.0) GO TO 500                                           00106270
00053	      FLAG=0                                                            00106280
00054	      DO 400 PNT=START,STOP,DIST                                        00106290
00055	      PNT2=PNT+DIST                                                     00106300
00056	      TAG1=SORT(PNT)                                                    00106310
NDT76 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	      TAG2=SORT(PNT2)                                                   00106320
00058	      IF(SYMTB(1,TAG1).LT.SYMTB(1,TAG2)) GO TO 400                      00106330
00059	      IF(SYMTB(1,TAG1).EQ.SYMTB(1,TAG2).AND.SYMTB(2,TAG1).LE.           00106340
00060	     1SYMTB(2,TAG2)) GO TO 400                                          00106350
00061	      SORT(PNT)=TAG2                                                    00106360
00062	      SORT(PNT2)=TAG1                                                   00106370
00063	      FLAG=1                                                            00106380
00064	  400 CONTINUE                                                          00106390
00065	      GO TO 300                                                         00106400
00066	  500 CONTINUE                                                          00106410
00067	      GO TO 200                                                         00106420
00068	  600 RETURN                                                            00106430
00069	      END                                                               00106450

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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	+52220	SORT	+52220	SYMND	+24


SUBPROGRAMS CALLED



SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 STOP	1	 PNT2	2	%REQST		%TNAME		 FLAG	3	
 TAG2	4	 .R0000	5	 TAG1	6	 .S0002	7	 DIST	10	
 .S0001	11	 .S0000	12	 PNT	13	 I	14	 .O0002	15	
 SRTPT	16	 .O0001	17	 .O0000	20	 START	21	

TEMPORARIES

 .A0016	22	
CARD1	    15#	    21#
CARD2	    15#	    21#
CRSET	    15#	    21#
DEF	    15#	    21#
DIST	    19#	    46#	    47	    47#	    48	    49	    50	    54	    55
EQCHN	    15#	    21#
ERROR	    15#	    21#
FCTN	    15#	    21#
FLAG	    19#	    51#	    52	    53#	    63#
I	    19#	    33#	    34	    36
LITBL	    14#	    21#	    24#
NDT76	     5#
OBJCD	    15#	    21#
OPER	    15#	    21#
PNT	    19#	    54#	    55	    56	    61
PNT2	    19#	    55#	    57	    62
PTRS	    15#	    21#	    24#
REQST	    20#
RMAX	    14#	    21#
RMIN	    14#	    21#
SORT	    15#	    24#	    36#	    56	    57	    61#	    62#
SRTPT	     5#	    19#	    32#	    35	    35#	    36	    46	    50
START	    19#	    49#	    54
STOP	    19#	    50#	    54
SUBSC	    15#	    21#
SYM	    15#	    21#
SYMND	    19#	    24#	    33
SYMTB	    15#	    21#	    34	    58	    59
TAG1	    19#	    56#	    58	    59	    62
TAG2	    19#	    57#	    58	    59	    61
TITLE	    15#	    21#
TMAP	    15#	    21#
TNAME	    20#
TOKEN	    15#	    21#
TYPCT	    15#	    21#
XREF	    15#	    21#
100P	    33	    34	    37#
200P	    47#	    67
300P	    52#	    65
400P	    54	    58	    59	    64#
500P	    49	    52	    66#
600P	    48	    68#

NDT76 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C     COPYRIGHT 1978 - UNIVERSITY OF NOTRE DAME                         00106460
00002	C     PROGRAM AUTHOR - GARY PELKEY                                      00106470
00003	C                                                                       00106480
00004	C                                                                       00106490
00005	      SUBROUTINE NDT77 (VAL,ICHAR)                                      00106500
00006	C                                                                       00106510
00007	C                                                                       00106520
00008	C     THIS ROUTINE RETURNS TO THE PRINT AND PLOT ROUTINES               00106530
00009	C     THE CHARACTERISTIC OF THE INPUT ARGUMENT VAL.                     00106540
00010	C     IF VAL IS ZERO OR NEGATIVE, SPECIAL DOCTORING                     00106550
00011	C     MUST TAKE PLACE TO RETURN THE DESIRED VALUE OF ICHAR.             00106560
00012	C                                                                       00106570
00013	C                                                                       00106580
00014	      INTEGER ICHAR                                                     00106590
00015	      REAL*8 VAL,CHAR                                                   00106600
00016	      ICHAR=0                                                           00106610
00017	      IF (VAL .EQ. 0.) GOTO 100                                         00106620
00018	      CHAR=DLOG10(DABS(VAL))                                            00106630
00019	      IF (CHAR .LT. 0.) CHAR=CHAR-.99999                                00106640
00020	      ICHAR=CHAR                                                        00106650
00021	      IF(10.**(ICHAR+1).LE.VAL+5.*10.**(ICHAR-5)) ICHAR=ICHAR+1         00106660
00022	  100 RETURN                                                            00106670
00023	      END                                                               00106690


SUBPROGRAMS CALLED

DLG10.
DABS.	

SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 ICHAR	1	 CHAR	2	 VAL	4	

TEMPORARIES

 .A0016	6	 .Q0000	7	 .Q0001	10	
CHAR	    15#	    18#	    19	    19#	    20
DABS.	    18
DLG10.	    18
ICHAR	     5#	    14#	    16#	    20#	    21	    21#
NDT77	     5#
VAL	     5#	    15#	    17	    18	    21
100P	    17	    22#

NDT77 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*                                                                      00106700
00002	C                                                                       00106710
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME                     00106720
00004	C     PROGRAM AUTHOR - DANIEL A. POYDENCE                               00106730
00005	C     TRANSLATED BY - TIMOTHY J. MALLOY                                 00106740
00006	C                                                                       00106750
00007	C*                                                                      00106760
00008	      SUBROUTINE NDT78 (LINES)                                          00106770
00009	C*                                                                      00106780
00010	C                                                                       00106790
00011	C          EXECUTION TIME OUTPUT MONITOR                                00106800
00012	C                                                                       00106810
00013	C*                                                                      00106820
00014	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00106830
00015	      REAL*8 INCR,LOW(11),HIGH(11)                                      00106840
00016	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00106850
00017	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00106860
00018	      INTEGER LINES                                                     00106870
00019	      INTEGER PRNTR,PAGCT,LINCT,LINPP,PLINS,BLANK,VARCT,VNAMS(8,11),    00106880
00020	     1IVNUM,ECHRS(44),SERIE(11),SRCNT,CHAR(10),TLIMT                    00106890
00021	      INTEGER LOOP,PNT,SRLST,SRPNT,NARO,CHRBF(10),CHRBS(5),CHRPT,       00106900
00022	     1OPTNS,SCALE(11,5)                                                 00106910
00023	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00106920
00024	     1EXTME,RSTME,ACCUM,VAR                                             00106930
00025	      EQUIVALENCE (VAR(1),OBJCD(1)),(PRNTR,PTRS(2)),(PAGCT,             00106940
00026	     1PTRS(4)),(LINCT,PTRS(5)),(LINPP,PTRS(6)),(PLINS,                  00106950
00027	     2PTRS(32)),(BLANK,CRSET(1)),(VARCT,OUTPT(1)),(VNAMS(1,1),          00106960
00028	     3OUTPT(4)),(IVNUM,OUTPT(92)),(LOW(1),OUTPT(103)),                  00106970
00029	     4(HIGH(1),OUTPT(125)),(ECHRS(1),OUTPT(114)),(SERIE(1),             00106980
00030	     5OUTPT(147)),(SRCNT,OUTPT(178)),(CHAR(1),OUTPT(190)),              00106990
00031	     6(CHRBS(1),CHRBF(6)),(OPTNS,PTRS(7)),(TLIMT,PTRS(33))              00107000
00032	      IF (LINCT .LT. 0) GO TO 100                                       00107010
00033	      LINCT = LINCT + LINES                                             00107020
00034	      IF (LINCT .LE. LINPP) GO TO 1600                                  00107030
00035	  100 LINCT = LINES + 2                                                 00107040
00036	      PAGCT = PAGCT + 1                                                 00107050
00037	      CALL NDT45 (PAGCT, TITLE(6), 0)                                   00107060
00038	      WRITE (PRNTR, 200) (TITLE(LOOP),LOOP=1,TLIMT)                     00107070
00039	  200 FORMAT ('1', 120A1)                                               00107080
00040	      WRITE(PRNTR, 500)                                                 00107090
00041	      IF (PLINS .EQ. 0) GO TO 1600                                      00107100
00042	      IF (PLINS .LT. 0) GO TO 600                                       00107110
00043	      LINCT = LINCT + PLINS                                             00107120
00044	      WRITE(PRNTR,300)((VNAMS(LOOP,PNT),LOOP=1,8),PNT=1,VARCT)          00107130
00045	  300 FORMAT (5X,11(1X,8A1,1X))                                         00107140
00046	      WRITE (PRNTR,400) ECHRS                                           00107150
00047	  400 FORMAT (5X,11(3X,4A1,3X))                                         00107160
00048	      IF (PLINS .EQ. 3) WRITE (PRNTR,500)                               00107170
00049	  500 FORMAT (1X)                                                       00107180
00050	      GO TO 1600                                                        00107190
00051	C                                                                       00107200
00052	C                                                                       00107210
00053	C                                                                       00107220
00054	C                                                                       00107230
00055	  600 LINCT = LINCT - PLINS                                             00107240
00056	      WRITE (PRNTR,700)                                                 00107250
NDT78 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	     1 (CHAR(PNT-1),(VNAMS(LOOP,PNT), LOOP=1,8),PNT=2,VARCT)            00107260
00058	  700 FORMAT (6X,8(A1,'=',8A1,2X))                                      00107270
00059	      WRITE (PRNTR,500)                                                 00107280
00060	      SRLST = SERIE(2)                                                  00107290
00061	      SRPNT = 2                                                         00107300
00062	      NARO = MOD(OPTNS/8,2)                                             00107310
00063	      DO 1500 PNT = 1, SRCNT                                            00107320
00064	      DO 800 LOOP = 1, 10                                               00107330
00065	  800 CHRBF(LOOP) = BLANK                                               00107340
00066	      CHRPT = 11                                                        00107350
00067	  900 IF (SERIE(SRPNT) .NE. SRLST) GO TO 1000                           00107360
00068	      CHRPT = CHRPT - 1                                                 00107370
00069	      CHRBF(CHRPT) = CHAR(SRPNT - 1)                                    00107380
00070	      SRPNT = SRPNT + 1                                                 00107390
00071	      IF (SRPNT .LE. 11) GO TO 900                                      00107400
00072	 1000 INCR = (HIGH(SRLST) - LOW(SRLST))/4.                              00107410
00073	      DO 1100 LOOP = 1, 5                                               00107420
00074	 1100 CALL NDT44(LOW(SRLST)+FLOAT(LOOP-1)*INCR,SCALE(1,LOOP))           00107430
00075	      IF (NARO .EQ. 0) WRITE (PRNTR,1200) CHRBF,SCALE                   00107440
00076	      IF (NARO.EQ.1 .AND. IVNUM.EQ.12) WRITE (PRNTR,1300) CHRBS,SCALE   00107450
00077	      IF (NARO.EQ.1 .AND. IVNUM.NE.12) WRITE (PRNTR,1400) CHRBS,SCALE   00107460
00078	 1200 FORMAT (2X,10A1,2X,4(11A1,11X),11A1)                              00107470
00079	 1300 FORMAT (1X,5A1,2X,5(11A1,3X))                                     00107480
00080	 1400 FORMAT (3X,5A1,2X,5(11A1,3X))                                     00107490
00081	      IF (SRPNT .LE. 10) SRLST = SERIE(SRPNT)                           00107500
00082	 1500 CONTINUE                                                          00107510
00083	 1600 RETURN                                                            00107520
00084	      END                                                               00107540

EQUIVALENCED VARIABLES


(  CHRBS	6	 CHRBF	1	)


COMMON BLOCKS

/.COMM./(+112220)
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
PRNTR	+5	PAGCT	+7	LINCT	+10	LINPP	+11	PLINS	+43
BLANK	+251	VARCT	+356	VNAMS	+361	IVNUM	+511	LOW	+524
HIGH	+552	ECHRS	+537	SERIE	+600	SRCNT	+637	CHAR	+653
OPTNS	+12	TLIMT	+44


SUBPROGRAMS CALLED

MOD.	NDT45	NDT44	FLOAT.	
NDT78 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2



SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 LINES	13	 NARO	14	 SRPNT	15	 SRLST	16	 LOOP	17	
 CHRBF	1	 .R0002	20	 .R0001	21	 .R0000	22	 .S0007	23	
 .S0006	24	 .S0005	25	 CHRPT	26	 .S0003	27	 .S0001	30	
 SCALE	31	 PNT	120	 INCR	121	 .O0004	123	 .O0003	124	
 .O0002	125	 CHRBS	6	

TEMPORARIES

 .A0016	167	 .Q0003	170	 .Q0004	171	 .Q0005	172	
ACCUM	    14#	    23#
BLANK	    19#	    25#	    65
CHAR	    19#	    25#	    56	    69
CHRBF	    21#	    25#	    65#	    69#	    75
CHRBS	    21#	    25#	    76	    77
CHRPT	    21#	    66#	    68	    68#	    69
CRSET	    16#	    23#	    25#
ECHRS	    19#	    25#	    46
EXTME	    14#	    23#
FLOAT.	    74
HIGH	    15#	    25#	    72
INCR	    15#	    72#	    74
IVNUM	    19#	    25#	    76	    77
LINCT	    19#	    25#	    32	    33	    33#	    34	    35#	    43	    43#	    55	    55#
LINE	    16#	    23#
LINES	     8#	    18#	    33	    35
LINPP	    19#	    25#	    34
LOOP	    21#	    38	    38#	    44	    44#	    56	    56#	    64#	    65	    73#	    74
LOW	    15#	    25#	    72	    74
MOD.	    62
NARO	    21#	    62#	    75	    76	    77
NDT44	    74
NDT45	    37
NDT78	     8#
OBJCD	    16#	    25#
OPER	    16#	    23#
OPTNS	    21#	    25#	    62
OUTPT	    16#	    23#	    25#
PAGCT	    19#	    25#	    36	    36#	    37	    37#
PLINS	    19#	    25#	    41	    42	    43	    48	    55
PNT	    21#	    44	    44#	    56	    56#	    63#
PRNTR	    19#	    25#	    38	    40	    44	    46	    48	    56	    59	    75	    76	    77
PTRS	    16#	    23#	    25#
RMAX	    14#	    23#
RMIN	    14#	    23#
RSTME	    14#	    23#
SCALE	    21#	    74	    74#	    75	    76	    77
SERIE	    19#	    25#	    60	    67	    81
SRCNT	    19#	    25#	    63
SRLST	    21#	    60#	    67	    72	    74	    81#
SRPNT	    21#	    61#	    67	    69	    70	    70#	    71	    81
SUBSC	    16#	    23#
SYM	    16#	    23#
TITLE	    16#	    23#	    37	    37#	    38
TLIMT	    19#	    25#	    38
VAR	    14#	    23#	    25#
VARCT	    19#	    25#	    44	    56
VNAMS	    19#	    25#	    44	    56
1000P	    67	    72#
100P	    32	    35#
1100P	    73	    74#
1200P	    75	    78#
1300P	    76	    79#
1400P	    77	    80#
1500P	    63	    82#
1600P	    34	    41	    50	    83#
200P	    38	    39#
300P	    44	    45#
400P	    46	    47#
500P	    40	    48	    49#	    59
600P	    42	    55#
700P	    56	    58#
800P	    64	    65#
900P	    67#	    71

NDT78 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*                                                                      00107550
00002	C                                                                       00107560
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME                     00107570
00004	C     PROGRAM AUTHOR - TIMOTHY J. MALLOY                                00107580
00005	C                                                                       00107590
00006	C*                                                                      00107600
00007	      SUBROUTINE NDT79                                                  00107610
00008	C*                                                                      00107620
00009	C                                                                       00107630
00010	C          EXTREMUM TRANSFER - DEFAULT CHECKING                         00107640
00011	C                                                                       00107650
00012	C*                                                                      00107660
00013	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00107670
00014	      REAL*8 HI,LO,HIGH(11),LOW(11)                                     00107680
00015	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00107690
00016	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00107700
00017	      INTEGER SRNUM,FLAG(11),DEFLT,ICHAR                                00107710
00018	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00107720
00019	     1EXTME,RSTME,ACCUM,VAR                                             00107730
00020	      EQUIVALENCE (VAR(1),OBJCD(1))                                     00107740
00021	      EQUIVALENCE (SRNUM,OUTPT(171)),(LOW(1),OUTPT(103)),               00107750
00022	     1(HIGH(1),OUTPT(125)),(FLAG(1),OUTPT(147))                         00107760
00023	C*                                                                      00107770
00024	C                                                                       00107780
00025	C     DEFLT CONTAINS THE DEFAULT INFORMATION FOR THE HIGH AND LOW       00107790
00026	C     VALUES FOR THIS VARIABLE:                                         00107800
00027	C     DEFLT = 0   NO DEFAULTS                                           00107810
00028	C             1   LOW DEFAULT ONLY                                      00107820
00029	C             2   HIGH DEFAULT ONLY                                     00107830
00030	C             3   BOTH DEFAULTS                                         00107840
00031	C                                                                       00107850
00032	C*                                                                      00107860
00033	      DEFLT = MOD(FLAG(SRNUM),10)                                       00107870
00034	C*                                                                      00107880
00035	C                                                                       00107890
00036	C     FIRST CHECK FOR A HIGH DEFAULT.  IF ONE EXISTS, CALL THE          00107900
00037	C     SUBROUTINE NDT80 TO READ IN THE HIGH VALUE FROM THE DATA          00107910
00038	C     BUFFERS.                                                          00107920
00039	C                                                                       00107930
00040	C*                                                                      00107940
00041	      IF (DEFLT .EQ. 0) GO TO 200                                       00107950
00042	      IF (DEFLT .LT. 2) GO TO 100                                       00107960
00043	      CALL NDT80(1)                                                     00107970
00044	      DEFLT = DEFLT - 2                                                 00107980
00045	C*                                                                      00107990
00046	C                                                                       00108000
00047	C     IF THERE IS A LOW DEFAULT, READ IN THE LOW VALUE FROM THE         00108010
00048	C     DATA BUFFERS BY CALLING NDT80.                                    00108020
00049	C                                                                       00108030
00050	C*                                                                      00108040
00051	  100 IF (DEFLT .EQ. 1) CALL NDT80(0)                                   00108050
00052	C*                                                                      00108060
00053	C                                                                       00108070
00054	C     CHECK FOR AN INDEPENDENT VARIABLE WHOSE HIGH AND LOW ARE          00108080
00055	C     EITHER EQUAL, OR REVERSED.                                        00108090
00056	C                                                                       00108100
NDT79 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	C*                                                                      00108110
00058	  200 HI = HIGH(SRNUM)                                                  00108120
00059	      LO = LOW(SRNUM)                                                   00108130
00060	      IF (HI .GT. LO) GO TO 400                                         00108140
00061	      IF (HI .EQ. LO) GO TO 300                                         00108150
00062	C*                                                                      00108160
00063	C                                                                       00108170
00064	C     IF HIGH WAS LESS THAN LOW, SWITCH THEM.                           00108180
00065	C                                                                       00108190
00066	C*                                                                      00108200
00067	      LOW(SRNUM) = HI                                                   00108210
00068	      HIGH(SRNUM) = LO                                                  00108220
00069	      GO TO 400                                                         00108230
00070	C*                                                                      00108240
00071	C                                                                       00108250
00072	C     IF HIGH EQUALS LOW, EXPAND THE RANGE.                             00108260
00073	C                                                                       00108270
00074	C*                                                                      00108280
00075	  300 CALL NDT77(HI,ICHAR)                                              00108290
00076	      HIGH(SRNUM) = HI + 2.*(10.**(ICHAR-1))                            00108300
00077	      LOW(SRNUM) = LO - 2.*(10.**(ICHAR-1))                             00108310
00078	  400 RETURN                                                            00108320
00079	      END                                                               00108340

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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
SRNUM	+630	LOW	+524	HIGH	+552	FLAG	+600


SUBPROGRAMS CALLED

MOD.	NDT77	NDT80	

SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 DEFLT	1	 ICHAR	2	 LO	3	 .O0003	5	 HI	7	


TEMPORARIES

 .A0016	11	 .Q0000	12	
ACCUM	    13#	    18#
CRSET	    15#	    18#
DEFLT	    17#	    33#	    41	    42	    44	    44#	    51
EXTME	    13#	    18#
FLAG	    17#	    21#	    33
HI	    14#	    58#	    60	    61	    67	    75	    75#	    76
HIGH	    14#	    21#	    58	    68#	    76#
ICHAR	    17#	    75	    75#	    76	    77
LINE	    15#	    18#
LO	    14#	    59#	    60	    61	    68	    77
LOW	    14#	    21#	    59	    67#	    77#
MOD.	    33
NDT77	    75
NDT79	     7#
NDT80	    43	    51
OBJCD	    15#	    20#
OPER	    15#	    18#
OUTPT	    15#	    18#	    21#
PTRS	    15#	    18#
RMAX	    13#	    18#
RMIN	    13#	    18#
RSTME	    13#	    18#
SRNUM	    17#	    21#	    33	    58	    59	    67	    68	    76	    77
SUBSC	    15#	    18#
SYM	    15#	    18#
TITLE	    15#	    18#
VAR	    13#	    18#	    20#
100P	    42	    51#
200P	    41	    58#
300P	    61	    75#
400P	    60	    69	    78#

NDT79 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*                                                                      00108350
00002	C                                                                       00108360
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME                     00108370
00004	C     PROGRAM AUTHOR - TIMOTHY J. MALLOY                                00108380
00005	C                                                                       00108390
00006	C*                                                                      00108400
00007	      SUBROUTINE NDT80 (HILO)                                           00108410
00008	C*                                                                      00108420
00009	C                                                                       00108430
00010	C          EXTREMUM TRANSFER - ROUNDING                                 00108440
00011	C                                                                       00108450
00012	C*                                                                      00108460
00013	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00108470
00014	      REAL*8 VAL,XLOW(22)                                               00108480
00015	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00108490
00016	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00108500
00017	      INTEGER HILO,SRNUM,FHIGH,POS,ICHAR,SUB,SIGN                       00108510
00018	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00108520
00019	     1EXTME,RSTME,ACCUM,VAR                                             00108530
00020	      EQUIVALENCE (VAR(1),OBJCD(1))                                     00108540
00021	      EQUIVALENCE (SRNUM,OUTPT(171)),(XLOW(1),OUTPT(103)),              00108550
00022	     1(FHIGH,OUTPT(161))                                                00108560
00023	C*                                                                      00108570
00024	C                                                                       00108580
00025	C     THIS PROGRAM TAKES THE HIGH OR LOW VALUE FROM THE DATA            00108590
00026	C     BUFFERS AND PUTS IT IN THE OUTPT ARRAY, ROUNDING THE VALUE.       00108600
00027	C                                                                       00108610
00028	C     HILO DETERMINES WHETHER THE HIGH OR THE LOW IS USED.              00108620
00029	C     HILO = 0 ==> LOW            HILO = 1 ==> HIGH                     00108630
00030	C                                                                       00108640
00031	C     THE ROUNDING IS DONE TO TWO SIGNIFICANT DIGITS.                   00108650
00032	C                                                                       00108660
00033	C*                                                                      00108670
00034	      POS = FHIGH + 2*SRNUM - HILO - 1                                  00108680
00035	      CALL NDT77 (VAR(POS), ICHAR)                                      00108690
00036	      SUB = 11*HILO + SRNUM                                             00108700
00037	      XLOW(SUB) = FLOAT(IDINT(VAR(POS)/10.**(ICHAR-1)))*10.**(ICHAR-1)  00108710
00038	      SIGN = -2*HILO + 1                                                00108720
00039	      VAL = VAR(POS) + SIGN*10.**(ICHAR-3)                              00108730
00040	      IF (FLOAT(SIGN)*XLOW(SUB) .GT. FLOAT(SIGN)*VAL)                   00108740
00041	     1 XLOW(SUB) = XLOW(SUB) - SIGN*10.**(ICHAR-1)                      00108750
00042	      RETURN                                                            00108760
00043	      END                                                               00108780

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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
SRNUM	+630	XLOW	+524	FHIGH	+616
NDT80 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1




SUBPROGRAMS CALLED

IDINT.	NDT77	FLOAT.	

SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 SIGN	1	 HILO	2	 ICHAR	3	 POS	4	 SUB	5	
 VAL	6	 .O0006	10	 .O0005	11	 .O0003	13	 .O0002	14	
 .O0001	15	

TEMPORARIES

 .A0016	16	 .Q0000	17	
ACCUM	    13#	    18#
CRSET	    15#	    18#
EXTME	    13#	    18#
FHIGH	    17#	    21#	    34
FLOAT.	    37	    40
HILO	     7#	    17#	    34	    36	    38
ICHAR	    17#	    35	    35#	    37	    39	    40
IDINT.	    37
LINE	    15#	    18#
NDT77	    35
NDT80	     7#
OBJCD	    15#	    20#
OPER	    15#	    18#
OUTPT	    15#	    18#	    21#
POS	    17#	    34#	    35	    37	    39
PTRS	    15#	    18#
RMAX	    13#	    18#
RMIN	    13#	    18#
RSTME	    13#	    18#
SIGN	    17#	    38#	    39	    40
SRNUM	    17#	    21#	    34	    36
SUB	    17#	    36#	    37	    40
SUBSC	    15#	    18#
SYM	    15#	    18#
TITLE	    15#	    18#
VAL	    14#	    39#	    40
VAR	    13#	    18#	    20#	    35	    35#	    37	    39
XLOW	    14#	    21#	    37#	    40	    40#

NDT80 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*                                                                      00108790
00002	C                                                                       00108800
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME                     00108810
00004	C     PROGRAM AUTHOR - TIMOTHY J. MALLOY                                00108820
00005	C                                                                       00108830
00006	C*                                                                      00108840
00007	      SUBROUTINE NDT81(POS)                                             00108850
00008	C*                                                                      00108860
00009	C                                                                       00108870
00010	C          PLOTTED CHARACTER INSERTION                                  00108880
00011	C                                                                       00108890
00012	C*                                                                      00108900
00013	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00108910
00014	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00108920
00015	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00108930
00016	      INTEGER POS,XCHAR,CHAR(10),PCHAR                                  00108940
00017	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00108950
00018	     1EXTME,RSTME,ACCUM,VAR                                             00108960
00019	      EQUIVALENCE (CHAR(1),OUTPT(190)),(PCHAR,OUTPT(168)),              00108970
00020	     1(VAR(1),OBJCD(1))                                                 00108980
00021	C*                                                                      00108990
00022	C                                                                       00109000
00023	C     IF POS IS ZERO, INSERT PCHAR.                                     00109010
00024	C     IF NOT, PRINT THE CHARACTER FROM THE CHAR ARRAY.                  00109020
00025	C                                                                       00109030
00026	C*                                                                      00109040
00027	      IF (POS .EQ. 0) GO TO 100                                         00109050
00028	      XCHAR = POS - 1                                                   00109060
00029	      POS = CHAR(XCHAR)                                                 00109070
00030	      GO TO 200                                                         00109080
00031	  100 POS = PCHAR                                                       00109090
00032	  200 RETURN                                                            00109100
00033	      END                                                               00109120

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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	CHAR	+653
PCHAR	+625	OBJCD	+1156


SUBPROGRAMS CALLED
NDT81 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1



SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 XCHAR	1	 POS	2	

TEMPORARIES

 .A0016	3	
ACCUM	    13#	    17#
CHAR	    16#	    19#	    29
CRSET	    14#	    17#
EXTME	    13#	    17#
LINE	    14#	    17#
NDT81	     7#
OBJCD	    14#	    19#
OPER	    14#	    17#
OUTPT	    14#	    17#	    19#
PCHAR	    16#	    19#	    31
POS	     7#	    16#	    27	    28	    29#	    31#
PTRS	    14#	    17#
RMAX	    13#	    17#
RMIN	    13#	    17#
RSTME	    13#	    17#
SUBSC	    14#	    17#
SYM	    14#	    17#
TITLE	    14#	    17#
VAR	    13#	    17#	    19#
XCHAR	    16#	    28#	    29
100P	    27	    31#
200P	    30	    32#

NDT81 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*                                                                      00109130
00002	C                                                                       00109140
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME                     00109150
00004	C     PROGRAM AUTHOR - TIMOTHY J. MALLOY                                00109160
00005	C                                                                       00109170
00006	C*                                                                      00109180
00007	      SUBROUTINE NDT82 (VAL)                                            00109190
00008	C*                                                                      00109200
00009	C                                                                       00109210
00010	C          PLOT INDEPENDENT VARIABLE NAME PROCESSING                    00109220
00011	C                                                                       00109230
00012	C*                                                                      00109240
00013	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00109250
00014	      REAL*8 VAL                                                        00109260
00015	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00109270
00016	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00109280
00017	      INTEGER BLANK,DOT,IVNAM(10),ODD,IVPRT,I,J                         00109290
00018	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00109300
00019	     1EXTME,RSTME,ACCUM,VAR                                             00109310
00020	      EQUIVALENCE (BLANK,CRSET(1)),(DOT,OPER(1)),(IVNAM(1),OUTPT(2)),   00109320
00021	     1(ODD,OUTPT(169)),(IVPRT,OUTPT(170)),(VAR(1),OBJCD(1))             00109330
00022	C*                                                                      00109340
00023	C                                                                       00109350
00024	C     ODD IS A CHARACTER THAT USUALLY CONTAINS A BLANK, BUT ON          00109360
00025	C     EVERY TENTH LINE IS A DOT.                                        00109370
00026	C                                                                       00109380
00027	C*                                                                      00109390
00028	      ODD = BLANK                                                       00109400
00029	      IF (IVPRT .EQ. 1) GO TO 200                                       00109410
00030	C*                                                                      00109420
00031	C                                                                       00109430
00032	C     NO NEED TO PRINT THE INDEPENDENT VARIABLE.                        00109440
00033	C     IVNAM IS PRINTED DOWN IN THE FIRST GRID, AND THEN                 00109450
00034	C     BLANKED OUT FOR THE REST.                                         00109460
00035	C                                                                       00109470
00036	C*                                                                      00109480
00037	      DO 100 I = 1, 13                                                  00109490
00038	  100 LINE(I) = BLANK                                                   00109500
00039	      LINE(7) = IVNAM(IVPRT)                                            00109510
00040	      IVNAM(IVPRT) = BLANK                                              00109520
00041	      GO TO 600                                                         00109530
00042	C*                                                                      00109540
00043	C                                                                       00109550
00044	C     ON EVERY TENTH LINE, PRINT THE INDEPENDENT VALUE.                 00109560
00045	C                                                                       00109570
00046	C*                                                                      00109580
00047	  200 ODD = DOT                                                         00109590
00048	      CALL NDT44(VAL,LINE(1))                                           00109600
00049	C*                                                                      00109610
00050	C                                                                       00109620
00051	C     RIGHT JUSTIFY THE INDEP VALUE.                                    00109630
00052	C                                                                       00109640
00053	C*                                                                      00109650
00054	  300 IF (LINE(11) .NE. BLANK) GO TO 500                                00109660
00055	      DO 400 I = 1, 10                                                  00109670
00056	      J = 11 - I                                                        00109680
NDT82 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	  400 LINE(J+1) = LINE(J)                                               00109690
00058	      LINE(1) = BLANK                                                   00109700
00059	      GO TO 300                                                         00109710
00060	  500 LINE(12) = BLANK                                                  00109720
00061	      LINE(13) = BLANK                                                  00109730
00062	  600 IVPRT = MOD(IVPRT, 10) + 1                                        00109740
00063	      RETURN                                                            00109750
00064	      END                                                               00109770

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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	BLANK	+251
DOT	+320	IVNAM	+357	ODD	+626	IVPRT	+627	OBJCD	+1156


SUBPROGRAMS CALLED

MOD.	NDT44	

SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 J	1	 .S0001	2	 .S0000	3	 VAL	4	 I	6	


TEMPORARIES

 .A0016	7	
ACCUM	    13#	    18#
BLANK	    17#	    20#	    28	    38	    40	    54	    58	    60	    61
CRSET	    15#	    18#	    20#
DOT	    17#	    20#	    47
EXTME	    13#	    18#
I	    17#	    37#	    38	    55#	    56
IVNAM	    17#	    20#	    39	    40#
IVPRT	    17#	    20#	    29	    39	    40	    62	    62#
J	    17#	    56#	    57
LINE	    15#	    18#	    38#	    39#	    48	    48#	    54	    57#	    57	    58#	    60#	    61#
MOD.	    62
NDT44	    48
NDT82	     7#
OBJCD	    15#	    20#
ODD	    17#	    20#	    28#	    47#
OPER	    15#	    18#	    20#
OUTPT	    15#	    18#	    20#
PTRS	    15#	    18#
RMAX	    13#	    18#
RMIN	    13#	    18#
RSTME	    13#	    18#
SUBSC	    15#	    18#
SYM	    15#	    18#
TITLE	    15#	    18#
VAL	     7#	    14#	    48	    48#
VAR	    13#	    18#	    20#
100P	    37	    38#
200P	    29	    47#
300P	    54#	    59
400P	    55	    57#
500P	    54	    60#
600P	    41	    62#

NDT82 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*                                                                      00109780
00002	C                                                                       00109790
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME                     00109800
00004	C     PROGRAM AUTHOR - TIMOTHY J. MALLOY                                00109810
00005	C                                                                       00109820
00006	C*                                                                      00109830
00007	      SUBROUTINE NDT83                                                  00109840
00008	C*                                                                      00109850
00009	C                                                                       00109860
00010	C          SORT OF DATA BUFFERS                                         00109870
00011	C                                                                       00109880
00012	C*                                                                      00109890
00013	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00109900
00014	      REAL*8 TEMP                                                       00109910
00015	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00109920
00016	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00109930
00017	      INTEGER VARCT,START,STOP,PLNTH,DIST,SORT,SORT1,DSORT,LOOP,LOOP1,  00109940
00018	     1 SRTFG,ADDR,ADDR1                                                 00109950
00019	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00109960
00020	     1EXTME,RSTME,ACCUM,VAR                                             00109970
00021	      EQUIVALENCE (VARCT,OUTPT(1)),(START,OUTPT(162)),                  00109980
00022	     1(STOP,OUTPT(163)),(VAR(1),OBJCD(1))                               00109990
00023	C*                                                                      00110000
00024	C                                                                       00110010
00025	C     PLNTH IS THE NUMBER OF ELEMENTS IN DATA BUFFER.                   00110020
00026	C                                                                       00110030
00027	C     THE SHELL-D SORT COMPARES AT A DISTANCE                           00110040
00028	C     HALF OF PREVIOUS DISTANCE.                                        00110050
00029	C                                                                       00110060
00030	C*                                                                      00110070
00031	      PLNTH = ((STOP - START)/VARCT) + 1                                00110080
00032	      DIST = PLNTH/2                                                    00110090
00033	C*                                                                      00110100
00034	C                                                                       00110110
00035	C     COMPARE THROUGH THE LIST DIST TIMES.                              00110120
00036	C                                                                       00110130
00037	C*                                                                      00110140
00038	  100 DO 400 SORT = 1, DIST                                             00110150
00039	      SORT1 = (SORT - 1)*VARCT + START                                  00110160
00040	      DSORT = DIST * VARCT                                              00110170
00041	  200 LOOP1 = SORT1                                                     00110180
00042	C*                                                                      00110190
00043	C                                                                       00110200
00044	C     SRTFG IS 1 IF A CHANGE WAS MADE DURING THIS LOOP.                 00110210
00045	C     COMPARE LIST AT A DISTANCE DSORT APART.                           00110220
00046	C                                                                       00110230
00047	C*                                                                      00110240
00048	      SRTFG = 0                                                         00110250
00049	      DO 300 LOOP = SORT1, STOP, DSORT                                  00110260
00050	      IF (VAR(LOOP) .GE. VAR(LOOP1)) GO TO 300                          00110270
00051	C*                                                                      00110280
00052	C                                                                       00110290
00053	C     IF OUT OF ORDER, REVERSE THE ITEMS.                               00110300
00054	C                                                                       00110310
00055	C*                                                                      00110320
00056	      SRTFG = 1                                                         00110330
NDT83 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	      DO 250 I = 1, VARCT                                               00110340
00058	      ADDR = LOOP - 1 + I                                               00110350
00059	      ADDR1 = LOOP1 - 1 + I                                             00110360
00060	      TEMP = VAR(ADDR)                                                  00110370
00061	      VAR(ADDR) = VAR(ADDR1)                                            00110380
00062	  250 VAR(ADDR1) = TEMP                                                 00110390
00063	C*                                                                      00110400
00064	C                                                                       00110410
00065	C     COMPARE THE NEXT ELEMENT.                                         00110420
00066	C                                                                       00110430
00067	C*                                                                      00110440
00068	  300 LOOP1 = LOOP                                                      00110450
00069	C*                                                                      00110460
00070	C                                                                       00110470
00071	C     CONTINUE ONLY IF NO CHANGES WERE MADE IN THIS SEARCH.             00110480
00072	C                                                                       00110490
00073	C*                                                                      00110500
00074	      IF (SRTFG .EQ. 1) GO TO 200                                       00110510
00075	  400 CONTINUE                                                          00110520
00076	      DIST = DIST/2                                                     00110530
00077	C*                                                                      00110540
00078	C                                                                       00110550
00079	C     WHEN DIST GETS DOWN TO ZERO, SORT IS COMPLETED.                   00110560
00080	C                                                                       00110570
00081	C*                                                                      00110580
00082	      IF (DIST .NE. 0) GO TO 100                                        00110590
00083	      RETURN                                                            00110600
00084	      END                                                               00110620

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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	VARCT	+356
START	+617	STOP	+620	OBJCD	+1156


SUBPROGRAMS CALLED



SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 LOOP1	1	 SORT	2	 DSORT	3	 LOOP	4	 ADDR1	5	
 .R0000	6	 .S0002	7	 DIST	10	 .S0001	11	 .S0000	12	
 ADDR	13	 TEMP	14	*I	16	 .O0003	17	 SRTFG	20	
 .O0002	21	 .O0001	22	 SORT1	23	 .O0000	24	 PLNTH	25	
NDT83 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-2



TEMPORARIES

 .A0016	26	 .Q0001	27	 .Q0002	30	
ACCUM	    13#	    19#
ADDR	    17#	    58#	    60	    61
ADDR1	    17#	    59#	    61	    62
CRSET	    15#	    19#
DIST	    17#	    32#	    38	    40	    76	    76#	    82
DSORT	    17#	    40#	    49
EXTME	    13#	    19#
I	    57#	    58	    59
LINE	    15#	    19#
LOOP	    17#	    49#	    50	    58	    68
LOOP1	    17#	    41#	    50	    59	    68#
NDT83	     7#
OBJCD	    15#	    21#
OPER	    15#	    19#
OUTPT	    15#	    19#	    21#
PLNTH	    17#	    31#	    32
PTRS	    15#	    19#
RMAX	    13#	    19#
RMIN	    13#	    19#
RSTME	    13#	    19#
SORT	    17#	    38#	    39
SORT1	    17#	    39#	    41	    49
SRTFG	    17#	    48#	    56#	    74
START	    17#	    21#	    31	    39
STOP	    17#	    21#	    31	    49
SUBSC	    15#	    19#
SYM	    15#	    19#
TEMP	    14#	    60#	    62
TITLE	    15#	    19#
VAR	    13#	    19#	    21#	    50	    60	    61#	    61	    62#
VARCT	    17#	    21#	    31	    39	    40	    57
100P	    38#	    82
200P	    41#	    74
250P	    57	    62#
300P	    49	    50	    68#
400P	    38	    75#

NDT83 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*                                                                      00110630
00002	C                                                                       00110640
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME                     00110650
00004	C     WRITTEN BY THOMAS L EVERMAN JR                                    00110660
00005	C                                                                       00110670
00006	C*                                                                      00110680
00007	      SUBROUTINE NDT84                                                  00110690
00008	C*                                                                      00110700
00009	C                                                                       00110710
00010	C     THIS SUBROUTINE PRINTS THE OBJECT CODE LISTING. IT IS             00110720
00011	C     INVOKED AT THE CONCLUSION OF THE LOADER PROGRAM IF                00110730
00012	C     THE 'OBJECT' OPTION HAS BEEN SPECIFIED.                           00110740
00013	C                                                                       00110750
00014	C*                                                                      00110760
00015	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10)                 00110770
00016	      REAL INST(37)                                                     00110780
00017	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00110790
00018	     1SUBSC(6),OUTPT(240),LINE(120),OBJCD(37410)                        00110800
00019	      INTEGER LINCT,OBJST,FLD1(4),FLD2,FLD3(4),OBPNT                    00110810
00020	      INTEGER OPRND,FIELD(4,2),SWTCH,I,BLANK,PRNTR                      00110820
00021	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00110830
00022	     1EXTME,RSTME,ACCUM,VAR                                             00110840
00023	      EQUIVALENCE (VAR(1),OBJCD(1)),(LINCT,PTRS(5)),(OBJST,PTRS(17))    00110850
00024	      EQUIVALENCE (FLD1(1),FIELD(1,1)),(FLD3(1),FIELD(1,2))             00110860
00025	      EQUIVALENCE (BLANK,CRSET(1)),(PRNTR,PTRS(2))                      00110870
00026	      DATA INST /'LOAD','ST  ','ADD ','SUB ','MULT','DIV ','EXP ',      00110880
00027	     1'RSUB','RDIV','REXP','INIT','TIME','RERN','STOP','STMT',          00110890
00028	     2'INTG','ABS ','CLIP','COS ','DLAY','EXPF','LOG ','MAX ',          00110900
00029	     3'MIN ','NOIS','NMRN','PULS','RAMP','SAMP','SIN ','SQRT',          00110910
00030	     4'STEP','SWCH','TBFL','TBHL','TBLE','TBND'/                        00110920
00031	C*                                                                      00110930
00032	C                                                                       00110940
00033	C     THE ABOVE ARRAY CONTAINS THE MNEMONICS FOR THE INSTRUCTION        00110950
00034	C     SET. THE FIRST STEP IN THE PROGRAM IS TO TITLE A NEW PAGE.        00110960
00035	C                                                                       00110970
00036	C*                                                                      00110980
00037	      LINCT = - 1                                                       00110990
00038	      CALL NDT57(4)                                                     00111000
00039	      WRITE (PRNTR,1)                                                   00111010
00040	    1 FORMAT (5X,'* * * * *    O B J E C T    C O D E    * * * * *'/)   00111020
00041	      WRITE (PRNTR,2)                                                   00111030
00042	    2 FORMAT (5X,'SOURCE STATEMENT    OP CODE    OPERAND'/)             00111040
00043	      OBPNT = OBJST                                                     00111050
00044	   50 FLD2 = OBJCD(OBPNT)                                               00111060
00045	C*                                                                      00111070
00046	C                                                                       00111080
00047	C     THE MNEMONIC HAS BEEN MATCHED TO THE OP CODE.  NOW THE            00111090
00048	C     OPERAND MUST BE LEFT JUSTIFIED IN A1 FORMAT AND INSERTED          00111100
00049	C     INTO THE OPERAND FIELD UNLESS THE 'STMT' INSTRUCTION              00111110
00050	C     IS ENCOUNTERED,  IN THIS CASE, THE STATEMENT NUMBER OPERAND       00111120
00051	C     IS PLACED IN FIELD1 SO THAT IT IS LISTED TO THE LEFT OF           00111130
00052	C     THE OP CODE.                                                      00111140
00053	C                                                                       00111150
00054	C*                                                                      00111160
00055	      OPRND = OBJCD(OBPNT + 1)                                          00111170
00056	      SWTCH = 1                                                         00111180
NDT84 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	      IF (FLD2 .NE. 15) SWTCH = 2                                       00111190
00058	      CALL NDT45 (OPRND, FIELD(1, SWTCH), 2 - SWTCH)                    00111200
00059	      SWTCH = MOD (SWTCH, 2) + 1                                        00111210
00060	      DO 100 I = 1, 4                                                   00111220
00061	  100 FIELD(I, SWTCH) = BLANK                                           00111230
00062	      IF (OPRND .EQ. 0) FLD3(1) = BLANK                                 00111240
00063	      CALL NDT57(1)                                                     00111250
00064	      IF (LINCT .NE. 3) GO TO 200                                       00111260
00065	      LINCT = LINCT + 2                                                 00111270
00066	      WRITE (PRNTR,2)                                                   00111280
00067	  200 WRITE (PRNTR,3) FLD1, INST(FLD2), FLD3                            00111290
00068	    3 FORMAT (11X,4A1,12X,A4,7X,4A1)                                    00111300
00069	C*                                                                      00111310
00070	C                                                                       00111320
00071	C     CHECK AND RETURN FOR 'STOP' INSTRUCTION                           00111330
00072	C     OTHERWISE INCREMENT AND LIST NEXT OPERATION                       00111340
00073	C                                                                       00111350
00074	C*                                                                      00111360
00075	      IF (FLD2 .EQ. 14) RETURN                                          00111370
00076	      OBPNT = OBPNT + 2                                                 00111380
00077	      GO TO 50                                                          00111390
00078	      END                                                               00111400

EQUIVALENCED VARIABLES


(  FLD1	1	 FIELD	1	 FLD3	5	)


COMMON BLOCKS

/.COMM./(+112220)
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
LINCT	+10	OBJST	+24	BLANK	+251	PRNTR	+5


SUBPROGRAMS CALLED

MOD.	NDT45	NDT57	

SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 INST	11	 FLD3	5	 SWTCH	56	 OBPNT	57	 FLD2	60	
 FIELD	1	 OPRND	61	 FLD1	1	 .S0000	62	 I	63	
 .O0000	64	

TEMPORARIES

 .A0016	120	 .Q0000	121	 .Q0001	122	
ACCUM	    15#	    21#
BLANK	    20#	    25#	    61	    62
CRSET	    17#	    21#	    25#
EXTME	    15#	    21#
FIELD	    20#	    24#	    58	    58#	    61#
FLD1	    19#	    24#	    67
FLD2	    19#	    44#	    57	    67	    75
FLD3	    19#	    24#	    62#	    67
I	    20#	    60#	    61
INST	    16#	    26#	    67
LINCT	    19#	    23#	    37#	    64	    65	    65#
LINE	    17#	    21#
MOD.	    59
NDT45	    58
NDT57	    38	    63
NDT84	     7#
OBJCD	    17#	    23#	    44	    55
OBJST	    19#	    23#	    43
OBPNT	    19#	    43#	    44	    55	    76	    76#
OPER	    17#	    21#
OPRND	    20#	    55#	    58	    58#	    62
OUTPT	    17#	    21#
PRNTR	    20#	    25#	    39	    41	    66	    67
PTRS	    17#	    21#	    23#	    25#
RMAX	    15#	    21#
RMIN	    15#	    21#
RSTME	    15#	    21#
SUBSC	    17#	    21#
SWTCH	    20#	    56#	    57#	    58	    59	    59#	    61
SYM	    17#	    21#
TITLE	    17#	    21#
VAR	    15#	    21#	    23#
100P	    60	    61#
1P	    39	    40#
200P	    64	    67#
2P	    41	    42#	    66
3P	    67	    68#
50P	    44#	    77

NDT84 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	C*****************************************************************      00111410
00002	C                                                                *      00111420
00003	C     COPYRIGHT (C) 1978 - UNIVERSITY OF NOTRE DAME              *      00111430
00004	C     PROGRAM AUTHOR - THOMAS L EVERMAN JR                       *      00111440
00005	C                                                                *      00111450
00006	C     THIS PROGRAM OPTIMIZES THE OBJECT CODE                            00111460
00007	C                                                                *      00111470
00008	C*****************************************************************      00111480
00009	      SUBROUTINE NDT85                                                  00111490
00010	      REAL*8 RMIN,RMAX,LITBL(8192)                                      00111500
00011	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00111510
00012	     1SUBSC(6),TYPCT(20),EQCHN(80),TOKEN(80),CARD1(80),CARD2(80),       00111520
00013	     2ERROR(80),OBJCD(160),DEF(80),XREF(80),TMAP(80),FCTN(5,22),        00111530
00014	     3SYMTB(5,4096)                                                     00111540
00015	      INTEGER OBJPT,INSPT,MOVBK,INSRT                                   00111550
00016	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,TYPCT,           00111560
00017	     1EQCHN,TOKEN,CARD1,CARD2,ERROR,OBJCD,DEF,XREF,TMAP,FCTN,           00111570
00018	     2SYMTB,LITBL                                                       00111580
00019	      EQUIVALENCE (OBJPT,OBJCD(1))                                      00111590
00020	C*                                                                      00111600
00021	C                                                                       00111610
00022	C     MOVBK INDICATES THE NUMBER OF DELETED OP CODES AND                00111620
00023	C     OPERANDS.  INSPT POINTS TO THE NEXT INSTRUCTION TO                00111630
00024	C     CHECK FOR THE 'ST' OPERATION.                                     00111640
00025	C                                                                       00111650
00026	C*                                                                      00111660
00027	      MOVBK = 0                                                         00111670
00028	      INSPT = 5                                                         00111680
00029	C*                                                                      00111690
00030	C                                                                       00111700
00031	C     CHECK FOR STORE. THEN CHECK FOR A SUBSEQUENT LOAD WITH            00111710
00032	C     THE IDENTICAL OPERAND BY LOOKING AT NEXT THREE WORDS.             00111720
00033	C                                                                       00111730
00034	C*                                                                      00111740
00035	   50 IF (OBJCD(INSPT) .NE. 2) GO TO 100                                00111750
00036	      IF (OBJCD(INSPT + 2) .NE. 1 .OR. OBJCD(INSPT + 1) .NE.            00111760
00037	     1OBJCD(INSPT + 3)) GO TO 100                                       00111770
00038	C*                                                                      00111780
00039	C                                                                       00111790
00040	C     A CONSECUTIVE ST/LOAD HAS BEEN FOUND. UPDATE POINTERS             00111800
00041	C     TO CAUSE THESE WORDS TO BE OVERWRITTEN.                           00111810
00042	C                                                                       00111820
00043	C*                                                                      00111830
00044	      MOVBK = MOVBK + 4                                                 00111840
00045	      INSPT = INSPT + 2                                                 00111850
00046	      GO TO 200                                                         00111860
00047	C*                                                                      00111870
00048	C                                                                       00111880
00049	C     OVERWRITE ANY ST/LOAD COMBINATION IF IT EXISTS                    00111890
00050	C                                                                       00111900
00051	C*                                                                      00111910
00052	  100 IF (MOVBK .EQ. 0) GO TO 200                                       00111920
00053	      INSRT = INSPT - MOVBK                                             00111930
00054	      OBJCD(INSRT) = OBJCD(INSPT)                                       00111940
00055	      OBJCD(INSRT + 1) = OBJCD(INSPT + 1)                               00111950
00056	C*                                                                      00111960
NDT85 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1-1


00057	C                                                                       00111970
00058	C     UPDATE POINTER AND CHECK FOR END OF BUFFER. IF                    00111980
00059	C     COMPLETE REDUCE BUFFER LENGTH INDICATOR (OBJPT).                  00111990
00060	C                                                                       00112000
00061	C*                                                                      00112010
00062	  200 INSPT = INSPT + 2                                                 00112020
00063	      IF (INSPT .LT. OBJPT - 2) GO TO 50                                00112030
00064	      IF (MOVBK .EQ. 0) GO TO 300                                       00112040
00065	      OBJPT = OBJPT - MOVBK                                             00112050
00066	      OBJCD(OBJPT) = OBJCD(INSPT + 1)                                   00112060
00067	      OBJCD(OBJPT - 1) = OBJCD(INSPT)                                   00112070
00068	  300 RETURN                                                            00112080
00069	      END                                                               00112100

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112220)
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	+52220	OBJPT	+1222


SUBPROGRAMS CALLED



SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 INSRT	1	 INSPT	2	 MOVBK	3	

TEMPORARIES

 .A0016	4	
CARD1	    11#	    16#
CARD2	    11#	    16#
CRSET	    11#	    16#
DEF	    11#	    16#
EQCHN	    11#	    16#
ERROR	    11#	    16#
FCTN	    11#	    16#
INSPT	    15#	    28#	    35	    36	    45	    45#	    53	    54	    55	    62	    62#	    63	    66	    67
INSRT	    15#	    53#	    54	    55
LITBL	    10#	    16#
MOVBK	    15#	    27#	    44	    44#	    52	    53	    64	    65
NDT85	     9#
OBJCD	    11#	    16#	    19#	    35	    36	    54#	    54	    55#	    55	    66#	    66	    67#	    67
OBJPT	    15#	    19#	    63	    65	    65#	    66	    67
OPER	    11#	    16#
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	    35	    36	    52#
200P	    46	    52	    62#
300P	    64	    68#
50P	    35#	    63

NDT85 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	      SUBROUTINE NDT86                                                  00112110
00002	      REAL*8 RMIN,RMAX,VAR(18705),ACCUM,EXTME,RSTME(10),                00112120
00003	     1 AVGTM(37)                                                        00112130
00004	      INTEGER PTRS(45),TITLE(120),CRSET(39),OPER(9),SYM(15),            00112140
00005	     1 SUBSC(6),OUTPT(240),LINE(120),OBJCD(37434),                      00112150
00006	     2 LADDR,ADDR,SUB,PRNTR                                             00112160
00007	      COMMON RMIN,RMAX,PTRS,TITLE,CRSET,OPER,SYM,SUBSC,OUTPT,LINE,      00112170
00008	     1 EXTME,RSTME,ACCUM,VAR                                            00112180
00009	      EQUIVALENCE (VAR(1),OBJCD(1)),(LADDR,PTRS(19)),                   00112190
00010	     1 (PRNTR,PTRS(2))                                                  00112200
00011	      DATA AVGTM /1.D0,2.D0,3.D0,4.D0,5.D0,6.D0,7.D0,                   00112210
00012	     1 1.D0,2.D0,3.D0,4.D0,5.D0,6.D0,7.D0,                              00112220
00013	     2 1.D0,2.D0,3.D0,4.D0,5.D0,6.D0,7.D0,                              00112230
00014	     3 1.D0,2.D0,3.D0,4.D0,5.D0,6.D0,7.D0,                              00112240
00015	     4 1.D0,2.D0,3.D0,4.D0,5.D0,6.D0,7.D0,                              00112250
00016	     5 1.D0,2.D0/                                                       00112260
00017	      EXTME = 0.D0                                                      00112270
00018	      ADDR = LADDR - 2                                                  00112280
00019	  100 ADDR = ADDR + 2                                                   00112290
00020	      IF (OBJCD(ADDR) .EQ. 12) GO TO 200                                00112300
00021	      SUB = OBJCD(ADDR)                                                 00112310
00022	      EXTME = EXTME + AVGTM(SUB)                                        00112320
00023	      GO TO 100                                                         00112330
00024	  200 WRITE (PRNTR,300) EXTME                                           00112340
00025	  300 FORMAT (' EXECUTION TIME ESTIMATES ',E9.3,'UNITS')                00112350
00026	      RETURN                                                            00112360
00027	      END                                                               00112380

EQUIVALENCED VARIABLES



COMMON BLOCKS

/.COMM./(+112250)
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
LADDR	+26	PRNTR	+5


SUBPROGRAMS CALLED



SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

 AVGTM	1	 SUB	113	 ADDR	114	

TEMPORARIES

 .A0016	126	
ACCUM	     2#	     7#
ADDR	     4#	    18#	    19	    19#	    20	    21
AVGTM	     2#	    11#	    22
CRSET	     4#	     7#
EXTME	     2#	     7#	    17#	    22	    22#	    24
LADDR	     4#	     9#	    18
LINE	     4#	     7#
NDT86	     1#
OBJCD	     4#	     9#	    20	    21
OPER	     4#	     7#
OUTPT	     4#	     7#
PRNTR	     4#	     9#	    24
PTRS	     4#	     7#	     9#
RMAX	     2#	     7#
RMIN	     2#	     7#
RSTME	     2#	     7#
SUB	     4#	    21#	    22
SUBSC	     4#	     7#
SYM	     4#	     7#
TITLE	     4#	     7#
VAR	     2#	     7#	     9#
100P	    19#	    23
200P	    20	    24#
300P	    24	    25#

NDT86 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001	      SUBROUTINE NDT87                                                  00112390
00002	      RETURN                                                            00112400
00003	      END                                                               00112410


SUBPROGRAMS CALLED



SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]



TEMPORARIES

 .A0016	1	
NDT87	     1#

NDT87 	[ NO ERRORS DETECTED ]
MAIN. 	NDTRN2	FORTRAN V.5A(700) /KI/OPT/C	11-JUN-81	16:46	PAGE 1


00001