1500 REM DFPRINT 1.2 FOR DATAFILE BY MIKE KONSHAK (C)1985 1502 CLR:PRINT"[147][158]":POKE53281,11:POKE53280,6:OPEN4,4:REM GOSUB2856 1504 D$=CHR$(0):S=0:PW=80:CW=0:B$=CHR$(32):RW=5:LW=32:FL=0 1506 NC=0:NL=0:PG=0:F1=0:F2=0:F3=0:L$=D$:RL=0:SB$=D$:CR$=CHR$(13):HN$=D$:ID$=D$ 1508 A$=D$:C$=D$:T%=6:I=0:J=0:K=0:M=0:N=0:RW=5:SF=0:Z=0:E$="EOF" 1510 EN=0:EM$=D$:ET=0:ES=0:A1$=D$:A2$=D$:A3$=D$ 1512 REM----DIMENSION ARRAYS 1514 DIM ML$(9,4),PC(10),TT$(5),HC$(9) 1516 DIM F$(31),T%(31),L%(31),REC$(31) 1518 GOTO1530 1520 REM----GET 1522 GETA$:IFA$=""THEN1522 1524 RETURN 1526 REM----START MENU 1528 PRINT"[147]  DATAFILE FAST PRINT ":GOTO1548 1530 PRINT"[147]  DATAFILE FAST PRINT - REV 1.2 " 1532 PRINT"  BY MIKE KONSHAK (C)1985 " 1534 PRINT" THIS PROGRAM WILL PRINT A SEQUENTIAL" 1536 PRINT" FILE, WHICH WAS PREVIOUSLY WRITTEN" 1538 PRINT" AND FORMATTED BY DATAFILE[146], DIRECTLY" 1540 PRINT" TO THE PRINTER. THE ORDER OF THE" 1542 PRINT" RECORDS WILL BE THE SAME AS THE MOST" 1544 PRINT" RECENT SORT AS WRITTEN IN THE CURRENT" 1546 PRINT" FILE.":PRINT" PRESS ANY KEY[146] TO CONTINUE" 1547 GOSUB1522:GOSUB2856:GOTO1528 1548 PRINT" O[146]PEN FILE ON DISK" 1550 IFFL<>0THENPRINT" R[146]EPEAT FILE:[146]";NF$ 1551 PRINT" P[146]RINTER RECONFIGURE" 1552 PRINT" $[146] DISK DIRECTORY" 1554 PRINT" Q[146]UIT PROGRAM" 1556 PRINT"  PRESS THE APPROPRIATE KEY " 1558 GOSUB1522:IFA$="$"THEN1628 1560 IFA$="O"THENFL=1:GOTO1572 1561 IFA$="P"THENGOSUB2856:GOTO1528 1562 IFA$="R"THEN1584 1564 IFA$="Q"THENCLOSE5:CLOSE15:CLOSE4:END 1566 GOTO1558 1568 REM --INPUT FILE NAME 1572 PRINT" ENTER NAME OF DATAFILE TO BE READ" 1574 PRINT"  ";NF$:INPUT"[145] ";NF$:IFNF$=""THEN1528 1576 OPEN15,8,15 1578 OPEN5,8,5,"0:DF] "+NF$+",S,R":GOSUB1618:IFEN=62THENGOSUB1620:GOTO1528 1580 CLOSE5:CLOSE15 1582 REM----PRINT RECORDS MENU 1584 PRINT"[147]  RECORD PRINTOUT MENU " 1586 PRINT" L[146]IST UNFORMATTED" 1588 PRINT" R[146]EPORT FORMAT" 1590 PRINT" M[146]AILING LABELS" 1592 PRINT" C[146]HANGE LABEL SIZE" 1594 PRINT" P[146]RINTER RECONFIGURE" 1596 PRINT" E[146]XIT TO RESTART" 1598 PRINT"  PRESS THE APPROPRIATE KEY " 1600 GOSUB1522:IFA$="" THEN1600 1602 IFA$="L"THENK=1:GOTO1730 1604 IFA$="R"THENK=2:GOTO1668 1606 IFA$="E"THEN1528 1608 IFA$="M"THENK=3:GOTO1704 1610 IFA$="C"THEN1940 1612 IFA$="P"THENGOSUB2856:GOTO1584 1614 GOTO1600 1616 REM--DISK ERROR 1618 INPUT#15,EN,EM$,ET,ES:IF(EN<20)OR(EN=62)THENET=0:RETURN 1620 PRINT" [150]DISK ERROR[146]"EN"[157], "EM$","ET"[157],"ES"[158]":ET=8 1622 PRINT" PRESS ANY KEY[146] TO RESTART PROGRAM" 1624 GOSUB1522:CLOSE5:CLOSE15:RETURN 1626 REM--DIRECTORY 1628 OPEN15,8,15:OPEN5,8,0,"$0":PRINT"[147]":GOSUB1618:IFET=8THEN1528 1630 GET#5,A1$,A2$ 1632 GET#5,A1$,A2$ 1634 GET#5,A1$,A2$ 1636 IFA1$<>""THENA0=ASC(A1$) 1638 IFA2$<>""THENA0=A0+ASC(A2$)*256 1640 PRINTMID$(STR$(A0),2);TAB(3); 1642 GET#5,A2$:IFST<>0THEN1660 1644 IFA2$<>CHR$(34)THEN1642 1646 GET#5,A2$:IFA2$<>CHR$(34)THENPRINT""A2$"[146]";:GOTO1646 1648 GET#5,A2$:IFA2$=CHR$(32)THEN1648 1650 PRINTTAB(20);:A3$="" 1652 A3$=A3$+A2$:GET#5,A2$:IFA2$<>""THEN1652 1654 PRINTLEFT$(A3$,3) 1656 GETA$:IFA$<>""THENGOSUB1664 1658 IFST=0THEN1632 1660 PRINT" BLOCKS FREE";:A0=0 1662 CLOSE5:CLOSE15:PRINTTAB(25)"PRESS ANY KEY[146]":GOSUB1522:GOTO1528 1664 GOSUB1522:RETURN 1666 REM----LOAD REPORT FORMAT 1668 PRINT" NAME OF REPORT FORMAT FILE?" 1670 PRINT"  ";NF$:INPUT"[145] ";RF$:IFRF$=""THEN1528 1672 OPEN15,8,15:OPEN5,8,5,"0:RP] "+RF$+",S,R":GOSUB1618:IFET=8THEN1528 1674 IFEN=62THENGOSUB1620:GOTO1528 1676 INPUT#5,PW,NL,NC:GOSUB1618:IFET=8THEN1528 1678 FORJ=1TONL 1680 INPUT#5,TT$(J):GOSUB1618:IFET=8THEN1528 1682 NEXTJ 1684 FORI=1TONC 1686 INPUT#5,PC(I),HC$(I):GOSUB1618:IFET=8THEN1528 1688 FORN=1TO3 1690 INPUT#5,ML$(I,N):GOSUB1618:IFET=8THEN1528 1692 NEXTN:NEXTI:INPUT#5,A1$:Z=VAL(A1$) 1694 S=ST:IFS<>0THEN1698 1696 INPUT#5,E$ 1698 CLOSE5:CLOSE15 1700 GOTO1730 1702 REM-----LOAD MAILING LABEL FORMAT 1704 PRINT" NAME OF MAILING LABEL FORMAT FILE?" 1706 PRINT"  ";NF$:INPUT"[145] ";MF$:IFMF$=""THEN1528 1708 OPEN15,8,15:OPEN5,8,5,"0:ML] "+MF$+",S,R":GOSUB1618:IFET=8THEN1528 1710 IFEN=62THENGOSUB1620:GOTO1528 1712 INPUT#5,RW 1714 FORI=1TORW:FORN=1TO3 1716 INPUT#5,ML$(I,N):GOSUB1618:IFET=8THEN1528 1718 NEXTN 1720 NEXTI 1722 S=ST:IFS<>0THEN1726 1724 INPUT#5,E$ 1726 CLOSE5:CLOSE15 1728 REM--OPEN DATAFILE CHANNEL 1730 OPEN15,8,15:OPEN5,8,5,"0:DF] "+NF$+",S,R":GOSUB1618:IFET=8THEN1528 1732 IFEN=62THENGOSUB1620:GOTO1528 1734 INPUT#5,R,F,X:GOSUB1618:IFET=8THEN1528 1738 FORN=1TOF:INPUT#5,F$(N),L%(N):NEXTN:GOSUB1618:IFET=8THEN1528 1740 REM----SEARCH ROUTINES MENU 1742 A0=0:PRINT"[147]  PRINT OPTIONS MENU " 1743 PRINT" THERE ARE "X"[146]RECORDS IN "NF$ 1744 PRINT" A[146]LL RECORDS IN FILE 1746 [153]" FWAITIND RECORDS WITH COMMON FIELDS 1748 IFK=3THENPRINT" T[146]EST LABEL(S)" 1750 PRINT" E[146]XIT BACK TO START" 1752 IFK=2THENPRINT"POSITION PAPER IN PRINTER AT TOP OF PAGE" 1754 PRINT"  PRESS THE APPROPRIATE KEY " 1756 GETC$:IFC$="" THEN1756 1758 IFC$="A"THEN1806 1762 IFC$="T"THEN1918 1764 IFC$="F"THEN1772 1766 IFC$="E"THENCLOSE5:CLOSE15:GOTO1584 1768 GOTO1756 1770 REM----FIND RECORD (SEARCH) 1772 PRINT"[147]  FIND RECORDS WITH COMMON ITEMS " 1774 FORN=1TOF:PRINT" ";N;"[146] ";F$(N):NEXTN 1776 INPUT" WHICH FIELD IS TO BE SEARCHED";SF 1778 IFSF<0ORSF>FTHENPRINT"[145][145][145]":GOTO1776 1780 PRINT" ENTER COMMON ITEM[146] ":PRINT" (THE ENTIRE STRING IS NOT REQUIRED)" 1782 PRINT" ";F$(SF);"[146] ";:INPUTT$ 1784 IFK=2THENGOSUB1838:GOSUB1852 1786 FORI=1TOX 1788 PRINT" SEARCHING RECORD";I;"[145][145]" 1790 FORN=1TOF:INPUT#5,REC$(N):IFREC$(N)=">"THENREC$(N)=" " 1791 NEXTN:GOSUB1618:IFET=8THEN1528 1792 IFT$=LEFT$(REC$(SF),LEN(T$))THENONKGOSUB1826,1870,1928 1794 IFK=2THENGOSUB1904 1796 NEXTI 1798 CLOSE5:CLOSE15 1800 IFK=2THEN1906 1802 GOTO1730 1804 REM----PRINT ALL RECORDS 1806 GOSUB2898:PG=0:PRINT"[147] PRINTING HEADING":IFK=2THENGOSUB1838:GOSUB1852 1808 FORI=STOX:PRINT"[145] READING RECORD #"STR$(I)" OF"STR$(X) 1810 FORN=1TOF:INPUT#5,REC$(N):IFREC$(N)=">"THENREC$(N)=" " 1811 NEXTN:GOSUB1618:IFET=8THEN1528 1812 ONKGOSUB1826,1870,1928 1814 IFK=2THENGOSUB1904 1816 NEXTI 1818 CLOSE5:CLOSE15 1820 IFK=2THEN1906 1822 GOTO1730 1824 REM----PRINT NONFORMATTED LISTING 1826 PRINT#4,"[ RECORD #";I;" ]";:FORJ=1TO62:PRINT#4,"-";:NEXTJ:GOSUB2888 1828 PG=PG+1:FORN=1TOF 1830 PRINT#4,F$(N);:FORJ=1TO20-LEN(F$(N)):PRINT#4,".";:NEXTJ 1831 IFREC$(N)=">"THENREC$(N)=" " 1832 PRINT#4,REC$(N):PG=PG+1:NEXTN:GOSUB2888:PG=PG+1 1834 IFPG+F<=60THENRETURN 1835 FORJ=1TO66-PG:GOSUB2888:NEXTJ:PG=0:RETURN 1836 REM----PRINT REPORT 1838 PG=0:S$="":FORJ=1TOPW:S$=S$+B$:NEXTJ 1840 FORJ=1TONL:IFTT$(J)<>">"THENGOSUB1846 1842 NEXTJ:RETURN 1844 REM----CENTER TITLE 1846 B=INT((PW-LEN(TT$(J)))/2):IFP<>1THEN1849 1848 PRINT#4,LEFT$(S$,B)+TT$(J);B1$;:PG=PG+1:RETURN 1849 PRINT#4,LEFT$(S$,B)+TT$(J);B1$:PG=PG+1:RETURN 1850 REM----POSITION HEADINGS 1852 GOSUB1866:PC(NC+1)=PW+3:CW=PC(2)-2-PC(1):IFPC(1)>1THEN1856 1854 PRINT#4,LEFT$(HC$(1),CW);:GOTO1858 1856 PRINT#4,LEFT$(S$,PC(1)-1)+LEFT$(HC$(1),CW); 1858 FORJ=2TONC:M=PC(J)-LEN(LEFT$(HC$(J-1),PC(J)-2-PC(J-1)))-PC(J-1) 1860 PRINT#4,LEFT$(S$,M)+LEFT$(HC$(J),PC(J+1)-2-PC(J)); 1862 NEXTJ:GOSUB2888:GOSUB1866:PG=PG+3:RETURN 1864 REM----PRINT DASHED LINE 1866 FORJ=1TOPW:PRINT#4,"-";:NEXTJ:GOSUB2888:RETURN 1868 REM----PRINT REPORT FILE DATA 1870 F1=VAL(ML$(1,1)):F2=VAL(ML$(1,2)):F3=VAL(ML$(1,3)):CW=PC(2)-2-PC(1) 1872 IFPC(1)>1THEN1878 1874 PRINT#4,LEFT$(REC$(F1)+B$+REC$(F2)+B$+REC$(F3),CW); 1876 GOTO1882 1878 PRINT#4,LEFT$(S$,PC(1)-1); 1880 PRINT#4,LEFT$(REC$(F1)+B$+REC$(F2)+B$+REC$(F3),CW); 1882 FORJ=2TONC:CW=PC(J)-2-PC(J-1) 1884 F1=VAL(ML$(J-1,1)):F2=VAL(ML$(J-1,2)):F3=VAL(ML$(J-1,3)) 1886 M=LEN(LEFT$(REC$(F1)+B$+REC$(F2)+B$+REC$(F3),CW)) 1888 M=PC(J)-M-PC(J-1):CW=PC(J+1)-2-PC(J) 1890 PRINT#4,LEFT$(S$,M); 1892 F1=VAL(ML$(J,1)):F2=VAL(ML$(J,2)):F3=VAL(ML$(J,3)) 1894 PRINT#4,LEFT$(REC$(F1)+B$+REC$(F2)+B$+REC$(F3),CW); 1896 NEXTJ:GOSUB2888:PG=PG+1 1898 IFPG=60THENFORJ=1TO6:GOSUB2888:NEXTJ:PG=0:GOSUB1852 1900 RETURN 1902 REM----SUM LAST COLUMN 1904 IFZ<>1THENRETURN 1905 A0=A0+VAL(REC$(VAL(ML$(NC,1)))):RETURN 1906 IFZ<>1THEN1914 1908 PRINT#4,LEFT$(S$,PC(NC)-1); 1910 FORI=1TOPW-PC(NC)+1:PRINT#4,"-";:NEXTI:GOSUB2888 1912 PRINT#4,LEFT$(S$,PC(NC)-9)+"TOTAL= "+STR$(A0) 1914 GOSUB2888:FORI=1TO66-PG:GOSUB2888:NEXTI:GOTO1730 1916 REM-----PRINT SAMPLE LABELS 1918 PRINT" PRINTING TEST LABEL" 1920 FORI=1TORW:FORJ=1TOLW:PRINT#4,RIGHT$(STR$(J),1);:NEXTJ:GOSUB2888:NEXTI 1922 FORI=1TOT%-RW:GOSUB2888:NEXTI 1924 GOTO1742 1926 REM----PRINT LABELS 1928 FORJ=1TORW:F1=VAL(ML$(J,1)):F2=VAL(ML$(J,2)):F3=VAL(ML$(J,3)) 1930 PRINT#4,LEFT$(REC$(F1)+B$+REC$(F2)+B$+REC$(F3),LW) 1932 NEXTJ 1934 FORS=1TOT%-RW:GOSUB2888:NEXTS 1936 RETURN 1938 REM----CHOOSE LABEL SIZE 1940 PRINT"[147]  LABEL SIZE [146]" 1942 PRINT" S[146]TANDARD - 5 ROWS PER LABEL" 1944 PRINT" 15/16 INCH BY 3 1/2 INCHES" 1946 PRINT" L[146]ARGE - 8 ROWS PER LABEL" 1948 PRINT" 1 7/16 INCH BY 3 1/2 INCHES" 1950 PRINT" O[146]THER - CUSTOM LABEL SIZE OR" 1952 PRINT" NUMBER OF CHARACTERS PER ROW" 1954 PRINT" NOTE: LABELS ARE SEPARATED BY ONE ROW" 1956 PRINT" 32 CHARACTERS PER ROW IS STANDARD" 1958 PRINT"  PRESS THE APPROPRIATE KEY " 1960 GETC$:IFC$=""THEN1960 1962 IFC$="S"THENT%=6:RW=5:LW=32:GOTO1584 1964 IFC$="L"THENT%=9:RW=8:LW=32:GOTO1584 1966 IFC$="O"THEN1970 1968 GOTO1960 1970 INPUT" ENTER NUMBER OF ROWS ON LABEL";RW:T%=RW+1 1972 INPUT" ENTER # OF CHARACTERS PER ROW";LW 1974 GOTO1584 1976 REM-----SEND PRINTER CODES 1978 PRINT"[147]  PRINTER COMMAND [146]" 1980 PRINT" THIS ROUTINE WILL SEND CHARACTER" 1982 PRINT" STRING [CHR$()] COMMANDS TO AN ASCII" 1984 PRINT" PRINTER. COMMANDS MUST BE ENTERED IN" 1986 PRINT" THE FORM OF INTEGERS SUCH AS:" 1988 PRINT" ? 27 (ESCAPE CODE)" 1990 PRINT" ? 66 (PITCH CODE)" 1992 PRINT" ? 2 (COMPRESSED MODE)" 1994 PRINT" ? * (END THE SEQUENCE)" 1996 PRINT" THIS WILL BE SENT TO THE PRINTER AS:" 1998 PRINT" PRINT#4,CHR$(27)CHR$(66)CHR$(2)" 2000 PRINT" UP TO FOUR(4) NUMBERS MAY BE SENT," 2002 PRINT" THE FIRST NORMALLY BEING 27[146], THE" 2004 PRINT" ESCAPE CHARACTER. END THE SEQUENCE" 2006 PRINT" BY PRESSING RETURN[146] WHEN THE ASTERISK" 2008 PRINT" IS SHOWING. PRINTERS WILL VARY, SO" 2010 PRINT" CHECK YOUR MANUAL FOR THE CODES." 2012 PRINT" ANY KEY[146] TO CONTINUE OR E[146]XIT?" 2014 GOSUB1522:IFA$="E"THEN1584 2016 PRINT"[147]  SEND PRINTER COMMAND [146]" 2018 PRINT" ENTER CODE, THEN PRESS RETURN[146]" 2020 PRINT" RETURN[146] ONLY TO QUIT" 2022 FORI=1TO4:PRINT"CODE";I;" ? * [157][157][157][157]";:INPUTI$(I) 2024 IFI$(I)="*"THEN2028 2026 NEXTI 2028 ON(I-1)GOTO2030,2032,2034,2036:GOTO2039 2030 PRINT#4,CHR$(VAL(I$(1))):GOTO2038 2032 PRINT#4,CHR$(VAL(I$(1)))CHR$(VAL(I$(2))):GOTO2038 2034 PRINT#4,CHR$(VAL(I$(1)))CHR$(VAL(I$(2)))CHR$(VAL(I$(3))):GOTO2038 2036 PRINT#4,CHR$(VAL(I$(1)))CHR$(VAL(I$(2)))CHR$(VAL(I$(3)))CHR$(VAL(I$(4))) 2038 GOSUB2888 2039 PRINT" A[146]NOTHER CODE" 2040 PRINT" T[146]EST CHANGE" 2042 PRINT" E[146]XIT TO START" 2044 PRINT"  PRESS THE APPROPRIATE KEY " 2046 GOSUB1522:IFA$="A"THEN2016 2048 IFA$="T"THENPRINT#4,"ABCDEFGHIJKLMNOPQRSTUVWXYZ":GOSUB2888:GOTO2046 2050 IFA$="E"THENRETURN 2052 GOTO2046 2854 REM---SETUP FOR PRINTER 2856 PRINT"[147]  PRINTER OR INTERFACE CONFIGURE " 2858 PRINT" PRESS 1[146] CARD?A, 1525, MPS801" 2860 PRINT" 2[146] CARD?B, MW350, 'CONNECTION'" 2862 PRINT" 3[146] 1526" 2864 IFP<>0THENPRINT" OR S[146]END PRINTER COMMANDS" 2866 IFP<>0THENPRINT" E[146]XIT TO START" 2868 PRINT"  PRESS THE APPROPRIATE KEY " 2870 GETA$:IFA$=""THEN2870 2872 IFA$="E"THENRETURN 2874 IFA$="S"THENGOTO1978 2876 P=VAL(A$) 2878 IFP=1THENB1$=CHR$(10):GOTO2856 2880 IFP=2THENB1$=CHR$(0):GOTO2856 2882 IFP=3THENB1$=CHR$(0):GOTO2856 2884 GOTO2870 2886 REM---PRINT TERMINATOR 2888 ONPGOTO2890,2892,2894 2890 PRINT#4,B1$;:RETURN 2892 PRINT#4,B1$:RETURN 2894 PRINT#4:RETURN 2896 REM---JUMP TO 2898 INPUT"[147] START AT RECORD? 1[157][157][157]";S:IFS>XORS<1THEN2898 2900 IFS=1THENRETURN 2902 FORI=1TOS-1:PRINT"[145] BYPASSING RECORD #"STR$(I)" OF"STR$(X) 2904 FORN=1TOF:INPUT#5,REC$(N):NEXTN:GOSUB1618:IFET=8THEN1528 2906 NEXTI:RETURN