* G05PZF Example Program Text * Mark 22 Revised. NAG Copyright 2008. * .. Parameters .. INTEGER NOUT PARAMETER (NOUT=6) INTEGER LROW, NCOL, LDX, MSEED, MSTATE, LR PARAMETER (LROW=4,NCOL=3,LDX=LROW,MSEED=1,MSTATE=633,LR=60) * .. Local Scalars .. INTEGER GENID, I, IFAIL, J, LSEED, LSTATE, RCTOT, SUBID * .. Local Arrays .. DOUBLE PRECISION R(LR) INTEGER SEED(MSEED), STATE(MSTATE), TOTC(NCOL), + TOTR(LROW), X(LDX,NCOL) * .. External Subroutines .. EXTERNAL G05KFF, G05PZF * .. Executable Statements .. WRITE (NOUT,*) 'G05PZF Example Program Results' WRITE (NOUT,*) * Set the table row and column totals TOTR(1) = 9 TOTR(2) = 11 TOTR(3) = 7 TOTR(4) = 23 TOTC(1) = 16 TOTC(2) = 17 TOTC(3) = 17 RCTOT = 50 * Initialize the seed SEED(1) = 1762543 * GENID and SUBID identify the base generator GENID = 1 SUBID = 1 * Initialize the generator to a repeatable sequence LSTATE = MSTATE LSEED = MSEED IFAIL = 1 CALL G05KFF(GENID,SUBID,SEED,LSEED,STATE,LSTATE,IFAIL) IF (IFAIL.NE.0) THEN WRITE (NOUT,99998) IFAIL GO TO 40 END IF * Generate the random table * Choose MODE = 2 IFAIL = 1 CALL G05PZF(2,LROW,NCOL,TOTR,TOTC,R,LR,STATE,X,LDX,IFAIL) IF (IFAIL.NE.0) THEN WRITE (NOUT,99997) IFAIL GO TO 40 END IF * Display the results DO 20 I = 1, LROW WRITE (NOUT,99999) (X(I,J),J=1,NCOL), TOTR(I) 20 CONTINUE WRITE (NOUT,*) ' --------------+-------' WRITE (NOUT,99999) (TOTC(J),J=1,NCOL), RCTOT * 40 CONTINUE * 99999 FORMAT (1X,3(I4,1X),'|',1X,I5) 99998 FORMAT (1X,' ** G05KFF returned with IFAIL = ',I5) 99997 FORMAT (1X,' ** G05PZF returned with IFAIL = ',I5) END