Google
 

Trailing-Edge - PDP-10 Archives - decus_20tap2_198111 - decus/20-0026/avdat.ssp
There are 2 other files named avdat.ssp in the archive. Click here to see a list.
C                                                                       AVDA  10
C     ..................................................................AVDA  20
C                                                                       AVDA  30
C        SUBROUTINE AVDAT                                               AVDA  40
C                                                                       AVDA  50
C        PURPOSE                                                        AVDA  60
C           PLACE DATA FOR ANALYSIS OF VARIANCE IN PROPERLY DISTRIBUTED AVDA  70
C           POSITIONS OF STORAGE.  THIS SUBROUTINE IS NORMALLY FOLLOWED AVDA  80
C           BY CALLS TO AVCAL AND MEANQ SUBROUTINES IN THE PERFORMANCE  AVDA  90
C           OF ANALYSIS OF VARIANCE FOR A COMPLETE FACTORIAL DESIGN.    AVDA 100
C                                                                       AVDA 110
C        USAGE                                                          AVDA 120
C           CALL AVDAT (K,LEVEL,N,X,L,ISTEP,KOUNT)                      AVDA 130
C                                                                       AVDA 140
C        DESCRIPTION OF PARAMETERS                                      AVDA 150
C           K     - NUMBER OF VARIABLES (FACTORS). K MUST BE .GT. ONE.  AVDA 160
C           LEVEL - INPUT VECTOR OF LENGTH K CONTAINING LEVELS (CATE-   AVDA 170
C                   GORIES) WITHIN EACH VARIABLE.                       AVDA 180
C           N     - TOTAL NUMBER OF DATA POINTS READ IN.                AVDA 190
C           X     - WHEN THE SUBROUTINE IS CALLED, THIS VECTOR CONTAINS AVDA 200
C                   DATA IN LOCATIONS X(1) THROUGH X(N).  UPON RETURNINGAVDA 210
C                   TO THE CALLING ROUTINE, THE VECTOR CONTAINS THE DATAAVDA 220
C                   IN PROPERLY REDISTRIBUTED LOCATIONS OF VECTOR X.    AVDA 230
C                   THE LENGTH OF VECTOR X IS CALCULATED BY (1) ADDING  AVDA 240
C                   ONE TO EACH LEVEL OF VARIABLE AND (2) OBTAINING THE AVDA 250
C                   CUMULATIVE PRODUCT OF ALL LEVELS.  (THE LENGTH OF   AVDA 260
C                   X = (LEVEL(1)+1)*(LEVEL(2)+1)*...*(LEVEL(K)+1).)    AVDA 270
C           L     - OUTPUT VARIABLE CONTAINING THE POSITION IN VECTOR X AVDA 280
C                   WHERE THE LAST INPUT DATA IS STORED.                AVDA 290
C           ISTEP - OUTPUT VECTOR OF LENGTH K CONTAINING CONTROL STEPS  AVDA 300
C                   WHICH ARE USED TO LOCATE DATA IN PROPER POSITIONS   AVDA 310
C                   OF VECTOR X.                                        AVDA 320
C           KOUNT - WORKING VECTOR OF LENGTH K.                         AVDA 330
C                                                                       AVDA 340
C        REMARKS                                                        AVDA 350
C           INPUT DATA MUST BE ARRANGED IN THE FOLLOWING MANNER.        AVDA 360
C           CONSIDER THE 3-VARIABLE ANALYSIS OF VARIANCE DESIGN, WHERE  AVDA 370
C           ONE VARIABLE HAS 3 LEVELS AND THE OTHER TWO VARIABLES HAVE  AVDA 380
C           2 LEVELS.  THE DATA MAY BE REPRESENTED IN THE FORM X(I,J,K),AVDA 390
C           I=1,2,3  J=1,2  K=1,2.  IN ARRANGING DATA, THE INNER        AVDA 400
C           SUBSCRIPT, NAMELY I, CHANGES FIRST.  WHEN I=3, THE NEXT     AVDA 410
C           INNER SUBSCRIPT, J, CHANGES AND SO ON UNTIL I=3, J=2, AND   AVDA 420
C           K=2.                                                        AVDA 430
C                                                                       AVDA 440
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED                  AVDA 450
C           NONE                                                        AVDA 460
C                                                                       AVDA 470
C        METHOD                                                         AVDA 480
C           THE METHOD IS BASED ON THE TECHNIQUE DISCUSSED BY H. O.     AVDA 490
C           HARTLEY IN 'MATHEMATICAL METHODS FOR DIGITAL COMPUTERS',    AVDA 500
C           EDITED BY A. RALSTON AND H. WILF, JOHN WILEY AND SONS,      AVDA 510
C           1962, CHAPTER 20.                                           AVDA 520
C                                                                       AVDA 530
C     ..................................................................AVDA 540
C                                                                       AVDA 550
      SUBROUTINE AVDAT (K,LEVEL,N,X,L,ISTEP,KOUNT)                      AVDA 560
      DIMENSION LEVEL(1),X(1),ISTEP(1),KOUNT(1)                         AVDA 570
C                                                                       AVDA 580
C        ...............................................................AVDA 590
C                                                                       AVDA 600
C        IF A DOUBLE PRECISION VERSION OF THIS ROUTINE IS DESIRED, THE  AVDA 610
C        C IN COLUMN 1 SHOULD BE REMOVED FROM THE DOUBLE PRECISION      AVDA 620
C        STATEMENT WHICH FOLLOWS.                                       AVDA 630
C                                                                       AVDA 640
C     DOUBLE PRECISION X                                                AVDA 650
C                                                                       AVDA 660
C        THE C MUST ALSO BE REMOVED FROM DOUBLE PRECISION STATEMENTS    AVDA 670
C        APPEARING IN OTHER ROUTINES USED IN CONJUNCTION WITH THIS      AVDA 680
C        ROUTINE.                                                       AVDA 690
C                                                                       AVDA 700
C        ...............................................................AVDA 710
C                                                                       AVDA 720
C     CALCULATE TOTAL DATA AREA REQUIRED                                AVDA 730
C                                                                       AVDA 740
      M=LEVEL(1)+1                                                      AVDA 750
      DO 105 I=2,K                                                      AVDA 760
  105 M=M*(LEVEL(I)+1)                                                  AVDA 770
C                                                                       AVDA 780
C     MOVE DATA TO THE UPPER PART OF THE ARRAY X                        AVDA 790
C     FOR THE PURPOSE OF REARRANGEMENT                                  AVDA 800
C                                                                       AVDA 810
      N1=M+1                                                            AVDA 820
      N2=N+1                                                            AVDA 830
      DO 107 I=1,N                                                      AVDA 840
      N1=N1-1                                                           AVDA 850
      N2=N2-1                                                           AVDA 860
  107 X(N1)=X(N2)                                                       AVDA 870
C                                                                       AVDA 880
C     CALCULATE MULTIPLIERS TO BE USED IN FINDING STORAGE LOCATIONS FOR AVDA 890
C     INPUT DATA                                                        AVDA 900
C                                                                       AVDA 910
      ISTEP(1)=1                                                        AVDA 920
      DO 110 I=2,K                                                      AVDA 930
  110 ISTEP(I)=ISTEP(I-1)*(LEVEL(I-1)+1)                                AVDA 940
      DO 115 I=1,K                                                      AVDA 950
  115 KOUNT(I)=1                                                        AVDA 960
C                                                                       AVDA 970
C     PLACE DATA IN PROPER LOCATIONS                                    AVDA 980
C                                                                       AVDA 990
      N1=N1-1                                                           AVDA1000
      DO 135 I=1,N                                                      AVDA1010
      L=KOUNT(1)                                                        AVDA1020
      DO 120 J=2,K                                                      AVDA1030
  120 L=L+ISTEP(J)*(KOUNT(J)-1)                                         AVDA1040
      N1=N1+1                                                           AVDA1050
      X(L)=X(N1)                                                        AVDA1060
      DO 130 J=1,K                                                      AVDA1070
      IF(KOUNT(J)-LEVEL(J)) 124, 125, 124                               AVDA1080
  124 KOUNT(J)=KOUNT(J)+1                                               AVDA1090
      GO TO 135                                                         AVDA1100
  125 KOUNT(J)=1                                                        AVDA1110
  130 CONTINUE                                                          AVDA1120
  135 CONTINUE                                                          AVDA1130
      RETURN                                                            AVDA1140
      END                                                               AVDA1150