FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 1   

GSDANL.FTN   	/TR:BLOCKS/WR


        C

        C

        C	GSDANL  --  GLOBAL SYMBOL DEFINITION RECORD ANALYSER

        C

        C

        C

        C	COPYRIGHT (C) 1976,1977,1978

        C	DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

        C

        C	THIS SOFTWARE IS FURNISHED UNDER  A LICENSE FOR USE ONLY  ON  A

        C	SINGLE COMPUTER SYSTEM AND MAY BE  COPIED ONLY WITH  THE INCLU-

        C	SION OF  THE  ABOVE  COPYRIGHT NOTICE.  THIS SOFTWARE,  OR  ANY

        C	OTHER COPIES THEREOF, MAY NOT BE  PROVIDED  OR  OTHERWISE  MADE

        C	AVAILABLE TO ANY OTHER PERSON EXCEPT  FOR  USE  ON  SUCH SYSTEM

        C	AND TO  ONE WHO AGREES  TO  THESE LICENSE  TERMS.  TITLE TO AND

        C	OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.

        C

        C	THE INFORMATION IN THIS SOFTWARE  IS  SUBJECT TO CHANGE WITHOUT

        C	NOTICE AND SHOULD NOT BE CONSTRUED  AS  A COMMITMENT BY DIGITAL

        C	EQUIPMENT CORPORATION.

        C

        C	DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS

        C	SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

        C

        C

        C	T.J. PORTER 	01-AUG-76

        C

        C

        C

        C	THIS SUBROUTINE ANALYSES AND VALIDATES ALL GLOBAL SYMBOL

        C	DEFINITION RECORDS.

        C

        C

        C  MODIFICATIONS:

        C

        C

        C NO.		DATE		PROGRAMMER		PURPOSE

        C --		----		----------		-------

        C

        C

        C 01		15-AUG-76	K.D. MORSE		REMOVE PRMODE CHECKS

        C							AND TYPE VS WRITES.

        C 02		25-AUG-76	K.D. MORSE		ACCEPT CONCATENATED GSDS.

        C							OMIT RECORD EQUIVALENCES.

        C 03		07-SEP-76	K.D. MORSE		CHANGE PSECT ALIGNMENT

        C							AND DATA TYPES.

        C 04		10-SEP-76	K.D. MORSE		ANALYZE ENTRY POINT

        C							RECORDS.

        C 05		12-NOV-76	K.D. MORSE		NAME FIELD CHECKS

        C							FOR ILLEGAL CHARACTERS

        C							CORRECTED AND ALSO 

        C							OCTAL VALUE OUTPUT.

        C 06		12-NOV-76	K.D. MORSE		SET ILLEGAL PSECT

        C							LENGTH TO MAXIMUM.

        C 07		18-NOV-76	K.D. MORSE		ACCEPT ANY NUMBER 

        C							OF ENTRY POINT MASKS.

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 2   

GSDANL.FTN   	/TR:BLOCKS/WR


        C 08		14-JUN-77	K.D. MORSE		PRINT IV,DV ON ENTRY

        C							POINT MASK.

        C 09		2-FEB-78	K.D. MORSE		ADD SRM TYPES 22 + 23.

        C 10		08-MAY-78	K.D. MORSE		ADD GSD TYPE 3 ANALYSIS,

        C							PROCEDURE WITH FORMAL

        C							ARGUMENT DEFINITION.

        C 11		09-MAY-78	K.D. MORSE		ADD TIRCNT TO COMMON.

        C

        C

        C

        C

0001    	SUBROUTINE	GSDANL

        C

        C

0002    	LOGICAL*1	DUMPIT

        C

0003    	INTEGER		RECNUM,GSDLNG,PSREL,RECPNT,ONELNG,ARGCNT

0004    	INTEGER*4	ALLOC,VALUE

0005    	INTEGER		GSDEF,PSCNT,PSREFD,PSECT,PSNUM,EPOINT

0006    	INTEGER		PSRTIR,PRMODE,ERRCNT,WRTERR,SUBCNT

0007    	INTEGER		PROCRC,TITLRC,COPYRC,TIRCNT,ENTPRO

        C

0008    	REAL*4	REG0,REG1,REG2,REG3,REG4,REG5,REG6,REG7,REG8,REG9,REG10

0009    	REAL*4	REG11,REG12,REG13,REG14,REG15,REGIV,REGDV

        C

0010    	BYTE	RECORD(512),LSTREC,PSDEF,ENTPNT,GSYM,ZERO,NINE,BLANK

0011    	BYTE	PSALGN,PSFLG1,PSFLG2,HEXARA(8)

0012    	BYTE	DUMARA(4),EOM,GSDATY,FLAGS

0013    	BYTE	GSFLG1,GSFLG2,GSDPSX

0014    	BYTE	REGS(4,18),GSDTYP

        C

0015    	COMMON	RECORD,GSDLNG,RECNUM,LSTREC,DUMPIT,PSCNT,PSREFD

0016    	COMMON	PSRTIR,MXRLNG,PRMODE,ERRCNT,WRTERR,SUBCNT,ISTACK

0017    	COMMON PROCRC,TITLRC,COPYRC,TIRCNT

        C

0018    	EQUIVALENCE (GSDATY,PSALGN),(GSFLG1,PSFLG1),(GSFLG2,PSFLG2)

0019    	EQUIVALENCE (ALLOC,DUMARA(1)),(VALUE,DUMARA(1))

0020    	EQUIVALENCE (REGS(1,1),REG0),(REGS(1,2),REG1)

0021    	EQUIVALENCE (REGS(1,3),REG2),(REGS(1,4),REG3)

0022    	EQUIVALENCE (REGS(1,5),REG4),(REGS(1,6),REG5)

0023    	EQUIVALENCE (REGS(1,7),REG6),(REGS(1,8),REG7)

0024    	EQUIVALENCE (REGS(1,9),REG8),(REGS(1,10),REG9)

0025    	EQUIVALENCE (REGS(1,11),REG10),(REGS(1,12),REG11)

0026    	EQUIVALENCE (REGS(1,13),REG12),(REGS(1,14),REG13)

0027    	EQUIVALENCE (REGS(1,15),REG14),(REGS(1,16),REG15)

0028    	EQUIVALENCE (REGS(1,17),REGIV),(REGS(1,18),REGDV)

        C

0029    	DATA	MINGSD,MAXGSD/12,26/

0030    	DATA	MINENT,MAXENT/14,29/

0031    	DATA	MINGSR,MAXGSR/7,21/

0032    	DATA	MINPRO,MAXPRO/16,512/

0033    	DATA	MINARG,MAXARG/0,255/

0034    	DATA	ZERO,NINE,BLANK/'0','9',' '/

0035    	DATA	PSDEF,GSYM,ENTPNT,ENTPRO/0,1,2,3/,EOM/3/

0036    	DATA	NAMMAX,PSREL,PSNUM/15,3,0/

0037    	DATA	GSDEF/2/,MINPDF,MAXPDF/11,25/

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 3   

GSDANL.FTN   	/TR:BLOCKS/WR


0038    	DATA	REG1/' R1 '/,REG2/' R2 '/,REG3/' R3 '/,REG4/' R4 '/

0039    	DATA	REG5/' R5 '/,REG6/' R6 '/,REG7/' R7 '/,REG8/' R8 '/

0040    	DATA	REG9/' R9 '/,REG10/' R10'/,REG11/' R11'/,REG12/' AP '/

0041    	DATA	REG13/' FP '/,REG14/' SP '/,REG15/' PC '/,REG0/' R0 '/

0042    	DATA	REGIV/'(IV)'/,REGDV/'(DV)'/

0043    10	FORMAT(/' >>>>>>>>>> RECORD',I5,' IS A GSD ',I4,' BYTES LONG',

        	1' <<<<<<<<<<<<<<<<<<<<<<<')

0044    20	FORMAT(T5,'*****WHICH MAY NOT BEGIN A MODULE OR',

        	1' FOLLOW EOM RECORD')

0045    30	FORMAT(T5,'*****GSD TYPE ',I3,' DOES NOT EXIST ')

0046    40	FORMAT(T10,'P-SECTION ALIGNMENT = 2**',I2)

0047    50	FORMAT(/T10,'BYTE'$)

0048    60	FORMAT(/T10,'WORD'$)

0049    70	FORMAT(/T10,'LONGWORD'$)

0050    80	FORMAT(/T10,'QUADWORD'$)

0051    90	FORMAT(/T10,'PAGE'$)

0052    110	FORMAT('+ (2**',I2,' BYTES) ALIGNED P-SECTION')

0053    120	FORMAT(T10,'NO P-SECTION FLAGS SET ')

0054    130	FORMAT(T10,'THE FOLLOWING FLAG BITS ARE SET: ')

0055    140	FORMAT(T15,'0 ',5X,' FL.P.PIC ')

0056    150	FORMAT(T15,'1 ',5X,' FL.P.UNI ')

0057    160	FORMAT(T15,'2 ',5X,' FL.P.OVL ')

0058    170	FORMAT(T15,'3 ',5X,' FL.P.REL ')

0059    180	FORMAT(T15,'4 ',5X,' FL.P.GBL ')

0060    190	FORMAT(T15,'5 ',5X,' FL.P.SHR ')

0061    200	FORMAT(T15,'6 ',5X,' FL.P.XEQ ')

0062    210	FORMAT(T15,'7 ',5X,' FL.P.RD ')

0063    220	FORMAT(T15,'8 ',5X,' FL.P.WRT ')

0064    230	FORMAT(T5,'*****',4X,I2,5X,' ILLEGALLY ')

0065    240	FORMAT(T5,'*****ABSOLUTE PSECT HAS NON ZERO LENGTH ')

0066    260	FORMAT(T10,'PSECT ALLOCATION (BYTES) = ',I11,' (DEC) ',O11,' (',

        	1'OCTAL)'/,T40,8A1,' (HEXADECIMAL)')

0067    270	FORMAT(T5,'*****PSECT NAME LENGTH ILLEGAL ',I5)

0068    280	FORMAT(T5,'*****PSECT NAME CONTAINS ILLEGAL CHARACTER'

        	1,/,T15,'CHARACTER ',I3,' IS ',A1,'   (',I3,' OCTAL)')

0069    290	FORMAT(T10,'PSECT NUMBER',I4,' IS CALLED "',<NAMLNG>A1,'"')

0070    300	FORMAT(/T10,'REFERENCE TO '$)

0071    310	FORMAT(/T10,'DEFINITION OF '$)

0072    320	FORMAT(1H+,'GLOBAL SYMBOL ')

0073    330	FORMAT(T5,'*****RESERVED '$)

0074    340	FORMAT(T10,'UNKNOWN '$)

0075    345	FORMAT(T10,'BIT '$)

0076    350	FORMAT(T10,'BYTE LOGICAL '$)

0077    355	FORMAT(T10,'WORD LOGICAL '$)

0078    360	FORMAT(T10,'LONG WORD LOGICAL '$)

0079    365	FORMAT(T10,'QUAD WORD LOGICAL '$)

0080    370	FORMAT(T10,'BYTE INTEGER '$)

0081    375	FORMAT(T10,'WORD INTEGER '$)

0082    380	FORMAT(T10,'LONG WORD INTEGER '$)

0083    385	FORMAT(T10,'QUAD WORD INTEGER '$)

0084    390	FORMAT(T10,'SINGLE PRECISION FLOATING '$)

0085    395	FORMAT(T10,'DOUBLE PRECISION FLOATING '$)

0086    400	FORMAT(T10,'COMPLEX '$)

0087    405	FORMAT(T10,'DOUBLE PRECISION COMPLEX '$)

0088    410	FORMAT(T10,'ASCII STRING '$)

0089    415	FORMAT(T10,'NUMERIC STRING (UNSIGNED) '$)

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 4   

GSDANL.FTN   	/TR:BLOCKS/WR


0090    420	FORMAT(T10,'NUMERIC STRING (LEFT SEPARATE SIGN) '$)

0091    422	FORMAT(T10,'NUMERIC STRING (LEFT OVERPUNCHED SIGN) '$)

0092    424	FORMAT(T10,'NUMERIC STRING (RIGHT SEPARATE SIGN) '$)

0093    426	FORMAT(T10,'NUMERIC STRING (RIGHT OVERPUNCHED SIGN) '$)

0094    428	FORMAT(T10,'NUMERIC STRING (ZONED SIGN) '$)

0095    430	FORMAT(T10,'PACKED DECIMAL STRING '$)

0096    432	FORMAT(T10,'SEQUENCE OF INSTRUCTIONS '$)

0097    434	FORMAT(T10,'PROCEDURE ENTRY MASK '$)

0098    440	FORMAT(1H+'DATA TYPE (',I3,')')

0099    450	FORMAT(T5,'*****P-SECT DEFINITION RECORD HAS ILLEGAL LENGTH '/

        	1,T15,'(',I4,' BYTES) - NOT BETWEEN ',I3,' AND ',I3)

0100    460	FORMAT(T10,'NOT ONE GLOBAL SYMBOL FLAG IS SET')

0101    470	FORMAT(T15,'0',5X,' FL.S.WK ')

0102    480	FORMAT(T15,'1',5X,' FL.S.DEF ')

0103    490	FORMAT(T15,'2',5X,' FL.S.UNI ')

0104    500	FORMAT(T15,'3',5X,' FL.S.REL ')

0105    510	FORMAT(T15,'4',5X,' FL.S.VAL ')

0106    520	FORMAT(T5,'*****GLOBAL SYMBOL DEFINITION RECORD HAS ILLEGAL',

        	1' LENGTH'/,T15,'( ',I4,' BYTES) - NOT BETWEEN ',I3,' AND ',I3)

0107    530	FORMAT(T5,'*****GLOBAL SYMBOL REFERENCE RECORD HAS ILLEGAL',

        	1' LENGTH'/,T15,'( ',I4,' BYTES) - NOT BETWEEN ',I3,' AND ',I3)

0108    540	FORMAT(T10,'SYMBOL DEFINED IN P-SECTION ',I4)

0109    550	FORMAT(T10,'GLOBAL SYMBOL VALUE = ',I11,' (DEC) ',O11,' (OCTAL)'

        	1/T40,8A1,' (HEXADECIMAL)')

0110    560	FORMAT(T5,'*****GLOBAL SYMBOL LENGTH (',I4,' BYTES)'/

        	1,T15,'ILLEGAL - NOT 1 TO ',I3,' CHARACTERS ')

0111    570	FORMAT(T5,'*****GLOBAL SYMBOL CONTAINS ILLEGAL CHARACTER'/

        	1,T15'CHARACTER ',I2,' IS ',A1,'   (',I3,' OCTAL)')

0112    580	FORMAT(T5,'*****FIRST CHARACTER OF GLOBAL SYMBOL IS'

        	1/,T15,'NUMERIC OR BLANK')

0113    590	FORMAT(T10,'GLOBAL SYMBOL IS "',<NAMLNG>A1,'" ')

0114    610	FORMAT(T5,'*****FIRST CHARACTER OF P-SECT NAME IS'

        	1/T15,'NUMERIC OR BLANK')

0115    620	FORMAT(T5,'*****ILLEGAL ALIGNMENT - GREATER THAN 2**9')

0116    630	FORMAT(T10,'REGISTERS SAVED:'/T15,$)

0117    640	FORMAT('+',4A1,$)

0118    650	FORMAT()

0119    670	FORMAT(T5,'*****ENTRY POINT GSD RECORD HAS ILLEGAL',

        	1' LENGTH'/,T15,'( ',I4,' BYTES) - NOT BETWEEN ',I3,' AND ',I3)

0120    680	FORMAT(1H+,' ENTRY POINT SYMBOL ')

0121    690	FORMAT(T5,'*****PROCEDURE WITH FORMAL ARGUMENT DEFINITION HAS',

        	1' ILLEGAL LENGTH'/,T15,'(',I4,' BYTES) - NOT BETWEEN ',I3,' AND ',I3)

0122    700	FORMAT(1H+,' PROCEDURE WITH FORMAL ARGUMENT DEFINITION')

0123    710	FORMAT(T10,'MINIMUM NUMBER OF ACTUAL ARGUMENTS IS ',I3)

0124    720	FORMAT(T10,'MAXIMUM NUMBER OF ACTUAL ARGUMENTS IS ',I3)

0125    730	FORMAT(T5,'*****PROCEDURE WITH FORMAL ARGUMENT DEFINITIONS IS',

        	1' MISSING MINIMUM ACTUAL ARGUMENT COUNT')

0126    740	FORMAT(T5,'*****PROCEDURE WITH FORMAL ARGUMENT DEFINITIONS IS',

        	1' MISSING MAXIMUM ACTUAL ARGUMENT COUNT')

0127    750	FORMAT(T5,'*****INVALID MINIMUM ACTUAL ARGUMENT COUNT OF',I4,

        	1' NOT BETWEEN ',I4,' AND ',I4)

0128    760	FORMAT(T5,'*****INVALID MAXIMUM ACTUAL ARGUMENT COUNT OF',I4,

        	1' NOT BETWEEN ',I4,' AND ',I4)

0129    770	FORMAT(T10,'ARGUMENT #',I4,' VALIDATION CONTROL BYTE PASSING',

        	1' MECHANISM:')

0130    780	FORMAT(T15,'ARG$K_UNKNOWN  -  UNSPECIFIED')

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 5   

GSDANL.FTN   	/TR:BLOCKS/WR


0131    790	FORMAT(T15,'ARG$K_VALUE    -  BY VALUE')

0132    800	FORMAT(T15,'ARG$K_REF      -  BY REFERENCE')

0133    810	FORMAT(T15,'ARG$K_DESC     - BY DESCRIPTOR')

0134    820	FORMAT(T10,'ARGUMENT DESCRIPTION BYTE COUNT OF ',I4,' FOLLOWS:')

0135    830	FORMAT(T5,'*****ARGUMENT DESCRIPTOR MISSING FOR FORMAL ARGUMENT #',

        	1I5)

0136    840	FORMAT(T5,'*****RESERVED BIT #',I2,' SET IN ARGUMENT VALIDATION'

        	1,' CONTROL BYTE')

0137    850	FORMAT(T5,'*****FORMAL ARGUMENT DESCRIPTOR IS MISSING REMAINING'

        	1,' BYTE COUNT')

0138    860	FORMAT (T5,'*****BYTE COUNT GOES BEYOND END OF RECORD BY',

        	1I4,' BYTES')

0139    870	FORMAT(T5,'*****MINIMUM IS GREATER THAN MAXIMUM')

        C

        C---->	ANNOUNCE GSD RECORD AND VALIDATE SEQUENCE

        C

0140    	RECPNT=2

0141    	WRITE(2,10,ERR=9000) RECNUM,GSDLNG

0142    930	IF(LSTREC .NE. EOM)GO TO 1000

0143    	ERRCNT = ERRCNT + 1

0144    	WRITE(2,20,ERR=9000)

        C

        C---->	DETERMINE WHAT TYPE OF GSD RECORD

        C

0145    1000	GSDTYP=RECORD(RECPNT)

0146    	IF (GSDTYP.EQ.PSDEF) GOTO 1030

0147    	IF ((GSDTYP .EQ. GSYM) .OR. (GSDTYP .EQ. ENTPNT) .OR.

        	1    (GSDTYP .EQ. ENTPRO)) GOTO 3000

        C

        C---->		ILLEGAL GSD TYPE

        C

0148    		ERRCNT = ERRCNT + 1

0149    		WRITE(2,30,ERR=9000) GSDTYP

0150    1025		DUMPIT = .TRUE.

0151    		RETURN

        C

        C---->	HERE FOR P-SECTION DEFINITION.  CHECK LENGTH OF RECORD.

        C

0152    1030	ONELNG=10+RECORD(RECPNT+8)		!++06 CORRECT ONELNG (10 NOT 11)

0153    	IF ((ONELNG .GE. MINPDF) .AND. (ONELNG .LE. MAXPDF)) GOTO 1050

0154    		ERRCNT = ERRCNT + 1

0155    		WRITE(2,450,ERR=9000) ONELNG,MINPDF,MAXPDF

0156    		ONELNG=MAXPDF			!++06 CHANGE LENGTH TO MAXIMUM

0157    1050	PSCNT = PSCNT+1

        C

        C---->	FIRST ANALYSE ALIGNMENT.

        C

0158    	RECPNT=RECPNT + 1

0159    	PSALGN=RECORD(RECPNT)

0160    	GO TO (1100,1110,1120,1130)PSALGN + 1

0161    		IF(PSALGN .EQ. 9)GO TO 1140

0162    		IF(PSALGN .LT. 9) GO TO 1090

0163    		ERRCNT = ERRCNT + 1

0164    		WRITE(2,620,ERR=9000)

0165    1090		WRITE(2,40,ERR=9000) PSALGN

0166    		GO TO 1170

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 6   

GSDANL.FTN   	/TR:BLOCKS/WR


0167    1100			WRITE(2,50,ERR=9000)

0168    			GO TO 1160

0169    1110			WRITE(2,60,ERR=9000)

0170    			GO TO 1160

0171    1120			WRITE(2,70,ERR=9000)

0172    			GO TO 1160

0173    1130			WRITE(2,80,ERR=9000)

0174    			GO TO 1160

0175    1140			WRITE(2,90,ERR=9000)

0176    			GO TO 1160

0177    1160		WRITE(2,110,ERR=9000) PSALGN

        C

        C---->	NOW ANALYSE FLAGS.

        C

0178    1170	RECPNT=RECPNT + 1

0179    	PSFLG1=RECORD(RECPNT)

0180    	PSFLG2=RECORD(RECPNT+1)

0181    	IF((PSFLG1 .OR. PSFLG2) .NE. 0)GO TO 1200

0182    		WRITE(2,120,ERR=9000)

0183    		GO TO 1450

0184    1200	WRITE(2,130,ERR=9000)

0185    1210	K = 0

0186    	FLAGS = PSFLG1 

0187    1220	DO 1400 I = 0,7

0188    	IF (ISTATE(FLAGS,I)) GO TO 1250

0189    	GO TO 1400

0190    1250		JK = I+(8*K)

0191    		GO TO(1260,1270,1280,1290,1300,1310,1320,1330,1340)JK+1

0192    		GO TO 1350

0193    1260		WRITE(2,140,ERR=9000)

0194    		GO TO 1400

0195    1270		WRITE(2,150,ERR=9000)

0196    		GO TO 1400

0197    1280		WRITE(2,160,ERR=9000)

0198    		GO TO 1400

0199    1290		WRITE(2,170,ERR=9000)

0200    		GO TO 1400

0201    1300		WRITE(2,180,ERR=9000)

0202    		GO TO 1400

0203    1310		WRITE(2,190,ERR=9000)

0204    		GO TO 1400

0205    1320		WRITE(2,200,ERR=9000)

0206    		GO TO 1400

0207    1330		WRITE(2,210,ERR=9000)

0208    		GO TO 1400

0209    1340		WRITE(2,220,ERR=9000)

0210    		GO TO 1400

0211    1350		WRITE(2,230,ERR=9000) JK

0212    1360		ERRCNT = ERRCNT + 1

0213    1400	CONTINUE

0214    	IF(K .NE. 0) GO TO 1450

0215    		K = K+1

0216    		FLAGS = PSFLG2 

0217    		GO TO 1220

        C

        C---->	ALL FLAGS ARE INTERPRETED - NOW THE

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 7   

GSDANL.FTN   	/TR:BLOCKS/WR


        C		ALLOCATION FIELD

        C

0218    1450	RECPNT=RECPNT + 2

0219    	DO 1460 I = 1,4

0220    	DUMARA(I) = RECORD(RECPNT+I-1)

0221    1460	CONTINUE

        C

        C---->	CHECK THAT IF ABSOLUTE IT HAS ZERO ALLOCATION

        C

        C

0222    	IF (ISTATE(PSFLG1,PSREL)) GO TO 1520

0223    		IF(ALLOC .EQ. 0)GO TO 1520

0224    		ERRCNT = ERRCNT + 1

0225    		WRITE(2,240,ERR=9000)

0226    		GO TO 1520

        C

        C---->	WRITE ALLOCATION FIELD

        C

0227    1520	CALL CVTOHX(ALLOC,HEXARA)

0228    	WRITE(2,260,ERR=9000) ALLOC,ALLOC,HEXARA

0229    1559	CONTINUE

        C

        C---->		NOW VALIDATE PSECT NAME FIELD

        C

0230    	RECPNT=RECPNT + 4

0231    	NAMLNG = RECORD(RECPNT)

0232    	RECPNT=RECPNT + 1

0233    1560	J = NAMLNG

0234    	K = RECPNT

0235    1570	CALL	FLDCHK(J,K,RECORD,I)

0236    	IF (I)1600,1670,1650

        C

        C---->		P-SECTION NAME IS INVALID LENGTH

        C

0237    1600 		WRITE(2,270,ERR=9000) NAMLNG

0238    1630		NAMLNG = NAMMAX

0239    		DUMPIT = .TRUE.

0240    		ERRCNT = ERRCNT + 1

0241    		GO TO 1560

        C

        C---->		P-SECTION NAME CONTAINS AN ILLEGAL CHARACTER

        C

0242    1650		WRITE(2,280,ERR=9000)I-RECPNT+1,RECORD(I),RECORD(I) !++05 OCTAL TOO

0243    1665		K = I + 1

0244    		ERRCNT = ERRCNT + 1

0245    		J = NAMLNG - K + RECPNT		!++05 SET NEW LENGTH

0246    		IF(K .LE. (ONELNG - MINPDF + RECPNT)) GO TO 1570 !++05 CHECK TO CONT.

        C

        C---->		NOW CHECK FIRST CHARACTER IS NOT NUMERIC OR BLANK

        C

0247    1670	IF(RECORD(RECPNT) .EQ. BLANK) GO TO 1680

0248    	IF (RECORD(RECPNT) .LT. ZERO .OR. (RECORD(RECPNT) .GT. NINE))

        	1GOTO 1700

        C

0249    1680		ERRCNT = ERRCNT + 1

0250    		WRITE(2,610,ERR=9000)

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 8   

GSDANL.FTN   	/TR:BLOCKS/WR


        C

        C---->	NOW, FINALLY WRITE PSECT NAME

        C		THEN RETURN, INCREMENTING

        C		PSECTION NUMBER.

        C

0251    1700	WRITE(2,290,ERR=9000)PSCNT,(RECORD(I),I=RECPNT,RECPNT+NAMLNG-1)

0252    1730	RECPNT=RECPNT + NAMLNG

0253    	IF (RECPNT.LE.GSDLNG) GOTO 1000

0254    	RETURN

        C

        C---->		HERE FOR GLOBAL SYMBOL SPECIFICATION

        C		CHECK FOR REFERENCE, DEFINITION

        C

0255    3000	GSDATY=RECORD(RECPNT+1)

0256    	GSFLG1=RECORD(RECPNT+2)

0257    	GSFLG2=RECORD(RECPNT+3)

0258    	RECPNT=RECPNT + 4

        C

        C---->		CHECK LENGTH OF THIS PART OF RECORD.

        C

0259    	IF (GSDTYP .EQ. ENTPNT) GOTO 3030

0260    	IF (GSDTYP .EQ. ENTPRO) GOTO 3045

0261    	IF ((GSFLG1 .AND. GSDEF) .NE. GSDEF) GOTO 3050

        C

        C---->		COMPUTE LENGTH OF GLOBAL SYMBOL DEFINITION

        C

0262    	ONELNG=11+RECORD(RECPNT+5)

0263    	IF ((ONELNG .GE. MINGSD) .AND. (ONELNG .LE. MAXGSD)) GOTO 3020

0264    		ERRCNT=ERRCNT+1

0265    		WRITE(2,520,ERR=9000)ONELNG,MINGSD,MAXGSD

0266    3020	WRITE(2,310,ERR=9000)

0267    	GOTO 3090

        C

        C---->		COMPUTE ENTRY POINT DEFINITION LENGTH.

        C

0268    3030	ONELNG=13+RECORD(RECPNT+7)

0269    	IF ((ONELNG .GE. MINENT) .AND. (ONELNG .LE. MAXENT)) GOTO 3040

0270    		ERRCNT=ERRCNT+1

0271    		WRITE(2,670,ERR=9000)ONELNG,MINENT,MAXENT

0272    3040	WRITE(2,310,ERR=9000)

0273    	WRITE(2,680,ERR=9000)

0274    	GOTO 3100

        C

        C---->		COMPUTE LENGTH OF ENTRY POINT DEFINITION WITH FORMAL

        C		ARGRMENT DEFINITIONS.

        C

0275    3045	ONELNG = 15 + RECORD(RECPNT+7)

0276    	IF ((ONELNG .GE. MINPRO) .AND. (ONELNG .LE. MAXPRO)) GOTO 3046

0277    		ERRCNT = ERRCNT + 1

0278    		WRITE(2,690,ERR=9000)ONELNG,MINPRO,MAXPRO

0279    3046	WRITE(2,310,ERR=9000)

0280    	WRITE(2,700,ERR=9000)

0281    	GOTO 3100

        C

        C---->		COMPUTE LENGTH OF REFERENCE TO GLOBAL SYMBOL.

        C

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 9   

GSDANL.FTN   	/TR:BLOCKS/WR


0282    3050	ONELNG=6+RECORD(RECPNT)

0283    	IF ((ONELNG .GE. MINGSR) .AND. (ONELNG .LE. MAXGSR)) GOTO 3060

0284    		ERRCNT=ERRCNT+1

0285    		WRITE(2,530,ERR=9000)ONELNG,MINGSR,MAXGSR

0286    3060	WRITE(2,300,ERR=9000)

0287    3090	WRITE(2,320,ERR=9000)

0288    3100	GO TO(3110,3120,3130,3140,3150,3160,3170,3180,3190,3200)GSDATY+1

0289    	GOTO (3205,3210,3215,3220,3225,3230,3235,3240,3245,3250,3255,3257,

        	13258,3259) GSDATY-9

0290    		ERRCNT = ERRCNT + 1

0291    		WRITE(2,330,ERR=9000)

0292    		GO TO 3260

0293    3110		WRITE(2,340,ERR=9000)

0294    		GO TO 3260

0295    3120		WRITE(2,345,ERR=9000)

0296    		GO TO 3260

0297    3130		WRITE(2,350,ERR=9000)

0298    		GO TO 3260

0299    3140		WRITE(2,355,ERR=9000)

0300    		GO TO 3260

0301    3150		WRITE(2,360,ERR=9000)

0302    		GO TO 3260

0303    3160		WRITE(2,365,ERR=9000)

0304    		GO TO 3260

0305    3170		WRITE(2,370,ERR=9000)

0306    		GO TO 3260

0307    3180		WRITE(2,375,ERR=9000)

0308    		GO TO 3260

0309    3190		WRITE(2,380,ERR=9000)

0310    		GO TO 3260

0311    3200		WRITE(2,385,ERR=9000)

0312    		GO TO 3260

0313    3205		WRITE(2,390,ERR=9000)

0314    		GOTO 3260

0315    3210		WRITE(2,395,ERR=9000)

0316    		GOTO 3260

0317    3215		WRITE(2,400,ERR=9000)

0318    		GOTO 3260

0319    3220		WRITE(2,405,ERR=9000)

0320    		GOTO 3260

0321    3225		WRITE(2,410,ERR=9000)

0322    		GOTO 3260

0323    3230		WRITE(2,415,ERR=9000)

0324    		GOTO 3260

0325    3235		WRITE(2,420,ERR=9000)

0326    		GOTO 3260

0327    3240		WRITE(2,422,ERR=9000)

0328    		GOTO 3260

0329    3245		WRITE(2,424,ERR=9000)

0330    		GOTO 3260

0331    3250		WRITE(2,426,ERR=9000)

0332    		GOTO 3260

0333    3255		WRITE(2,428,ERR=9000)

0334    		GOTO 3260

0335    3257		WRITE(2,430,ERR=9000)

0336    		GOTO 3260

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 10  

GSDANL.FTN   	/TR:BLOCKS/WR


0337    3258		WRITE(2,432,ERR=9000)

0338    		GOTO 3260

0339    3259		WRITE(2,434,ERR=9000)

0340    		GOTO 3260

0341    3260	WRITE(2,440,ERR=9000) GSDATY

        C

        C---->	NOW ANALYSE WHAT FLAGS ARE SET

        C

        C

0342    3270	IF((GSFLG1 .OR. GSFLG2) .NE. 0)GO TO 3300

0343    		WRITE(2,460,ERR=9000)

0344    		GO TO 3550

0345    3300	WRITE(2,130,ERR=9000)

0346    3330	K = 0

0347    	FLAGS = GSFLG1

0348    3350	DO 3500 I = 0,7

0349    	IF (ISTATE(FLAGS,I)) GO TO 3400

0350    	GO TO 3500

0351    3400		JK = I+(8*K)

0352    3405		GO TO(3410,3420,3430,3440,3450)JK+1

0353    		ERRCNT = ERRCNT + 1

0354    		WRITE(2,230,ERR=9000) JK

0355    		GO TO 3500

0356    3410		WRITE(2,470,ERR=9000)

0357    		GO TO 3500

0358    3420		WRITE(2,480,ERR=9000)

0359    		GO TO 3500

0360    3430		WRITE(2,490,ERR=9000)

0361    		GO TO 3500

0362    3440		WRITE(2,500,ERR=9000)

0363    		GO TO 3500

0364    3450		WRITE(2,510,ERR=9000)

0365    3500	CONTINUE

0366    	IF (K .NE. 0) GO TO 3550

0367    		K = K + 1

0368    		FLAGS = GSFLG2

0369    		GO TO 3350

        C

        C---->		FLAGS ARE DONE.  IF THIS IS

        C			DEFINITION - ANALYSE VALUE

        C			ELSE SKIP TO SYMBOL NAME

        C

0370    3550	IF((GSFLG1 .AND. GSDEF) .EQ. 0)GO TO 3720

0371    3570	GSDPSX=RECORD(RECPNT)

0372    	RECPNT=RECPNT + 1

0373    	PSECT = GSDPSX .AND. 255

0374    	IF(PSECT .LE. PSREFD)GO TO 3600

0375    	PSREFD = PSECT

0376    3600	WRITE(2,540,ERR=9000) PSECT

0377    3609	DO 3610 I = 1,4

0378    	DUMARA(I) = RECORD(RECPNT+I-1)

0379    3610	CONTINUE

0380    	CALL CVTOHX(VALUE,HEXARA)

0381    	WRITE(2,550,ERR=9000) VALUE,VALUE,HEXARA

0382    3640	RECPNT=RECPNT + 5

0383    	NAMLNG = RECORD(RECPNT-1)

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 11  

GSDANL.FTN   	/TR:BLOCKS/WR


0384    	NAMPNT = RECPNT

0385    	IF (GSDTYP.EQ.GSYM) GOTO 3750

        C

        C---->	VALIDATE ENTRY POINT MASK

        C

0386    	NUMREG=0

0387    	FLAGS=RECORD(RECPNT-1)

0388    	DO 3670 I=0,7

0389    	IF (ISTATE(FLAGS,I)) GOTO 3660

0390    	GOTO 3670

0391    3660	IF (NUMREG.EQ.0) WRITE(2,630,ERR=9000)

0392    	WRITE(2,640,ERR=9000)(REGS(J,I+1),J=1,4)

0393    	NUMREG=1

0394    3670	CONTINUE

0395    	FLAGS=RECORD(RECPNT)

0396    	DO 3690 I=0,7

0397    	IF (ISTATE(FLAGS,I)) GOTO 3680

0398    	GOTO 3690

0399    3680	IF (NUMREG.EQ.0) WRITE(2,630,ERR=9000)

0400    	WRITE(2,640,ERR=9000)(REGS(J,I+9),J=1,4)

0401    	IF (I .EQ. 6)WRITE(2,640,ERR=9000)(REGS(J,17),J=1,4)

0402    	IF (I .EQ. 7)WRITE(2,640,ERR=9000)(REGS(J,18),J=1,4)

0403    	NUMREG=1

0404    3690	CONTINUE

0405    	WRITE(2,650,ERR=9000)

0406    	RECPNT=RECPNT+2

0407    	NAMLNG=RECORD(RECPNT-1)

0408    	NAMPNT=RECPNT

0409    	GOTO 3750

0410    3720	NAMLNG = RECORD(RECPNT)

0411    	RECPNT=RECPNT + 1

0412    	NAMPNT = RECPNT

        C

        C---->		NOW VALIDATE AND WRITE SYMBOL

        C

0413    3750	J = NAMLNG

0414    	K = NAMPNT

0415    3760	CONTINUE

0416    	CALL	FLDCHK(J,K,RECORD,I)

0417    3790	IF(I)3800,3900,3850

        C

        C---->		ILLEGAL SYMBOL LENGTH

        C

0418    3800	WRITE(2,560,ERR=9000) NAMLNG,NAMMAX

0419    3830	NAMLNG = NAMMAX

0420    	DUMPIT = .TRUE.

0421    	ERRCNT = ERRCNT + 1

0422    	GO TO 3750

        C

        C---->		SYMBOL CONTAINS ILLEGAL CHARACTER

        C

0423    3850	WRITE(2,570,ERR=9000) I-RECPNT+1,RECORD(I),RECORD(I) !++05 OCTAL OUTPUT TOO

0424    3890	K = I + 1

0425    	ERRCNT = ERRCNT + 1

0426    	J = NAMLNG - K + NAMPNT			!++05 SET NEW LENGTH

0427    	IF ((GSDTYP .EQ. ENTPNT) .AND.

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 12  

GSDANL.FTN   	/TR:BLOCKS/WR


        	1 (K .LE. (ONELNG-MINENT+RECPNT))) GOTO 3760 !++05 CONTINUE?

0428    	IF ((GSDTYP .EQ. ENTPRO) .AND.

        	1 (K .LE. (ONELNG-MINPRO+RECPNT))) GOTO 3760 !++05 CONTINUE?

0429    	IF ((GSDTYP .EQ. GSYM) .AND. 

        	1 ((GSFLG1 .AND. GSDEF) .EQ. GSDEF) .AND.

        	2 (K .LE. (ONELNG-MINGSD+RECPNT)))  GOTO 3760 !++05 CONTINUE?

0430    	IF ((GSDTYP .EQ. GSYM) .AND. 

        	1 ((GSFLG1 .AND. GSDEF) .NE. GSDEF) .AND.

        	2 (K .LE. (ONELNG-MINGSR+RECPNT)))  GOTO 3760 !++05 CONTINUE?

0431    	DUMPIT = .TRUE.

        C

        C---->		CHECK SYMBOL CHARACTER ONE

        C		NOT NUMERIC OR BLANK THEN PRINT

        C

0432    3900	IF((GSFLG1 .AND. GSDEF) .EQ. 0)GO TO 3950

0433    	IF(RECORD(RECPNT) .EQ. BLANK)GO TO 3910

0434    	IF(RECORD(RECPNT) .LT. ZERO .OR. (RECORD(RECPNT) .GT. NINE))

        	1GOTO 3920

0435    3910	ERRCNT = ERRCNT + 1

0436    	WRITE(2,580,ERR=9000)

0437    3920	WRITE(2,590,ERR=9000) (RECORD(I) , I = RECPNT,RECPNT+NAMLNG-1)

0438    	GO TO 4000

0439    3950	IF(RECORD(RECPNT) .EQ. BLANK)GO TO 3960

0440    	IF(RECORD(RECPNT) .LT. ZERO .OR. (RECORD(RECPNT) .GT. NINE))

        	1GOTO 3970

0441    3960	ERRCNT = ERRCNT + 1

0442    	WRITE(2,580,ERR=9000)

0443    3970	WRITE(2,590,ERR=9000) (RECORD(I), I = RECPNT,RECPNT+NAMLNG-1)

        C

        C---->		SYMBOL PRINTED

        C

0444    4000	RECPNT=RECPNT + NAMLNG

0445    	IF (GSDTYP .NE. ENTPRO) GOTO 5000

        C

        C---->		NOW PRINT OUT THE MIN AND MAX FORMAL ARGUMENT COUNTS

        C

0446    	IF (RECPNT .LE. GSDLNG) GOTO 4010

0447    		ERRCNT = ERRCNT + 1

0448    		WRITE(2,730,ERR=9000)

0449    		GOTO 4040

0450    4010	IF ((RECORD(RECPNT) .GE. MINARG) .AND.

        	1   (RECORD(RECPNT) .LE. MAXARG)) GOTO 4020

0451    		ERRCNT = ERRCNT + 1

0452    		WRITE(2,750,ERR=9000)RECORD(RECPNT),MINARG,MAXARG

0453    		GOTO 4030

0454    4020	WRITE(2,710,ERR=9000)RECORD(RECPNT)

0455    4030	RECPNT = RECPNT + 1

0456    4040	ARGCNT = 0

0457    	IF (RECPNT .LE. GSDLNG) GOTO 4050

0458    		ERRCNT = ERRCNT + 1

0459    		WRITE(2,740,ERR=9000)

0460    		GOTO 4080

0461    4050	IF (RECORD(RECPNT-1) .LE. RECORD(RECPNT)) GOTO 4060

0462    		WRITE(2,870,ERR=9000)

0463    		ERRCNT = ERRCNT + 1

0464    4060	IF ((RECORD(RECPNT) .GE. MINARG) .AND.

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 13  

GSDANL.FTN   	/TR:BLOCKS/WR


        	1   (RECORD(RECPNT) .LE. MAXARG)) GOTO 4070

0465    		ERRCNT = ERRCNT + 1

0466    		WRITE(2,760,ERR=9000)RECORD(RECPNT),MINARG,MAXARG

0467    4070	ARGCNT = RECORD(RECPNT)

0468    	WRITE(2,720,ERR=9000)RECORD(RECPNT)

0469    	RECPNT = RECPNT + 1

        C

        C---->		NOW WRITE OUT THE FORMAL ARGUMENT DESCRIPTORS (IF ANY)

        C

0470    4080	IF (ARGCNT .EQ. 0) GOTO 5000

0471    	DO 4180 I=1,ARGCNT

0472    	WRITE(2,770,ERR=9000)I

0473    	IF (RECPNT .LE. GSDLNG) GOTO 4090

0474    		WRITE(2,830,ERR=9000)I

0475    		ERRCNT = ERRCNT + 1

0476    		GOTO 4180

0477    4090	IF (ISTATE(RECORD(RECPNT),0)) GOTO 4110

0478    	IF (ISTATE(RECORD(RECPNT),1)) GOTO 4100

0479    		WRITE(2,780,ERR=9000)

0480    		GOTO 4130

0481    4100	WRITE(2,800,ERR=9000)

0482    	GOTO 4130

0483    4110	IF (ISTATE(RECORD(RECPNT),1)) GOTO 4120

0484    		WRITE(2,790,ERR=9000)

0485    		GOTO 4130

0486    4120	WRITE(2,810,ERR=9000)

0487    4130	DO 4140 J=2,7

0488    	IF (ISTATE(RECORD(RECPNT),J)) GOTO 4135

0489    	GOTO 4140

0490    4135	ERRCNT = ERRCNT + 1

0491    	WRITE(2,840,ERR=9000)J

0492    4140	CONTINUE

0493    	RECPNT = RECPNT + 1

0494    	IF (RECPNT .LE. GSDLNG) GOTO 4150

0495    		ERRCNT = ERRCNT + 1

0496    		WRITE(2,850,ERR=9000)

0497    		GOTO 4180

0498    4150	WRITE(2,820,ERR=9000)RECORD(RECPNT)

0499    	IF (RECPNT+RECORD(RECPNT) .LE. GSDLNG) GOTO 4160

0500    		ERRCNT = ERRCNT + 1

0501    		LENGTH = GSDLNG - RECPNT

0502    		WRITE(2,860,ERR=9000)RECORD(RECPNT)-LENGTH

0503    		GOTO 4170

0504    4160	LENGTH = RECORD(RECPNT)

0505    4170	IF (LENGTH .EQ. 0) GOTO 4175

0506    	CALL HEXDMP(RECORD,RECPNT+1,LENGTH,PRMODE)

0507    4175	RECPNT = RECPNT + LENGTH + 1

0508    4180	CONTINUE

        C

        C---->		ALL DONE WITH THIS GSD - RETURN

        C

0509    5000	IF (RECPNT.LE.GSDLNG) GOTO 1000

0510    	RETURN

        C

        C---->		HERE FOR OUTPUT FILE WRITE ERROR

        C

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 14  

GSDANL.FTN   	/TR:BLOCKS/WR


0511    9000	WRTERR = 1

0512    	RETURN

        C

        C

0513    	END

FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 15  

GSDANL.FTN   	/TR:BLOCKS/WR


PROGRAM SECTIONS



NUMBER	 NAME	    SIZE		ATTRIBUTES



  1	$CODE1	013516  2983		RW,I,CON,LCL

  2	$PDATA	000146    51		RW,D,CON,LCL

  3	$IDATA	007636  1999		RW,D,CON,LCL

  4	$VARS	000240    80		RW,D,CON,LCL

  5	$TEMPS	000004     2		RW,D,CON,LCL

  6	.$$$$.	001040   272		RW,D,OVR,GBL





ENTRY POINTS



 NAME   TYPE  ADDRESS    NAME   TYPE  ADDRESS    NAME   TYPE  ADDRESS    NAME   TYPE  ADDRESS    NAME   TYPE  ADDRESS   



 GSDANL	      1-000000





VARIABLES



 NAME   TYPE  ADDRESS    NAME   TYPE  ADDRESS    NAME   TYPE  ADDRESS    NAME   TYPE  ADDRESS    NAME   TYPE  ADDRESS   



 ALLOC	I*4   4-000110	 ARGCNT	I*2   4-000130	 BLANK	L*1   4-000151	 COPYRC	I*2   6-001034	 DUMPIT	L*1   6-001005

 ENTPNT	L*1   4-000145	 ENTPRO	I*2   4-000142	 EOM	L*1   4-000162	 EPOINT	I*2   4-000140	 ERRCNT	I*2   6-001020

 FLAGS	L*1   4-000163	 GSDATY	L*1   4-000120	 GSDEF	I*2   4-000132	 GSDLNG	I*2   6-001000	 GSDPSX	L*1   4-000164

 GSDTYP	L*1   4-000165	 GSFLG1	L*1   4-000116	 GSFLG2	L*1   4-000114	 GSYM	L*1   4-000146	 I	I*2   4-000224

 ISTACK	I*2   6-001026	 J	I*2   4-000230	 JK	I*2   4-000226	 K	I*2   4-000222	 LENGTH	I*2   4-000236

 LSTREC	L*1   6-001004	 MAXARG	I*2   4-000210	 MAXENT	I*2   4-000174	 MAXGSD	I*2   4-000170	 MAXGSR	I*2   4-000200

 MAXPDF	I*2   4-000216	 MAXPRO	I*2   4-000204	 MINARG	I*2   4-000206	 MINENT	I*2   4-000172	 MINGSD	I*2   4-000166

 MINGSR	I*2   4-000176	 MINPDF	I*2   4-000214	 MINPRO	I*2   4-000202	 MXRLNG	I*2   6-001014	 NAMLNG	I*2   4-000220

 NAMMAX	I*2   4-000212	 NAMPNT	I*2   4-000232	 NINE	L*1   4-000150	 NUMREG	I*2   4-000234	 ONELNG	I*2   4-000126

 PRMODE	I*2   6-001016	 PROCRC	I*2   6-001030	 PSALGN	L*1   4-000120	 PSCNT	I*2   6-001006	 PSDEF	L*1   4-000144

 PSECT	I*2   4-000134	 PSFLG1	L*1   4-000116	 PSFLG2	L*1   4-000114	 PSNUM	I*2   4-000136	 PSREFD	I*2   6-001010

 PSREL	I*2   4-000122	 PSRTIR	I*2   6-001012	 RECNUM	I*2   6-001002	 RECPNT	I*2   4-000124	 REGDV	R*4   4-000104

 REGIV	R*4   4-000100	 REG0	R*4   4-000000	 REG1	R*4   4-000004	 REG10	R*4   4-000050	 REG11	R*4   4-000054

 REG12	R*4   4-000060	 REG13	R*4   4-000064	 REG14	R*4   4-000070	 REG15	R*4   4-000074	 REG2	R*4   4-000010

 REG3	R*4   4-000014	 REG4	R*4   4-000020	 REG5	R*4   4-000024	 REG6	R*4   4-000030	 REG7	R*4   4-000034

 REG8	R*4   4-000040	 REG9	R*4   4-000044	 SUBCNT	I*2   6-001024	 TIRCNT	I*2   6-001036	 TITLRC	I*2   6-001032

 VALUE	I*4   4-000110	 WRTERR	I*2   6-001022	 ZERO	L*1   4-000147





ARRAYS



 NAME   TYPE  ADDRESS	    SIZE 	DIMENSIONS



 DUMARA	L*1   4-000110	000004     2	(4)

 HEXARA	L*1   4-000152	000010     4	(8)

 RECORD	L*1   6-000000	001000   256	(512)

 REGS	L*1   4-000000	000110    36	(4,18)





LABELS



 LABEL   ADDRESS 	 LABEL   ADDRESS 	 LABEL   ADDRESS 	 LABEL   ADDRESS 	 LABEL   ADDRESS 	



FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 16  

GSDANL.FTN   	/TR:BLOCKS/WR


 10'	 3-000000	 20'	 3-000116	 30'	 3-000214	 40'	 3-000264	 50'	 3-000324

 60'	 3-000340	 70'	 3-000354	 80'	 3-000374	 90'	 3-000414	 110'	 3-000430

 120'	 3-000476	 130'	 3-000532	 140'	 3-000600	 150'	 3-000626	 160'	 3-000654

 170'	 3-000702	 180'	 3-000730	 190'	 3-000756	 200'	 3-001004	 210'	 3-001032

 220'	 3-001056	 230'	 3-001104	 240'	 3-001142	 260'	 3-001220	 270'	 3-001340

 280'	 3-001406	 290'	 3-001540	 300'	 3-001610	 310'	 3-001634	 320'	 3-001662

 330'	 3-001706	 340'	 3-001732	 345'	 3-001750	 350'	 3-001762	 355'	 3-002006

 360'	 3-002032	 365'	 3-002062	 370'	 3-002112	 375'	 3-002136	 380'	 3-002162

 385'	 3-002212	 390'	 3-002242	 395'	 3-002302	 400'	 3-002342	 405'	 3-002360

 410'	 3-002420	 415'	 3-002444	 420'	 3-002504	 422'	 3-002556	 424'	 3-002634

 426'	 3-002710	 428'	 3-002766	 430'	 3-003030	 432'	 3-003064	 434'	 3-003124

 440'	 3-003160	 450'	 3-003204	 460'	 3-003344	 470'	 3-003412	 480'	 3-003434

 490'	 3-003460	 500'	 3-003504	 510'	 3-003530	 520'	 3-003554	 530'	 3-003726

 540'	 3-004100	 550'	 3-004144	 560'	 3-004254	 570'	 3-004400	 580'	 3-004534

 590'	 3-004636	 610'	 3-004676	 620'	 3-004776	 630'	 3-005056	 640'	 3-005110

 650'	 3-005120	 670'	 3-005122	 680'	 3-005264	 690'	 3-005316	 700'	 3-005500

 710'	 3-005560	 720'	 3-005636	 730'	 3-005714	 740'	 3-006054	 750'	 3-006214

 760'	 3-006332	 770'	 3-006450	 780'	 3-006550	 790'	 3-006612	 800'	 3-006652

 810'	 3-006716	 820'	 3-006762	 830'	 3-007050	 840'	 3-007146	 850'	 3-007254

 860'	 3-007362	 870'	 3-007456	 930	    **   	 1000	 1-000140	 1025	    **   

 1030	 1-000300	 1050	 1-000434	 1090	 1-000552	 1100	 1-000620	 1110	 1-000656

 1120	 1-000714	 1130	 1-000752	 1140	 1-001010	 1160	 1-001044	 1170	 1-001110

 1200	 1-001214	 1210	    **   	 1220	 1-001262	 1250	 1-001322	 1260	 1-001370

 1270	 1-001430	 1280	 1-001466	 1290	 1-001524	 1300	 1-001562	 1310	 1-001620

 1320	 1-001656	 1330	 1-001714	 1340	 1-001752	 1350	 1-002010	 1360	    **   

 1400	 1-002060	 1450	 1-002132	 1460	    **   	 1520	 1-002270	 1559	    **   

 1560	 1-002412	 1570	 1-002434	 1600	    **   	 1630	    **   	 1650	 1-002542

 1665	    **   	 1670	 1-002714	 1680	 1-002760	 1700	 1-003020	 1730	    **   

 3000	 1-003172	 3020	 1-003430	 3030	 1-003470	 3040	 1-003616	 3045	 1-003704

 3046	 1-004032	 3050	 1-004116	 3060	 1-004244	 3090	 1-004300	 3100	 1-004334

 3110	 1-004446	 3120	 1-004506	 3130	 1-004546	 3140	 1-004606	 3150	 1-004646

 3160	 1-004706	 3170	 1-004746	 3180	 1-005006	 3190	 1-005046	 3200	 1-005106

 3205	 1-005146	 3210	 1-005206	 3215	 1-005246	 3220	 1-005306	 3225	 1-005346

 3230	 1-005406	 3235	 1-005444	 3240	 1-005502	 3245	 1-005540	 3250	 1-005576

 3255	 1-005634	 3257	 1-005672	 3258	 1-005730	 3259	 1-005766	 3260	 1-006022

 3270	    **   	 3300	 1-006136	 3330	    **   	 3350	 1-006204	 3400	 1-006242

 3405	    **   	 3410	 1-006350	 3420	 1-006406	 3430	 1-006444	 3440	 1-006502

 3450	 1-006540	 3500	 1-006574	 3550	 1-006642	 3570	    **   	 3600	 1-006732

 3609	    **   	 3610	    **   	 3640	    **   	 3660	 1-007240	 3670	 1-007414

 3680	 1-007500	 3690	 1-010056	 3720	 1-010164	 3750	 1-010220	 3760	 1-010242

 3790	    **   	 3800	    **   	 3830	    **   	 3850	 1-010364	 3890	    **   

 3900	 1-010726	 3910	 1-011004	 3920	 1-011044	 3950	 1-011164	 3960	 1-011230

 3970	 1-011270	 4000	 1-011400	 4010	 1-011476	 4020	 1-011616	 4030	 1-011666

 4040	 1-011700	 4050	 1-011756	 4060	 1-012032	 4070	 1-012152	 4080	 1-012242

 4090	 1-012420	 4100	 1-012536	 4110	 1-012574	 4120	 1-012662	 4130	 1-012716

 4135	 1-012772	 4140	 1-013042	 4150	 1-013134	 4160	 1-013302	 4170	 1-013324

 4175	 1-013366	 4180	 1-013412	 5000	 1-013440	 9000	 1-013464





FUNCTIONS AND SUBROUTINES REFERENCED



 CVTOHX	 FLDCHK	 HEXDMP	 ISTATE





TOTAL SPACE ALLOCATED = 025026  5387



FORTRAN IV-PLUS V02-51D		02:23:12    22-AUG-78		PAGE 17  

GSDANL.FTN   	/TR:BLOCKS/WR


NO FPP INSTRUCTIONS GENERATED



OBJ$:GSDANL.OBI,LIS$:GSDANL.LST/-SP=SRC$:GSDANL

