Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0026/tab2.ssp
There are 2 other files named tab2.ssp in the archive. Click here to see a list.
C                                                                       TAB2  10
C     ..................................................................TAB2  20
C                                                                       TAB2  30
C        SUBROUTINE TAB2                                                TAB2  40
C                                                                       TAB2  50
C        PURPOSE                                                        TAB2  60
C           PERFORM A TWO-WAY CLASSIFICATION FOR TWO VARIABLES IN AN    TAB2  70
C           OBSERVATION MATRIX (OR A MATRIX SUBSET) OF THE FREQUENCY,   TAB2  80
C           PERCENT FREQUENCY, AND OTHER STATISTICS OVER GIVEN CLASS    TAB2  90
C           INTERVALS.                                                  TAB2 100
C                                                                       TAB2 110
C        USAGE                                                          TAB2 120
C           CALL TAB2(A,S,NOV,UBO,FREQ,PCT,STAT1,STAT2,NO,NV)           TAB2 130
C                                                                       TAB2 140
C        DESCRIPTION OF PARAMETERS                                      TAB2 150
C           A     - OBSERVATION MATRIX, NO BY NV                        TAB2 160
C           S     - INPUT VECTOR GIVING SUBSET OF A. ONLY THOSE         TAB2 170
C                   OBSERVATIONS WITH A CORRESPONDING NON-ZERO S(J) ARE TAB2 180
C                   CONSIDERED. VECTOR LENGTH IS NO.                    TAB2 190
C           NOV   - VARIABLES TO BE CROSS-TABULATED. NOV(1) IS VARIABLE TAB2 200
C                       1, NOV(2) IS VARIABLE 2. VECTOR LENGTH IS 2. NOVTAB2 210
C                       MUST BE GREATER THAN OR EQUAL TO 1 AND LESS THANTAB2 211
C                       OR EQUAL TO NV.                                 TAB2 212
C           UBO   - 3 BY 2 MATRIX GIVING LOWER LIMIT, NUMBER OF         TAB2 220
C                   INTERVALS, AND UPPER LIMIT OF BOTH VARIABLES TO BE  TAB2 230
C                   TABULATED (FIRST COLUMN FOR VARIABLE 1, SECOND      TAB2 240
C                   COLUMN FOR VARIABLE 2). IF LOWER LIMIT IS EQUAL TO  TAB2 250
C                   UPPER LIMIT FOR VARIABLE 1, THE PROGRAM USES THE    TAB2 260
C                   MINIMUM AND MAXIMUM VALUES ON EACH VARIABLE. NUMBER TAB2 270
C                   OF INTERVALS MUST INCLUDE TWO CELLS FOR UNDER AND   TAB2 280
C                   ABOVE LIMITS.                                       TAB2 290
C           FREQ  - OUTPUT MATRIX OF FREQUENCIES IN THE TWO-WAY         TAB2 300
C                   CLASSIFICATION. ORDER OF MATRIX IS INT1 BY INT2,    TAB2 310
C                   WHERE INT1 IS THE NUMBER OF INTERVALS OF VARIABLE 1 TAB2 320
C                   AND INT2 IS THE NUMBER OF INTERVALS OF VARIABLE 2.  TAB2 330
C                   INT1 AND INT2 MUST BE SPECIFIED IN THE SECOND       TAB2 340
C                   POSITION OF RESPECTIVE COLUMN OF UBO MATRIX.        TAB2 350
C           PCT   - OUTPUT MATRIX OF PERCENT FREQUENCIES, SAME ORDER    TAB2 360
C                   AS FREQ.                                            TAB2 370
C           STAT1 - OUTPUT MATRIX SUMMARIZING TOTALS, MEANS, AND        TAB2 380
C                   STANDARD DEVIATIONS FOR EACH CLASS INTERVAL OF      TAB2 390
C                   VARIABLE 1. ORDER OF MATRIX IS 3 BY INT1.           TAB2 400
C           STAT2 - SAME AS STAT1 BUT OVER VARIABLE 2. ORDER OF MATRIX  TAB2 410
C                   IS 3 BY INT2.                                       TAB2 420
C           NO    - NUMBER OF OBSERVATIONS. NO MUST BE GREATER THAN     TAB2 430
C                   OR EQUAL TO 1.                                      TAB2 431
C           NV    - NUMBER OF VARIABLES FOR EACH OBSERVATION. NV        TAB2 440
C                   MUST BE GREATER THAN OR EQUAL TO 1.                 TAB2 441
C                                                                       TAB2 450
C        REMARKS                                                        TAB2 460
C           IF S IS NULL, OUTPUT AREAS ARE SET TO ZERO                  TAB2 470
C                                                                       TAB2 480
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED                  TAB2 490
C           NONE                                                        TAB2 500
C                                                                       TAB2 510
C        METHOD                                                         TAB2 520
C           INTERVAL SIZES FOR BOTH VARIABLES ARE CALCULATED FROM THE   TAB2 530
C           GIVEN INFORMATION OR OPTIONALLY FROM THE MINIMUM AND MAXIMUMTAB2 540
C           VALUES. THE FREQUENCY AND PERCENT FREQUENCY MATRICES ARE    TAB2 550
C           DEVELOPED. MATRICES STAT1 AND STAT2 SUMMARIZING TOTALS,     TAB2 560
C           MEANS, AND STANDARD DEVIATIONS ARE THEN CALCULATED.         TAB2 570
C           THE DIVISOR FOR STANDARD DEVIATION IS ONE LESS THAN THE     TAB2 580
C           NUMBER OF OBSERVATIONS USED IN EACH CLASS INTERVAL.         TAB2 590
C                                                                       TAB2 600
C     ..................................................................TAB2 610
C                                                                       TAB2 620
      SUBROUTINE TAB2(A,S,NOV,UBO,FREQ,PCT,STAT1,STAT2,NO,NV)           TAB2 630
      DIMENSION A(1),S(1),NOV(2),UBO(3,2),FREQ(1),PCT(1),STAT1(1),      TAB2 640
     1STAT2(2),SINT(2)                                                  TAB2 650
      DIMENSION WBO(3,2)                                                TAB2 660
      DO 5 I=1,3                                                        TAB2 670
      DO 5 J=1,2                                                        TAB2 680
    5 WBO(I,J)=UBO(I,J)                                                 TAB2 690
C                                                                       TAB2 700
C        DETERMINE LIMITS                                               TAB2 710
C                                                                       TAB2 720
      DO 40 I=1,2                                                       TAB2 730
      IF(UBO(1,I)-UBO(3,I)) 40, 10, 40                                  TAB2 740
   10 VMIN=1.7E38                                                       TAB2 750
      VMAX=-1.7E38                                                      TAB2 760
      IJ=NO*(NOV(I)-1)                                                  TAB2 770
      DO 35 J=1,NO                                                      TAB2 780
      IJ=IJ+1                                                           TAB2 790
      IF(S(J)) 15,35,15                                                 TAB2 800
   15 IF(A(IJ)-VMIN) 20,25,25                                           TAB2 810
   20 VMIN=A(IJ)                                                        TAB2 820
   25 IF(A(IJ)-VMAX) 35,35,30                                           TAB2 830
   30 VMAX=A(IJ)                                                        TAB2 840
   35 CONTINUE                                                          TAB2 850
      UBO(1,I)=VMIN                                                     TAB2 860
      UBO(3,I)=VMAX                                                     TAB2 870
   40 CONTINUE                                                          TAB2 880
C                                                                       TAB2 890
C        CALCULATE INTERVAL SIZE                                        TAB2 900
C                                                                       TAB2 910
   45 DO 50 I=1,2                                                       TAB2 920
   50 SINT(I)=ABS((UBO(3,I)-UBO(1,I))/(UBO(2,I)-2.0))                   TAB2 930
C                                                                       TAB2 940
C        CLEAR OUTPUT AREAS                                             TAB2 950
C                                                                       TAB2 960
      INT1=UBO(2,1)                                                     TAB2 970
      INT2=UBO(2,2)                                                     TAB2 980
      INTT=INT1*INT2                                                    TAB2 990
      DO 55 I=1,INTT                                                    TAB21000
      FREQ(I)=0.0                                                       TAB21010
   55 PCT(I)=0.0                                                        TAB21020
      INTY=3*INT1                                                       TAB21030
      DO 60 I=1,INTY                                                    TAB21040
   60 STAT1(I)=0.0                                                      TAB21050
      INTZ=3*INT2                                                       TAB21060
      DO 65 I=1,INTZ                                                    TAB21070
   65 STAT2(I)=0.0                                                      TAB21080
C                                                                       TAB21090
C        TEST SUBSET VECTOR                                             TAB21100
C                                                                       TAB21110
      SCNT=0.0                                                          TAB21120
      INTY=INT1-1                                                       TAB21130
      INTX=INT2-1                                                       TAB21140
      IJ=NO*(NOV(1)-1)                                                  TAB21150
      IJX=NO*(NOV(2)-1)                                                 TAB21160
      DO 95 J=1,NO                                                      TAB21170
      IJ=IJ+1                                                           TAB21180
      IJX=IJX+1                                                         TAB21190
      IF(S(J)) 70,95,70                                                 TAB21200
   70 SCNT=SCNT+1.0                                                     TAB21210
C                                                                       TAB21220
C        CALCULATE FREQUENCIES                                          TAB21230
C                                                                       TAB21240
      TEMP1=UBO(1,1)-SINT(1)                                            TAB21250
      DO 75 IY=1,INTY                                                   TAB21260
      TEMP1=TEMP1+SINT(1)                                               TAB21270
      IF(A(IJ)-TEMP1) 80,75,75                                          TAB21280
   75 CONTINUE                                                          TAB21290
      IY=INT1                                                           TAB21300
   80 IYY=3*(IY-1)+1                                                    TAB21310
      STAT1(IYY)=STAT1(IYY)+A(IJ)                                       TAB21320
      IYY=IYY+1                                                         TAB21330
      STAT1(IYY)=STAT1(IYY)+1.0                                         TAB21340
      IYY=IYY+1                                                         TAB21350
      STAT1(IYY)=STAT1(IYY)+A(IJ)*A(IJ)                                 TAB21360
      TEMP2=UBO(1,2)-SINT(2)                                            TAB21370
      DO 85 IX=1,INTX                                                   TAB21380
      TEMP2=TEMP2+SINT(2)                                               TAB21390
      IF(A(IJX)-TEMP2) 90,85,85                                         TAB21400
   85 CONTINUE                                                          TAB21410
      IX=INT2                                                           TAB21420
   90 IJF=INT1*(IX-1)+IY                                                TAB21430
      FREQ(IJF)=FREQ(IJF)+1.0                                           TAB21440
      IX=3*(IX-1)+1                                                     TAB21450
      STAT2(IX)=STAT2(IX)+A(IJX)                                        TAB21460
      IX=IX+1                                                           TAB21470
      STAT2(IX)=STAT2(IX)+1.0                                           TAB21480
      IX=IX+1                                                           TAB21490
      STAT2(IX)=STAT2(IX)+A(IJX)*A(IJX)                                 TAB21500
   95 CONTINUE                                                          TAB21510
      IF (SCNT)98,151,98                                                TAB21511
C                                                                       TAB21520
C        CALCULATE PERCENT FREQUENCIES                                  TAB21530
C                                                                       TAB21540
   98 DO 100 I=1,INTT                                                   TAB21550
  100 PCT(I)=FREQ(I)*100.0/SCNT                                         TAB21560
C                                                                       TAB21570
C        CALCULATE TOTALS, MEANS, STANDARD DEVIATIONS                   TAB21580
C                                                                       TAB21590
      IXY=-1                                                            TAB21600
      DO 120 I=1,INT1                                                   TAB21610
      IXY=IXY+3                                                         TAB21620
      ISD=IXY+1                                                         TAB21630
      TEMP1=STAT1(IXY)                                                  TAB21640
      SUM=STAT1(IXY-1)                                                  TAB21650
      IF(TEMP1-1.0) 120,105,110                                         TAB21660
  105 STAT1(ISD)=0.0                                                    TAB21670
      GO TO 115                                                         TAB21680
  110 STAT1(ISD)=SQRT(ABS((STAT1(ISD)-SUM*SUM/TEMP1)/(TEMP1-1.0)))      TAB21690
  115 STAT1(IXY)=SUM/TEMP1                                              TAB21700
  120 CONTINUE                                                          TAB21710
      IXX=-1                                                            TAB21720
      DO 140 I=1,INT2                                                   TAB21730
      IXX=IXX+3                                                         TAB21740
      ISD=IXX+1                                                         TAB21750
      TEMP2=STAT2(IXX)                                                  TAB21760
      SUM=STAT2(IXX-1)                                                  TAB21770
      IF(TEMP2-1.0) 140,125,130                                         TAB21780
  125 STAT2(ISD)=0.0                                                    TAB21790
      GO TO 135                                                         TAB21800
  130 STAT2(ISD)=SQRT(ABS((STAT2(ISD)-SUM*SUM/TEMP2)/(TEMP2-1.0)))      TAB21810
  135 STAT2(IXX)=SUM/TEMP2                                              TAB21820
  140 CONTINUE                                                          TAB21830
      DO 150 I=1,3                                                      TAB21840
      DO 150 J=1,2                                                      TAB21850
  150 UBO(I,J)=WBO(I,J)                                                 TAB21860
  151 RETURN                                                            TAB21870
      END                                                               TAB21880