File: MACHK3.FT of Tape: Various/ETH/eth11-1
(Source file text) 

C	MACHK3.FOR - SAMPLE PROGRAM (MATRIX OPERATIONS) USING:
C  MSUB		- SUBTRACTION OF MATRICES
C  MFUN		- TRANSFORM MATRIX BY A FUNCTION
C  SMPY		- MULTIPLY A MATRIX BY A SCALAR
C  RSUM		- SUM ROWS OF MATRIX
C  CSUM		- SUM COLUMNS OF MATRIX
C  RSRT		- SORT ROWS OF MATRIX
C  CCPY		- COPY COLUMN OF MATRIX INTO VECTOR
C    ALSO... MOST OF THESE ROUTINES CALL LOC - LOCATION CALCULATION
	EXTERNAL POSDIF
	DIMENSION SOLD(4,5),ECP(4,5),CUR(4,5),SCR(4,5)
	DIMENSION SS(4),SE(4),RK(4),TOT(1)
C	DATA STATEMENT REPLACES THE NORMAL READ IN
	DATA SOLD/10.,12.,8.,16.,6.,3.,2.,9.,9.,2.,0.,7.,24.,17.,22.,
	1         19.,13.,15.,15.,24./,
	2     ECP/5.,12.,10.,12.,4.,4.,4.,6.,10.,3.,3.,6.,25.,20.,20.,
	3         20.,12.,17.,15.,20./
C
C	OUTPUT CHANNEL = IOUT
	IOUT=2
	WRITE(IOUT,100)
100	FORMAT(//' STORE'10X' GOODS SOLD'9X' EXPECTED TO BE SOLD'/)
	DO 1 I=1,4
1	WRITE(IOUT,101) I,(SOLD(I,J),J=1,5),(ECP(I,J),J=1,5)
101	FORMAT(I4,7X,5F4.0,5X,5F4.0/)
C
C  SEE WHO IS AHEAD OF EXPECTATIONS
	CALL MSUB(SOLD,ECP,CUR,4,5,0,0)
	CALL MFUN(CUR,POSDIF,SCR,4,5,0)
	DO 2 I=1,4
	WRITE(IOUT,102) I
102	FORMAT(/' STORE',I2,':')
	DO 2 J=1,5
	X=SCR(I,J)
	IF(X) 3,2,4
3	STOP
4	WRITE(IOUT,103) X,J
103	FORMAT('   IS AHEAD',F4.0,' UNIT(S) OF PRODUCT',I2)
2	CONTINUE
C
C  SEE WHO IS BEHIND
	CALL SMPY(CUR,-1.,CUR,4,5,0)
	CALL MFUN(CUR,POSDIF,SCR,4,5,0)
	DO 5 I=1,4
	WRITE(IOUT,102) I
	DO 5 J=1,5
	X=SCR(I,J)
	IF(X) 6,5,7
6	STOP
7	WRITE(IOUT,104) X,J
104	FORMAT('   IS BEHIND',F4.0,' UNIT(S) OF PRODUCT',I2)
5	CONTINUE
C
C  GET STATISTICS
	CALL RSUM(SOLD,SS,4,5,0)
	CALL RSUM(ECP,SE,4,5,0)
	CALL CSUM(SS,TOT,4,1,0)
	WRITE(IOUT,105)
105	FORMAT(//' STORE   SOLD/EXP (PER CENT)   TOTAL SALES (ALL STORES)'/)
	DO 8 I=1,4
	X=SS(I)/SE(I)*100.
	XT=SS(I)/TOT(1)*100.
8	WRITE(IOUT,106) I,X,XT
106	FORMAT(I4,11X,F7.2,16X,F7.2)
	CALL SMPY(CUR,-1.,CUR,4,5,0)
C
C  DETERMINE PROGRESS IN SALES
	WRITE(IOUT,107)
107	FORMAT(//' PRODUCT   STORES ACCORDING TO INCREASING SALES'/)
	DO 9 I=1,5
	DO 10 J=1,4
10	RK(J)=FLOAT(J)
	CALL CCPY(SOLD,I,SS,4,5,0)
	CALL RSRT(RK,SS,SCR,4,1,0)
9	WRITE(IOUT,108) I,(SCR(J,1),J=1,4)
108	FORMAT(I5,6X,4F5.0)
	STOP
	END
	FUNCTION POSDIF(X)
	POSDIF=X
	IF(X) 1,2,2
1	POSDIF=0.
2	RETURN
	END