CTITLESAASGN -- DETERMINE ASSIGNMENT CODES FOR TRACES IN BINS 00010001 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR D. O'NEILL 00020001 CA DESIGNER D. O'NEILL 00030001 CA LANGUAGE S/370 FORTRAN H 00040001 CA WRITTEN 05-01-84 00050001 C REVISED 03-11-88 TJT. CHANGED DO LOOP TO ALLOW COMPILER TO OPT. 00060003 C REVISED MM-DD-YY PROGRAMMER 00061003 CA 00070001 CA 00080001 CA CALL SAASGN (SORT, NMEMB, NTRCS, NHORTN, NRLINE, NASSN, DTRCS, 00090001 CA ETRCS, EQUIV, NHXDST, MNXDST, PRNTSW, KPPRNT) 00100004 CA 00110001 CA IN/OUT ARGUMENT TYPE DESCRIPTION 00120001 CA 00130001 CA IN/OUT SORT I4 INFORMATION TO BE CHECKED AND FLAGGED 00140001 CA IN NMEMB I4 NUMBER OF ELEMENTS 00150001 CA IN NTRCS I4 NUMBER OF TRACES 00160001 CA IN NHORTN I4 TRACE NUMBER INDEX 00170001 CA IN NRLINE I4 RELATIVE LINE NUMBER INDEX 00180001 CA IN NASSN I4 THE TRACE ASSIGNMENT FLAG INDEX 00190001 CA IN DTRCS I4 DESIRED NUMBER OF TRACES IN A PERFECT BIN 00200001 CA IN ETRCS I4 NUMBER OF EQUIVALENT TRACES 00210001 CA IN EQUIV I4 ARRAY USED TO HOLD EQUIVALENT TRACE 00220001 CA NUMBERS FOR THE MODEL BIN. 00230001 CA IN NHXDST I4 TRACE OFFSET INDEX 00231004 CA IN MNXDST I4 MINIMUM OFFSET TO BORROW 00232004 CA IN PRNTSW I4 PRINT SWITCH 00240001 CA IN KPPRNT I4 FORTRAN UNIT NUMBER FOR PRINTED OUTPUT 00250001 CA 00260001 CA THIS SUBROUTINE ALLOWS TRACES HAVING DIFFERENT RECEIVER NUMBERS 00270001 CA TO BE CLASSED AS "EQUIVALENT", IN THE SENSE THAT THEY REPRESENT 00280001 CA ABOUT THE SAME OFFSET. IF LINE 2, TRACE 2 HAPPENED TO STRAY 00290001 CA INTO LINE 1 SO THAT SOME BIN CONTAINED TRACES 1,3,5,... FROM 00300001 CA LINE 1 AND TRACE 2 FROM LINE 2, THE STRAYING TRACE WOULD BE 00310001 CA RECOGNIZED AS BEING OFFSET-REDUNDANT TO TRACE 1 IN THAT BIN. 00320001 CAEND 00330001 CT 00340001 CT LINE 1 LINE 3 00350001 CT ****** ****** 00360001 CT *SHOT* *SHOT* 00370001 CT ****** ****** 00380001 CT |____________| LINE 2 |____________| 00390001 CT | | ****** | | 00400001 CT BIN 1 | TRACE 1 | *SHOT* | TRACE 1 | 00410001 CT | | ****** | | 00420001 CT |------------|------------|------------| 00430001 CT | | | | 00440001 CT BIN 2 | TRACE 2 | TRACE 1 | TRACE 2 | 00450001 CT | | | | 00460001 CT |------------|------------|------------| 00470001 CT | | | | 00480001 CT BIN 3 | TRACE 3 | TRACE 2 | TRACE 3 | 00490001 CT | | | | 00500001 CT |------------|------------|------------| 00510001 CT | | | | 00520001 CT BIN 4 | TRACE 4 | TRACE 3 | TRACE 4 | 00530001 CT | | | | 00540001 CT |------------|------------|------------| 00550001 CT 00560001 CT ETC. ETC. ETC. 00570001 CT 00580001 CT 00590001 C EJECT 00600001 C LOCAL OR INTERNAL ARRAYS 00610001 C 00620001 C ARGUMENT TYPE LENGTH DESCRIPTION 00630001 C SORT I4 (NMEMB, A TWO-DIMENSIONAL ARRAY CONTAINING THE 00640001 C NTRCS) INFORMATION TO BE CHECKED AND FLAGGED; ON 00650001 C RETURN, ELEMENT "NASSN" CONTAINS THE FLAG 00660001 C EQUIV I4 (ETRCS, ARRAY USED TO HOLD EQUIVALENT TRACE NUMBERS 00670001 C DTRCS) FOR THE MODEL BIN. SET UP WITH 'ELEMENTS' 00680001 C (FIRST INDEX) HOLDING THE EQUIVALENT TRACE 00690001 C NUMBERS FOR A PARTICULAR TRACE NUMBER AND 00700001 C 'MEMBERS' (SECOND INDEX) HOLDING SEPARATE 00710001 C LISTS OF EQUIVALENT TRACE NUMBERS. FOR 00720001 C EXAMPLE: 00730001 C ELEMENTS 00740001 C M 1 2 TRACES 1 & 2 EQUIV. 00750001 C E 3 4 3 & 4 00760001 C M 5 6 ETC. 00770001 C B 7 8 00780001 C E 9 10 00790001 C R 11 12 00800001 C S 13 14 00810001 C 00820001 C LOCAL OR INTERNAL VARIABLES AND CONSTANTS 00830001 C 00840001 C ARGUMENT TYPE DESCRIPTION 00850001 C J I4 COUNTER INDEX FOR DO LOOP 00851001 C K I4 COUNTER INDEX FOR DO LOOP 00852001 C TKNT I4 USED AS COUNTER IN LOOP 50 AND AS LOWER LIMIT 00853001 C OF LOOP 40; POINTS TO THE CURRENT TRACE HEADER 00854001 C DTRCS I4 DESIRED NUMBER OF TRACES IN A PERFECT BIN 00860001 C EQTRC I4 POINTS TO MEMBER OF "EQUIV" WHICH HOLDS THE 00870001 C EQUIVALENT TRACE NUMBERS FOR THE CURRENT TRACE 00880001 C NUMBER 00890001 C ETRCS I4 NUMBER OF TRACE NUMBERS WHICH ARE EQUIVALENT 00900001 C E.G., IF TRACES 1 AND 2 ARE EQUIVALENT, TRACES 3 AND 00910001 C 4 ARE EQUIVALENT, ETC. THEN ETRCS = 2 00920001 C NASSN I4 THE ELEMENT OF "SORT" WHICH IS TO CONTAIN THE TRACE 00930001 C ASSIGNMENT FLAG 00940001 C 1 => THE TRACE BELONGS IN ITS CURRENT BIN 00950001 C -1 => THE TRACE IS A DUPLICATE AND MAY BE BORROWED 00951001 C NMEMB I4 1ST DIMENSION OF "SORT";NUMBER OF ELEMENTS 00952001 C NTRCS I4 2ND DIMENSION OF "SORT"; NUMBER OF TRACES 00953001 C KPPRNT I4 FORTRAN UNIT NUMBER FOR PRINTED OUTPUT 00960001 C MINLIN I4 HOLDS MINIMUM RELATIVE LINE NUMBER OF THE TRACES 00970001 C EXAMINED AT A PARTICULAR TRACE NUMBER. 00980001 C MINLNJ I4 POINTS TO TRACE HEADER HAVING THE TRACE FROM "MINLIN"00990001 C NHORTN I4 THE ELEMENT OF "SORT" WHICH CONTAINS THE TRACE NUMBER01020001 C NRLINE I4 THE ELEMENT OF "SORT" WHICH CONTAINS THE RELATIVE 01030001 C LINE NUMBER 01040001 C PRNTSW I4 PRINT SWITCH; PERFORM PRINTING IF PRNTSW = 1 01090001 C 01120001 C 01130001 C 01140001 C********************************************************************** 01150001 C 01160001 SUBROUTINE SAASGN(SORT,NMEMB,NTRCS,NHORTN,NRLINE,NASSN, 01170001 & DTRCS,ETRCS,EQUIV,NHXDST,MNXDST,PRNTSW,KPPRNT,*) 01180004 IMPLICIT INTEGER (A-Z) 01190001 INTEGER SORT(NMEMB,NTRCS) 01200001 INTEGER EQUIV(ETRCS,DTRCS) 01210001 C 01340001 C DETERMINE REDUNDANCY FOR TRACES IN THIS BIN 01350001 C 01360001 DO 50 TKNT=1,NTRCS 01370001 C ----IF THIS TRACE HAS ALREADY BEEN FLAGGED, SKIP THIS STEP 01380002 IF(SORT(NASSN,TKNT).NE.0)GO TO 50 01390001 IF(SORT(NHXDST,TKNT) .LT. MNXDST) THEN 01391004 SORT(NASSN,TKNT)=1 01392004 GO TO 50 01393004 ENDIF 01394004 C 01400001 C FIND EQUIVALENT TRACE TABLE ENTRY FOR THIS TRACE NUMBER 01410001 C 01420001 DO 10 J=1,DTRCS 01430001 DO 10 K=1,ETRCS 01440001 IF(SORT(NHORTN,TKNT).NE.EQUIV(K,J))GO TO 10 01450001 EQTRC=J 01460001 GO TO 20 01470001 10 CONTINUE 01480001 20 CONTINUE 01490001 C 01500001 C LOAD TRACES WITH EQUIVALENT TRACE NUMBERS INTO A TABLE, 01510001 C FIND THE ONE WITH THE LOWEST RELATIVE LINE NUMBER, 01520001 C AND SET ALL ASSIGN FLAGS EQUAL TO -1 01530001 C 01540001 MINLIN=99999 01550001 DO 45 J=TKNT,NTRCS 01560001 IF(SORT(NASSN,J).NE.0)GO TO 45 01570001 DO 40 K=1,ETRCS 01580001 IF(SORT(NHORTN,J).NE.EQUIV(K,EQTRC))GO TO 40 01590001 IF(SORT(NRLINE,J).GT.MINLIN)GO TO 30 01600001 MINLIN=SORT(NRLINE,J) 01610001 MINLNJ=J 01620001 30 SORT(NASSN,J)=-1 01630001 40 CONTINUE 01640001 45 CONTINUE 01641001 C 01650001 C SET THE ASSIGN FLAG EQUAL TO +1 FOR THE TRACE WITH LOWEST RELATIVE 01660001 C LINE NUMBER 01670001 C 01680001 SORT(NASSN,MINLNJ)=1 01690001 50 CONTINUE 01700001 RETURN 01710001 END 01720001