Trailing-Edge
-
PDP-10 Archives
-
decuslib20-03
-
decus/20-0093/motiv.for
There are no other files named motiv.for in the archive.
C MOTIVATION SIMULATION SUBROUTINE
C NOVEMBER 12, 1971
C BOB STOUT, PROGRAMMER
C S. MUELLER, SIMULATION DESIGNER, FALL, 1970
C MODEL MODIFIED BY BOB STOUT, NOV. 12, 1971
C MODIFICATION 2, BOB STOUT, AUGUST, 1972
C MODIFICATION 3, BOB STOUT, SEPTEMBER, 1972
C
C NOTE: VARIABLES YEAR AND NAFF HAVE NO EFFECTS IN THIS MODEL
C
SUBROUTINE MODEL(N,NCOND,*)
C
C STUFF TO INTERFACE WITH SYSTEM
INTEGER*4 LINE,SI,SF
INTEGER*4 ODEV1,ODV
LOGICAL*4 FLGS
C
COMMON /IO/IDEV(4),ODEV1,ODV(3),LINE(80)
COMMON /VARS1/IV(12),FV(12),SI(12),SF(12),FLGS(12)
REAL*4 LENGTH
INTEGER*4 TSKDIF,SEXE,SEXS,YEAR,FEARF
EQUIVALENCE (IDEV3,IDEV(3)), (NGRP,IV(1)), (INSTR,IV(2)),
1 (TSKDIF,IV(3)), (SEXE,IV(4)), (SEXS,IV(5)), (YEAR,IV(6)),
2 (NACH,IV(7)), (NAFF,IV(8)), (FEARF,IV(9)), (LENGTH,FV(1))
C
C EFFECT MAGNITUDES TABLES READ BY MINIT
REAL*4 LENPWR,LPARA,LPARB(4)
REAL*4 NGEFF(2),INSEFF(4),TSKEFA(3),TSKEFB(3)
REAL*4 ESXEFA(2),ESXEFB(2),SSXEFF(2)
C INTERACTIONS TABLES
REAL*4 NACHIN(3,4), FEARIN(3,4)
C PROBABILITY DISTNS TABLES
REAL*4 PMALE,PNNFR(3,3,3)
C
C ODDS AND ENDS
REAL*4 S(4), DMISS(4)
! DATA DMISS/4*-1./
LOGICAL*4 FNACH,FNAFF,FTAQ,FTAT
C
DOUBLE PRECISION MODNM1,MODNM2,MODNM3
COMMON /DATANM/ MODNM1,MODNM2,MODNM3
DATA MODNM1/'MOTIV.DAT'/,MODNM2/'MOTIV3.DAT'/,MODNM3/'MOTIV.BIN'/
DATA DMISS/4*-1./
NCOND=NCOND!DEC-10 BUG REQUIRES THIS
C
C------------------------------
C
C SET UP FOR OUTPUT
FLGS(4)=.TRUE.
FLGS(5)=.FALSE.
FLGS(6)=.FALSE.
CALL FPOUT1(FLGS,DMISS,&900)
C
C TAKE CARE OF NACH, NAFF, FEARF, YEAR NUMBER-LETTER EQUIVALENCE
NACH=IV(7)+SI(7)
NAFF=IV(8)+SI(8)
FEARF=IV(9)+SI(9)
C YEAR=IV(6)+SI(6)
C
C TAKE CARE OF 'RANDOM' SETTINGS
IF(NACH.EQ.9)NACH=0
IF(NAFF.EQ.9)NAFF=0
IF(FEARF.EQ.9)FEARF=0
C
FNACH=NACH.GT.0
FNAFF=NAFF.GT.0
FTAQ=FEARF.GT.0
C
C COMPUTE GROUP SIZE CATEGORY
C ONLY DIFFERENCE IS BETWEEN SS RUN ALONE VS. SS RUN IN GROUPS
NGCAT=1
IF(NGRP.GT.1)NGCAT=2
C
C COMPUTE BASE SCORE
BASE=(LENGTH**LENPWR)*TSKEFA(TSKDIF)*INSEFF(INSTR)*NGEFF(NGCAT)
IS1=1
C
C SIMULATE SUBJECTS ONE AT A TIME
DO 1 I=1,N
C
C DETERMINE SEX OF CURRENT SUBJECT
ISEXS=SEXS
IF(ISEXS.EQ.1 .OR. ISEXS.EQ.2)GO TO 2
C
C SEX RANDOMIZED OR BALANCED?
IF(ISEXS.LT.1)GO TO 3
C SEXS BALANCED
ISEXS=IS1
IS1=3-IS1
GO TO 2
C SEXS RANDOM
3 CALL BINOM(1,PMALE,ISEXS)
C
C SELECT NACH, NAFF, AND FEARF AS NECESSARY
2 INACH=NACH
INAFF=NAFF
IFEARF=FEARF
CALL CMULNM(PNNFR,3,3,3,1,INACH,INAFF,IFEARF,IX)
S(1)=INACH
S(2)=INAFF
S(3)=IFEARF
C
C------------------------------
C
C ACHIEVEMENT EFFECT DEPENDS ON NACH BY INSTRUCTIONS INTERACTION,
C AND ON LENGTH, SEXE, TASK DIFFICULTY, AND SEXS
XL=-LPARA*LENGTH
ACH=NACHIN(INACH,INSTR)*(1.-EXP(XL))*ESXEFA(SEXE)*TSKEFB(TSKDIF)
1 *SSXEFF(ISEXS)
C
C ANXIETY EFFECT DEPENDS ON FEARF BY INSTRUCTIONS INTERACTION,
C AND ON LENGTH, TASK DIFFICULTY, AND SEXE.
XL=LPARB(1)+LPARB(2)/(1.+LPARB(3)*LENGTH+LPARB(4)*LENGTH*LENGTH)
ANX=FEARIN(IFEARF,INSTR)*XL*TSKEFB(TSKDIF)*ESXEFB(SEXE)
C
C COMPUTE MEAN SCORE FOR THIS S
XSCORE=BASE*(1.+ACH-ANX)
C
C WRITE(6,9001)BASE,ACH,ANX,XSCORE,G
C9001 FORMAT(1X,6G10.3)
C
IF(XSCORE.LT.0.)XSCORE=0.
C
C ADD NOISE TO SCORE
C STD ERROR PROP. TO SCORE ABOVE BASE
SD1=XSCORE*SD
IF(SD1.LT.SDBASE)SD1=SDBASE
C
C WRITE(6,9001)SD1
C
C GENERATE FINAL SCORE AND CONVERT TO INTEGER
CALL NRAND(XSCORE,SD1,X)
X=X+.5
S(4)=AINT(X)
IF(S(4).LT.0.)S(4)=0.
ITMP=I
CALL FPOUT2(ITMP,1,FLGS,S,&900)
C
1 CONTINUE
C
C COMPUTE COST OF RUNNING THIS EXPTL GROUP
C COMPUTE NO. OF COSTLY CONTROLS
NCONT=0
IF(SEXS.NE.0)NCONT=1
IF(YEAR.NE.0)NCONT=NCONT+1
C
C COMPUTE NO. OF TEST GROUPS
NTESTS=N/NGRP
N1=N-NGRP*NTESTS
IF(N1.GT.(N/2))NTESTS=NTESTS+1
C
C ADD NO. OF TAT'S AND TAQ'S
FTAQ=FTAQ.OR.FLGS(3)
FTAT=FNACH.OR.FNAFF.OR.FLGS(1).OR.FLGS(2)
IF(FTAQ)NTESTS=NTESTS+1
IF(FTAT)NTESTS=NTESTS+1
C
C COMPUTE TAT COST
XTAT=0.
IF(FNACH.OR.FLGS(1))XTAT=1.
IF(FNAFF.OR.FLGS(2))XTAT=1.+.8*XTAT
C
C OVERALL COST
XN=N
COST=2.*XN+NTESTS*10+XTAT*XN+NCONT*10
CALL FPOUT3(COST)
RETURN
C
900 STOP '900'
C
C------------------------------
C
C MODEL INITIALIZATION
ENTRY MINIT
C
OPEN(UNIT=IDEV3,ACCESS='SEQIN',FILE=MODNM2,DIRECTORY='4030,11')
C
READ(IDEV3,2001)NGEFF
READ(IDEV3,2001)INSEFF
READ(IDEV3,2001)TSKEFA
READ(IDEV3,2001)TSKEFB
C
READ(IDEV3,2001)LENPWR,LPARA
READ(IDEV3,2001)LPARB
READ(IDEV3,2001)ESXEFA
READ(IDEV3,2001)ESXEFB
READ(IDEV3,2001)SSXEFF
C
READ(IDEV3,2002)NACHIN
READ(IDEV3,2002)FEARIN
C
READ(IDEV3,2001)SD,SDBASE
C
READ(IDEV3,2001)PMALE
READ(IDEV3,2002)PNNFR
C
RETURN
C
C------------------------------
C
2001 FORMAT(5X,10G5.2)
2002 FORMAT(5X,3G5.5)
C
END