mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-06 18:51:39 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
722 lines
57 KiB
Plaintext
722 lines
57 KiB
Plaintext
BEGIN FAN 1
|
|
COMMENT FACTOR ANALYSIS FAN 2
|
|
CHARLES L. CLARK FAN 3
|
|
PROFESSIONAL SERVICES DIVISIONAL GROUP FAN 4
|
|
BURROUGHS CORPORATION FAN 5
|
|
PROGRAM CONTAINS 712 CARDS FAN 6
|
|
FIRST RELEASE DATE DEC. 1, 1964 ; FAN 7
|
|
INTEGER I,NVAR,NSAM,CAS,NRO ; FAN 8
|
|
INTEGER ARRAY ID[0:4] ; FAN 9
|
|
BOOLEAN TR ; FAN 10
|
|
REAL LIM ; FAN 11
|
|
LABEL START,NOMO,LL1 ; FAN 12
|
|
FORMAT IN FORM1 (5A6,I3,I5,I3,F5.0,I3,L5) , FAN 13
|
|
FORM2 (12I6), FAN 14
|
|
FORM3 (26I3), FAN 15
|
|
FORM4 (12F6.1) ; FAN 16
|
|
FORMAT OUT TITLE(X52,"FACTOR ANALYSIS"///), FAN 17
|
|
FRM1 (X45,5A6//X1,"CASE",I3/X1,"NUMBER OF VARIABLES",I4/ FAN 18
|
|
X1,"SAMPLE SIZE",I6), FAN 19
|
|
FRM2 (//X1,"MEAN VALUE OF VARIABLES"), FAN 20
|
|
FRM3 (8F15.5), FAN 21
|
|
FRM4 (//X1,"STANDARD DEVIATIONS"), FAN 22
|
|
FRM5 (//X1,"CORRELATION COEFFICIENTS"), FAN 23
|
|
FRM6 (/X1,"ROW",I3/(10F12.5)/), FAN 24
|
|
FRM7 (//X1,"EIGENVALUES"), FAN 25
|
|
FRM8 (//X7,"ACCURACY INSUFFICIENT FOR MORE EIGENVALUES"), FAN 26
|
|
FRM9 (//X1,"CUMULATIVE PROPORTION OF TOTAL VARIANCE"), FAN 27
|
|
FRM10(//X1,"EIGENVECTORS"), FAN 28
|
|
FRM11(/X1,"VECTOR",I3/(10F12.5)/), FAN 29
|
|
FRM12(//X1,"FACTOR MATRIX"), FAN 30
|
|
FRM13(/X1,"VARIABLE",I3/(10F12.5)/), FAN 31
|
|
FRM14(//X1,"CHECK MATRIX - EIGENVALUES ON DIAGONAL"), FAN 32
|
|
FRM15(//X1,"CHECK MATRIX - CORRELATION COEFFICIENTS"), FAN 33
|
|
FRM16(//X1,"VALUE GIVEN TO LIMIT NUMBER OF FACTORS TO BE",FAN 34
|
|
" ROTATED",F9.4/), FAN 35
|
|
FRM17(//X1,"FACTOR MATRIX CAN NOT BE ROTATED, CHANGE THE",FAN 36
|
|
" LIMIT VALUE LIM"/), FAN 37
|
|
FRM18(/X1,"NUMBER OF FACTORS ROTATED",I4/X1,"NUMBER OF ", FAN 38
|
|
"ITERATION CYCLES",I3///X1,"ROTATED FACTOR MATRIX"),FAN 39
|
|
FRM19(/X1,"ORIGINAL AND SUCCESSIVE VARIANCES"//X3,"CYCLE",FAN 40
|
|
" NO.",X10,"VARIANCES"), FAN 41
|
|
FRM20(I8,X8,F15.7), FAN 42
|
|
FRM21(//X1,"CHECK ON COMMUNALITIES"//X3,"VARIABLES",X8, FAN 43
|
|
"ORIGINAL",X9,"FINAL",X8,"DIFFERENCE"), FAN 44
|
|
FRM22(I8,X5,3F15.5) ; FAN 45
|
|
FILE IN CARDR (1,10) ; FAN 46
|
|
FILE OUT PRINT 1 (1,15) ; FAN 47
|
|
START: BEGIN FAN 48
|
|
LIST HEAD(FOR I ~ 0 STEP 1 UNTIL 4 DO ID[I],NVAR,NSAM,CAS, FAN 49
|
|
LIM,NRO,TR) ; FAN 50
|
|
READ (CARDR,FORM1,HEAD) [NOMO] ; FAN 51
|
|
WRITE(PRINT[PAGE]) ; FAN 52
|
|
WRITE(PRINT,TITLE) FAN 53
|
|
END ; FAN 54
|
|
LL1: BEGIN FAN 55
|
|
INTEGER EX ; FAN 56
|
|
REAL NS,NSM1,RN ; FAN 57
|
|
LABEL LL2 ; FAN 58
|
|
NS ~ NSAM ; FAN 59
|
|
NSM1 ~ NS - 1.0 ; FAN 60
|
|
EX ~ NVAR + 50 ; FAN 61
|
|
RN ~ 0.0 ; FAN 62
|
|
LL2: BEGIN FAN 63
|
|
INTEGER J,JJ,K,KK,L,LL,II,M,MM,Z ; FAN 64
|
|
INTEGER ARRAY T[0:99],SC[0:NVAR] ; FAN 65
|
|
REAL NORM,T1,T2,SYN,KOS,P,TA,TE,BE,W,S,MARY,B ; FAN 66
|
|
REAL ARRAY A[0:NVAR,0:NVAR],DATA[0:EX],SCA[0:NVAR,0:NVAR], FAN 67
|
|
SUMXX[0:NVAR,0:NVAR],R[0:NVAR,0:NVAR],DIAG[0:NVAR], FAN 68
|
|
VAL[0:NVAR],SD[0:NVAR],X[0:NVAR],SUMX[0:NVAR] ; FAN 69
|
|
LABEL NAXT,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15, FAN 70
|
|
LL3,LL23,LL24,LL25,LL26,LL27,LL33,LL34,LL35 ; FAN 71
|
|
LIST SCAL(FOR I ~ 1 STEP 1 UNTIL NVAR DO SC[I]), FAN 72
|
|
TRAN(FOR J ~ 1 STEP 1 UNTIL NVAR DO T[J]), FAN 73
|
|
DATR(FOR L ~ 1 STEP 1 UNTIL NVAR DO DATA[L]), FAN 74
|
|
OUTT(FOR I ~ 0 STEP 1 UNTIL 4 DO ID[I],CAS,NVAR,NSAM), FAN 75
|
|
AVEX(FOR I ~ 1 STEP 1 UNTIL NVAR DO SUMX[I]), FAN 76
|
|
SDEV(FOR K ~ 1 STEP 1 UNTIL NVAR DO A[K,1]), FAN 77
|
|
CORR(I,FOR J ~ 1 STEP 1 UNTIL NVAR DO SCA[I,J]), FAN 78
|
|
EVAL(FOR I ~ 1 STEP 1 UNTIL Z DO SUMX[I]), FAN 79
|
|
CUMP(FOR I ~ 1 STEP 1 UNTIL Z DO A[I,1]), FAN 80
|
|
EVEC(J,FOR I ~ 1 STEP 1 UNTIL NVAR DO SCA[I,J]), FAN 81
|
|
FACT(I,FOR J ~ 1 STEP 1 UNTIL Z DO A[I,J]), FAN 82
|
|
CHEK(I,FOR J ~ 1 STEP 1 UNTIL Z DO R[I,J]), FAN 83
|
|
ROTM(I,FOR J ~ 1 STEP 1 UNTIL NRO DO A[I,J]), FAN 84
|
|
CAS4(FOR J ~ 1 STEP 1 UNTIL NVAR DO SCA[I,J]) ; FAN 85
|
|
SWITCH U ~ L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15 ; FAN 86
|
|
FILE TAPEB 2 (1,10) ; FAN 87
|
|
WRITE(PRINT,FRM1,OUTT) ; FAN 88
|
|
READ (CARDR,FORM2,SCAL) ; FAN 89
|
|
IF CAS = 4 THEN FAN 90
|
|
BEGIN FAN 91
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 92
|
|
BEGIN FAN 93
|
|
READ (CARDR,FORM4,CAS4) ; FAN 94
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 95
|
|
SCA[I,J] ~ SCA[I,J]|10.0*SC[J] FAN 96
|
|
END ; FAN 97
|
|
GO TO LL33 FAN 98
|
|
END ; FAN 99
|
|
IF CAS = 1 THEN FAN 100
|
|
RN ~ 1.0 ; FAN 101
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 102
|
|
BEGIN FAN 103
|
|
A[I,2] ~ 0.0 ; FAN 104
|
|
A[I,3] ~ 0.0 ; FAN 105
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 106
|
|
SUMXX[I,J] ~ 0.0 FAN 107
|
|
END ; FAN 108
|
|
IF TR THEN FAN 109
|
|
READ (CARDR,FORM3,TRAN) ; FAN 110
|
|
FOR M ~ 1 STEP 1 UNTIL NSAM DO FAN 111
|
|
BEGIN FAN 112
|
|
READ (CARDR,FORM4,DATR) ; FAN 113
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 114
|
|
BEGIN FAN 115
|
|
X[J] ~ DATA[J]|10.0*SC[J] ; FAN 116
|
|
DATA[J] ~ X[J] FAN 117
|
|
END ; FAN 118
|
|
IF TR THEN FAN 119
|
|
BEGIN FAN 120
|
|
FOR J ~ NVAR STEP -1 UNTIL 1 DO FAN 121
|
|
BEGIN FAN 122
|
|
GO TO U[T[J]] ; FAN 123
|
|
L1: GO TO NAXT ; FAN 124
|
|
L2: DATA[J] ~ X[J]|X[J] ; FAN 125
|
|
GO TO NAXT ; FAN 126
|
|
L3: DATA[J] ~ 1 / X[J] ; FAN 127
|
|
GO TO NAXT ; FAN 128
|
|
L4: DATA[J] ~ SQRT(X[J]) ; FAN 129
|
|
GO TO NAXT ; FAN 130
|
|
L5: DATA[J] ~ EXP(X[J]) ; FAN 131
|
|
GO TO NAXT ; FAN 132
|
|
L6: DATA[J] ~ LN(X[J]) ; FAN 133
|
|
GO TO NAXT ; FAN 134
|
|
L7: DATA[J] ~ SIN(X[J]) ; FAN 135
|
|
GO TO NAXT ; FAN 136
|
|
L8: DATA[J] ~ COS(X[J]) ; FAN 137
|
|
GO TO NAXT ; FAN 138
|
|
L9: DATA[J] ~ X[J+1] ; FAN 139
|
|
GO TO NAXT ; FAN 140
|
|
L10: DATA[J] ~ X[J+2] ; FAN 141
|
|
GO TO NAXT ; FAN 142
|
|
L11: DATA[J] ~ X[J+3] ; FAN 143
|
|
GO TO NAXT ; FAN 144
|
|
L12: DATA[J] ~ X[J+4] ; FAN 145
|
|
GO TO NAXT ; FAN 146
|
|
L13: DATA[J] ~ X[J+5] ; FAN 147
|
|
GO TO NAXT ; FAN 148
|
|
L14: DATA[J] ~ X[J+6] ; FAN 149
|
|
GO TO NAXT ; FAN 150
|
|
L15: DATA[J] ~ X[J+7] ; FAN 151
|
|
GO TO NAXT ; FAN 152
|
|
NAXT: END FAN 153
|
|
END ; FAN 154
|
|
FOR L ~ 1 STEP 1 UNTIL NVAR DO FAN 155
|
|
BEGIN FAN 156
|
|
A[L,2] ~ A[L,2] + DATA[L] ; FAN 157
|
|
A[L,3] ~ A[L,3] + DATA[L]|DATA[L] FAN 158
|
|
END ; FAN 159
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 160
|
|
FOR K ~ 1 STEP 1 UNTIL NVAR DO FAN 161
|
|
SUMXX[J,K] ~ SUMXX[J,K] + DATA[J]|DATA[K] FAN 162
|
|
END ; FAN 163
|
|
JJ ~ NVAR - 1 ; FAN 164
|
|
FOR I ~ 1 STEP 1 UNTIL JJ DO FAN 165
|
|
BEGIN FAN 166
|
|
KK ~ I + 1 ; FAN 167
|
|
FOR J ~ KK STEP 1 UNTIL NVAR DO FAN 168
|
|
SUMXX[J,I] ~ SUMXX[I,J] FAN 169
|
|
END ; FAN 170
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 171
|
|
SUMX[I] ~ A[I,2]/NS ; FAN 172
|
|
WRITE(PRINT,FRM2) ; FAN 173
|
|
WRITE(PRINT,FRM3,AVEX) ; FAN 174
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 175
|
|
BEGIN FAN 176
|
|
SUMX[J] ~ A[J,3] - ((A[J,2]|A[J,2])/NS) ; FAN 177
|
|
A[J,1] ~ SQRT(SUMX[J]/NSM1) FAN 178
|
|
END ; FAN 179
|
|
WRITE(PRINT,FRM4) ; FAN 180
|
|
WRITE(PRINT,FRM3,SDEV) ; FAN 181
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 182
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 183
|
|
R[I,J] ~ SUMXX[I,J] - ((A[I,2]|A[J,2])/NS) ; FAN 184
|
|
FOR K ~ 1 STEP 1 UNTIL JJ DO FAN 185
|
|
BEGIN FAN 186
|
|
KK ~ K+1 ; FAN 187
|
|
FOR L ~ KK STEP 1 UNTIL NVAR DO FAN 188
|
|
R[L,K] ~ R[K,L] FAN 189
|
|
END ; FAN 190
|
|
LL ~ NVAR - 1 ; FAN 191
|
|
IF CAS < 3 THEN FAN 192
|
|
GO TO LL3 ; FAN 193
|
|
FOR II ~ 1 STEP 1 UNTIL NVAR DO FAN 194
|
|
BEGIN FAN 195
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 196
|
|
T[I] ~ I ; FAN 197
|
|
FOR I ~ II STEP 1 UNTIL LL DO FAN 198
|
|
T[I] ~ T[I+1] ; FAN 199
|
|
T[NVAR] ~ II ; FAN 200
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 201
|
|
BEGIN FAN 202
|
|
JJ ~ T[J] ; FAN 203
|
|
FOR I ~ 1 STEP 1 UNTIL J DO FAN 204
|
|
BEGIN FAN 205
|
|
KK ~ T[I] ; FAN 206
|
|
SUMXX[I,J] ~ R[KK,JJ] FAN 207
|
|
END FAN 208
|
|
END ; FAN 209
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 210
|
|
A[1,J] ~ SUMXX[1,J] ; FAN 211
|
|
FOR I ~ 1 STEP 1 UNTIL LL DO FAN 212
|
|
BEGIN FAN 213
|
|
FOR J ~ I STEP 1 UNTIL NVAR DO FAN 214
|
|
SCA[I,J] ~ A[I,J]/A[I,I] ; FAN 215
|
|
MM ~ I+1 ; FAN 216
|
|
FOR J ~ MM STEP 1 UNTIL NVAR DO FAN 217
|
|
BEGIN FAN 218
|
|
S ~ 0.0 ; FAN 219
|
|
FOR M ~ 1 STEP 1 UNTIL I DO FAN 220
|
|
S ~ S + SCA[M,MM]|A[M,J] ; FAN 221
|
|
A[MM,J] ~ SUMXX[MM,J] - S FAN 222
|
|
END FAN 223
|
|
END ; FAN 224
|
|
DATA[II] ~ 0.0 ; FAN 225
|
|
FOR I ~ 1 STEP 1 UNTIL LL DO FAN 226
|
|
DATA[II] ~ DATA[II] + A[I,NVAR]|SCA[I,NVAR] ; FAN 227
|
|
DATA[II] ~ DATA[II] / SUMXX[NVAR,NVAR] FAN 228
|
|
END ; FAN 229
|
|
LL3: FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 230
|
|
SUMX[I] ~ SQRT(SUMX[I]) ; FAN 231
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 232
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 233
|
|
SCA[I,J] ~ R[I,J] / (SUMX[I]|SUMX[J]) ; FAN 234
|
|
FOR I ~ 1 STEP 1 UNTIL LL DO FAN 235
|
|
BEGIN FAN 236
|
|
KK ~ I+1 ; FAN 237
|
|
FOR J ~ KK STEP 1 UNTIL NVAR DO FAN 238
|
|
SCA[J,I] ~ SCA[I,J] FAN 239
|
|
END ; FAN 240
|
|
IF CAS = 3 THEN FAN 241
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 242
|
|
SCA[I,I] ~ DATA[I] ; FAN 243
|
|
LL33: WRITE(PRINT,FRM5) ; FAN 244
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 245
|
|
WRITE(PRINT,FRM6,CORR) ; FAN 246
|
|
COMMENT CALCULATE EIGENVALUES AND EIGENVECTORS ; FAN 247
|
|
LL34: BEGIN FAN 248
|
|
REAL ARRAY IND[0:NVAR] ; FAN 249
|
|
LABEL LL4,LL5,LL6,LL7,LL8,LL9,LL10,LL11,LL12,LL13,LL14,LL15, FAN 250
|
|
LL16,LL17,LL18,LL19,LL20,LL21,LL22,LL36 ; FAN 251
|
|
NORM ~ 0.0 ; FAN 252
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 253
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 254
|
|
NORM ~ NORM + SCA[I,J]*2 ; FAN 255
|
|
NORM ~ SQRT(NORM) ; FAN 256
|
|
IF NVAR = 0 THEN FAN 257
|
|
GO TO LL4 ; FAN 258
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 259
|
|
BEGIN FAN 260
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 261
|
|
R[I,J] ~ 0.0 ; FAN 262
|
|
R[I,I] ~ 1.0 FAN 263
|
|
END ; FAN 264
|
|
LL4: EX ~ 1 ; FAN 265
|
|
LL ~ NVAR - 2 ; FAN 266
|
|
IF LL < 0 THEN FAN 267
|
|
GO TO LL23 ; FAN 268
|
|
IF LL = 0 THEN FAN 269
|
|
GO TO LL5 ; FAN 270
|
|
FOR I ~ 1 STEP 1 UNTIL LL DO FAN 271
|
|
BEGIN FAN 272
|
|
II ~ I + 2 ; FAN 273
|
|
FOR J ~ II STEP 1 UNTIL NVAR DO FAN 274
|
|
BEGIN FAN 275
|
|
T1 ~ SCA[I,I+1] ; FAN 276
|
|
T2 ~ SCA[I,J] ; FAN 277
|
|
LL20: IF T2 ! 0 THEN FAN 278
|
|
BEGIN FAN 279
|
|
LL18: TE ~ SQRT(T1|T1 + T2|T2) ; FAN 280
|
|
KOS ~ T1 / TE ; FAN 281
|
|
SYN ~ T2 / TE ; FAN 282
|
|
IF EX = 1 THEN FAN 283
|
|
GO TO LL22 FAN 284
|
|
ELSE FAN 285
|
|
GO TO LL19 FAN 286
|
|
END ; FAN 287
|
|
IF EX = 1 THEN FAN 288
|
|
GO TO LL36 FAN 289
|
|
ELSE FAN 290
|
|
GO TO LL18 ; FAN 291
|
|
LL22: FOR K ~ I STEP 1 UNTIL NVAR DO FAN 292
|
|
BEGIN FAN 293
|
|
T2 ~ KOS | SCA[K,I+1] + SYN | SCA[K,J] ; FAN 294
|
|
SCA[K,J] ~ KOS | SCA[K,J] - SYN | SCA[K,I+1] ; FAN 295
|
|
SCA[K,I+1] ~ T2 FAN 296
|
|
END ; FAN 297
|
|
FOR K ~ I STEP 1 UNTIL NVAR DO FAN 298
|
|
BEGIN FAN 299
|
|
T2 ~ KOS | SCA[I+1,K] + SYN | SCA[J,K] ; FAN 300
|
|
SCA[J,K] ~ KOS | SCA[J,K] - SYN | SCA[I+1,K] ; FAN 301
|
|
SCA[I+1,K] ~ T2 FAN 302
|
|
END ; FAN 303
|
|
IF NVAR ! 0 THEN FAN 304
|
|
BEGIN FAN 305
|
|
FOR K ~ 1 STEP 1 UNTIL NVAR DO FAN 306
|
|
BEGIN FAN 307
|
|
T2 ~ KOS | R[K,I+1] + SYN | R[K,J] ; FAN 308
|
|
R[K,J] ~ KOS | R[K,J] - SYN | R[K,I+1] ; FAN 309
|
|
R[K,I+1] ~ T2 FAN 310
|
|
END FAN 311
|
|
END ; FAN 312
|
|
LL36: END FAN 313
|
|
END ; FAN 314
|
|
LL5: FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 315
|
|
BEGIN FAN 316
|
|
DIAG[I] ~ SCA[I,I] ; FAN 317
|
|
SUMX[I] ~ NORM ; FAN 318
|
|
VAL[I] ~ -NORM FAN 319
|
|
END ; FAN 320
|
|
FOR I ~ 2 STEP 1 UNTIL NVAR DO FAN 321
|
|
BEGIN FAN 322
|
|
SD[I-1] ~ SCA[I-1,I] ; FAN 323
|
|
X[I-1] ~ SD[I-1]*2 FAN 324
|
|
END ; FAN 325
|
|
TA ~ 0.0 ; FAN 326
|
|
I ~ 1 ; FAN 327
|
|
LL13: M ~ 0 ; FAN 328
|
|
T2 ~ 0.0 ; FAN 329
|
|
T1 ~ 1.0 ; FAN 330
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 331
|
|
BEGIN FAN 332
|
|
P ~ DIAG[J] - TA ; FAN 333
|
|
IF T2 = 0 THEN FAN 334
|
|
GO TO LL6 ; FAN 335
|
|
IF T1 = 0 THEN FAN 336
|
|
GO TO LL7 ; FAN 337
|
|
TE ~ P|T1 - X[J-1]|T2 ; FAN 338
|
|
GO TO LL8 ; FAN 339
|
|
LL6: IF T1 < 0 THEN FAN 340
|
|
BEGIN FAN 341
|
|
T1 ~ -1.0 ; FAN 342
|
|
TE ~ -P ; FAN 343
|
|
GO TO LL8 FAN 344
|
|
END ; FAN 345
|
|
LL9: T1 ~ 1.0 ; FAN 346
|
|
TE ~ P ; FAN 347
|
|
GO TO LL8 ; FAN 348
|
|
LL7: IF X[J-1] = 0 THEN FAN 349
|
|
GO TO LL9 ; FAN 350
|
|
IF T2 } 0 THEN FAN 351
|
|
BEGIN FAN 352
|
|
TE ~ -1.0 ; FAN 353
|
|
GO TO LL8 FAN 354
|
|
END ; FAN 355
|
|
TE ~ 1.0 ; FAN 356
|
|
LL8: IF ((T1 < 0) AND (TE < 0)) OR ((T1 } 0) AND (TE } 0)) THENFAN 357
|
|
M ~ M+1 ; FAN 358
|
|
T2 ~ T1 ; FAN 359
|
|
T1 ~ TE FAN 360
|
|
END ; FAN 361
|
|
FOR K ~ 1 STEP 1 UNTIL NVAR DO FAN 362
|
|
BEGIN FAN 363
|
|
IF K { M THEN FAN 364
|
|
BEGIN FAN 365
|
|
IF TA > VAL[K] THEN FAN 366
|
|
VAL[K] ~ TA FAN 367
|
|
END FAN 368
|
|
ELSE FAN 369
|
|
BEGIN FAN 370
|
|
IF TA < SUMX[K] THEN FAN 371
|
|
SUMX[K] ~ TA FAN 372
|
|
END FAN 373
|
|
END ; FAN 374
|
|
LL12: W ~ SUMX[I] - VAL[I] - 5.0@-8 ; FAN 375
|
|
IF W { 0 THEN FAN 376
|
|
GO TO LL10 ; FAN 377
|
|
IF SUMX[I] = 0 THEN FAN 378
|
|
GO TO LL11 ; FAN 379
|
|
W ~ ABS(VAL[I] / SUMX[I] - 1.0) - 5.0@-8 ; FAN 380
|
|
IF W > 0 THEN FAN 381
|
|
GO TO LL11 ; FAN 382
|
|
LL10: I ~ I + 1 ; FAN 383
|
|
IF I > NVAR THEN FAN 384
|
|
GO TO LL14 FAN 385
|
|
ELSE FAN 386
|
|
GO TO LL12 ; FAN 387
|
|
LL11: TA ~ (VAL[I] + SUMX[I]) / 2.0 ; FAN 388
|
|
GO TO LL13 ; FAN 389
|
|
LL14: EX ~ 2 ; FAN 390
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 391
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 392
|
|
SCA[I,J] ~ 0.0 ; FAN 393
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 394
|
|
BEGIN FAN 395
|
|
IF I = 1 THEN FAN 396
|
|
GO TO LL21 ; FAN 397
|
|
W ~ SUMX[I-1] - SUMX[I] - 5.0@-7 ; FAN 398
|
|
IF W { 0 THEN FAN 399
|
|
GO TO LL16 ; FAN 400
|
|
IF SUMX[I-1] ! 0 THEN FAN 401
|
|
BEGIN FAN 402
|
|
W ~ ABS(SUMX[I] / SUMX[I-1] - 1.0) - 5.0@-7 ; FAN 403
|
|
IF W { 0 THEN FAN 404
|
|
GO TO LL16 FAN 405
|
|
END ; FAN 406
|
|
LL21: KOS ~ 1.0 ; FAN 407
|
|
SYN ~ 0.0 ; FAN 408
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 409
|
|
BEGIN FAN 410
|
|
IF J = 1 THEN FAN 411
|
|
GO TO LL15 FAN 412
|
|
ELSE FAN 413
|
|
GO TO LL20 ; FAN 414
|
|
LL19: X[J-1] ~ SYN ; FAN 415
|
|
DATA[J-1] ~ KOS ; FAN 416
|
|
VAL[J-1] ~ T1|KOS + T2|SYN ; FAN 417
|
|
LL15: T1 ~ (DIAG[J]-SUMX[I])|KOS - TA|SYN ; FAN 418
|
|
T2 ~ SD[J] ; FAN 419
|
|
TA ~ SD[J]|KOS FAN 420
|
|
END ; FAN 421
|
|
VAL[NVAR] ~ T1 ; FAN 422
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 423
|
|
IND[J] ~ 0 ; FAN 424
|
|
LL16: TE ~ NORM ; FAN 425
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 426
|
|
BEGIN FAN 427
|
|
IF IND[J] } 1 THEN FAN 428
|
|
GO TO LL17 ; FAN 429
|
|
IF ABS(TE) { ABS(VAL[J]) THEN FAN 430
|
|
GO TO LL17 ; FAN 431
|
|
TE ~ VAL[J] ; FAN 432
|
|
LL ~ J ; FAN 433
|
|
LL17: END ; FAN 434
|
|
IND[LL] ~ 1 ; FAN 435
|
|
P ~ 1.0 ; FAN 436
|
|
IF LL ! 1 THEN FAN 437
|
|
BEGIN FAN 438
|
|
FOR K ~ 2 STEP 1 UNTIL LL DO FAN 439
|
|
BEGIN FAN 440
|
|
M ~ LL+1-K ; FAN 441
|
|
SCA[M+1,I] ~ DATA[M]|P ; FAN 442
|
|
P ~ -P|X[M] FAN 443
|
|
END FAN 444
|
|
END ; FAN 445
|
|
SCA[1,I] ~ P FAN 446
|
|
END ; FAN 447
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 448
|
|
BEGIN FAN 449
|
|
FOR K ~ 1 STEP 1 UNTIL NVAR DO FAN 450
|
|
IND[K] ~ SCA[K,J] ; FAN 451
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 452
|
|
BEGIN FAN 453
|
|
SCA[I,J] ~ 0.0 ; FAN 454
|
|
FOR K ~ 1 STEP 1 UNTIL NVAR DO FAN 455
|
|
SCA[I,J] ~ R[I,K]|IND[K] + SCA[I,J] FAN 456
|
|
END FAN 457
|
|
END FAN 458
|
|
END ; FAN 459
|
|
LL23: FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 460
|
|
BEGIN FAN 461
|
|
IF SUMX[I] { RN THEN FAN 462
|
|
BEGIN FAN 463
|
|
Z ~ I-1 ; FAN 464
|
|
GO TO LL24 FAN 465
|
|
END FAN 466
|
|
END ; FAN 467
|
|
Z ~ NVAR ; FAN 468
|
|
LL24: WRITE(PRINT,FRM7) ; FAN 469
|
|
WRITE(PRINT,FRM3,EVAL) ; FAN 470
|
|
IF NVAR > Z THEN FAN 471
|
|
WRITE(PRINT,FRM8) ; FAN 472
|
|
COMMENT CALCULATE CUMULATIVE PROPORTIONS OF TOTAL VARIANCE ; FAN 473
|
|
A[1,1] ~ SUMX[1] ; FAN 474
|
|
FOR I ~ 2 STEP 1 UNTIL Z DO FAN 475
|
|
A[I,1] ~ A[I-1,1] + SUMX[I] ; FAN 476
|
|
FOR I ~ 1 STEP 1 UNTIL Z DO FAN 477
|
|
A[I,1] ~ A[I,1] / (NVAR | A[Z,1]) ; FAN 478
|
|
WRITE(PRINT,FRM9) ; FAN 479
|
|
WRITE(PRINT,FRM3,CUMP) ; FAN 480
|
|
WRITE(PRINT,FRM10) ; FAN 481
|
|
FOR J ~ 1 STEP 1 UNTIL Z DO FAN 482
|
|
WRITE(PRINT,FRM11,EVEC) ; FAN 483
|
|
FOR I ~ 1 STEP 1 UNTIL Z DO FAN 484
|
|
BEGIN FAN 485
|
|
SUMX[I] ~ SQRT(SUMX[I]) ; FAN 486
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 487
|
|
A[J,I] ~ SUMX[I]|SCA[J,I] FAN 488
|
|
END ; FAN 489
|
|
WRITE(PRINT,FRM12) ; FAN 490
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 491
|
|
WRITE(PRINT,FRM13,FACT) ; FAN 492
|
|
IF NVAR > Z THEN FAN 493
|
|
BEGIN FAN 494
|
|
FOR I ~ 1 STEP 1 UNTIL Z DO FAN 495
|
|
FOR J ~ 1 STEP 1 UNTIL Z DO FAN 496
|
|
BEGIN FAN 497
|
|
R[I,J] ~ 0.0 ; FAN 498
|
|
FOR K ~ 1 STEP 1 UNTIL NVAR DO FAN 499
|
|
R[I,J] ~ R[I,J] + A[K,I]|A[K,J] FAN 500
|
|
END ; FAN 501
|
|
WRITE(PRINT,FRM14) FAN 502
|
|
END FAN 503
|
|
ELSE FAN 504
|
|
BEGIN FAN 505
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 506
|
|
FOR J ~ 1 STEP 1 UNTIL NVAR DO FAN 507
|
|
BEGIN FAN 508
|
|
R[I,J] ~ 0.0 ; FAN 509
|
|
FOR K ~ 1 STEP 1 UNTIL NVAR DO FAN 510
|
|
R[I,J] ~ R[I,J] + A[I,K]|A[J,K] FAN 511
|
|
END ; FAN 512
|
|
WRITE(PRINT,FRM15) FAN 513
|
|
END ; FAN 514
|
|
FOR I ~ 1 STEP 1 UNTIL Z DO FAN 515
|
|
WRITE(PRINT,FRM6,CHEK) ; FAN 516
|
|
WRITE(PRINT,FRM16,LIM) ; FAN 517
|
|
IF LIM = 0 THEN FAN 518
|
|
GO TO LL26 ; FAN 519
|
|
FOR J ~ 1 STEP 1 UNTIL Z DO FAN 520
|
|
BEGIN FAN 521
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 522
|
|
BEGIN FAN 523
|
|
W ~ ABS(A[I,J]) ; FAN 524
|
|
IF W } LIM THEN FAN 525
|
|
GO TO LL25 FAN 526
|
|
END ; FAN 527
|
|
NRO ~ J-1 ; FAN 528
|
|
GO TO LL27 ; FAN 529
|
|
LL25: END ; FAN 530
|
|
NRO ~ Z ; FAN 531
|
|
GO TO LL27 ; FAN 532
|
|
LL26: IF (NRO=0) OR (NRO>Z) THEN FAN 533
|
|
NRO ~ Z ; FAN 534
|
|
LL27: IF NRO { 1 THEN FAN 535
|
|
BEGIN FAN 536
|
|
WRITE(PRINT,FRM17) ; FAN 537
|
|
GO TO START FAN 538
|
|
END ; FAN 539
|
|
COMMENT ROTATE FACTOR MATRIX ; FAN 540
|
|
LL35: BEGIN FAN 541
|
|
REAL TN4P,ST,CT,S2T,C2T,S4T,C4T,TN4T,CN4T ; FAN 542
|
|
LABEL LL28,LL29,LL30,LL31,LL32 ; FAN 543
|
|
T1 ~ 0.00116 ; FAN 544
|
|
JJ ~ 3 ; FAN 545
|
|
P ~ 1.0 ; FAN 546
|
|
KK ~ 0 ; FAN 547
|
|
MM ~ (NRO|(NRO-1))/2 ; FAN 548
|
|
DATA[1] ~ 0.0 ; FAN 549
|
|
LL ~ NRO - 1 ; FAN 550
|
|
II ~ 1 ; FAN 551
|
|
EX ~ 0 ; FAN 552
|
|
T2 ~ NVAR ; FAN 553
|
|
TA ~ T2*2 ; FAN 554
|
|
W ~ 1.0 / SQRT(2.0) ; FAN 555
|
|
NS ~ 0.0001 ; FAN 556
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 557
|
|
SUMX[I] ~ 0.0 ; FAN 558
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 559
|
|
FOR J ~ 1 STEP 1 UNTIL NRO DO FAN 560
|
|
SUMX[I] ~ SUMX[I] + A[I,J]|A[I,J] ; FAN 561
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 562
|
|
BEGIN FAN 563
|
|
SUMX[I] ~ SQRT(SUMX[I]) ; FAN 564
|
|
FOR J ~ 1 STEP 1 UNTIL NRO DO FAN 565
|
|
A[I,J] ~ A[I,J] / SUMX[I] FAN 566
|
|
END ; FAN 567
|
|
LL29: II ~ II + 1 ; FAN 568
|
|
DATA[II] ~ 0.0 ; FAN 569
|
|
Z ~ II - 1 ; FAN 570
|
|
FOR J ~ 1 STEP 1 UNTIL NRO DO FAN 571
|
|
BEGIN FAN 572
|
|
RN ~ 0.0 ; FAN 573
|
|
BE ~ 0.0 ; FAN 574
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 575
|
|
BEGIN FAN 576
|
|
S ~ A[I,J]|A[I,J] ; FAN 577
|
|
RN ~ RN + S ; FAN 578
|
|
BE ~ BE + S|S FAN 579
|
|
END ; FAN 580
|
|
DATA[II] ~ DATA[II] + (T2|BE - RN|RN)/TA FAN 581
|
|
END ; FAN 582
|
|
IF II } 50 THEN FAN 583
|
|
GO TO LL30 ; FAN 584
|
|
MARY ~ ABS(DATA[II] - DATA[Z]) - 1.0@-7 ; FAN 585
|
|
IF MARY { 0 THEN FAN 586
|
|
BEGIN FAN 587
|
|
EX ~ EX + 1 ; FAN 588
|
|
IF EX > JJ THEN FAN 589
|
|
GO TO LL30 FAN 590
|
|
END ; FAN 591
|
|
FOR J ~ 1 STEP 1 UNTIL LL DO FAN 592
|
|
BEGIN FAN 593
|
|
L ~ J + 1 ; FAN 594
|
|
FOR K ~ L STEP 1 UNTIL NRO DO FAN 595
|
|
BEGIN FAN 596
|
|
IF KK } MM THEN FAN 597
|
|
GO TO LL31 ; FAN 598
|
|
IF ABS(P) > NS THEN FAN 599
|
|
KK ~ 0 ; FAN 600
|
|
RN ~ 0.0 ; FAN 601
|
|
BE ~ 0.0 ; FAN 602
|
|
S ~ 0.0 ; FAN 603
|
|
NORM ~ 0.0 ; FAN 604
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 605
|
|
BEGIN FAN 606
|
|
MARY ~ (A[I,J] + A[I,K])|(A[I,J] - A[I,K]) ; FAN 607
|
|
TE ~ A[I,J]|A[I,K] ; FAN 608
|
|
TE ~ TE + TE ; FAN 609
|
|
S ~ S + (MARY + TE)|(MARY - TE) ; FAN 610
|
|
NORM ~ NORM + 2.0|MARY|TE ; FAN 611
|
|
RN ~ RN + MARY ; FAN 612
|
|
BE ~ BE + TE FAN 613
|
|
END ; FAN 614
|
|
TE ~ NORM - 2.0|RN|BE/T2 ; FAN 615
|
|
B ~ S - (RN|RN - BE|BE)/T2 ; FAN 616
|
|
P ~ 0.25|ARCTAN(TE/B) ; FAN 617
|
|
IF ABS(P) { NS THEN FAN 618
|
|
BEGIN FAN 619
|
|
KK ~ KK + 1 ; FAN 620
|
|
GO TO LL31 FAN 621
|
|
END ; FAN 622
|
|
TN4P ~ TE/B ; FAN 623
|
|
IF TE = B THEN FAN 624
|
|
BEGIN FAN 625
|
|
IF TE + B < T1 THEN FAN 626
|
|
GO TO LL31 ; FAN 627
|
|
C4T ~ W ; FAN 628
|
|
S4T ~ W ; FAN 629
|
|
GO TO LL28 FAN 630
|
|
END FAN 631
|
|
ELSE IF TE < B THEN FAN 632
|
|
BEGIN FAN 633
|
|
TN4T ~ ABS(TE)/ABS(B) ; FAN 634
|
|
IF TN4T } T1 THEN FAN 635
|
|
BEGIN FAN 636
|
|
C4T ~ 1.0 / SQRT(1.0 + TN4T*2) ; FAN 637
|
|
S4T ~ TN4T|C4T ; FAN 638
|
|
GO TO LL28 FAN 639
|
|
END ; FAN 640
|
|
IF B } 0 THEN FAN 641
|
|
GO TO LL31 ; FAN 642
|
|
SYN ~ W ; FAN 643
|
|
KOS ~ W ; FAN 644
|
|
GO TO LL32 FAN 645
|
|
END FAN 646
|
|
ELSE FAN 647
|
|
BEGIN FAN 648
|
|
CN4T ~ ABS(TE/B) ; FAN 649
|
|
IF CN4T } T1 THEN FAN 650
|
|
BEGIN FAN 651
|
|
S4T ~ 1.0 / SQRT(1.0 + CN4T*2) ; FAN 652
|
|
C4T ~ CN4T|S4T ; FAN 653
|
|
GO TO LL28 FAN 654
|
|
END ; FAN 655
|
|
C4T ~ 0.0 ; FAN 656
|
|
S4T ~ 1.0 FAN 657
|
|
END ; FAN 658
|
|
LL28: C2T ~ SQRT((1.0 + C4T)/2.0) ; FAN 659
|
|
S2T ~ S4T/(2.0|C2T) ; FAN 660
|
|
CT ~ SQRT((1.0 + C2T)/2.0) ; FAN 661
|
|
ST ~ S2T/(2.0|CT) ; FAN 662
|
|
IF B > 0 THEN FAN 663
|
|
BEGIN FAN 664
|
|
KOS ~ CT ; FAN 665
|
|
SYN ~ ST FAN 666
|
|
END FAN 667
|
|
ELSE FAN 668
|
|
BEGIN FAN 669
|
|
KOS ~ W|CT + W|ST ; FAN 670
|
|
SYN ~ ABS(W|CT - W|ST) FAN 671
|
|
END ; FAN 672
|
|
IF TE { 0 THEN FAN 673
|
|
SYN ~ -SYN ; FAN 674
|
|
LL32: FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 675
|
|
BEGIN FAN 676
|
|
RN ~ A[I,J]|KOS + A[I,K]|SYN ; FAN 677
|
|
BE ~ -A[I,J]|SYN + A[I,K]|KOS ; FAN 678
|
|
A[I,J] ~ RN ; FAN 679
|
|
A[I,K] ~ BE FAN 680
|
|
END FAN 681
|
|
END ; FAN 682
|
|
LL31: END ; FAN 683
|
|
GO TO LL29 ; FAN 684
|
|
LL30: FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 685
|
|
FOR J ~ 1 STEP 1 UNTIL NRO DO FAN 686
|
|
A[I,J] ~ A[I,J]|SUMX[I] ; FAN 687
|
|
EX ~ II - 2 ; FAN 688
|
|
WRITE(PRINT,FRM18,NRO,EX) ; FAN 689
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 690
|
|
WRITE(PRINT,FRM13,ROTM) ; FAN 691
|
|
WRITE(PRINT,FRM19) ; FAN 692
|
|
FOR I ~ 2 STEP 1 UNTIL II DO FAN 693
|
|
BEGIN FAN 694
|
|
EX ~ I - 2 ; FAN 695
|
|
WRITE(PRINT,FRM20,EX,DATA[I]) FAN 696
|
|
END ; FAN 697
|
|
WRITE(PRINT,FRM21) ; FAN 698
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO FAN 699
|
|
BEGIN FAN 700
|
|
SUMX[I] ~ SUMX[I]|SUMX[I] ; FAN 701
|
|
BE ~ 0.0 ; FAN 702
|
|
FOR J ~ 1 STEP 1 UNTIL NRO DO FAN 703
|
|
BE ~ BE + A[I,J]|A[I,J] ; FAN 704
|
|
RN ~ BE - SUMX[I] ; FAN 705
|
|
WRITE(PRINT,FRM22,I,SUMX[I],BE,RN) FAN 706
|
|
END FAN 707
|
|
END FAN 708
|
|
END FAN 709
|
|
END ; FAN 710
|
|
GO TO START ; FAN 711
|
|
NOMO: END. 712
|
|
LABEL 000000000CARDR 0010000001
|
|
PROF. SERV. DEPT. PROB. 173 6 4 FALSE
|
|
-00001-00001-00001-00001-00001-00001
|
|
7.4 7.2 7.5 4.9 4.2 2.8
|
|
7.2 7.2 7.8 4.2 3.6 2.4
|
|
7.5 7.8 8.9 3.5 3.0 2.0
|
|
4.9 4.2 3.5 4.9 4.2 2.8
|
|
4.2 3.6 3.0 4.2 3.6 2.4
|
|
2.8 2.4 2.0 2.8 2.4 1.6
|