1 REM - UTILITY SUBROUTINE TO BE USED WITH BASIC PROGRAMS. 2 REM - WRITTEN BY : SOFTWARE STAFF. 3 REM - REGISTERED DATE : SEPTEMBER 1, 1972 4 REM - REVISED BY : SOFTWARE STAFF 5 REM - REVISED DATE : JULY 15, 1973 6 PRINT \ PRINT "COPYRIGHT 'C' 1972" 7 PRINT "REMCOS" \ PRINT "TIME-SHARING SERVICE COMPANY" 8 PRINT "RACINE, WISCONSIN" \ PRINT\PRINT 100PRINT"THIS PROGRAM CONTAINS THE FOLLOWING SUBROUTINES:"\PRINT 102PRINT"1. CONVERSION OF ALPHAMERIC TO ASCII CHARACTER CODES." 103PRINT" (LINE 1500 THRU 1550)" 104PRINT"2. RIGHT JUSTIFYING NUMBERS FOR ACCOUNTING PURPOSES." 105PRINT" (LINE 1560 THRU 1620)" 106PRINT"3. READ/WRITE MAGNETIC TAPE TO AVOID ROCKING ACTION." 107PRINT" (LINE 1630 THRU 1670)" 108PRINT"4. CONVERSION OF COMPLEX NUMBERS FROM RECTANGULAR TO POLAR." 109PRINT" (LINE 1680 THRU 1770)" 110PRINT"5. SORT NUMERICAL VALUES IN ASCENDING ORDER." 111PRINT" (LINE 1780 THRU 1840)" 150PRINT\PRINT"TO OBTAIN THE DESIRED SUBROUTINE, USER SHOULD PERFORM" 152PRINT"THE FOLLOWING STEPS:"\PRINT 154PRINT"1. PAPER TAPE PUNCH 'ON' AND PRESS 'HERE IS' KEY." 156PRINT"2. PUNCH UNIT 'OFF'."\PRINT"3. PRESS 'RE-TURN'" 158PRINT"4. TYPE 'LIS (NUMBER OF FIRST LINE, NUMBER OF LAST LINE" 160PRINT" (OF DESIRED SUBROUTINE AS DESCRIBED ABOVE." 162PRINT"5. TURN PUNCH 'ON' AGAIN AND PRESS 'RE-TURN' KEY." 170PRINT\PRINT\STOP 1500 REM - SUBROUTINE TO CONVERTS ALPHAMERIC TO ASCII CHARACTER CODE. 1505 REM - VARIABLES USED: Z$,Z0,Z1,Z2,Z3,Z4,Z(6) 1510 REM - Z$ SHOULD BE USED IN THE MAIN PROGRAM 1515 DIM Z(6) 1520 Z0=0 \ Z1=4 \ Z2=1 1525 CHANGE Z$ TO Z 1530 FOR Z4=1 TO 4 \ IF Z(Z1)<48 THEN 1545 \ IF Z(Z1)>57 THEN 1545 1535 IF Z(Z1)=32 THEN 1545 1540 Z3=Z(Z1)-48 \ Z0=Z0+(Z3*Z2) \ Z2=Z2*10 1545 Z1=Z1-1 \ NEXT Z4 1550 RETURN 1560 REM- SUBROUTINE FOR RIGHT JUSTIFYING NUMBERS. 1565 REM - VARIABLES USED: N,T (T: EMBEDDED SPACES <>0 AND <72) 1570 T=N1 1575 IF N=0 THEN 1610 \ IF ABS(N)<.1 THEN 1590 \ IF N>999999 THEN 1615 1580 IF N=INT(N) THEN 1595 1585 PRINT TAB(T-INT(LOG(ABS(N))/LOG(10)));N \ GOTO 1620 1590 PRINT TAB(T-INT(LOG(.1+ABS(N))/LOG(10)));N \ GOTO 1620 1595 PRINT TAB(T-INT(LOG(ABS(N))/LOG(10))); N; 1600 N=0 \ PRINT TAB(1+(T-INT(LOG(.1+ABS(N))/LOG(10)))); ".00" 1605 GOTO 1620 1610 PRINTTAB(1+(T-INT(LOG(.1+ABS(N))/LOG(10)))); ".00" \ GOTO 1620 1615 PRINT TAB(T); N 1620 RETURN 1630 REM - SUBROUTINE TO READ/WRITE RECORDS ALONG MAG. TAPE. 1635 REM - READ/WRITE ONE RECORD EACH TIME CALLED. 1640 R=R+9 1645 IF R<=1483 THEN 1665 1650 IF R=1483 THEN 1670 1655 R=R-1483 \ IF R>0 THEN 1665 1660 R=R+10 1665 RETURN 1670 PRINT"END OF TAPE" 1680 REM - SUBROUTINE TO CONVERT COMPLEX NUMBERS FROM RECT. TO POLAR. 1685 REM - VARIABLES USED: A9,B9,C9,R9 (A9: REAL; B9: IMMAGINARY) 1690 R9=SQR(A9^2+B9^2) 1695 IFA9<0THEN 1725\ IFA9=0THEN 1700\ IFA9>0THEN 1745 1700 IFB9<0THEN 1705\ IFB9=0THEN 1710\ IFB9>0THEN 1720 1705 C9=270 \ GOTO 1765 1710 PRINT \ PRINT "DEGENERATE CASE A=B=0"\ PRINT 1715 GOTO 1770 1720 C9=90 \ GOTO 1765 1725 IF B9<0 THEN 1730 \ IF B9=0 THEN 1735 \ IF B9>0 THEN 1740 1730 C9=180+57.296*ATN(ABS(B9/A9)) \ GOTO 1765 1735 C9=180 \ GOTO 1765 1740 C9=180-57.296*ATN(ABS(B9/A9)) \ GOTO 1765 1745 IF B9<0 THEN 1750 \ IF B9=0 THEN 1755 \ IF B9>0 THEN 1760 1750 C9=360-57.296*ATN(ABS(B9/A9)) \ GOTO 1765 1755 C9=0 \ GOTO 1765 1760 C9=57.296*ATN(ABS(B9/A9)) 1765 PRINT R9, C9 1770 RETURN 1780 REM - SUBROUTINE TO SORT NUMERICAL LIST IN ASCENDING ORDER. 1785 REM - MAXIMUM NUMBERS ON THE LIST IS 100 1790 DIM A(100) 1795 FOR I=1 TO N 'N<=100 AND SHOULD BE ASSIGNED IN THE MAIN PROGRAM. 1800 READ A(I) \ NEXT I 'READ DATA FROM LINE 2000 TO 2040. 1805 PRINT "UNSORTED LIST" 1810 FOR I=1 TO N \ PRINT A(I) \ NEXT I 1815 FOR I=1 TO N-1 \ FOR J=I+1 TO N \ IF A(I)<=A(J) THEN 1825 1820 Z=A(I) \ A(I)=A(J) \ A(J)=Z 1825 NEXT J \ NEXT I 1830 PRINT\ PRINT"SORTED LIST" 1835 FOR I=1 TO N\ PRINT A(I) \ NEXT I 1840 RETURN 1845 END 2046 END