9000  REM  *****IN/OUT*****BUSINESS PROGRAM
9005  REM  IN/OUT**********VERSION #1 (7/31/69)*****INPUT/OUTPUT ANALYSIS
9010  REM HP CONTRIBUTED LIBRARY, 2/75
9015  PRINT "*  INPUT/OUTPUT ANALYSIS  *"
9020  PRINT 
9025  REM  THIS IS A PROGRAM FOR INPUT/OUTPUT ANALYSIS.
9030  REM
9035  REM   A HYPOTHETICAL ECONOMY IS DIVIDED INTO A CERTAIN NUMBER OF
9040  REM   INDUSTRIES, AND IS ANALYZED AS TO THE INTER-INDUSTRY FLOWS OF
9045  REM   GOODS AND SERVICES OVER A PERIOD OF TIME.   THE ANALYSIS IS 
9050  REM   BASED UPON THE DATA FOR A PAST PERIOD, AND CAN BE USED TO
9055  REM   PREDICT FUTURE FLOWS UNDER DIFFERENT CONDITIONS OF CONSUMER DE-
9060  REM   MAND.
9065  REM
9070  REM   IN THIS EXAMPLE,  THE ECONOMY IS DIVIDED INTO THREE INDUSTRIES.
9075  REM   THE NUMBER OF INDUSTRIES, AND THEIR RESPECTIVE NAMES, CAN BE
9080  REM   ALTERED BY CHANGING THE DIM-STATEMENTS AND OUTPUT ROUTINES.
9085  REM   WITH THE EXCEPTION OF THESE ROUTINES, THE PROGRAM IS GENERAL,
9090  REM   AND WILL ACCEPT DATA FOR ANY 'M' NUMBER OF INDUSTRIES.
9095  REM
9100  REM   DATA IS READ IN THE FOLLOWING ORDER:
9105  REM     THE FLOWS FROM:  INDUSTRY #1 TO INDUSTRY #1
9110  REM                      INDUSTRY #1 TO INDUSTRY #2
9115  REM                      INDUSTRY #1 TO INDUSTRY #3, ETC. TO #M
9120  REM                      INDUSTRY #1 TO THE FINAL CONSUMER
9125  REM                      INDUSTRY #2 TO INDUSTRY #1
9130  REM                      INDUSTRY #2 TO INDUSTRY #2
9135  REM                      INDUSTRY #2 TO INDUSTRY #3, ETC. TO #M
9140  REM                      INDUSTRY #2 TO THE FINAL CONSUMER
9145  REM                      INDUSTRY #3 TO INDUSTRY #1, ETC. TO #M
9150  REM                      INDUSTRY #3 TO THE FINAL CONSUMER
9155  REM                      ...
9160  REM                      INDUSTRY #M TO THE FINAL CONSUMER
9165  REM     THIS IS FOLLOWED BY A REVISED FORECAST OF CONSUMER DEMAND
9170  REM     FROM INDUSTRY #1,INDUSTRY #2, INDUSTRY #3,...,INDUSTRY #M.
9175  REM
9180  REM   (IN THIS EXAMPLE: INDUSTRY #1 IS AGRICULTURE
9185  REM                     INDUSTRY #2 IS INDUSTRY
9190  REM                     INDUSTRY #3 IS SERVICES
9195  REM
9200  DIM A[3,3],B[3,3],X[3,3]
9205  DIM D[50],T[50],V[50],C[50]
9210  LET I9=50
9215  LET M=3
9220  LET N=1
9225  FOR J=1 TO M
9230  LET T[J]=0
9235  FOR K=1 TO M
9240  READ A[J,K]
9245  LET T[J]=T[J]+A[J,K]
9250  NEXT K
9255  READ C[J]
9260  LET T[J]=T[J]+C[J]
9265  NEXT J
9270  FOR K=1 TO M
9275  FOR J=1 TO M
9280  LET X[J,K]=A[J,K]/T[K]
9285  NEXT J
9290  NEXT K
9295  GOSUB 9545
9300  PRINT 
9305  PRINT "**********************************************************************"
9310  PRINT 
9315  PRINT "INITIAL INPUT/OUTPUT TABLE:"
9320  PRINT "--------------------------"
9325  PRINT 
9330  PRINT 
9335  GOSUB 9680
9340  FOR G=1 TO N
9345  FOR L=1 TO M
9350  READ C[L]
9355  NEXT L
9360  FOR I=0 TO M
9365  FOR K=1 TO M
9370  IF K=I THEN 9410
9375  FOR J=1 TO M
9380  IF J <> K THEN 9395
9385  LET B[J,K]=1-X[J,K]
9390  GOTO 9400
9395  LET B[J,K]=-X[J,K]
9400  NEXT J
9405  GOTO 9425
9410  FOR J=1 TO M
9415  LET B[J,K]=C[J]
9420  NEXT J
9425  NEXT K
9430  GOSUB 9590
9432  LET J=I
9435  IF I>0 THEN 9445
9440  LET J=I9
9445  LET D[J]=D
9450  LET T[J]=D[J]/D[I9]
9455  NEXT I
9460  FOR J=1 TO M
9465  FOR K=1 TO M
9470  LET A[J,K]=X[J,K]*T[K]
9475  NEXT K
9480  NEXT J
9485  GOSUB 9545
9490  PRINT 
9495  PRINT "-----------------------------------------------------------------------"
9500  PRINT 
9505  PRINT "REVISED INPUT/OUTPUT TABLE NUMBER";G;":"
9510  PRINT "-----------------------------------"
9515  PRINT 
9520  PRINT 
9525  GOSUB 9680
9530  NEXT G
9535  GOTO 9775
9540  REM SUBROUTINE FOR SECTOR INCOME (OR VALUE ADDED)
9545  FOR K=1 TO M
9550  LET V[K]=0
9555  FOR J=1 TO M
9560  LET V[K]=V[K]+A[J,K]
9565  NEXT J
9570  LET V[K]=T[K]-V[K]
9575  NEXT K
9580  RETURN 
9585  REM SUBROUTINE TO SOLVE DETERMINANT OF ANY SIZE, "M"
9590  LET D=0
9595  FOR K=1 TO M
9600  LET D[K]=1
9605  LET D[M+K]=1
9610  FOR J=1 TO M
9615  LET K1=J-1+K
9620  IF K1 <= M THEN 9630
9625  LET K1=K1-M
9630  LET D[K]=D[K]*B[J,K1]
9635  LET K2=M+K-J
9640  IF K2 <= M THEN 9650
9645  LET K2=K2-M
9650  LET D[M+K]=D[M+K]*B[K2,J]
9655  NEXT J
9660  LET D=D+D[K]-D[M+K]
9665  NEXT K
9670  RETURN 
9675  REM SUBROUTINE TO PRINT I/O TABLE
9680  LET T=0
9685  FOR J=1 TO M
9690  LET T=T+C[J]
9695  NEXT J
9700  PRINT 
9705  PRINT "                           TO SECTOR"
9710  PRINT "  FROM SECTOR                                    CONSUMERS TOTAL"
9715  PRINT "               AGRICULTURE   INDUSTRY   SERVICES"
9720  PRINT 
9725  PRINT "AGRICULTURE";TAB(18);A[1,1];TAB(31);A[1,2];TAB(42);A[1,3];TAB(52);C[1];TAB(61);T[1]
9730  PRINT "INDUSTRY";TAB(18);A[2,1];TAB(31);A[2,2];TAB(42);A[2,3];TAB(52);C[2];TAB(61);T[2]
9735  PRINT "SERVICES";TAB(18);A[3,1];TAB(31);A[3,2];TAB(42);A[3,3];TAB(52);C[3];TAB(61);T[3]
9740  PRINT 
9745  PRINT "SECTOR INCOME";TAB(18);V[1];TAB(31);V[2];TAB(42);V[3];TAB(52);T
9750  PRINT 
9755  PRINT "  TOTAL";TAB(18);T[1];TAB(31);T[2];TAB(42);T[3];TAB(61);T[1]+T[2]+T[3]
9760  PRINT 
9765  PRINT 
9770  RETURN 
9775  PRINT "**********************************************************************"
9900  DATA 25,12,8,75
9901  DATA 15,75,65,99
9902  DATA 10,51,88,34
9903  DATA 82,85,40
9999  END 
