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

EOMANL.FTN   	/TR:BLOCKS/WR


        C

        C

        C	EOMANL  --  END OF MODULE 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	THIS SUBROUTINE ANALYSES THE VALIDITY AND CONTENT OF

        C	END OF MODULE RECORDS.

        C

        C

        C

        C  MODIFICATIONS:

        C

        C  NO		DATE		PROGRAMMER		PURPOSE

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

        C

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

0001    		SUBROUTINE	EOMANL

        C

        C

0002    	LOGICAL*1	DUMPIT

        C

0003    	INTEGER*4	ADDRES

0004    	INTEGER		EOMLNG,RECNUM,PSECT,PSCNT,PSRGSD,PSRTIR,PRMODE

0005    	INTEGER		ERRCNT,WRTERR,SUBCNT

0006    	INTEGER		PROCRC,TITLRC,COPYRC,TIRCNT

        C

0007    	BYTE	RECORD(512),SEVRTY,PSECIX,EOM,LSTREC

0008    	BYTE	MINEOM,MAXEOM,TFRADR(4),DUMMY(4),HEXARA(8)

        C

0009    	COMMON	RECORD,EOMLNG,RECNUM,LSTREC,DUMPIT,PSCNT,PSRGSD,PSRTIR

0010    	COMMON	MXRLNG,PRMODE,ERRCNT,WRTERR,SUBCNT,ISTACK

0011    	COMMON	PROCRC,TITLRC,COPYRC,TIRCNT

        C

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

EOMANL.FTN   	/TR:BLOCKS/WR


0012    	EQUIVALENCE (SEVRTY,RECORD(2)),(PSECIX,RECORD(3))

0013    	EQUIVALENCE (TFRADR(1),RECORD(4)),(DUMMY(1),ADDRES)

        C

0014    	DATA	EOM,MINEOM,MAXEOM/3,2,7/,MAXADR/28/

        C

0015    10	FORMAT(/' >>>>>>>>>> RECORD ',I4,' IS END OF MODULE '

        	1,I4,' BYTES LONG <<<<<<<<<<<<<<<')

0016    20	FORMAT(T5,'*****INVALID SEQUENCE - SHOULD NOT FOLLOW EOM'

        	1/,T15'OR BEGIN A MODULE')

0017    30	FORMAT(T5,'*****ILLEGAL SEVERITY CODE ',I4)

0018    40	FORMAT(T10,'NO COMPILER ERRORS ')

0019    50	FORMAT(T10,'COMPILER WARNINGS ')

0020    60	FORMAT(T10,'SEVERE COMPILER ERRORS ')

0021    70	FORMAT(T10,'LINKER ABORT SPECIFIED ')

0022    80	FORMAT(T5,'*****ILLEGAL RECORD LENGTH ',I5,

        	1' - NOT BETWEEN',I2,' AND',I2)

0023    90	FORMAT(T5,'*****P-SECTION NUMBER EXCEEDS COUNT OF',

        	1' THOSE DEFINED IN MODULE(',I4,')')

0024    100	FORMAT(T10,'TRANSFER ADDRESS IS IN PSECT',I4)

0025    110	FORMAT(T5,'*****ILLEGAL TRANSFER ADDRESS (NOT',

        	1' BETWEEN 0 AND 2**28 ')

0026    120	FORMAT(T10,'TRANSFER ADDRESS = ',I10,' (DEC)',O12,' (OCTAL)',/

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

0027    130	FORMAT(T10,'NO PROGRAM TRANSFER ADDRESS ')

        C

        C---->		ANNOUNCE END OF MODULE AND CHECK

        C			IT DOES NOT FOLLOW EOM

        C

        C

0028    400	WRITE(2,10,ERR=1000) RECNUM,EOMLNG

0029    	IF(LSTREC .NE. EOM) GO TO 440

0030    	ERRCNT = ERRCNT + 1

0031    	WRITE(2,20,ERR=1000)

        C

        C---->		NOW ANALYSE THE SPECIFIED

        C			ERROR SEVERITY.

        C

0032    440	GO TO(450,460,470,480) SEVRTY+1

        C

0033    	ERRCNT = ERRCNT + 1

0034    	WRITE(2,30,ERR=1000) SEVRTY

0035    	GO TO 600

        C

0036    450		WRITE(2,40,ERR=1000)

0037    		GO TO 600

        C

0038    460		WRITE(2,50,ERR=1000)

0039    		GO TO 600

        C

0040    470		WRITE(2,60,ERR=1000)

0041    		GO TO 600

        C

0042    480		WRITE(2,70,ERR=1000)

        C

        C

        C---->		SPECIFIED ERROR SEVERITY DETERMINED

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

EOMANL.FTN   	/TR:BLOCKS/WR


        C			VALIDATE LENGTH AND IF 7

        C			BYTES ANALYSE TRANSFER

        C			ADDRESS FIELD

        C

0043    600	IF(EOMLNG .EQ. MINEOM)GO TO 880

0044    	IF(EOMLNG .EQ. MAXEOM)GO TO 650

0045    	WRITE(2,80,ERR=1000) EOMLNG,MINEOM,MAXEOM

0046    	ERRCNT = ERRCNT + 1

0047    	DUMPIT = .TRUE.

0048    	IF(EOMLNG .LT. MAXEOM)GO TO 880

        C

        C---->		ANALYSE A TRANSFER ADDRESS

        C

        C

0049    650	PSECT = PSECIX .AND. 255

0050    	IF(PSECT .LE. PSCNT)GO TO 670

0051    	ERRCNT = ERRCNT + 1

0052    	WRITE(2,90,ERR=1000) PSCNT

        C

0053    670	WRITE(2,100,ERR=1000) PSECT

        C

0054    	DO 700 I = 1,4

        C

0055    		DUMMY(I) = TFRADR(I)

        C

0056    700	CONTINUE

        C

0057    	IF(ADDRES .GE. 0 .AND. (ADDRES .LT. 2**28))GO TO 800

0058    	ERRCNT = ERRCNT + 1

0059    	DUMPIT = .TRUE.

        C

0060    750	WRITE(2,110,ERR=1000)

        C

0061    800	CALL CVTOHX(ADDRES,HEXARA)

        C

0062    	WRITE(2,120,ERR=1000) ADDRES,ADDRES,HEXARA

0063    	GO TO 900

        C

        C---->		NO TRANSFER ADDRESS

        C

0064    880	WRITE(2,130,ERR=1000)

0065    900	RETURN

        C

        C---->		WRITE ERROR TO OUTPUT FILE

        C

0066    1000	WRTERR = 1

0067    	RETURN

        C

0068    	END

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

EOMANL.FTN   	/TR:BLOCKS/WR


PROGRAM SECTIONS



NUMBER	 NAME	    SIZE		ATTRIBUTES



  1	$CODE1	001172   317		RW,I,CON,LCL

  2	$PDATA	000012     5		RW,D,CON,LCL

  3	$IDATA	001172   317		RW,D,CON,LCL

  4	$VARS	000026    11		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   



 EOMANL	      1-000000





VARIABLES



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



 ADDRES	I*4   4-000000	 COPYRC	I*2   6-001034	 DUMPIT	L*1   6-001005	 EOM	L*1   4-000006	 EOMLNG	I*2   6-001000

 ERRCNT	I*2   6-001020	 I	I*2   4-000024	 ISTACK	I*2   6-001026	 LSTREC	L*1   6-001004	 MAXADR	I*2   4-000022

 MAXEOM	L*1   4-000010	 MINEOM	L*1   4-000007	 MXRLNG	I*2   6-001014	 PRMODE	I*2   6-001016	 PROCRC	I*2   6-001030

 PSCNT	I*2   6-001006	 PSECIX	L*1   6-000002	 PSECT	I*2   4-000004	 PSRGSD	I*2   6-001010	 PSRTIR	I*2   6-001012

 RECNUM	I*2   6-001002	 SEVRTY	L*1   6-000001	 SUBCNT	I*2   6-001024	 TIRCNT	I*2   6-001036	 TITLRC	I*2   6-001032

 WRTERR	I*2   6-001022





ARRAYS



 NAME   TYPE  ADDRESS	    SIZE 	DIMENSIONS



 DUMMY	L*1   4-000000	000004     2	(4)

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

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

 TFRADR	L*1   6-000003	000004     2	(4)





LABELS



 LABEL   ADDRESS 	 LABEL   ADDRESS 	 LABEL   ADDRESS 	 LABEL   ADDRESS 	 LABEL   ADDRESS 	



 10'	 3-000000	 20'	 3-000114	 30'	 3-000224	 40'	 3-000266	 50'	 3-000316

 60'	 3-000346	 70'	 3-000402	 80'	 3-000436	 90'	 3-000532	 100'	 3-000644

 110'	 3-000710	 120'	 3-001006	 130'	 3-001112	 400	    **   	 440	 1-000132

 450	 1-000226	 460	 1-000264	 470	 1-000322	 480	 1-000360	 600	 1-000414

 650	 1-000550	 670	 1-000642	 700	    **   	 750	    **   	 800	 1-001020

 880	 1-001116	 900	 1-001152	 1000	 1-001154





FUNCTIONS AND SUBROUTINES REFERENCED



 CVTOHX



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

EOMANL.FTN   	/TR:BLOCKS/WR




TOTAL SPACE ALLOCATED = 003464   922



NO FPP INSTRUCTIONS GENERATED



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

