|
|
1.1 ! root 1: SUBROUTINE QQUTAB ! 2: C ! 3: CD0 ! 4: CD0 IDENTIFICATION ! 5: CD0 ! 6: CD0 SUBROUTINE QQUTAB ! 7: CD0 ! 8: CD0 Programmer - D. Braley : NASA/JSC : Jan 1975 ! 9: CD0 Modified By - A. Shih : CSC : March 1983 ! 10: CD0 Documented By W. Collier, CSC, Feb. 1983 ! 11: CD1 ! 12: CD1 PURPOSE ! 13: CD1 ! 14: CD1 This routine builds the units conversion table (UNTAB) ! 15: CD5 ! 16: CD5 INTERNAL VARIABLES ! 17: CD5 ! 18: CD5 NAME DIMENSION T LEN DEFINITION ! 19: CD5 ! 20: CD5 HEADER 5 I DBF omnibus element preamble. ! 21: CD5 I I do loop index in loop to move units data ! 22: CD5 from the ISYM array to UNTAB. ! 23: CD5 ISTART I starting location in the DBF omnibus ! 24: CD5 element for the units data. ! 25: CD5 ISTAT I error status code of DREAD. ! 26: CD5 ISYM 2,NSYM I 2 by NSYM array containing NSYM number of ! 27: CD5 records with, word 1 of each record = ! 28: CD5 Symbol, word 2 of each record = SCALE ! 29: CD5 factor. ! 30: CD5 ITOT I maximum size of the units table. ! 31: CD5 LN I length of units data in the DBF omnibus ! 32: CD5 element. ! 33: CD5 NEXT I pointer to NEXT open entry in UNTAB. ! 34: CD5 NN I number of symbols in the units table. ! 35: CD5 NSCALE I index of SCALE array location of the ! 36: CD5 conversion factor for a units table ! 37: CD5 symbol. ! 38: CD5 NSYM I T.B.S. ! 39: CD5 SYM 2,1 R real equivalent of the ISYM array for ! 40: CD5 extracting the SCALE factors. ! 41: CD5 VALUE R temporary variable to hold the conversion ! 42: CD5 factors after read from the SYM array. ! 43: CD7 ! 44: CD7 FUNCTIONAL DESCRIPTION ! 45: CD7 ! 46: CD7 1. Open the omnibus direct access I/O routines for reading ! 47: CD7 UNTAB. ! 48: CD7 2. Use the direct access read (DREAD) to read the units ! 49: CD7 information into the ISYM array. ! 50: CD7 3. Step through the ISYM array and move ISYM(1,*) into the ! 51: CD7 symbol location of UNTAB, and the conversion factor into ! 52: CD7 the SCALE array, store the SCALE location of the ! 53: CD7 conversion factor in UNTAB. ! 54: CD7 4. Complete the preamble of UNTAB. ! 55: CD8 ! 56: CD8 ASSUMPTIONS AND LIMITATIONS ! 57: CD8 ! 58: CD8 None ! 59: CD9 ! 60: CD9 SPECIAL COMMENTS ! 61: CD9 ! 62: CD9 none ! 63: CD10 ! 64: CD10 REFERENCES ! 65: CD10 ! 66: CD10 none ! 67: C ! 68: C***BEGIN STANDARD COMMON FOR SUBROUTINE QQUTAB ! 69: INTEGER QQ3 ! 70: CHARACTER * 6 UNTAB ! 71: DIMENSION SCALE (31) ! 72: COMMON /IPKT/ IPKT (44) ! 73: COMMON /UNTAB/ UNTAB (1) ! 74: COMMON /QQ3/ QQ3 (114) ! 75: EQUIVALENCE (IERROR , QQ3 ( 7) ) ! 76: 1 , (SCALE , QQ3 ( 114) ) ! 77: C***END STANDARD COMMON FOR SUBROUTINE QQUTAB ! 78: C ! 79: PARAMETER (NSYM = 100) ! 80: INTEGER HEADER ! 81: CHARACTER * 6 SYM ! 82: CHARACTER * 6 ISTORE ! 83: CHARACTER * 6 ISYM ! 84: DIMENSION ISYM (2,NSYM) ! 85: DIMENSION SYM (2,1) ! 86: DIMENSION HEADER (5) ! 87: EQUIVALENCE (SYM , ISYM ) ! 88: EQUIVALENCE (VALUE , IVALUE ) ! 89: C ! 90: C Open the UNTAB record ! 91: C ! 92: CALL QQTOPN (UNTAB,*300) ! 93: C ! 94: C Read UNTAB into ISYM ! 95: C ! 96: CALL DREAD (IPKT,HEADER,1,5,ISTAT,*400,*300) ! 97: ISTART = HEADER (4) ! 98: LN = HEADER (5) - HEADER (4) ! 99: ITOT= NSYM*2 ! 100: IF(LN .GT. ITOT) GO TO 500 ! 101: CALL DCREAD (IPKT,ISYM,ISTART,LN,ISTAT,*400,*300) ! 102: C ! 103: C Enter the symbols into the UNTAB array ! 104: C ! 105: NEXT = ILOAD (UNTAB(4)) ! 106: NSCALE = 0 ! 107: NSCALE = 0 ! 108: NN = LN/2 ! 109: DO 100 I=1,NN ! 110: UNTAB(NEXT) = ISYM(1,I) ! 111: IVALUE = ILOAD (SYM(2,I)) ! 112: NSCALE = NSCALE + 1 ! 113: SCALE (NSCALE) = VALUE ! 114: UNTAB(NEXT+1) = ISTORE(NSCALE) ! 115: 100 NEXT = NEXT + 2 ! 116: UNTAB(5) = ISTORE(NEXT) ! 117: IENTRY = (NEXT - ILOAD(UNTAB(4))) / 2 ! 118: UNTAB (6) = ISTORE (IENTRY) ! 119: UNTAB (10) = ISTORE(NSCALE) ! 120: CALL DARCLS (IPKT,ISTAT,*300) ! 121: RETURN ! 122: C ! 123: C Error return from SSM routine ! 124: C ! 125: 300 CONTINUE ! 126: WRITE(6,1300) ! 127: IERROR = 1 ! 128: RETURN ! 129: C ! 130: C Eof encountered in read ! 131: C ! 132: 400 CONTINUE ! 133: WRITE(6,1400) ! 134: IERROR = 1 ! 135: RETURN ! 136: C ! 137: C Not enough space to load UNTAB ! 138: C ! 139: 500 CONTINUE ! 140: WRITE (6,1500) ! 141: IERROR = 1 ! 142: RETURN ! 143: C ! 144: 1300 FORMAT(1H0,'*** ERROR *** - ERROR ENCOUNTERED IN READING' ! 145: 1,' UNTAB TABLE INTO QQINPT',/) ! 146: 1400 FORMAT(1H0,'*** ERROR *** - EOF ENCOUNTERED DURING UNTAB READ'/) ! 147: 1500 FORMAT(1H0,'*** ERROR *** - NOT ENOUGH SPACE EXITS TO LOAD' ! 148: 1,' UNTAB INTO QQINPT',/) ! 149: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.