CTITLEJSRAMR - JOBGEN REGION & BLANK COMMMON ALGORITHM FOR RAMR 00010001 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR M. COADY 00020001 CA DESIGNER M. COADY 00030001 CA LANGUAGE VS FORTRAN 00040001 CA SYSTEM IBM AND CRAY 00050001 CA WRITTEN 07-11-86 00060001 C REVISED 06-15-87 BY M.COADY FOR RAMR IMPLEMENTATION 00070001 C REVISED MM-DD-YY BY 00080001 C REVISED 03-06-89 JJC FOR SPARC PRODUCTION. 00090001 C REVISED 06-05-89 JJC GET THE MAXTR FOR THE CORE. 00100001 C REVISED 04-20-90 ESN FOR CRAY CONVERSION. 00110001 C REVISED 07-23-91 ESN READ OPR CARD TO CALCULATE MEMORY. 00120008 CA 00130001 CA 00140001 CA CALL JSRAMR (KPNA, KPRNO, OCCUR, PSIZE, CSIZE, UCSIZE, 00150001 CA ERCODE) 00160001 CA 00170001 CA INPUT KPNA = PROCESS NAME A4 00180001 CA INPUT KPRNO = PROCESS NUMBER I4 00190001 CA INPUT OCCUR = OCCURRENCE NUMBER FOR PROCESS KPNA WITH I4 00200001 CA KPRNO 00210001 CA OUTPUT PSIZE = REGION SIZE OF PROGRAM IN K-BYTES I4 00220001 CA OUTPUT CSIZE = RESERVED BLANK COMMON SIZE IN WORDS I4 00230001 CA OUTPUT UCSIZE = UNRESERVED BLANK COMMON SIZE IN WORDS I4 00240001 CA OUTPUT ERCODE = ERROR CODE (=16 IF NOT ABLE TO COMPUTE I4 00250001 CA THE REQUIRED PARAMETERS) 00260001 CA 00270001 CA 00280001 CA COMPUTES THE PROGRAM SIZE (PSIZE) AND AMOUNT OF BLANK COMMON 00290001 CA (CSIZE) NEEDED BY SPARC PROCESS RAMR REQUIRING SPECIAL 00300001 CA CALCULATIONS. 00310001 C 00320001 C 00330001 C 00340001 C EJECT 00350001 C 00360001 SUBROUTINE JSRAMR (KPNA, KPRNO, OCCUR, PSIZE, CSIZE, UCSIZE, 00370001 + ERCODE) 00380001 C 00390001 IMPLICIT INTEGER (A-Z) 00400001 C 00410001 C 00420001 C 00430001 CHARACTER*5 BLANK 00440005 CHARACTER*3 CTYP, CTYPX 00450005 CHARACTER*4 KPNA 00460001 CHARACTER*4 OTYP 00470001 CHARACTER*80 CARD 00480001 CHARACTER*1 MODE 00490001 C 00500001 C REAL VARIABLES -- LOCAL 00510001 C 00520001 REAL DP, DX 00530001 REAL FMAX, SF 00540001 REAL FSR 00550001 REAL HDIST 00560001 REAL PCON 00570001 REAL P0, P1, PN, PNOIS 00580001 REAL PMAX 00590001 REAL RDIST 00600001 REAL T1, TN, TL, TH 00610001 REAL PQ1, PQN, PQ0 00620003 REAL X1, XN 00630001 C 00640001 C INTEGER CONSTANTS -- LOCAL 00650001 C 00660001 INTEGER FCF 00670001 INTEGER IPR 00680001 INTEGER THL 00690001 INTEGER LTAP(4) 00700001 C 00710001 DATA BLANK /' '/ 00720005 DATA FCF / 1 / 00730005 DATA IPR / 98 / 00740001 DATA THL / 190 / 00750001 C 00760001 C 00770001 C 00780001 C ==================================================== 00790001 C BEGIN COMPUTATION OF REGION AND COMMON SIZE FOR RAMR 00800001 C (INSERT REGION SIZE & BLANK COMMON SIZE CALCULATIONS HERE) 00810001 C =========================================== 00820001 C 00830001 C====================================================================== 00840001 C 00850001 C PART 1. SET PROGRAM SIZE IN K-BYTES (PSIZE) 00860001 C 00870001 PSIZE = 35 00880001 C 00890001 C====================================================================== 00900001 C 00910001 C 00920001 C 00930001 C PART 2. COMPUTE RESERVED BLANK COMMON SIZE IN WORDS (ICC) 00940001 C 00950001 C 00960001 ICC = 0 00970001 C 00980001 C GET LINE CARD PARAMETERS 00990001 C 01000001 DA = 1 01010001 CALL FORC ('LINE', 0, DA, CARD, * 8040 )01020001 C 01030001 LCTPSP = S1CVBN (CARD, 36, 5) 01040001 LCRLEN = S1CVBN (CARD, 41, 5) 01050001 LCSI = S1CVBN (CARD, 46, 5) 01060001 LCPI = S1CVBN (CARD, 51, 5) 01070001 LCMXFD = S1CVBN (CARD, 61, 5) 01080001 IF (LCPI .EQ. 0) LCPI = LCSI 01090001 NOSAMP = LCRLEN/LCPI 01100001 C 01110001 C IF (LCPI .EQ. 0) GO TO 9800 01120001 C ABOVE LINE IS COMMENTED BUT INTENTIONALY LEFT FOR CLARITY. 01130001 C THE LCPI NON ZERO CHECK SHOULD BE DONE IN JSCORE OR JSRND AND 01140001 C THEREFORE IS REDUNDANT HERE. 01150001 C 01160001 NS = LCRLEN/LCPI 01170001 FSR = FLOAT (LCPI) 01180001 C 01190001 C READ FIRST CARD 01200001 C 01210001 LA = 1 01220001 IERR = 1 01230001 CTYPX = ' ' 01240005 100 CALL FORC(KPNA,KPRNO,LA,CARD, * 9010) 01250001 IF( CARD(8:10) .NE. ' ' ) GO TO 100 01260001 C 01270001 READ (CARD,9030) MODE,IDBUG,IS1,ISN,OTYP,FMAX,MFLD,PNOIS,IL,DP 01280001 C WRITE(IPR,9030) MODE,IDBUG,IS1,ISN,OTYP,FMAX,MFLD,PNOIS,IL,DP 01290001 9030 FORMAT(6X,A1,2X,I1,2I5,1X,A4,F5.0,I5,F5.0,I5,F5.0) 01300001 C 01310001 IF (MFLD.EQ.0) MFLD = 11 01320001 C 01330001 C GET THE MAX TRACES 01340001 C 01350001 MAXTR = LCMXFD 01360001 IF (MODE .EQ. 'S') MAXTR = LCTPSP 01370001 IF (MODE .EQ. 'T') MAXTR = IABS(ISN-IS1) + 1 01380001 C 01390001 C COMPUTE TRANSFORM PARAMETERS 01400001 C 01410001 CALL S1FMAG(NS,MAG,N2) 01420001 MAG = MAG+IL 01430001 N2 = 2**MAG 01440001 SF = 1000./(FSR*FLOAT(N2)) 01450001 IF (FMAX .EQ. 0.) FMAX = SF*FLOAT(N2/2) 01460001 NF = 1 + NINT(FMAX/SF) 01470001 IF (DP .LE. 0) DP = 500./FMAX 01480001 C 01490001 C READ MOVEOUT RANGE AND COMPUTE NUMBER OF P VALUES 01500001 C 01510001 CTYPX = 'DST' 01520005 110 CALL FORC(KPNA,KPRNO,LA,CARD, * 9010) 01530001 IF (CARD(8:10).NE.'DST' ) GO TO 110 01540001 READ (CARD,'(10X,3F5.0,6I5)')X1,XN,DX,NTN,NTF,LTAP 01550001 C WRITE(IPR,'(10X,3F6.0,6I5)')X1,XN,DX,NTN,NTF,LTAP 01560001 C 01570001 IF ( XN*DX .EQ. 0.0) GO TO 9020 01580001 RDIST = XN 01590003 HDIST = .4142136*RDIST 01600003 PMAX = 1.E3*HDIST/(FMAX*DX) 01610003 C 01620003 C READ OPR CARD 01630003 C 01640003 NP = 0 01650003 210 CALL FORC(KPNA,KPRNO,LA,CARD, * 290) 01660003 IF (CARD(8:10).NE.'OPR' ) GO TO 210 01670003 C 01680003 READ (CARD,'(10X,I5,7F5.0)') IQGRP,T1,TN,TL,TH,PQ1,PQN,PQ0 01690003 C WRITE(IPR,'(10X,I5,7F5.0)') IQGRP,T1,TN,TL,TH,PQ1,PQN,PQ0 01700003 IF (CARD(46:50) .EQ. BLANK) PQ0=PQ1 01710003 IF (CARD(41:45) .EQ. BLANK) PQN=PMAX + PQ0 01720003 NP1 = 1 + (NINT(PQN-PQ0)/DP) 01730003 IF (NP .LT. NP1) NP = NP1 01740003 GO TO 210 01750003 290 CONTINUE 01760003 C 01770001 C SET DEFAULTS 01780001 C 01790001 NX = 1 + NINT((XN-X1)/DX) 01800001 NX = MAX0(NX,MAXTR) 01810001 C 01820001 C 01830001 C SET UP STORAGE IN RA: 01840001 C 01850001 NP = MAX0((1 + NINT(PMAX/DP)),NP) 01860003 IRO = NP 01870001 IF (NX.GT.NP) IRO = NX 01880001 LENRA = 2*NF*IRO 01890001 KD = LENRA+1 01900001 KCTL= KD + NX 01910001 ICC = KCTL + 1000 01920001 C 01930001 C ALLOCATE RA AREA THAT IS USED IN SDRAMR 01940001 C 01950001 ICC = ICC + 513 01960001 ICC = ICC + THL + NOSAMP 01970001 ICC = ICC + NOSAMP + 1 01980001 ICC = ICC + 4 01990001 ICC = ICC + NOSAMP + 1 02000001 ICC = ICC + NOSAMP + 1 02010001 ICC = ICC + 96 02020001 ICC = ICC + 48 02030001 C 02040001 KCC = 1 + ICC/256 02050001 C 02060001 C 02070001 CSIZE = ICC 02080001 C 02090001 C 02100001 C 02110001 C 02120001 C PART 3. COMPUTE UNRESERVED BLANK COMMON SIZE IN WORDS (UCSIZE) 02130001 C TIMES 25 PERCENT SLOP 02140001 C 02150001 UCSIZE = MAX (N2+2,10*IRO) 02160001 UCSIZE = UCSIZE * 1.25 02170001 C 02180001 C 02190001 C 02200001 C 02210001 C 02220001 C WRITE(IPR,9000) PSIZE,KCC ,UCSIZE 02230001 C9000 FORMAT(/5X,'JSRAMR COMPLETED PSIZE = ',I5,' CSIZE = ',I5, 02240001 C + 'K- BYTES UCSIZE = ',I5) 02250001 GO TO 9500 02260001 C 02270001 C 02280001 9010 WRITE(KPPRNT,9011) CTYPX, KPNA,KPRNO 02290001 9011 FORMAT(5X,'ERROR *** ',A3,' CARD NOT FOUND FOR ',A4,I1) 02300001 GO TO 9100 02310001 C 02320001 9020 WRITE(KPPRNT,9021) KPNA,KPRNO 02330005 9021 FORMAT(5X,'ERROR ON DST CARD -- OFFSET NOT FOUND FOR ',A4,I1) 02340005 GO TO 9100 02350001 C 02360001 8040 WRITE(KPPRNT,9040) KPNA,KPRNO 02370001 9040 FORMAT(5X,' *** NO LINE CARD FOUND FOR: ',A4,I1) 02380001 GO TO 9100 02390001 C 02400001 C 02410001 C 02420001 9100 ERCODE = 16 02430001 WRITE(IPR,9110) 02440001 9110 FORMAT (/' *** FROM JSRAMR ERROR IN CORE CALCULATION') 02450001 C 02460001 9500 RETURN 02470001 C 02480001 END 02490001