CTITLEGAPSTAN -- GAP PROGRAM STANDARDS C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** GAP PROGRAMMING STANDARDS AUGUST 1980 EJECT I. A SOURCE MANAGER SHOULD BE USED TO PROVIDE SECURITY YET READY ACCESS TO SOURCE CODE. THOSE FACILITIES AVAILABLE FOR USE INCLUDE: A. PANVALET (IBM) B. SCRMGR (SEL) C. SED (SEL) II. PROGRAM DESIGN A. ALL DEVELOPMENT PROJECTS SHOULD HAVE A FORMAL DESIGN PROCEDURE. B. TOP-DOWN DESIGN SHOULD BE USED. C. WARNIER DIAGRAMS SHOULD BE THE PRIMARY MEANS TO COM- MUNICATE DESIGN SPECIFICATIONS. ADDITIONAL METHODS MAY BE USED AS DEEMED NECESSARY BY THE PROJECT LEADER. D. PROJECT LEADERS SHOULD PROVIDE A HIGH LEVEL DESIGN SPECIFICATION TO THE PROJECT PROGRAMMER(S). SUB- SEQUENTLY THE PROJECT PROGRAMMER WILL SUBMIT A A DETAILED WARNIER DIAGRAM TO THE PROJECT LEADER FOR REVIEW BEFORE ANY CODING BEGINS. EJECT III. DOCUMENTATION OF THE SOURCE CODE. A. PROVIDE A PROGRAM HEADER SPECIFYING PROGRAM NAME, AUTHOR AND CLEAR DESCRIPTION OF FUNCTION. B. SUFFICIENT DOCUMENTATION SHOULD BE PROVIDED WITHIN THE SOURCE CODE TO MAKE THE TOP-DOWN DESIGN EVIDENT AND THE FUNCTION OF THE PROGRAM OBVIOUS. C. DATA FORMATS WHICH ARE NEW TO THE DEPARTMENT SHOULD BE DOCUMENTED IN DETAIL WITHIN THE PROGRAM. FAMILIAR AND PREVIOUSLY DEFINED DATA FORMATS, SUCH AS ARCY, SHOULD BE NOTED AS BEING PART OF THE PROGRAM'S DATA REQUIREMENTS. IV. USER AND TECHNICAL DOCUMENTATION A. USER DOCUMENTATION SHOULD BE INCLUDED AS A MEMBER OF THE SAME FILE STRUCTURE USED TO MAINTAIN THE PROGRAM SOURCE. THE PRESENCE OF THIS DOCUMENTATION WILL ALLOW FOR COMPUTERIZED USER'S GUIDES. B. TECHNICAL DOCUMENTAION SHOULD BE PROVIDED FOR THOSE PROGRAMS WHICH REQUIRE ADDITIONAL DOCUMENTATION TO AID IN THEIR USE BY THE USER COMMUNITY. THIS DOCUMENTATION WILL ALSO BE A MEMBER OF THE SOURCE FILE STRUCTURE AND BE USED TO GENERATE A TECHNICAL USER'S GUIDE. V. CODING AND TESTING A. USE TOP-DOWN CODING TECHNIQUES. B. MINIMIZE GO TO STATEMENTS. C. INDENT NESTED DO STATEMENTS. E. TEST THE PROGRAM AFTER EACH NEW LEVEL OF THE DESIGN IS IMPLEMENTED. ATTACHMENTS. =========== CODING CONVENTIONS EXAMPLE SUBROUTINE EXAMPLE TECHNICAL DOCUMENTATION EJECT SINGLE ENTRY SUBROUTINE CODING CONVENTIONS ========================================== 7 CTITLESUBNAM -- FUNCTION OR PURPOSE OF THE SUBROUTINE............ SUBROUTINE NAMING CONVENTIONS AR.... ARRAY OPERATION CS.... PROCESSING CONTROL SUBROUTINE J..... JOB GENERATION SUBROUTINE SP.... PARAMMETER CHECK SUBROUTINE SD.... PROCESS DRIVER SUBROUTINE SA.... APPLICATION SUBROUTINE M..... MATHEMATICAL SUBROUTINE FO.... INPUT/OUTPUT SUBROUTINE US.... UTILITY SUBROUTINE UT.... UTILITY MAIN PROGRAM 7 20 CA AUTHOR ............. CA DESIGNER .................. CA LANGUAGE FORTRAN H, ASSEMBLER ETC. CA SYSTEM S/370, SEL, TI980 ETC. CA WRITTEN MO-DA-YR C REVISED MO-DA-YR BY PROGRAMMER FOR REASON. C REVISED CA 7 CA CALL SUBNAM (A, M, B, N, ...) CA CA IN/OUT ARGUMENT TYPE DESCRIPTION CA CA IN A R4 DEFINITION OF PARAMETER A CA IN M I4 ......................... CA OUT B R4 ......................... CA OUT N I4 ......................... CA . . . IN GENERAL, PLACE INPUT PARAMETERS BEFORE OUTPUT PARAMETERS. PLACE ERROR RETURNS AT OR NEAR THE END OF THE PARAMETER LIST. ABSTRACT DOCUMENTATION CA CA CARDS WITH CA (*A FOR ASSEMBLER) IN COLUMNS 1 AND 2 CA WILL BE USED TO PRODUCE AN ABSTRACT. CA CA BRIEF DESCRIPTION OF THE PROGRAM -- FUNCTION, PURPOSE, ETC. CA C EJECT SUBROUTINE SUBNAM (A, M, B, N, ...) C IMPLICIT INTEGER (A-Z) EXTERNAL ...... SUBROUTINES CALLED BY ENTRY POINTS ONLY, SHOULD BE DECLARED EXTERNAL. C 7 20 COMMON COM ( 1) C 7 20 COMMON /P/ STARTP COMMON /P/ ...... COMMON /P/ ...... COMMON /P/ ...... COMMON /P/ ENDP THE FOLLOWING LISTS OF VARIABLES ARE INTENDED TO SHOW ONE WAY OF ARRANGING THE DIMENSION AND TYPE STATEMENTS. THE BASIC IDEA IS TO MAKE THESE STATEMENTS NEAT AND EASY TO READ. THE FOLLOWING FEATURES ARE HELPFUL. ONE VARIABLE PER CARD. VARIABLE NAME STARTS IN A GIVEN COLUMN. COLUMN 20 IS GOOD BECAUSE IT LEAVES ROOM FOR THE LONGEST TYPE, COMPLEX *16, OR FOR THE WORD "EQUIVALENCE." DIMENSIONS ARE RIGHT-ADJUSTED TO A GIVEN COLUMN. EQUIVALENCE BETWEEN A SCALAR AND AN ARRAY ELEMENT IS DECLARED AT THE END OF THE LIST CONTAINING THE ARRAY. IF THE LISTS ARE SHORT, IT MAY BE NEATER TO COMBINE SEVERAL TYPES IN ONE LIST (REAL, INTEGER, AND COMPLEX, FOR EXAMPLE). IT IS USUALLY BETTER, HOWEVER, TO KEEP ARRAYS AND SCALARS IN SEPARATE LISTS. C EJECT C C C REAL ARRAYS IN PARAMETER LIST. REAL A (1) REAL *8 B (1) C C C INTEGER ARRAYS IN PARAMETER LIST. INTEGER *2 M (1) INTEGER N (1) C C C REAL ARRAYS--LOCAL (INTERNAL TO SUBROUTINE). REAL C ( 10) / 10 * 0.0 / REAL *8 DANDT ( 2) / 2 * ' ' / REAL ZETA ( 250) / 250 * 0.0 / C EQUIVALENCE (DANDT ( 1), DATE) EQUIVALENCE (DANDT ( 2), TIME) C EQUIVALENCE (ZETA ( 2), ZETALN) EQUIVALENCE (ZETA ( 249), ZETAM ) C C C INTEGER ARRAYS--LOCAL (INTERNAL TO SUBROUTINE). INTEGER CHAR ( 256) / 256 * 0 / INTEGER *2 NTEMPO (5000) / 5000 * 0 / C EQUIVALENCE (CHAR ( 251), VORBAR) EQUIVALENCE (NTEMPO ( 1), MONTH ) C C C REAL VARIABLES AND CONSTANTS--LOCAL (INTERNAL TO SUBROUTINE). REAL *8 DATE REAL E / 0.001 / REAL FIFO / 0.0 / REAL FINAL / 10000.0 / REAL *8 FIPHI / 0.0 / REAL GINCR / 0.1 / REAL PI / 3.1415927 / REAL *8 TIME REAL UPPERL / 1.0 E50 / REAL X / 0.0 / REAL *8 XX / 0.0 / REAL ZETALN REAL ZETAM C C C INTEGER VARIABLES AND CONSTANTS--LOCAL (INTERNAL TO SUBROUTINE). INTEGER *2 IMAX / 5000 / INTEGER MAXMAX / 99999 / INTEGER *2 MONTH INTEGER *2 NINDEX / 0 / C EJECT C C C CHOICE OF STATEMENT NUMBER RANGES. PRELIMINARY OPERATIONS 10 - 900 MAIN OPERATIONS 1000 - 8000 FORMAT STATEMENTS 9000 - 9900 C PRELIMINARY OPERATIONS. C 10 ... ... 200 ... C C C MAIN OPERATIONS, SECTION 1. COMPUTE ... . 1000 ... ... 1160 ... C C MAIN OPERATIONS, SECTION 2. COMPUTE ... . 1200 ... ... 1260 ... C C ... ... ... C C C FINAL OPERATIONS. 1800 ... ... 1830 ... C C 9000 FORMAT(...) 9010 FORMAT(...) C EJECT GENERAL RULES FOR CODING STATEMENT NUMBERS. USE ASCENDING NUMBERS AS THE SOURCE CODE PROGRESSES FROM THE TOP. IN GENERAL, USE AN INCREMENT OF 10. AT EACH LOGICAL PROGRAM BREAK GO TO THE NEXT MULTIPLE OF 100. RIGHT ADJUST TO COLUMN 5 IN THE LABEL AREA (COLUMNS 1 TO 5). RIGHT ADJUST TO COLUMN 70 IN THE STATEMENT AREA (COLUMNS 7 TO 72). EXAMPLES OF ADJUSTMENT TO COLUMN 70. GO TO 1000 IF (N .NE. 0) GO TO 1000 IF (N) 1000, 2000, 3000 GO TO (1000, 2000), IBR GO TO SUBRTN, (1000, 2000) DO LOOPS STATEMENTS BEGIN IN COLUMN 9. NESTED LOOPS BEGIN IN COLUMN 9, 11, 13, ETC. 9 DO 510 I = 1, N ....... ....... DO 500 J = 1, M ....... ....... ....... 500 CONTINUE 510 CONTINUE C C C C EJECT USE THE ASSIGNED GO TO ONLY AS A DEVICE FOR MAKING AN INTERNAL SUBROUTINE. C CALL INTERNAL SUBROUTINE ISXXXX. ASSIGN 1000 TO IRXXXX GO TO 5000 1000 CONTINUE . . . C INTERNAL SUBROUTINE ISXXXX. C CALCULATION OF ........................... 5000 CONTINUE . . . GO TO IRXXXX, (1000, 2000, 3000) C C C EJECT MULTIPLE ENTRY ============== 7 CAINDMSUBNAM -- GENERAL STATEMENT APPLICABLE TO ALL ENTRY POINTS THIS CARD BECOMES A TABLE-OF CONTENTS ENTRY. 9 CTITLE ENTRY1 -- FUNCTION OR PURPOSE OF THIS ENTRY POINT CA AUTHOR ............. CA DESIGNER ............. CA LANGUAGE ............. CA SYSTEM ............. CA WRITTEN MO-DA-YR C REVISED MO-DA-YR BY PROGRAMMER FOR REASON. C REVISED CA CA 7 CA CALL ENTRY1 (A, M, B, N, ...) CA ... CA ARGUMENT DESCRIPTION AS PER SUBTPAT ABOVE. CA ... CA DESCRIPTION OF ENTRY-- PURPOSE, FUNCTIONS, ETC. CA ... 9 CTITLE ENTRY2 -- FUNCTION OR PURPOSE OF THIS ENTRY POINT CA AUTHOR CA . . . 7 CA CALL ENTRY2 (A, M, B, N, ...) CA ... CA ARGUMENT DESCRIPTION AS PER SUBPAT ABOVE. CA ... CA DESCRIPTION OF ENTRY-- PURPOSE, FUNCTIONS, ETC. CA ... C C EJECT 9 CTITLE ENTRY3 -- FUNCTION OR PURPOSE OF THIS ENTRY POINT CA AUTHOR CA . . . 7 CA CALL ENTRY3 (A, M, B, N, ...) CA ... CA ARGUMENT DEFINITION AS PER SUBPAT ABOVE CA ... CA DESCRIPTION OF ENTRY--PURPOSE, FUNCTIONS, ETC. CA ... CA C SUBROUTINE SUBNAM C IMPLICIT INTEGER (A-Z) EXTERNAL ...... SUBROUTINES CALLED BY ENTRY POINTS ONLY. COMMON COM ( 1) C 7 COMMON /P/ STARTP COMMON /P/ ...... COMMON /P/ ENDP REAL ARRAYS--IN PARAMETER LIST REAL ARRAYS--LOCAL INTEGER ARRAYS--LOCAL REAL VARIABLES AND CONSTANTS--LOCAL INTEGER VARIABLES AND CONSTANTS--LOCAL ENTRY ENTRY1 (A, N, B, M, ...) . . . . . . . . . RETURN C C ENTRY ENTRY2 (C, I, D, J, ...) . . . . . . . . . RETURN C C ENTRY ENTRY3 (E, K, F, L, ...) . . . . . . . . . RETURN C C C EJECT EXAMPLE SUBROUTINE ================== CTITLESDPROC -- PROCESS DRIVER FOR SEISMIC APPLICATIONS. CA AUTHOR .............. CA DESIGNER .............. CA LANGUAGE FORTRAN H CA SYSTEM S/370 CA WRITTEN MO-DA-YR C REVISED MO-DA-YR BY PROGRAMMER FOR REASON. C REVISED CA CA CA CALL SDPROC (INH, INTR, OH, OTR) CA CA IN/OUT ARGUMENT TYPE DESCRIPTION CA CA IN INH I4 INPUT TRACE HEADER CA IN INTR R4 INPUT TRACE CA OUT OH I4 OUTPUT TRACE HEADER CA OUT OTR R4 OUTPUT TRACE CA CA CA THIS SUROUTINE SERVES AS A DRIVER OF A SEISMIC APPLICATION CA PROCESS IN THE SPARC SYSTEM. GIVEN AN INPUT TRACE IT WILL: CA CA 1. INITIALIZE THE DRIVER CA 2. RETRIEVE PROCESSING PARAMETERS CA 3. CALL A SEISMIC APPLICATION SUBROUTINE CA 4. UPDATE ITS REPORTING AREA CA 5. RETURN THE PROCESSED TRACE CA 6. EXIT CA 7. PERFORM STEPS 2 THRU 6 FOR EACH INPUT TRACE RECEIVED. CA CA C EJECT CD WARNIER DIAGRAM (OPTIONAL DOCUMENTATION) CD =============== CD +-- CD | RECEIVE TRACE CD | +-- CD | INITIALIZE DRIVER --| PRINT HEADING CD | | GET LOCAL MEMORY REQUIREMENTS CD | | BUILD PARAMETER ADDRESS TABLE CD | | SORT PARAMETER ADDRESS TABLE CD | EOR | READ PROCESSING RANGES CD | | REPORT PROCESSING MODE CD | +-- CD | +-- CD PROCESS | | RETRIEVE LOCAL VARIABLES CD SEISMIC | PROCESS TRACE ------| RETRIEVE TRACE HEADER VARIABLES CD TRACE | | IF TRACE NOT TO BE PROCESSED - EXIT CD | | RETRIEVE PROCESSING PARAMETERS CD | | CALL APPLICATION SUBROUTINE CD | | UPDATE REPORTING AREA CD | | RESTORE LOCAL VARIABLES CD | +-- CD | EXIT CD +-- CD C EJECT C C C LOCAL OR INTERNAL ARRAYS. C C NAME TYPE DESCRITPION C C DATTR ( 96) I4 DATA ATTRIBUTES C DENTRY ( 104) I4 DATA ENTRIES ARRAY C DLOCAL ( 50) I4 LOCAL VARIABLES C PSHOT ( 24) 14 PROCESSED SHOTPOINTS OR DEPTH POINTS C C LOCAL OR INTERNAL VARIABLES AND CONSTANTS.(OPTIONAL DOCUMENTATION) C C NAME TYPE DESCRIPTION C C CBSPT I4 BEGINNING SHOTPOINT OR DEPTH POINT C CDP I4 COMMON DEPTH POINT ENSEMBLE NUMBER C CESPT I4 ENDING SHOTPOINT OR DEPTH POINT C DAP I4 COUNTER FOR PARAMETER READ AND WRITE SUBR. C DAT I4 DISK ADDRESS TABLE C DTEND I4 POINTER TO END OF DISK ADDRESS TABLES C DA1 I4 POINTER TO PARAMETER FILE C GATH I4 GATHER OR SHOTPOINT ORDER C IC I4 UNRESERVED SCRATCH TRACE-BLOCK INDEX C TICD I4 TRACE IDENTIFICATION CODE C LLOCAL I4 LENGTH OF DLOCAL, WORDS C NOPAR I4 NUMBER OF PARAMETERS C NOSAMP I4 NUMBER OF SAMPLE POINTS C NOWDS I4 NUMBER OF WORDS C NS I4 NUMBER OF SHOTPOINTS OR DEPTH POINTS C PMODE I4 PROCESSING MODE C POS I4 CDP OR TWICE SHOTPOINT NUMBER C POSL I4 LAST SHOTPOINT OR DEPTH POINT NUMBER C RANG I4 POINTER TO PROCESSING RANGE C RANGE I4 POINTER TO END OF PROCESSING RANGE C RLENG I4 RECORD LENGTH IN MS. C SAMPR I4 SAMPLE INTERVAL IN MS. C SHOT I4 ENERGY SOURCE POINT NUMBER. C SHOTL I4 LAST SHOTPOINT C SHOTT I4 EITHER CDP OR SHOTPOINT NUMBER C SPLOCN I4 SHOT POINT LOCATION C SPT I4 STARTING POINT C THL I4 TRACE HEADER LENGTH C TNS I4 TOTAL NUMBER OF SHOT OR DEPTH POINTS PROCESSED C TPS I4 TRACES PER SHOTPOINT OR DEPTH POINT C TRACE I4 TRACE NUMBER FROM TRACE HEADER C XDST I4 DISTANCE FROM SHOT (FROM TRACE HEADER) C C C EJECT SUBROUTINE SDPROC (INH, INTR, OH, OTR) C IMPLICIT INTEGER (A-Z) C COMMON COM ( 1) C 7 COMMON /P/ STARTP COMMON /P/ . COMMON /P/ . COMMOPN /P/ . COMMON /P/ ENDP C C C REAL ARRAYS IN PARAMETER LIST. C REAL INTR (1) REAL OTR (1) C C INTEGER ARRAYS IN PARAMETER LIST. C INTEGER INH (1) INTEGER OH (1) C C INTEGER ARRAYS--LOCAL C INTEGER DATTR ( 96) INTEGER DENTRY (104) INTEGER DLOCAL ( 50) INTEGER PSHOT ( 24) C C C DENTRY IS AN ARRAY TO HOLD A PARAMETER RECORD. THE DEFINITIONS C OF THE FIRST EIGHT WORDS ARE FIXED. THE REMAINING WORDS ARE C FOR VARIABLE PARAMETERS AND ARE USUALLY ADDRESSED USING "DATTR". C THE MAXIMUM LENGTH OF DENTRY IS 104 BECAUSE OF THE I/O ROUTINES. C EQUIVALENCE (DCTYP , DENTRY (03)) EQUIVALENCE (SPT , DENTRY (04)) EQUIVALENCE (EXTRA , DENTRY (05)) EQUIVALENCE (NOPAR , DENTRY (06)) EQUIVALENCE (PMODE , DENTRY (07)) EQUIVALENCE (SPLOCN , DENTRY (08)) EQUIVALENCE (DATTR(1) , DENTRY (09)) C EJECT C C DLOCAL IS AN ARRAY USED TO HOLD PARAMETER VALUES THAT ARE UNIQUE C TO EACH OCCURRENCE OF THE PROCESS. IT MAY BE DIMENSIONED FOR C THE NECESSARY LENGTH. C EQUIVALENCE (DAT , DLOCAL (01)) EQUIVALENCE (DTEND , DLOCAL (02)) EQUIVALENCE (RANG , DLOCAL (03)) EQUIVALENCE (RANGE , DLOCAL (04)) EQUIVALENCE (CBSPT , DLOCAL (05)) EQUIVALENCE (CESPT , DLOCAL (06)) EQUIVALENCE (GATH , DLOCAL (07)) EQUIVALENCE (NS , DLOCAL (09)) EQUIVALENCE (TNS , DLOCAL (10)) EQUIVALENCE (PSHOT(1) , DLOCAL (11)) C EJECT C REAL VARIABLES AND CONSTANTS--LOCAL C C C INTEGER VARIABLES AND CONSTANTS--LOCAL C INTEGER LLOCAL / 50 / INTEGER XYZ / 'XYZ ' / C C CHECK IF FIRST TIME THROUGH C IF (KPFCF .EQ. 0) GO TO 100 C C INITIALIZATION C ============== C C FIRST TIME THROUGH C KPFCF = 0 DAP = 1 C C PRINT HEADING C CALL USPHD (2, ACLNAM,KPNA, KPRNO, 0, 0, KPPRNT) C NOWDS = LLOCAL C C GET LOCAL MEMORY REQUIREMENTS C CALL UPRESM (NOWDS) IF (NOWDS .EQ. 0) GO TO 1700 IC = KPIUSM C C BUILD DISK ADDRESS TABLES FOR PROCESSING PARAMETERS C DAT = IC SHOTL = -999999 DAP = 1 C 10 CALL FORP(KPNA, KPRNO, DAP, 104, DENTRY, &20 ) IF (DCTYP .NE. XYZ .OR. SPT .EQ. SHOTL) GO TO 10 IF (IC+1 .GT. KPIUSM+KPNUSM) GO TO 1700 COM(IC) = DAP - 1 COM(IC+1) = SPLOCN SHOTL = SPT IC = IC + 2 GO TO 10 C 20 DTEND = IC - 1 EJECT C C SORT THE DISK ADDRESS TABLES C IF (DAT+2 .GT. DTEND ) GO TO 40 IPS = DAT + 2 IP = DTEND C DO 35 J = IPS,IP,2 C DO 30 K = IPS,IP,2 IF (COM(K-1) .LT. COM(K+1)) GO TO 30 H1 = COM(K-2) H2 = COM(K-1) COM(K-2) = COM(K) COM(K-1) = COM(K+1) COM(K) = H1 COM(K+1) = H2 C 30 CONTINUE C 35 CONTINUE C READ THE PROCESSING RANGES AND SAVE IN COM C 40 RANG = IC DAP = 1 C 50 CALL FORP(KPNA,KPRNO,DAP,104,DENTRY, &60) IF (S1CPCH(DCTYP, 1, 'PTS', 1, 3) .NE. 0) GO TO 50 IF (IC + NOPAR .GT. KPIUSM + KPNUSM) GO TO 1700 CALL ARMVE (DATTR, COM(IC), NOPAR) IC = IC + NOPAR RANGE = IC - 1 GO TO 50 C 60 NOWDS = IC - KPIUSM CALL UPRESM (NOWDS) IF (NOWDS .EQ. 0) GO TO 1700 C CBSPT = -999999 CESPT = -999999 NS = 0 TNS = 0 C REPORT PROCESSING MODE IF (S1CPCH(PMODE, 2 ,'D', 1, 1) .EQ. 0) GO TO 70 GATH = 0 WRITE (KPPRNT, 9000) GO TO 110 70 GATH = 1 WRITE (KPPRNT, 9010) GO TO 110 EJECT C C PROCESS THE SEISMIC TRACE C ========================= C C RETRIEVE LOCAL VARIABLES FOR SERIAL REENTRANCE C 1000 CALL ARMVE (COM(KPIRSM), DLOCAL, LLOCAL) C CHECK FOR END OF FILE IF (KPMITF .EQ. 0) GO TO 1800 C C 1010 IF(KPBUGF .NE. 1) GO TO 1020 KKKK = KPIRSM + KPNRSM - 1 WRITE (KPPRNT, 9050) (COM(I), I = KPIRSM, KKKK) C C RETRIEVE TRACE HEADER VARIABLES REQUIRED FOR C PROCESSING THIS TRACE. C 1020 CALL USRTHV (INH, 'THTICD ', TICD) IF (TICD .GE. 2) GO TO 1820 CALL USRTHV (INH, 'THSSP ', SHOT) CALL USRTHV (INH, 'THCDPN ', CDP) CALL USRTHV (INH, 'THNS ', NOSAMP) CALL USRTHV (INH, 'THSI ', SAMPR) SAMPR = SAMPR/1000 RLENG = NOSAMP * SAMPR CALL USRTHV (INH, 'THSLN ', POS) CALL USRTHV (INH, 'THORTN ', TRACE) CALL USRTHV (INH, 'THXDST ', XDST) C SHOTT = SHOT IF (GATH .EQ. 0) GO TO 1130 POS = CDP SHOTT = CDP CALL USRTHV (INH, 'THCDPT ', TRACE) C C CHECK IF CURRENT PROCESSING PARAMETERS C ARE RESIDENT FOR THIS SHOTPOINT. C 1130 IF (CBSPT .LE. SHOTT .AND. SHOTT .LE. CESPT) GO TO 1200 IF (CBSPT .GE. SHOTT .AND. SHOTT .GE. CESPT) GO TO 1200 C C CURRENT PARAMETERS ARE NOT RESIDENT, SEARCH THE C RANGE TABLE FOR THE INPUT SHOT NUMBER. C DO 1140 J = RANG,RANGE,2 IF (COM(J) .LE. SHOTT .AND. SHOTT .LE. COM(J+1)) GO TO 1150 IF (COM(J) .GE. SHOTT .AND. SHOTT .GE. COM(J+1)) GO TO 1150 C 1140 CONTINUE C THIS SHOTPOINT IS NOT TO BE PROCESSED GO TO 1820 EJECT C C GET DISK ADDRESS FOR PROCESSING PARAMETERS C 1150 IPS = DAT IP = DTEND - 2 IF (IP .LT. IPS) GO TO 1170 C DO 1160 J = IPS,IP,2 IF (COM(J+1) .EQ. POS .OR. COM(J+3) .GT. POS) GO TO 1180 C 1160 CONTINUE C 1170 J = DTEND - 1 C C READ THE PARAMETERS FROM THE SEISPARM FILE C 1180 DA1 = COM(J) CTRE = CTR CALL FORP (KPNA, KPRNO, DA1, 104, DENTRY, &1820) C C MOVE PARAMETERS INTO COM C . C . C . C . C REPORTING AREA C ============== 1200 IF (NS .EQ. 0) GO TO 1210 IF (PSHOT(NS) .EQ. SHOTT) GO TO 1220 IF (NS .LT. 24) GO TO 1210 C REPORT SHOTPOINTS PROCESSED WRITE (KPPRNT, 9030) TNS, PSHOT NS = 0 C 1210 NS = NS + 1 TNS = TNS + 1 PSHOT(NS) = SHOTT C C C 1220 CONTINUE EJECT C C CALL APPLICATION SUBROUTINE C =========================== C CALL SAXXX (P1, P2, ... , KPRTF) C ON NORMAL RETURN IF (KPRTF .EQ. 0) GO TO 1830 C C EXIT AREA C ========= 1700 WRITE (KPPRNT, 9040) KPRTF = -1 GO TO 1840 C C PRINT REMAINING REPORT C 1800 KPLOTF = 0 KPRTF = 0 C WRITE (KPPRNT, 9030) TNS, (PSHOT(I), I = 1, NS) GO TO 1840 C C IN THIS SAMPLE PROGRAM 1820 IS BEING USED WHEN THE INPUT TRACE C HAS BEEN KILLED OR THE TRACE IS NOT TO BE PROCESSED. C 1820 KPRTF = 2 C C SAVE LOCAL VARIABLES C 1830 CALL ARMVE (DLOCAL, COM(KPIRSM), LLOCAL) C 1840 RETURN C 9000 FORMAT (' COUNT SHOTPOINTS PROCESSED') C 9010 FORMAT (' COUNT DEPTH POINTS PROCESSED') C 9030 FORMAT (1X,I4,4(2X,6I5)) C 9040 FORMAT (5X,'*** NOT ENOUGH MEMORY AVAILABLE') C 9050 FORMAT (1X,20I5) C END