10  COM P9,P8,P,T1,T[30],R[30],A$[18],C$[36],A[80],B[80],N[80],M[80]
20  COM I2,E$[6],D$[18],S$[26],T7,T8,T9
25  REM HP CONTRIBUTED LIBRARY, 2/75, 6 PROGRAMS:  ATG, ATGE, ATGIB,
26  REM ATGM1, ATGW.
30  DIM H$[30],R$[4],S[80]
40  T6=T1/2
50  IF P8=1 THEN 560
60  FOR I=1 TO T6
70  I1=I+T6
80  PRINT '10"DEBIT ENTRY # ";I
90  PRINT "ACCOUNT NUMBER ";
100  INPUT N[I]
110  M[I]=N[I]
120  IF N[I]<81 THEN 150
130  PRINT "***** ERROR - ACCOUNT NUMBER IS GREATER THAN 80 *****"
140  GOTO 90
150  IF N[I]=2*(INT(N[I]/2))+1 THEN 180
160  PRINT "***** ERROR - DEBIT ACCOUNT NUMBERS MUST BE ODD *****"
170  GOTO 90
180  X=N[I]
190  GOSUB 2090
200  PRINT "AMOUNT ";
210  INPUT A[I]
220  B[I]=A[I]
230  PRINT '10"ACCOUNT # ";N[I];"NAME - ";H$;"    AMOUNT = ";A[I]
240  PRINT "ARE THEY CORRECT (Y/N) ";
250  INPUT R$
260  IF R$#"N" THEN 290
270  PRINT "LET'S TRY AGAIN !"
280  GOTO 90
290  IF R$#"Y" THEN 230
300  PRINT '10"CREDIT ENTRY # ";I
310  PRINT "ACCOUNT NUMBER ";
320  INPUT N[I1]
330  M[I1]=N[I1]
340  IF N[I1]<81 THEN 370
350  PRINT "***** ERROR - ACCOUNT NUMBER IS GREATER THAN 80 *****"
360  GOTO 310
370  IF N[I1]=2*(INT(N[I1]/2)) THEN 400
380  PRINT "***** ERROR - CREDIT ACCOUNT NUMBERS MUST BE EVEN *****"
390  GOTO 310
400  X=N[I1]
410  GOSUB 2090
420  PRINT "AMOUNT ";
430  INPUT A[I1]
440  B[I1]=A[I1]
450  PRINT '10"ACCOUNT # ";N[I1];"NAME - ";H$;"    AMOUNT = ";A[I1]
460  PRINT "ARE THEY CORRECT (Y/N) ";
470  INPUT R$
480  IF R$#"N" THEN 510
490  PRINT "LET'S TRY AGAIN !"
500  GOTO 310
510  IF R$#"Y" THEN 450
520  IF A[I1]=A[I] THEN 550
530  PRINT "***** ERROR - DEBIT AND CREDIT AMOUNTS ARE NOT EQUAL TO EACH OTHER *****"
540  GOTO 80
550  NEXT I
560  PRINT '10'10"STUDENT NAME - ";S$
570  PRINT "EXERCISE - ";E$
580  PRINT "DATE - ";D$
590  PRINT TAB(26)'10'10C$
600  PRINT TAB(20);'10"JOURNAL OF FINANCIAL TRANSACTIONS"
610  PRINT TAB(28)'10A$
620  PRINT '10'10TAB(10)"NAME OF ACCOUNT"TAB(40)"DEBIT"TAB(50)"CREDIT"
630  T2=T3=0
640  FOR I=1 TO T6
650  I1=I+T6
660  X=N[I]
670  GOSUB 2090
680  PRINT '10H$;TAB(40);A[I]
690  T2=T2+A[I]
700  X=N[I1]
710  GOSUB 2090
720  PRINT "   "H$;TAB(50);A[I1]
730  T3=T3+A[I1]
740  NEXT I
750  PRINT '10'10"TOTALS FOR THIS DATE"TAB(40);T2;TAB(50);T3;'10
760  IF T2=T3 THEN 790
770  PRINT "***** ERROR - TOTALS DO NOT MATCH - NAUGHTY, NAUGHTY! *****"
780  CHAIN "ATGE"
790  IF P9#4 THEN 830
800  IF (P=1 AND T2=8225) OR (P=2 AND T2=16673) OR (P=3 AND T2=34968.) OR P>3 THEN 910
810  PRINT "***** ERROR - YOUR DATA FOR EXERCISE # ";P;"IS INCORRECT *****"
820  CHAIN "ATGE"
830  IF P9#5 THEN 870
840  T2=INT((T2+.05)*10)/10
850  IF (P=1 AND T2=5925) OR (P=2 AND T2=19848.9) OR (P=3 AND T2=13939) OR P>3 THEN 910
860  GOTO 810
870  IF P9#6 THEN 910
880  T2=INT((T2+.05)*10)/10
890  IF (P=1 AND T2=9825) OR (P=2 AND T2=27090.6) OR (P=3 AND T2=18846) OR P>3 THEN 910
900  GOTO 810
910  PRINT '7"#"'7"#"'7"#"'7"#"'7"#"'7" "'25"YO"'21"UR JOURNAL BALANCES "'7"#"'7"#"'7"#"'7"#"'7"#"'7
920  PRINT '10"WHEN YOU ARE READY FOR THE 'T ACCOUNTS', TYPE GO ";
930  INPUT R$
940  IF R$#"GO" THEN 920
950  FOR I=1 TO T1-1
960  FOR J=I+1 TO T1
970  IF N[I] <= N[J] THEN 1040
980  S1=N[I]
990  N[I]=N[J]
1000  N[J]=S1
1010  S1=A[I]
1020  A[I]=A[J]
1030  A[J]=S1
1040  NEXT J
1050  NEXT I
1060  PRINT '10'10"      "C$
1070  PRINT '10"  DEBITS AND CREDITS BY ACCOUNT"
1080  PRINT '10"       "A$
1090  I2=0
1100  I9=1
1110  FOR I=1 TO T1
1120  IF I9=1 THEN 1160
1130  FOR I4=1 TO I9-1
1140  IF N[I]=S[I4] THEN 1490
1150  NEXT I4
1160  FOR I3=1 TO 80
1170  IF N[I]=I3 THEN 1210
1180  NEXT I3
1190  PRINT "***** ERROR - ACCOUNT NUMBERS DO NOT MATCH *****"
1200  CHAIN "ATGE"
1210  S[I9]=I3
1220  I9=I9+1
1230  IF N[I]=2*INT(N[I]/2) THEN 1260
1240  S[I9]=I3+1
1250  GOTO 1270
1260  S[I9]=I3-1
1270  I9=I9+1
1280  X=N[I]
1290  GOSUB 2090
1300  PRINT '10'10"    "H$
1310  PRINT "--------------------------------"
1320  I2=I2+1
1330  T[I2]=0
1340  FOR I3=1 TO T1
1350  IF N[I3]#X THEN 1430
1360  IF N[I3]=2*INT(N[I3]/2) THEN 1400
1370  PRINT TAB(5);A[I3];TAB(17)"I"
1380  T[I2]=T[I2]+A[I3]
1390  GOTO 1470
1400  PRINT TAB(17)"I     "A[I3]
1410  T[I2]=T[I2]-A[I3]
1420  GOTO 1470
1430  IF N[I3]=2*INT(N[I3]/2) THEN 1460
1440  IF N[I3]+1=X THEN 1370
1450  GOTO 1470
1460  IF N[I3]-1=X THEN 1400
1470  NEXT I3
1480  R[I2]=X
1490  NEXT I
1500  IF P9#4 THEN 1950
1510  PRINT '10"WHEN YOU ARE READY FOR THE BALANCE SHEET, TYPE GO ";
1520  INPUT R$
1530  IF R$#"GO" THEN 1510
1540  PRINT '10'10"      "C$
1550  PRINT '10TAB(9)"BALANCE SHEET"
1560  PRINT '10"        "A$
1570  PRINT '10'10TAB(17)"ASSETS"'10'10
1580  F=1
1590  L=26
1600  GOSUB 2140
1610  PRINT TAB(31)"----------"
1620  PRINT '10"TOTAL"TAB(33);T9
1630  PRINT TAB(31)"----------"
1640  PRINT TAB(31)"----------"
1650  T7=T9
1660  PRINT '10'10TAB(14)"LIABILITIES"'10'10
1670  F=27
1680  L=32
1690  GOSUB 2140
1700  PRINT TAB(31)"----------"
1710  PRINT '10"TOTAL"TAB(33);T9
1720  T8=T9
1730  PRINT '10'10TAB(16)"CAPITAL"'10
1740  F=33
1750  L=38
1760  GOSUB 2140
1770  PRINT TAB(31)"----------"
1780  PRINT '10"TOTAL"TAB(33);T9
1790  PRINT '10"TOTAL LIABILITIES AND CAPITAL    "T8+T9
1800  PRINT TAB(31)"----------"
1810  PRINT TAB(31)"----------"
1820  IF T7=T8+T9 THEN 1850
1830  PRINT "***** ERROR - ASSETS # LIABILITIES + CAPITAL *****"
1840  CHAIN "ATGE"
1850  IF (P=1 AND T7=6600) OR (P=2 AND T7=13296) OR (P=3 AND T7=32045) OR P>3 THEN 1880
1860  PRINT "***** ERROR - YOU BALANCE, BUT YOUR DATA IS INCORRECT FOR # "P" *****"
1870  CHAIN "ATGE"
1880  PRINT 
1890  PRINT "##"'7'7'7"#"'7"#"'7"# CONGRAT"'21"LATIONS - PROBLEM # "P" IS TOTALLY CORRECT #"'7"#"'7"#"'7"#"'7"#"'7
1900  PRINT '10"DO YOU WISH TO PROCESS ANOTHER SET OF DATA (Y/N) ";
1910  INPUT R$
1920  IF R$="Y" THEN 1940
1930  STOP 
1940  CHAIN "ATG"
1950  CHAIN "ATGIB"
1960  DATA "CASH","ACCOUNTS RECEIVABLE","ALLOWANCE FOR BAD DEBTS"
1970  DATA "MERCHANDISE INVENTORY","SUPPLIES","PREPAID RENT","PREPAID INSURANCE"
1980  DATA "EQUIPMENT","ACCUM. DEPREC.-  EQUIPMENT","BUILDING"
1990  DATA "ACCUM.. DEPREC.- BUILDING","LAND","MISC. ASSETS","ACCOUNTS PAYABLE"
2000  DATA "SALARIES PAYABLE","MISC. PAYABLE","CAPITAL","DRAWING"
2010  DATA "INCOME AND EXPENSE SUMMARY","FEES INCOME","SALES"
2020  DATA "SALES RETURNS & ALLOWANCES","SALES DISCOUENT","PURCHASES"
2030  DATA "PURCHASES RETURNS & ALLOWANCES","PURCHASES DISCOUNT"
2040  DATA "ADVERTISING EXPENSE","BAD DEBTS EXPENSE","DELIVERY EXPENSE"
2050  DATA "DEPREC. EXPENSE - BUILDING","DEPREC. EXPENSE - EQUIPMENT"
2060  DATA "INSURANCE EXPENSE","RENT EXPENSE","SALARY EXPENSE"
2070  DATA "SUPPLIES EXPENSE","UTILITIES EXPENSE","MISC. EXPENSE"
2080  DATA "RENT INCOME","GAIN ON FIXED ASSETS","LOSS ON FIXED ASSETS"
2090  RESTORE 
2100  FOR J=1 TO INT((X+1)/2)
2110  READ H$
2120  NEXT J
2130  RETURN 
2140  T9=0
2150  FOR I=1 TO I2
2160  IF R[I]<F OR R[I]>L THEN 2230
2170  X=R[I]
2180  GOSUB 2090
2190  IF T[I] >= 0 THEN 2210
2200  T[I]=T[I]*-1
2210  PRINT H$;TAB(33);T[I]
2220  T9=T9+T[I]
2230  NEXT I
2240  RETURN 
2250  END 
