|
|
1.1 root 1: SUBROUTINE CHK3(IDUM, IACT, IDUM8, IACT8, IE, R, NO)
2: C
3: C CHECKS PROC ARGUMENTS FOR PROPER USAGE AND TYPE
4: C IDUM LAT INDEX DUMY PROC ARG
5: C IACT LAT INDEX ACTUAL PROC
6: C IDUM8 USAGE DUMMY FROM DSA ATTRIBUTES
7: C IACT8 USAGE ACTUAL FROM LAT ENTRY
8: C IE CALLED RTNE
9: C R STMT NO OF CALL
10: C NO CONTAINS THE NUMBER OF PARAMETER BEING CHECKED BY THIS CALL
11: C
12: INTEGER PLAT, R(1), SYMLEN, NO(1)
13: COMMON /PARAMS/ I1, I2, I3, SYMLEN, I4, I5, I6
14: COMMON /GRAPH/ LLAT, PLAT, LAT(6000)
15: C SEPARATE OUT EXTERNAL ENTITIES
16: IF (IDUM8.NE.13) GO TO 20
17: L = IGATT2(IDUM,1)/8
18: IF (L.NE.1) GO TO 50
19: C FURTHER CHECK THAT EPLICITLY TYPED EXTERNAL ENTITIES
20: C MATCH FCNS
21: IF (IACT8.NE.1 .AND. IACT8.NE.6) GO TO 30
22: C CHECK FCN HAS SAME TYPE ACROSS REF BNDRY
23: 10 L = IACT + SYMLEN + 6
24: IF (MOD(IGATT2(IDUM,1),8).EQ.LAT(L)/8) GO TO 50
25: CALL ERROR2(40H INCONSISTENT FCN TYPES IN REFERENCE TO , 40,
26: * LAT(IE), 1, 1, 0)
27: CALL ERROR2(1H1, 0, R(1), -1, 0, 1)
28: GO TO 50
29: C CHECK SUBROUTINES
30: 20 IF (IDUM8.EQ.6 .AND. IACT8.EQ.0) GO TO 50
31: C CHECK OUT FCNS
32: IF (IDUM8.EQ.5 .AND. IACT8.EQ.1) GO TO 10
33: C SEPARATE OUT BASIC EXTERNALS BECAUSE THEY ARE CONSIDERED
34: C TYPED BY THE FORTRAN.
35: IF (IDUM8.EQ.5 .AND. IACT8.EQ.6) GO TO 40
36: 30 CALL ERROR2(
37: * 50H INCOMPATIBLE PROCEDURE PARAMETER ASSOCIATED WITH ,50,
38: * NO, -2, 1, 0)
39: CALL ERROR2(17H IN REFERENCE TO ,17, LAT(IE), 1, 0, 0)
40: CALL ERROR2(1H1, 0, R(1), -1, 0, 1)
41: GO TO 50
42: C CHECK BASIC EXTER HAS NOT BEEN EXPLICITLY TYPED
43: C OR ELSE IT HAS TO AGREE WITH THE ACTUAL TYPE
44: 40 L = IACT + SYMLEN + 6
45: IF (LAT(L)/8.EQ.1) GO TO 10
46: 50 RETURN
47: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.