Trailing-Edge
-
PDP-10 Archives
-
decuslib20-05
-
decus/20-0137/bmd/bmd06s.for
There is 1 other file named bmd06s.for in the archive. Click here to see a list.
CBMDO6S GUTTMAN SCALES NO. 2 - - PART 1 MAY 15,1967
DIMENSION A(8000),RANKSM(8000),INDIVD(8000),KOLSKR(8000),HOLDA
1(8000),KVAR(25),INV(25),LVAR(25),KOLHLD(25),N2 (25),HOLD(26),MFRE
2Q(25,8),ERROR(25,7),MVAR(25),N1(25),NCOMB(25),DUMMY1(200),DUMMY2(2
37),KONTER(25,7),DUMMY3(1),KSTEP(6), KDUMY6(2),REF(25),NN1(6),NN2(6
4),NN3(6)
COMMON JOBNMB
COMMON DUMMY2,FRSTMO,SECMON,A,LVAR,MFREQ,ERROR,NCASE,HOLD,NCOMB,KV
1AR,INDRNK,INDKOL,ISCALE,LESTN,LEAVE,IERROR,KANEND,KOMPER,KORDER,IN
2DTEM,IDAY,IYEAR,NUMPGE,JOYDEC,MAXLOC,N1,N2,DUMMY3,LASTRD,NDREDK,L,
3IFINAL,ILAST,IFIRST,IXTRA,KK,ICHNGE,NFIRST,L1,IEND,MCOMB,IPUNCH,NP
4ER,KDUMY6,INDEX3
C
EQUIVALENCE(A,RANKSM,INDIVD,KOLSKR,HOLDA),(INV,LVAR),(HOLD,KOLHLD)
1,(DUMMY1,MFREQ),(DUMMY2,MVAR),(DUMMY2(26),LASTNO),(DUMMY2(27),NVAR
2),(ERROR,KONTER),(YES,IYES)
C
DOUBLE PRECISION DUMMY2,KDUMY6
DOUBLE PRECISION JOB,JOBNMB,JBND,REF,SECMON,FRSTMO,REFLEK,BLANKS,
1BND,JB
DATA AYES/4HYES /
C
4515 FORMAT(1H1,2X,65HBMD06S--GUTTMAN SCALE NUMBER 2, PART 1 - VERSION
1OF JULY 29, 1968 /
23X,40HHEALTH SCIENCES COMPUTING FACILITY, UCLA)
C BMD06S USES THE SUBROUTINE -- CONFORM -- FOUND IN BMD04S
C
C IF PRINT OUT OF THE SCORED INPUT DATA IN THE SAME ORDER AS THE
C FINAL SCALED DATA IS DESIRED, THEN AN ADDITIONAL TAPE UNIT,
C DESIGNATED IT1 HERE, IS NEEDED IN SUBROUTINE READ06.
C
C THIS PROGRAM REQUIRES A SAVE TAPE TO WRITE THE RESULTS OF THE
C PROGRAM UP TO THE POINT OF THE FIRST COMBINATIONS. THIS TAPE,
C DESIGNATED IT4 HERE, IS THEN USED BY BMD07S TO PERFORM
C ALL COMBINATIONS, DETERMINE THE GUTTMAN SCALE AND GIVE THE
C DESIRED OUTPUT.
C
C
IT4=4
CALL USAGEB('BMD06S')
REWIND IT4
C
YES=AYES
4 NUMPGE=0
KOMPER=0
DO 47 I=1,25
DO 43 J=1,7
MFREQ(I,J)=0
ERROR(I,J)=0.0
43 CONTINUE
MFREQ(I,8)=0
NCOMB(I)=0
N1(I)=0
N2(I)=0
LVAR(I)=0
47 CONTINUE
WRITE (6,4515)
5 CALL READ06(REF(1))
IF(NVAR-25)165,165,900
165 IF(KOMPER)998,169,998
C
C PRINT DATA PROPERLY SCORED, IF DESIRED
C
169 IF (ISCALE.NE.IYES) GO TO 200
170 MINPR=1
MAXPR=0
INDEX2=0
NDIFF=NCASE
5010 IF(NDIFF-50)5020,5020,5030
5020 MAXPR=NCASE
NDIFF=0
GO TO 5040
C
5030 MAXPR=MAXPR+50
NDIFF=NDIFF-50
5040 NUMPGE=NUMPGE+1
WRITE (6,4503)JOBNMB,FRSTMO,SECMON,IDAY,IYEAR,NUMPGE
175 WRITE (6,4000)
WRITE (6,4504)NCASE,NVAR
WRITE (6,4505)
DO 172 J=1,NVAR
L=LVAR(J)
172 HOLD(J)=REF(L)
WRITE (6,4507)(LVAR(J),HOLD(J),J=1,NVAR)
327 WRITE (6,4500)
DO 267 I=MINPR,MAXPR
INDEX1=INDEX2+1
INDEX2=INDEX2+NVAR
JRNK=I+INDRNK
INDIDV=I+LASTNO
180 WRITE (6,4001)INDIVD(INDIDV),(A(J),J=INDEX1,INDEX2)
267 CONTINUE
5050 MINPR=MINPR+50
IF(NDIFF)200 ,200 ,5010
C
C CHECK TO SEE THAT THE RESPONSES GIVEN DO CONFORM TO THE
C KVAR(J), J=1,NVAR, WHICH WERE READ IN.
C
200 CALL CONFRM
IF(KOMPER)998,700 ,998
700 J=INDTEM+NCASE
WRITE(IT4) J
WRITE(IT4) (REF(I),I=1,25)
NPOINT=(J+127)/128
IF (NPOINT.LE.1) GO TO 7772
DO 7771 JJ=1,NPOINT-1
NJ=(JJ-1)*128+1
NJJ=JJ*128
7771 WRITE(IT4)(A(JJJ),JJJ=NJ,NJJ)
7772 NJ=(NPOINT-1)*128+1
WRITE(IT4)(A(JJJ),JJJ=NJ,J)
DO 7773 JJ=1,4
NJ=(JJ-1)*128+1
NJJ=JJ*128
7773 WRITE(IT4)(LVAR(K),K=NJ,NJJ)
WRITE(IT4)(LVAR(K),K=513,558),INDEX3
WRITE(IT4) JOBNMB,(DUMMY2(I),I=1,27),FRSTMO,SECMON,(KDUMY6(J)
1,J=1,2)
END FILE IT4
REWIND IT4
998 STOP
C
900 WRITE (6,4015)NVAR
C
4000 FORMAT(1H ,38X,40HINPUT DATA AFTER RECEIVING PROPER SCORES)
4001 FORMAT(1H ,I8,7X,25F4.0)
4015 FORMAT(1H0,4X,89HTHE MAXIMUM NUMBER OF VARIABLES OR QUESTIONS ALLO
1WED IN THIS PROGRAM IS 25. YOU HAVE USED,I4,9H AND THUS//43X,27HTH
2E PROGRAM WILL TERMINATE.)
4500 FORMAT(1H )
4503 FORMAT(1H1,15H PROBLEM NUMBER,2X,A6,57X,2A6,I3,1H,,I5,3X,4HPAGE,
1I4)
4504 FORMAT(1H ,18X,23HNUMBER OF RESPONDENTS =,I5,22X,21HNUMBER OF VARI
1ABLES =,I3)
4505 FORMAT(1H ,44X,22HVARIABLES OR QUESTIONS)
4507 FORMAT(1H ,11H RESPONDENT,4X,25(I3,A1))
C
GO TO 998
END
CCOMFRM SUBROUTINE CONFRM , REVISED FOR SYSTEM 360 ON MAY 15,1967
C
SUBROUTINE CONFRM
C
DIMENSION A(8000),RANKSM(8000),INDIVD(8000),KOLSKR(8000),HOLDA
1(8000),KVAR(25),INV(25),LVAR(25),KOLHLD(25),N2 (25),HOLD(26),MFRE
2Q(25,8),ERROR(25,7),MVAR(25),N1(25),NCOMB(25),DUMMY1(200),DUMMY2(2
37),KONTER(25,7)
DOUBLE PRECISION JOB,JOBNMB,JBND,REF,SECMON,FRSTMO,REFLEK,BLANKS,
1BND,JB
DOUBLE PRECISION DUMMY2,KDUMY6
COMMON JOBNMB
COMMON DUMMY2,FRSTMO,SECMON,A,LVAR,MFREQ,ERROR,NCASE,HOLD,NCOMB,KV
1AR,INDRNK,INDKOL,ISCALE,IRANK,IQUES,IERROR,KANEND,KOMPER,KORDER,IN
2DTEM,IDAY,IYEAR,NUMPGE,JOYDEC,MAXLOC,N1,N2
C
EQUIVALENCE(A,RANKSM,INDIVD,KOLSKR,HOLDA),(INV,LVAR),(HOLD,KOLHLD)
1,(DUMMY1,MFREQ),(DUMMY2,MVAR),(DUMMY2(26),LASTNO),(DUMMY2(27),NVAR
2),(ERROR,KONTER)
C
KORDER=0
C
M=INDKOL
DO 210 II=1,NVAR
I=LVAR(II)
MVAR(I)=0
DO 206 J=1,7
IF(MFREQ(I,J))905,206,205
205 MVAR(I)=MVAR(I)+1
206 CONTINUE
IF(MVAR(I)-KVAR(I))208,210,910
208 M=M+1
KOLSKR(M)=I
210 CONTINUE
IF(M-INDKOL)920,211,930
2200 DO 2290 J=INDEX1,M
I=KOLSKR(J)
WRITE (6,4930)I,MVAR(I),KVAR(I)
NCOMB(I)=KVAR(I)-MVAR(I)
KTIMES=KVAR(I)
NTIMES=NCOMB(I)
JTIMES=NTIMES
N=1
IF(NTIMES-1)125,125,124
124 NTIMES=2
125 GO TO (950,2201,130,140,150,160,170,950),KTIMES
130 IF(MFREQ(I,1))905,131,132
131 N1(1)=1
132 IF(MFREQ(I,4))905,133,135
133 IF(N1(1))2201,134,2201
134 N1(1)=4
135 IF(MFREQ(I,7))905,136,138
136 IF(N1(1))2201,137,2201
137 N1(1)=7
138 WRITE (6,4970)(N1(N),N=1,JTIMES)
DO 139 N=1,JTIMES
N1(N)=0
139 CONTINUE
GO TO 2201
140 IF(MFREQ(I,1))905,141,142
141 N1(N)=1
GO TO (138,142),NTIMES
142 IF(MFREQ(I,3))905,143,145
143 IF(N1(N))2201,144,1435
1435 N=N+1
144 N1(N)=3
GO TO (138,145),NTIMES
145 IF(MFREQ(I,5))905,146,148
146 IF(N1(N))2201,147,1465
1465 N=N+1
147 N1(N)=5
GO TO (138,148),NTIMES
148 IF(MFREQ(I,7))905,149,138
149 IF(N1(N))2201,1495,1493
1493 N=N+1
1495 N1(N)=7
GO TO 138
150 IF(MFREQ(I,1))905,151,152
151 N1(N)=1
GO TO (138,152),NTIMES
152 IF(MFREQ(I,2))905,153,155
153 IF(N1(N))2201,154,1535
1535 N=N+1
154 N1(N)=2
GO TO (138,155),NTIMES
155 IF(MFREQ(I,4))905,1555,157
1555 IF(N1(N))2201,156,1557
1557 N=N+1
156 N1(N)=4
GO TO (138,157),NTIMES
157 IF(MFREQ(I,6))905,1575,148
1575 IF(N1(N))2201,1585,158
158 N=N+1
1585 N1(N)=6
GO TO (138,148),NTIMES
160 IF(JTIMES-5)1605,2201,2201
1605 IF(MFREQ(I,1))905,161,1615
161 N1(N)=1
GO TO (138,1615),NTIMES
1615 IF(MFREQ(I,2))905,162,163
162 IF(N1(N))2201,1627,1625
1625 N=N+1
1627 N1(N)=2
GO TO (138,163),NTIMES
163 IF(MFREQ(I,3)) 905,1635,1645
1635 IF(N1(N))2201,164,1637
1637 N=N+1
164 N1(N)=3
GO TO (138,1645),NTIMES
1645 IF(MFREQ(I,5))905,165,157
165 IF(N1(N))2201,1657,1655
1655 N=N+1
1657 N1(N)=5
GO TO(138,157),NTIMES
170 IF(JTIMES-6)1705,2201,2201
1705 IF(MFREQ(I,1))905,171,172
171 N1(N)=1
GO TO (138,172),NTIMES
172 IF(MFREQ(I,2))905,173,175
173 IF(N1(N))2201,174,1725
1725 N=N+1
174 N1(N)=2
GO TO (138,175),NTIMES
175 IF(MFREQ(I,3))905,1755,176
1755 IF(N1(N))2201,1757,1756
1756 N=N+1
1757 N1(N)=3
GO TO(138,176),NTIMES
176 IF(MFREQ(I,4))905,1765,1645
1765 IF(N1(N))2201,1769,1767
1767 N=N+1
1769 N1(N)=4
GO TO(138,1645),NTIMES
2201 K=0
DO 2210 L=1,7
KONTER(I,L)=MFREQ(I,L)
IF(MFREQ(I,L))905,2210,2205
2205 K=K+1
KOLHLD(K)=L
MFREQ(I,L)=0
2210 CONTINUE
INDEX2=I+LASTNO-NVAR
MTIMES=MVAR(I)
GO TO (940,2220,2230,2240,2250,2260,940),MTIMES
2220 LTIMES=1
L=KOLHLD(1)
IF(L-1)2225,2224,2225
2225 SCORE2=1.0
JJ=I
GO TO 5500
2224 MFREQ(I,1)=KONTER(I,1)
2226 L=KOLHLD(K)
IF(L-7)2227,2280,2227
2227 LTIMES=2
SCORE2=7.0
JJ=150+I
GO TO 5500
2230 LTIMES=3
L=KOLHLD(1)
IF(L-1)2225,2234,2225
2234 MFREQ(I,1)=KONTER(I,1)
2235 LTIMES=1
L=KOLHLD(2)
IF(L-4)2237,2238,2237
2237 SCORE2=4.0
JJ=75+I
GO TO 5500
2238 MFREQ(I,4)=KONTER(I,4)
GO TO 2226
2240 LTIMES=4
L=KOLHLD(1)
IF(L-1)2225,2244,2225
2244 MFREQ(I,1)=KONTER(I,1)
2245 LTIMES=5
L=KOLHLD(2)
IF(L-3)2246,2243,2246
2246 SCORE2=3.0
JJ=50+I
GO TO 5500
2243 MFREQ(I,3)=KONTER(I,3)
2247 LTIMES=1
L=KOLHLD(3)
IF(L-5)2248,2249,2248
2248 SCORE2=5.0
JJ=100+I
GO TO 5500
2249 MFREQ(I,5)=KONTER(I,5)
GO TO 2226
2250 LTIMES=6
L=KOLHLD(1)
IF(L-1)2225,2252,2225
2252 MFREQ(I,1)=KONTER(I,1)
2255 LTIMES=7
L=KOLHLD(2)
IF(L-2)2256,2253,2256
2256 SCORE2=2.0
JJ=25+I
GO TO 5500
2253 MFREQ(I,2)=KONTER(I,2)
2257 LTIMES=8
L=KOLHLD(3)
IF(L-4)2237,2254,2237
2254 MFREQ(I,4)=KONTER(I,4)
2258 L=KOLHLD(4)
2269 LTIMES=1
IF(L-6)2259,2251,2259
2259 SCORE2=6.0
JJ=125+I
GO TO 5500
2251 MFREQ(I,6)=KONTER(I,6)
GO TO 2226
2260 LTIMES=9
L=KOLHLD(1)
IF(L-1)2225,2261,2225
2261 MFREQ(I,1)=KONTER(I,1)
2265 LTIMES=10
L=KOLHLD(2)
IF(L-2)2256,2262,2256
2262 MFREQ(I,2)=KONTER(I,2)
2266 LTIMES=11
L=KOLHLD(3)
IF(L-3)2246,2263,2246
2263 MFREQ(I,3)=KONTER(I,3)
2267 LTIMES=12
L=KOLHLD(4)
IF(L-5)2248,2264,2248
2264 MFREQ(I,5)=KONTER(I,5)
2268 L=KOLHLD(5)
GO TO 2269
2280 MFREQ(I,7)=KONTER(I,7)
2285 DO 2290 L=1,7
KONTER(I,L)=0
2290 CONTINUE
211 RETURN
C
905 KOMPER=1
WRITE (6,4905)J,I
GO TO 211
C
910 KOMPER=1
WRITE (6,4910)I
GO TO 211
C
920 KOMPER=1
WRITE (6,4920)INDKOL
GO TO 211
C
930 INDEX1=INDKOL+1
NUMPGE=NUMPGE+1
WRITE (6,4950)JOBNMB,FRSTMO,SECMON,IDAY,IYEAR,NUMPGE,NCASE,NVAR
GO TO 2200
C
940 WRITE (6,4940)I,MVAR(I)
KOMPER=1
GO TO 211
C
950 MVAR(I)=KVAR(I)
GO TO 940
C
4905 FORMAT(1H0,6X,51HMACHINE ERROR. THE FREQUENCY OF OCCURRENCE OF SCO
1REI2,12H OF QUESTIONI3,37H IS NEGATIVE. PROGRAM CANNOT PROCEED.)
4910 FORMAT(1H04X52HMACHINE ERROR. THE TOTAL NUMBER OF PARTS TO QUESTIO
1NI3,54H IS GREATER THAN THAT READ IN. PROGRAM CANNOT PROCEED.)
4920 FORMAT(1H0,5X,52HMACHINE ERROR. AN INDEX WHICH SHOULD BE GREATER T
1HAN,I6,49H IS LESS THAN THIS VALUE. PROGRAM CANNOT PROCEED.)
4930 FORMAT(1H0,3X,36HTHE RESPONSES INDICATE THAT QUESTION,I3,9H HAS ON
1LY,I2,54H PARTS, WHEREAS THE CONTROL CARD INDICATES THAT IT HAS,I2
2,7H PARTS.//11X,98HTHE PROGRAM ASSUMES THE FORMER IS CORRECT AND P
3ROCEEDS FROM THERE. PLEASE CHECK THE RESPONSE CARD.)
4940 FORMAT(1H0, 50HMACHINE ERROR. THE NUMBER OF RESPONSES TO QUESTIO
1N,I3,58H SHOULD BE LESS THAN 7 BUT GREATER THAN 1. THE MACHINE HAS
2,I2,1H.)
4950 FORMAT(1H1,17H PROBLEM NUMBER ,A8,21X,19HCHANGE OF RESPONSES,15X,
12A6,I3,1H,,I5,3X,4HPAGE,I4/19X,23HNUMBER OF RESPONDENTS =,I5,22X,2
21HNUMBER OF VARIABLES =,I3//52X,6HSTEP 1)
4970 FORMAT(1H0,28X,32HTHE SCORE(S) NOT USED IS(ARE) --,5I4)
C
5500 LL=(L-1)*25+I
MFREQ(JJ,1)=KONTER(LL,1)
SCORE1=L
DO 5510 JJ=I,INDEX2,NVAR
IF(A(JJ)-SCORE1)5510,5505,5510
5505 A(JJ)=SCORE2
5510 CONTINUE
GO TO(2226,2285,2235,2245,2247,2255,2257,2258,2265,2266,2267,2268)
1,LTIMES
C
GO TO 211
END
CREADO6 SUBROUTINE READ06 , REVISED FOR SYSTEM 360 ON MAY 15,1967
C
SUBROUTINE READ06(REF)
C
DIMENSION A(8000),RANKSM(8000),INDIVD(8000),KOLSKR(8000),HOLDA
1(8000),KVAR(25),INV(25),LVAR(25),KOLHLD(25),REF(25),HOLD(26),MFRE
2Q(25,8),ERROR(25,7),MVAR(25),N1(25),N2(25),NCOMB(25),DUMMY1(200),D
3UMMY2(27),KONTER(25,7),DUMMY3(1),FMT(120)
C
COMMON JOBNMB
COMMON DUMMY2,FRSTMO,SECMON,A,LVAR,MFREQ,ERROR,NCASE,HOLD,NCOMB,KV
1AR,INDRNK,INDKOL,ISCALE,LESTN,LEAVE,IERROR,KANEND,KOMPER,KORDER,IN
2DTEM,IDAY,IYEAR,NUMPGE,JOBDEX,MAXLOC,N1,N2,I,LASTRD,NDREDK,DUMMY3,
3IFINAL,ILAST,IFIRST,IXTRA,KK,ICHNGE,NFIRST,L1,IEND,MCOMB,IPUNCH,NP
4ER
C
EQUIVALENCE(A,RANKSM,INDIVD,KOLSKR,HOLDA),(MDM,LVAR),(HOLD,KOLHLD)
1,(DUMMY1,MFREQ),(DUMMY2,MVAR),(DUMMY2(26),LASTNO),(DUMMY2(27),NVAR
2),(ERROR,KONTER,FMT),(YES,IYES)
C
DOUBLE PRECISION JOB,JOBNMB,JBND,REF,SECMON,FRSTMO,REFLEK,BLANKS,
1BND,JB
DOUBLE PRECISION DUMMY2,KDUMY6
DOUBLE PRECISION AJAN,UARY,FEBR,RUARY,AMAR,APR,AMAY,AJUNE,AJULY,
1AUGUST,SEPT
DOUBLE PRECISION TEMB,OCT,OMBER,ANOV,AMBER,DEC,EMBER
DOUBLE PRECISION DLTE
DOUBLE PRECISION RFG,PROB,RESP,RELIC
DOUBLE PRECISION DELET
DOUBLE PRECISION PAN
C
C IF PRINT OUT OF THE SCORED INPUT DATA IN THE SAME ORDER AS THE
C FINAL SCALED DATA IS DESIRED, THEN AN ADDITIONAL TAPE UNIT,
C DESIGNATED IT1 HERE, IS NEEDED.
DATA PROB/8HPROBLM /
DATA RESP/8HRESPON /
DATA RELIC/8HRFLECT /
DATA DLTE/8HDELETE /
DATA RFG/8HR /
DATA BLANKS/8H /
DATA AFFR/4HYES /
DATA AJAN,UARY,FEBR,RUARY/6H J,6HANUARY,6H FE,6HBRUARY/
DATA AMAR,APR,AMAY,AJUNE/6H MARCH,6H APRIL,6H MAY,6H JUNE/
DATA AJULY,AUGUST,SEPT,TEMB/6H JULY,6HAUGUST,6H SEP,6HTEMBER/
DATAOCT,OMBER,ANOV,AMBER/6H O,6HCTOBER,6H NO,6HVEMBER/
DATA DEC,EMBER/6H DE,6HCEMBER/
REFLEK=RFG
DUMMY2(1)=PROB
DUMMY2(2)=RESP
DUMMY2(3)=RELIC
DUMMY2(4)=DLTE
YES=AFFR
IT1=1
C
IT4=4
C
5 READ (5,1000)JB,JOBNMB,IMON,IDAY,IYEAR,NVAR,NCASE,INVERS,ISCALE,NF
1IRST,NPER,MCOMB,IEND,IFINAL,IERROR,LASTRD,NDREDK,ICHNGE,LEAVE ,LES
2TN,ILAST,IXTRA,IFIRST,IPUNCH,MATVAR,NTAPE,IDELET
KOMPER=0
15 IF(JB.NE.PROB) GO TO 955
152 READ (5,1001)JB,(KVAR(J),J=1,NVAR)
IF(JB.NE.RESP) GO TO 955
158 LASTNO=NVAR*NCASE
MAXLOC=8000-NCASE-NCASE-NCASE-NCASE
IF(LASTNO-MAXLOC)16,16,900
16 IF(NTAPE)18,18,184
18 NTAPE=5
GO TO 188
C
184 IF(NTAPE-5)185,188,185
C
185 IF(NTAPE-IT1)186,975,186
186 IF(NTAPE-IT4)187,975,187
187 REWIND NTAPE
188 INDRNK=LASTNO+NCASE
INDKOL=INDRNK+NCASE
INDTEM=INDKOL+NCASE
INDIDV=LASTNO
DELET=BLANKS
IF(-IDELET)3,4,4
3 DELET=YES
4 WRITE (6,4980)JOBNMB,NVAR,LESTN,NCASE,INVERS,ISCALE,NFIRST,NPER,MC
1OMB,IEND
WRITE (6,4985)IFINAL,IERROR,ICHNGE,LEAVE,ILAST,IXTRA,IFIRST,IPUNCH
1,DELET
ASSIGN 153 TO KSKIP
IF (IFIRST.EQ.IYES) GO TO 7
6 IFIRST=2
GO TO 8
C
7 REWIND IT1
IFIRST=1
8 IF(-IDELET)1581,1655,1655
1581 READ (5,1003)JB,N3,N1(1),(N2(M),M=1,20)
IF(JB.NE.DLTE) GO TO 955
1582 ASSIGN 1525 TO ISKIP
IF(-N3)1583,1586,1584
1586 N3=NVAR
1583 ASSIGN 151 TO KSKIP
1584 IDELET=N1(1)
IF(-N1(1))1585,1655,1655
1585 ISAVE=IFIRST
IFIRST=1
IT2=IT1
IT1=IT4
REWIND IT1
C
C CONVERT DATE
C
1655 GO TO(2010,2020,2030,2040,2050,2060,2070,2080,2090,2100,2110,2120)
1,IMON
2010 FRSTMO=AJAN
SECMON=UARY
GO TO 2130
C
2020 FRSTMO=FEBR
SECMON=RUARY
GO TO 2130
C
2030 FRSTMO=BLANKS
SECMON=AMAR
GO TO 2130
C
2040 FRSTMO=BLANKS
SECMON=APR
GO TO 2130
C
2050 FRSTMO=BLANKS
SECMON=AMAY
GO TO 2130
C
2060 FRSTMO=BLANKS
SECMON=AJUNE
GO TO 2130
C
2070 FRSTMO=BLANKS
SECMON=AJULY
GO TO 2130
C
2080 FRSTMO=BLANKS
SECMON=AUGUST
GO TO 2130
C
2090 FRSTMO=SEPT
SECMON=TEMB
GO TO 2130
C
2100 FRSTMO=OCT
SECMON=OMBER
GO TO 2130
C
2110 FRSTMO=ANOV
SECMON=AMBER
GO TO 2130
C
2120 FRSTMO=DEC
SECMON=EMBER
2130 IYEAR=IYEAR+1900
NOIN=1
DO 19 J=1,NVAR
IF(KVAR(J)-1)935,935,17
17 IF(KVAR(J)-7)19,19,935
19 CONTINUE
20 IF (INVERS.NE.IYES) GO TO 26
25 READ (5,1001)JB,(INV(J),J=1,NVAR)
IF(JB.NE.RELIC) GO TO 955
255 NOIN=2
26 MAX=0
30 CALL VFCHCK(MATVAR)
33 MATVAR=MATVAR*18
35 READ (5,1002)(FMT(J),J=1,MATVAR)
DO 36 K=1,NVAR
36 LVAR(K)=K
JB=NCASE
WRITE (6,4002)NTAPE,(FMT(M),M=1,MATVAR)
GO TO(37,40),IFIRST
37 WRITE(IT1) (LVAR(M),M=1,NVAR)
40 MIN=MAX+1
MAX=MAX+NVAR
INDIDV=INDIDV+1
43 IF(MIN-LASTNO)45,45,165
45 READ (NTAPE,FMT)INDIVD(INDIDV),(A(M),M=MIN,MAX)
K=0
60 DO 150 J=1,NVAR
INDEX=MIN+J-1
GO TO (65,64),NOIN
64 IF(INV(J))70,65,70
65 NOINV=1
GO TO 76
C
70 NOINV=2
76 IF(A(INDEX))925,110,77
77 VAR=KVAR(J)
IF(A(INDEX)-VAR)775,775,910
775 GO TO (79,78),NOINV
78 A(INDEX)=VAR+1.0-A(INDEX)
79 NPARTS=KVAR(J)
N1(1)=A(INDEX)
N11=N1(1)
791 GO TO(935,80,85,90,95,100,105),NPARTS
80 GO TO (117,111),N11
C
85 GO TO (117,114,111),N11
C
90 GO TO (117,115,113,111),N11
C
95 GO TO (117,116,114,112,111),N11
C
100 GO TO (117,116,115,113,112,111),N11
C
105 GO TO (117,116,115,114,113,112,111),N11
110 L=8
K=K+1
SCORE=0.0
GO TO 120
C
111 SCORE=1.0
L=1
GO TO 120
C
112 SCORE =2.0
L=2
GO TO 120
C
113 SCORE=3.0
L=3
GO TO 120
C
114 SCORE=4.0
L=4
GO TO 120
C
115 SCORE=5.0
L=5
GO TO 120
C
116 SCORE=6.0
L=6
GO TO 120
C
117 SCORE=7.0
L=7
120 A(INDEX)=SCORE
LL=L
MFREQ(J,LL)=MFREQ(J,LL)+1
150 CONTINUE
GO TO KSKIP,(151,153)
151 IF(N3-K)154,154,153
154 GO TO ISKIP,(1525,1530)
1525 ASSIGN 1530 TO ISKIP
WRITE (6,4000)N3,(LVAR(M),M=1,NVAR)
1530 WRITE (6,4001)INDIVD(INDIDV),(A(M),M=MIN,MAX)
LASTNO=LASTNO-NVAR
NCASE=NCASE-1
MM=MIN-1
DO 145 M=1,NVAR
MM=MM+1
IF(A(MM))141,143,141
141 N=A(MM)
GO TO 144
143 N=8
144 MN=LVAR(M)
145 MFREQ(MN,N)=MFREQ(MN,N)-1
GO TO 43
153 GO TO(155,40),IFIRST
155 NPOINT=MAX-MIN+1
IF (NPOINT.GT.127) GO TO 1555
WRITE(IT1)INDIVD(INDIDV),(A(M),M=MIN,MAX)
GO TO 40
1555 WRITE(IT1)INDIVD(INDIDV),(A(M),M=MIN,MIN+126)
NPOINT=(MAX-MIN+1)/128
NWED=MIN+126
IF (NPOINT.LE.1) GO TO 1556
DO 1557 M=1,NPOINT-1
NJ=(M-1)*128+NWED+1
NJJ=M*128+NWED
1557 WRITE(IT1)(A(JJJ),JJJ=NJ,NJJ)
1556 NJ=(NPOINT-1)*128+NWED+1
WRITE(IT1)(A(JJJ),JJJ=NJ,MAX)
160 GO TO 40
C
165 DO 168 L=1,NVAR
IF(-(INV(L)))166,167,167
166 REF(L)=REFLEK
GO TO 168
167 REF(L)=BLANKS
168 CONTINUE
IF(-IDELET)1681, 169,169
C DELETE UNWANTED VARIABLES
1681 NVAR1=NVAR-1
DO 1690 J=1,IDELET
L=N2(J)
DO 1683 K=1,NVAR
IF(LVAR(K)-L)1683,1684,1683
1683 CONTINUE
GO TO 945
1684 DO 1685 II=K,NVAR1
1685 LVAR(II)=LVAR(II+1)
LVAR(NVAR)=L
REF(NVAR)=SAVE
1690 CONTINUE
NVAR1=NVAR
NVAR=NVAR-IDELET
IF(-NVAR)169,945,945
169 II=INDRNK-IDINT(JB+.5D0)
LASTNO=NVAR*NCASE
INDRNK=LASTNO+NCASE
INDKOL=INDRNK+NCASE
INDTEM=INDKOL+NCASE
INDIDV=LASTNO
IF(NCASE-IDINT(JB+.5D0))1692,1691,1691
1692 INDEX=INDIDV
DO 1695 M=1,NCASE
INDEX=INDEX+1
II=II+1
1695 INDIVD(INDEX)=INDIVD(II)
1691 GO TO (170,171),IFIRST
170 END FILE IT1
REWIND IT1
1707 IF(IT1-IT4)171,1711,171
1711 IT1=IT2
IFIRST=ISAVE
WRITE (6,4901)IDELET,NVAR,NVAR1,(N2(M),M=1,IDELET)
INDEX=0
MAX=0
GO TO (1720,1723),IFIRST
1720 WRITE(IT1) (LVAR(M),M=1,NVAR)
1723 READ(IT4) (N1(M),M=1,NVAR1)
DO 1750 J=1,NCASE
INDIDV=INDIDV+1
READ(IT4) INDIVD(INDIDV),(HOLD(M),M=1,NVAR1)
DO 1725 K=1,NVAR
L=LVAR(K)
INDEX=INDEX+1
1725 A(INDEX)=HOLD(L)
GO TO(1730,1750),IFIRST
1730 MIN=MAX+1
MAX=MAX+NVAR
NPOINT=MAX-MIN+1
IF (NPOINT.GT.127) GO TO 1770
WRITE(IT1)INDIVD(INDIDV),(A(M),M=MIN,MAX)
GO TO 1750
1770 WRITE(IT1)INDIVD(INDIDV),(A(M),M=MIN,MIN+126)
NPOINT=(MAX-MIN+1)/128
NWED=MIN+126
IF (NPOINT.LE.1) GO TO 1771
DO 1772 M=1,NPOINT-1
NJ=(M-1)*128+NWED+1
NJJ=M*128+NWED
1772 WRITE(IT1)(A(JJJ),JJJ=NJ,NJJ)
1771 NJ=(NPOINT-1)*128+NWED+1
WRITE(IT1)(A(JJJ),JJJ=NJ,MAX)
1750 CONTINUE
GO TO(1760,1765),IFIRST
1760 END FILE IT1
REWIND IT1
1765 REWIND IT4
171 DO 1713 J=1,25
N1(J)=0
1713 N2(J)=0
IF(NCASE-JB)1705,1714,1705
1705 WRITE (6,4930)NCASE,JB
1714 IF(NTAPE-5)1715,173,172
1715 REWIND NTAPE
GO TO 173
172 CALL REMOVE(NTAPE)
173 RETURN
C
900 NEWKAS=NCASE
901 NEWKAS=NEWKAS-1
MAXLOC=MAXLOC+4
LASTNO=LASTNO-NVAR
IF(LASTNO-MAXLOC)902,902,901
902 WRITE (6,4900)NEWKAS,NCASE
NCASE=NEWKAS
GO TO 16
C
910 WRITE (6,4910)J,INDIVD(INDIDV)
KOMPER=1
GO TO 150
C
925 I=(MAX-1)/NVAR
WRITE (6,4925)I,J
KOMPER=1
GO TO 150
C
935 KOMPER=1
WRITE (6,4935)J,KVAR(J)
GO TO 150
C
945 WRITE (6,4945)
GO TO 946
C
955 WRITE(6,4955)JB
946 KOMPER=1
GO TO 171
C
975 WRITE (6,4975)NTAPE
GO TO 946
C
8000 FORMAT(20A4)
1000 FORMAT(2A6,4I2,I5,3A3,I2,I3,3A3,I1,2I2,A3,I2,4A3,3I2)
1001 FORMAT(A6,25I2)
1002 FORMAT(18A4)
1003 FORMAT(A6,22I3)
C
4000 FORMAT(1H0,20X,22HTHESE RESPONDENTS HAVEI3,52H OR MORE NO RESPONSE
1S AND ARE DELETED FROM THE SCALE //2X,10HRESPONDENT,33X,9HRESPONSE
2S//14X,25I4//)
4001 FORMAT(1H ,3X,I6,5X,25F4.0)
4002 FORMAT(1H0,32X,26HDATA READ IN FROM BCD TAPEI3,27H UNDER THE FOLLO
1WING FORMAT,//(1X,30A4))
4900 FORMAT(1H1,30X,57HMAXIMUM DATA STORAGE EXCEEDED. SCALE WILL BE COM
1PUTED FOR,I4,17H CASES INSTEAD OF,I4,7H CASES.)
4901 FORMAT(1H0,17X,I3,38H QUESTIONS WERE DELETED. THERE ARE NOW,I3,39H
1 QUESTIONS WHERE, INITIALLY, THERE WERE,I3,1H./
26X,27HTHE QUESTIONS DELETED WERE 20I4)
4910 FORMAT(1H0,8HQUESTION,I3,14H OF RESPONDENT,I5,14H IS TOO LARGE.)
4925 FORMAT(1H0,33X,37HNEGATIVE SCORE READ IN FOR RESPONDENT,I5,8HQUEST
1ION,I3)
4930 FORMAT(1H0,29X,13HTHERE ARE NOW,I6,33H CASES WHERE INITIALLY THERE
1 WERE,I6,1H.)
4935 FORMAT(1H0,9X,47HTHERE MUST BE AT LEAST 2 RESPONSES FOR QUESTION,I
13,52H BUT NO MORE THAN 7. PLEASE CHECK THE RESPONSE CARD.)
4945 FORMAT(1H0,36X,45HERROR ON DELETE CARD. PROGRAM CANNOT PROCEED.)
4955 FORMAT(1H1,32X,52HCONTROL CARDS OUT OF ORDER. PROGRAM CANNOT CONTI
1NUE.,2X,A6)
4975 FORMAT(32X19HLOGICAL TAPE NUMBERI3,32H VIOLATES RESTRICTION FOR IN
1PUT.)
4980 FORMAT(1H0,15X,26H* * * PROBLEM CARD * * *//19H JOB IDENTIFICATI
1ON 17(1H.1X),A6/21H NUMBER OF QUESTIONS 16(1H.1X),I6/43H LEAST NUM
2BER OF QUESTIONS TO BE CONSIDERED 5(1H.1X),I6/17H NUMBER OF CASES
318(1H.1X),I6/19H REFLECTION DESIRED 17(1H.1X),3X,A3/27H PRINT WEIG
4HTED INPUT DATA 13(1H.1X),3X,A3/43H COMBINE WHEN FREQUENCY LESS TH
5AN N PERCENT 5(1H.1X),3X,A3/37H N FOR COMBINATION ABOVE (IN PERCEN
6T) 8(1H.1X),I6/31H NUMBER OF FORCED COMBINATIONS 11(1H.1X),I6/37H
7PROGRAM TO MAKE FURTHER COMBINATIONS 8(1H.1X),3X,A3)
4985 FORMAT(35H PRINT OUT RANKED DATA AT EACH STEP
1 9(1H.1X),3X,A3/31H PRINT OUT ERRORS AT EACH STE
2P 11(1H.1X),3X,A3/17H Q FOR RERANKING 18(1H.1X),I6/53H TERMINATE W
3HEN QUESTIONS HAVE, AT MOST, 3 RESPONSES 3X,A3/21H PRINT FINAL RAN
4KING 16(1H.1X),3X,A3/43H PRINT ORDERED RESPONDENTS AND SCALE SCORE
5 5(1H.1X),3X,A3/39H PRINT INITIAL RESPONSES IN FINAL ORDER 7(1H.1X
6),3X,A3/23H PUNCHED CARDS DESIRED 15(1H.1X),3X,A3/21H READ IN DELE
7TE CARD 16(1H.1X),3X,A3//)
END
C SUBROUTINE REMOVE
SUBROUTINE REMOVE(N)
REWIND N
RETURN
C
END
CVFCHCK SUBROUTINE TO CHECK FOR PROPER NUMBER OF VARIABLE FORMAT CRDS
SUBROUTINE VFCHCK(NVF)
IF(NVF)10,10,20
20 IF(NVF-10)50,50,10
10 WRITE (6,4000)
NVF=1
C
4000 FORMAT(1H023X71HNUMBER OF VARIABLE FORMAT CARDS INCORRECTLY SPECIF
1IED, ASSUMED TO BE 1.)
C
50 RETURN
END