CTITLEJSRAVE - JOBGEN REGION & BLANK COMMMON ALGORITHM FOR RAVE C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR W. R. FIELDER CA DESIGNER W. R. FIELDER CA LANGUAGE VS FORTRAN CA SYSTEM IBM / CRAY CA WRITTEN 04-08-88 C REVISED WRF 4-21-88 SET UNRESERVED COMMON INDEX CORRECTLY C REVISED CAD 11-14-88 MODIFIED TO MMET EDP STANDARDS C REVISED CAD 12-08-88 FIXED UCSIZE CALCUATION BUGS C REVISED JJC 01-15-89 FOR SPARC PRODUCTION. C REVISED RDK 11-13-89 CFT77 COMPATIBILITY ON THE CRAY. CA CA CALL JSRAVE (KPNA, KPRNO, OCCUR, PSIZE, CSIZE, UCSIZE, CA ERCODE) CA CA INPUT KPNA = PROCESS NAME A4 CA INPUT KPRNO = PROCESS NUMBER I4 CA INPUT OCCUR = OCCURRENCE NUMBER FOR PROCESS KPNA WITH I4 CA KPRNO CA OUTPUT PSIZE = REGION SIZE OF PROGRAM IN K-BYTES I4 CA OUTPUT CSIZE = RESERVED BLANK COMMON SIZE IN WORDS I4 CA OUTPUT UCSIZE = UNRESERVED BLANK COMMON SIZE IN WORDS I4 CA OUTPUT ERCODE = ERROR CODE (=16 IF NOT ABLE TO COMPUTE I4 CA THE REQUIRED PARAMETERS) CA CA CA COMPUTES THE PROGRAM SIZE (PSIZE) AND AMOUNT OF BLANK COMMON CA (CSIZE) NEEDED BY SPARC DEVELOPMENT PROCESS RAVE REQUIRING CA SPECIAL CALCULATIONS. C C EJECT C SUBROUTINE JSRAVE (KPNA, KPRNO, OCCUR, PSIZE, CSIZE, UCSIZE, + ERCODE) C IMPLICIT INTEGER (A-Z) C C CHARACTER*4 KPNA CHARACTER*80 CARD C C INTEGER CONSTANTS -- LOCAL C INTEGER IPR INTEGER THL C C C REAL VARIABLES -- LOCAL C REAL CDF REAL CDL REAL SGL REAL SFL REAL TGL REAL PWN REAL OSW REAL PAB REAL HMT C DATA IPR / 98 / DATA THL / 190 / C C C ==================================================== C BEGIN COMPUTATION OF REGION AND COMMON SIZE FOR RAVE C (INSERT REGION SIZE & BLANK COMMON SIZE CALCULATIONS HERE) C =========================================== C C C C PART 1. SET PROGRAM SIZE IN K-BYTES (PSIZE) C C PSIZE = 30 C 00700000 C GET LINE CARD PARAMETERS 00710000 C 00720000 DA = 1 00730000 CALL FORC ('LINE', 0, DA, CARD, * 9200 )00740000 C 00750000 LCTPSP = S1CVBN (CARD, 36, 5) 00760000 LCMXFD = S1CVBN (CARD, 61, 5) 00760000 IF (LCMXFD .EQ. 0) LCMXFD = LCTPSP 00790000 C 00750000 LCRLEN = S1CVBN (CARD, 41, 5) 00760000 LCSI = S1CVBN (CARD, 46, 5) 00770000 LCPI = S1CVBN (CARD, 51, 5) 00780000 IF (LCPI .EQ. 0) LCPI = LCSI 00790000 C 00800010 C IF (LCPI .EQ. 0) GO TO 9800 00810000 C ABOVE LINE IS COMMENTED BUT INTENTIONALY LEFT FOR CLARITY. 00820000 C THE LCPI NON ZERO CHECK SHOULD BE DONE IN JSCORE OR JSRND AND 00830010 C THEREFORE IS REDUNDANT HERE. 00840010 C 00850010 C NOSAMP = LCRLEN / LCPI C C PART 2. COMPUTE RESERVED BLANK COMMON SIZE IN WORDS (ICC) C C THIS VALUE, FOR MOST CASES, IS IDENTICAL TO THE COMPUTATION OF C RESERVED BLANK COMMON IN THE INITIALIZATION PART OF THE PROCESS C (THE '0 ENTRY' FOR SPARC 'SHELLS'). THIS VALUE IS TYPICALLY C CALLED 'ICC' AND IS THE TOTAL NUMBER OF WORDS USED IN RESERVED C BLANK COMMON ( 'RA' FOR SPARC 'SHELLS'). C C ICC = 0 C C READ INPUT CARD C LA = 1 CALL FORC(KPNA,KPRNO, LA, CARD, *9110) C READ(CARD,9100) CDF,CDL,SGL,SFL,TGL,PWN,OSW,PAB 9100 FORMAT(10X,14F5.0) C IF( SFL.LE.0. ) SFL = 7. IF( PWN.LE.0. ) PWN = 1. C C SET SOME VALUES BASED ON THE INPUT PARAMETERS C NT = INT(TGL/FLOAT(LCPI)) ITW = NT/2 NT = 2*ITW NTW = 2 + (NOSAMP-NT)/ITW NTT = NT + (NTW-1)*ITW C IF( NT.GT.3*NOSAMP/4 ) THEN NTW = 1 NT = NOSAMP ITW = 0 NTT = NT ENDIF C C FREQUENCY DOMAIN SPECIFICATIONS C NTS = (5*NT)/4 M = 3 N = 8 250 M = M + 1 N = 2*N IF( N.LT.NTS ) GO TO 250 NF = 1 + N/2 C C======================================================================= C C POST- OR PRE-STACK C IF( SGL.GT.0. ) THEN MODE = 0 NTRC = CDL - CDF + 1 GO TO 300 ENDIF C C PRE-STACK MODE C IF( S1CPCH( CARD,7,'F',1,1 ) .EQ.0 ) MODE = 1 IF( S1CPCH( CARD,7,'S',1,1 ) .EQ.0 ) MODE = 2 IF( S1CPCH( CARD,7,'D',1,1 ) .EQ.0 ) MODE = 3 C C USE LINE CARD VALUES TO OBTAIN NUMBER OF TRACES/SPN(CDP) C IF( MODE .NE. 3 ) HMT = FLOAT(LCTPSP) IF( MODE .EQ. 3 ) HMT = FLOAT(LCMXFD) IF( HMT .EQ. 0.) HMT = FLOAT(LCTPSP) C C NTRC = HMT SGL = ABS(SGL) IF( SGL.EQ.0. ) SGL = HMT C C======================================================================= C 300 LX = SFL LX = 2*(LX/2) + 1 LXH = LX/2 LX2 = 2*LXH C NX = SGL LXO = NX/2 LO2 = LXO + LX2 NX = 2*LXO C C======================================================================= C C ALLOCATE RA AREA FOR STORING HEADERS AND WEIGHTS C IXH = 1 IXW1 = IXH + NTRC*THL IXW2 = IXW1 + LXO ITW1 = IXW2 + LXO ITW2 = ITW1 + ITW IXD = ITW2 + ITW ICC = IXD + NTT C C ALLOCATE RA AREA THAT IS USED IN SDRAVE C ICC = ICC + 513 ICC = ICC + THL + NOSAMP ICC = ICC + NOSAMP + 1 ICC = ICC + 4 ICC = ICC + NOSAMP + 1 ICC = ICC + NOSAMP + 1 ICC = ICC + 96 ICC = ICC + 48 C C SET RESERVED COMMON SIZE IN WORDS C CSIZE = ICC C C********************************************************************** C PART 3. COMPUTE UNRESERVED BLANK COMMON SIZE IN WORDS (UCSIZE) C UCSIZE = 0 C C ALLOCATE SCRATCH AREAS FOR COMPUTATION C C SINCE SCRATCH MEMORY REQUIREMENTS CHANGE FROM GATHER TO GATHER C BASED ON NUMBER OF TRACES AND OTHER PROCESSING OPTIONS SUCH AS C SPATIAL GATE LENGTH .. AN ITERATIVE SOLUTION IS ATTEMPTED HERE. C LMAXSA = 0 DO 400 KTRC=1,NTRC C C ALLOCATE SA AREAS FOR COMPUTATION C NXW = KTRC/LXO - 1 NEX = KTRC - (NXW+1)*LXO NXS = NX + NEX/2 NXE = NX + NEX - NEX/2 ISGL = SGL MXT = MAX0(NXS,NXE) IF (NXW.LE.1) THEN MXT = KTRC NXW = 1 END IF C MXL = MXT + LX2 NP2 = N + 2 C ISR = 1 ISC = ISR + 2*LX ISH = ISC + 2*LX ISA = ISH + 2*LX ISB = ISA + 2*LX + 2*MXL ISF = ISB + 2*LX + 2*MXL IXI = ISF + 2*LX IXF = IXI + NTT*MXL IXL = IXF + NTT*MXT IXM = IXL + NTT*LXO IHS = IXM + NP2*MXL IHN = IHS + 2*MXL ISN = IHS IF( OSW.EQ.1. ) ISN = IHN MAXSA = IHN + 2*KTRC MAXSA = MAX0(MAXSA,LMAXSA) LMAXSA = MAXSA 400 CONTINUE C C ADD 10 PERCENT SLOP TO ALLOW FOR ANY ADDITIONAL SPACE C UCSIZE = FLOAT(MAXSA) * 1.10 C ERCODE = 0 C C CJJ WRITE(IPR,9000) PSIZE,CSIZE,UCSIZE C9000 FORMAT(/5X,'JSRAVE VERSION COMPLETED: PSIZE = ',I5, CJJ +' CSIZE = ',I10,' UCSIZE = ',I10) GO TO 9500 C 9110 ERCODE = 16 WRITE(IPR,9900) KPNA,KPRNO GO TO 9500 C 9200 ERCODE = 16 WRITE(IPR,9210) KPNA,KPRNO 9210 FORMAT (/' *** ERROR IN JSRAVE LINE CARD ERROR ',A4,I1) GO TO 9500 C 9500 RETURN C C ERROR MESSAGES C 9900 FORMAT (/' *** FROM JSRAVE ERROR IN CORE CALCULATION') C 9910 FORMAT (/' *** ERROR IN JSRAVE NO CARDS FOUND FOR ',A4,I1) C C END