IMD 1.16: 29/05/2007 19:05:52 FOGCPM.090 --FOGCPM090CHECKS CMDCANCEL CMD CHECKS DBF CHECKS MEM CHECKS NDXNEWENTERCMDDBFRED37CMD"DBFRED37DOC:FORM10 FMT FORMGEN CMD !"SAMPLE DBF(#$%&'SAVE370 MEM(EASYPOSTDOC8)*+,-./E-BEGIN CMD01E-BONES CMD2E-CHANGECMD3E-DATA DBF4E-ENTER CMD567E-EOF CMD8E-FIND CMD9:;E-INPUT CMD<E-PADDRSCMD=E-PHONE CMD>E-PRINT CMD ?@E-REORG CMDAEMF DOCBCDEFGHIJKLMNOPQEMF DOC 0 SUM AMOUNT TO A:DEP:OUT FOR CANCEL = ' ' .AND. TYPECODE < 100 ELSE STORE 0 TO A:DEP:OUT ENDIF ? ? STR(N:DEP:OUT,3) + ' Deposits outstanding, total = ' + STR(A:DEP:OUT,10,2) COUNT FOR CANCEL = ' ' .AND. TYPECODE >= 100 TO N:CHK:OUT IF N:CHK:OUT <> 0 SUM AMOUNT TO A:CHK:OUT FOR CANCEL = ' ' .AND. TYPECODE >= 100 ELSE STORE 0 TO A:CHK:OUT ENDIF ? ? STR(N:CHK:OUT,3) + ' Checks outstanding, total = ' + STR(A:CHK:OUT,10,2) ? ? ? 'Checkbook balance should be: ' + STR(M:OLDBAL,10,2) ? ? ? 'Statement balance should be : '+ STR((M:OLDBAL + A:CHK:OUT - A:DEP:OUT),10,2) WAIT CASE !(A) = 'R' SAVE TO B:CHECKS SET TALK ON ERASE RETURN * N O T E : RETURN CURRENTLY LEAVES FILES OPEN!!! ******* CASE !(A) = 'L' USE B:CHECKS ERASE ? ? '************************************************************' ? LIST ? ? ' Next check number = ' , M:RNUM+1 ? ? ' BALANCE = ', M:OLDBAL ? ? '************************************************************' USE B:CHECKS INDEX B:CHECKS WAIT CASE !(A) = 'P' USE B:CHECKS SET PRINT ON ? ? '************************************************************' ? LIST ? ? 'Next check number =', M:RNUM+1 ? ? 'BALANCE =', M:OLDBAL ? ? '************************************************************' ? SET PRINT OFF USE B:CHECKS INDEX B:CHECKS ENDCASE *---------------------------------------------------------- ENDDO *>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Statement balance should be : '+ STR((M:OLDBAL + A:CHK:OUT - A:DEP:OUT),10,2) WAIT CASE !(A) = 'R' SAVE TO B:CHECKS SET TALK ON ERASE RETURN * N O T E : RETURN CURRENTLY LEAVES FILES OPEN!!! ******* CASE !(A) = 'L' USE B:CHECKS ERASE ? ? '************************************************************' ? LIST ? ? ' Next check number = ' , M:RNUM+1 ? ? ' BALANCE = ', M:OLDBAL ? ? '************************************************************' USE B:CHECKS INDEX B:CH*********************************************************** * * FILE: B:CANCEL.CMD * * ENTER CANCELLED CHARGES AND DEPOSITS * * DATE: 30-AUG-81 STORE 'V3.5' TO V:CANCEL * *********************************************************** ERASE STORE CHR(M:CANCELNO) TO M:CANCELCH @ 2,0 SAY 'CANCELLATION CHARACTER IS ' GET M:CANCELCH READ STORE -1 TO C:NUMBER STORE 0.00 TO A:CHK STORE 0.00 TO A:DEP STORE 0 TO N:CHK STORE 0 TO N:DEP STORE F TO C:UNNUM STORE F TO FINISHED *<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< DO WHILE T ERASE STORE T TO M:LOOKING @ 2,0 SAY 'ENTER CANCELLED ITEMS ' + V:CANCEL IF .NOT. C:UNNUM @ 4,0 SAY 'ENTER CHECK # OF 0 TO GO TO CREDITS' STORE C:NUMBER+1 TO C:NUMBER @ 7,0 SAY 'ENTER CHECK NUMBER ' GET C:NUMBER PICTURE '9999' READ IF C:NUMBER = 0 STORE T TO C:UNNUM STORE F TO M:LOOKING ELSE STORE 0.00 TO C:AMOUNT @ 8,0 SAY ' AMOUNT ' GET C:AMOUNT PICTURE '9999999.99' READ ENDIF ELSE @ 4,0 SAY 'ENTER AMOUNT OF 0 TO QUIT' STORE 0.00 TO C:AMOUNT @ 7,0 SAY 'AMOUNT ' GET C:AMOUNT PICTURE '9999999.99' READ IF C:AMOUNT = 0 RELEASE FINISHED, M:LOOKING, C:UNNUM STORE M:CANCELNO + 1 TO M:CANCELNO ERASE ? ? N:CHK,' Checks, total= ', A:CHK ? ? N:DEP,' Deposits, total= ', A:DEP WAIT RELEASE RIGHT RETURN ENDIF * STORE 0 TO C:MM * STORE 0 TO C:DD * STORE 0 TO C:YY * @ 8,0 SAY ' DATE ' GET C:MM PICTURE '99' * @ 8,12 GET C:DD PICTURE '99' * @ 8,16 GET C:YY PICTURE '99' * READ ENDIF * FIND CANCELLED ITEM ************************************* IF M:LOOKING IF .NOT. C:UNNUM STORE STR(C:NUMBER,4) TO CNUM FIND &CNUM RELEASE CNUM IF #<> 0 .AND. C:AMOUNT = AMOUNT STORE T TO RIGHT ELSE STORE F TO RIGHT ENDIF ELSE STORE F TO RIGHT LOCATE FOR AMOUNT=C:AMOUNT .AND. NUMBER=0; .AND. CANCEL = ' ' ENDIF IF EOF .OR. (# = 0 ) ? 'ERROR: RECORD NOT FOUND' + CHR(7) STORE 0 TO M:COUNT DO WHILE M:COUNT < 20 STORE M:COUNT + 1 TO M:COUNT ENDDO RELEASE M:COUNT ENDIF ENDIF * DISPLAY AND FIND NEXT IF THIS WASN'T IT ***************** IF (.NOT. EOF ) .AND. ( # <> 0) DO WHILE M:LOOKING @ 10,0 SAY ' NAME ' @ 10,15 SAY NAME @ 11,0 SAY ' NUMBER ' @ 11,15 SAY NUMBER @ 12,0 SAY ' DATE MM/DD/YY ' @ 12,15 SAY MM @ 12,19 SAY DD @ 12,23 SAY YY @ 13,0 SAY ' AMOUNT ' @ 13,15 SAY AMOUNT @ 14,0 SAY ' TYPECODE ' @ 14,15 SAY TYPECODE @ 15,0 SAY ' CANCEL ' @ 15,15 SAY CANCEL IF RIGHT @ 19,0 SAY CHR(7) ENDIF STORE ' ' TO A @ 20,0 SAY 'ENTER TO CANCEL, 0 TO ABANDON SEARCH, . TO FIND NEXT' @ 21,0 GET A READ IF A=' ' IF CANCEL = ' ' IF TYPECODE < 100 STORE N:DEP+1 TO N:DEP STORE A:DEP+AMOUNT TO A:DEP ELSE IF NUMBER <> 0 STORE N:CHK+1 TO N:CHK STORE A:CHK+AMOUNT TO A:CHK ENDIF ENDIF IF TYPECODE >=100 REPLACE CANCEL WITH M:CANCELCH REPLACE CANCEL WITH !(CANCEL) ELSE REPLACE CANCEL WITH M:CANCELCH ENDIF ELSE ? 'ERROR: ALREADY CANCELLED' + CHR(7) ENDIF STORE F TO M:LOOKING ENDIF IF A = '.' IF C:UNNUM SKIP ELSE CONTINUE ENDIF ENDIF IF A = '0' STORE F TO M:LOOKING ENDIF IF EOF .OR. #=0 ? CHR(7) + 'END OF FILE REACHED' STORE F TO M:LOOKING ENDIF ENDDO ENDIF ENDDO *>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 15 SAY AMOUNT @ 14,0 SAY ' TYPECODE ' @ 14,15 SAY TYPECODE @ 15,0 SAY ' CANCEL ' @ 15,15 SAY CANCEL IF RIGHT @ 19,0 SAY CHR(7) ENDIF STORE ' ' TO A @ 20,0 SAY 'ENTER TO CANCEL, 0 TO ABANDON SEARCH, . TO FIND NEXT' @ 21,0 GET A READ IF A=' ' IF CANCEL = ' ' IF TYPECODE < 100 STORE N:DEP+1 TO N:DEP STORE A:DEP+AMOUNT TO A:DEP ELSE IF NUMBER <> 0 STORE N:CHK+1 TO N:CHK STORE A:CHK+AMOUNT TO A:CHK ENDIF ENDIF IF TYPECODE >=100 REPLACE CANCEL WITH M:CANCELCH REPLACE CANCEL WITH !(CANCEL) ELSE REPLACE CANCEL WITH M:CANCELCH ENDIF E7NUMBERNlCANCELClMMNlDDNlYYNlNAMEClAMOUNTN lBALANCEN lTYPECODENm 12A 1 182Versatel Cash Withdr 10.00 -10.00110 13 1 182Internal Revenue Ser 13.00 -23.00150 0 1 182ADAC 100.00 77.00 20 1010 1 182J.D.RIPPER 2.50 79.50 1 4,0 SAY 'ENO NAMECOUNT *<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< DO WHILE T ERASE * INIT MEMORY VARIABLES *********************************** STORE M:RNUM + 1 TO C:NUMBER STORE ' ' TO C:CANCEL STORE MM TO C:MM STORE DD TO C:DD STOTER AMOUNT OF M:RNUM dM:OLDBAL dV:CHECKSdAdV:NEWdV:CANCELodC:NUMBER &dC:CANCEL-dC:MM 0dC:DD 7dC:YY >dC:NAMEEdC:AMOUNT [dC:TYPECODE bdV:PUTNidM:CANCELCH"dA:CHK udA:DEP |dN:CHK dN:DEP dM:CANCELNO dN:DEP:OUT dA:CHK:OUTA dN:CHK:OUT dA:DEP:OUTA d CAyPV3.5V3.3c @@A V3.2V3.5RB@ @AB%********************************************************* * * FILE B:STARTCHK.CMD * * INITIALIZES MEMORY VARIABLES AND * CREATES DATA BASE FILE FOR CHECKBOOK * * DATE: 17-AUG-82 STORE 'V3.0' TO V:START *********************************************************** CREATE B:CHECKS STORE 1000 TO M:RNUM STORE 500.00 M:OLDBAL STORE 65 TO M:CANCELNO RETURN ,2 TYPECODE,N,3 N STORE 1000 TO M:RNUM STORE 500.00 M:OLDBAL STORE 65 TO M:CANCELNO RETURN  2NUMBER>C\C?C@C ACBCCCDCECFCICGCHCJCKC LC!MC"PC#QC$SC%TC&UC'VCd Ruff 45.00 2022.88706*1421L11 981Texaco Inc. (Check 17.50 2005.38332*1422L11 981PG & E (Check) 38.25 1967.13222* 0L11 481Versatel Cash Withdr 100.00 1867.13110* 0L111081Versatel Cash Withdr 20.00 1847.131(WCAAC 45.00 2022.88706*1421L11 981Texaco Inc. (Check 17.50 2005.38332*1422L11 981PG & E (Check) 38.25 1967.13222* 0L11 481Versatel Cash Withdr 100.00 1867.13110* 0L111081Versatel Cash Withdr 20.00 1847.131(WC)]C0^C1_C2`C3aC4ACBCCCDCECFCICGCHCJCKC LC!MC"PC#QC$SC%TC*********************************************************** * * FILE: B:NEWENTER * * ENTER NEW ITEMS IN CHECKBOOK * * DATE: 22-AUG-82 STORE 'V3.3' TO V:NEW * *********************************************************** GOTO BOTTOM STORE 0 TO NAMECOUNT *<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< DO WHILE T ERASE * INIT MEMORY VARIABLES *********************************** STORE M:RNUM + 1 TO C:NUMBER STORE ' ' TO C:CANCEL STORE MM TO C:MM STORE DD TO C:DD STORE YY TO C:YY STORE ' ' TO C:NAME STORE 0.00 TO C:AMOUNT STORE 0 TO C:TYPECODE * READ DATA *********************************************** @ 5,10 SAY 'CHECK AND DEPOSIT ENTRY ' + V:NEW @ 7,0 SAY 'ENTER TYPECODE OF 0 TO EXIT' @ 8,0 SAY 'OLD BALANCE = ' @ 8,15 SAY M:OLDBAL @ 10,0 SAY ' TYPECODE ' GET C:TYPECODE PICTURE '999' READ IF C:TYPECODE = 0 IF NAMECOUNT > 0 DO B:PUTNAMES ENDIF RELEASE NAMECOUNT RETURN ENDIF IF C:TYPECODE < 100 STORE T TO DEPOSIT ELSE STORE F TO DEPOSIT ENDIF IF C:TYPECODE <= 130 STORE 0 TO C:NUMBER ENDIF * DISPLAY AND GET REST OF DATA ITEM *********************** @ 11,0 SAY ' NAME ' GET C:NAME @ 12,0 SAY ' NUMBER ' GET C:NUMBER PICTURE '9999' @ 13,16 GET C:MM PICTURE '99' @ 13,20 GET C:DD PICTURE '99' @ 13,24 GET C:YY PICTURE '99' @ 13,0 SAY ' DATE = MMDDYY ' @ 14,0 SAY ' AMOUNT ' GET C:AMOUNT PICTURE '9999999.99' @ 15,0 SAY ' CANCEL ' GET C:CANCEL READ * ERROR CHECKING ****************************************** STORE F TO M:ERROR * SEE IF DUPLICATE CHECK NO. ****************************** IF C:NUMBER <> 0 STORE STR(C:NUMBER,4) TO CNUM FIND &CNUM RELEASE CNUM IF #<>0 STORE T TO M:ERROR ? 'ERROR: DUP CHECK NO., REC NO.= ', # ENDIF ENDIF IF C:NAME = ' ' STORE T TO M:ERROR ? 'ERROR: NAME MUST NOT BE BLANK' ENDIF IF C:NUMBER < 0 STORE T TO M:ERROR ? 'ERROR: NUMBER MUST BE >= 0' ENDIF IF C:MM <1 .OR. C:MM >12 STORE T TO M:ERROR ? 'ERROR: MM = ' + STR(C:MM,2) ENDIF IF C:DD <1 .OR. C:DD > 31 STORE T TO M:ERROR ? 'ERROR: DD = ' + STR(C:DD,2) ENDIF IF C:YY < 80 .OR. C:YY > 82 STORE T TO M:ERROR ? 'ERROR: YY = ' + STR(C:YY,2) ENDIF IF C:AMOUNT <=0 STORE T TO M:ERROR ? 'ERROR: AMOUNT MUST BE > 0' ENDIF IF C:TYPECODE <=0 STORE T TO M:ERROR ? 'ERROR: TYPECODE MUST BE > 0' ENDIF IF M:ERROR ? CHR(7) STORE 0 TO M:COUNT DO WHILE M:COUNT < 50 STORE M:COUNT + 1 TO M:COUNT ENDDO RELEASE M:COUNT ENDIF * PUT NEW RECORD INTO DATA BASE *************************** IF .NOT. M:ERROR IF C:NAME = '. ' STORE NAMECOUNT+1 TO NAMECOUNT ENDIF IF C:NUMBER <> 0 STORE C:NUMBER TO M:RNUM ENDIF APPEND BLANK REPLACE NUMBER WITH C:NUMBER, CANCEL WITH C:CANCEL REPLACE DD WITH C:DD, MM WITH C:MM, YY WITH C:YY REPLACE NAME WITH C:NAME, AMOUNT WITH C:AMOUNT REPLACE TYPECODE WITH C:TYPECODE IF DEPOSIT REPLACE BALANCE WITH M:OLDBAL + AMOUNT ELSE REPLACE BALANCE WITH M:OLDBAL - AMOUNT ENDIF STORE BALANCE TO M:OLDBAL ENDIF ******************************************** RELEASE M:ERROR, DEPOSIT ENDDO *>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  IF C:AMOUNT <=0 STORE T TO M:ERROR ? 'ERROR: AMOUNT MUST BE > 0' ENDIF IF C:TYPECODE <=0 STORE T TO M:ERROR ? 'ERROR: TYPECODE MUST BE > 0' ENDIF IF M:ERROR ? CHR(7) STORE 0 TO M:COUNT DO WHILE M:COUNT < 50 STORE M:COUNT + 1 TO M:COUNT ENDDO RELEASE M:COUNT ENDIF * PUT NEW RECORD INTO DATA BASE *************************** IF .NOT. M:ERROR IF C:NAME = '. ' STORE NAMECOUNT+1 TO NAMECOUNT ENDIF IF C:NUMBER <> 0 STORE C:NUMBER TO M:RNUM ENDIF APPEND BLANK REPLACE NUMBER WITH C:NUMBER, CANCEL WITH C:CANCEL REPLACE DD WITH C:DD, MM WITH C:MM, YY WITH C:YY REPLACE NAME WITH C:NAME, AMOUNT WITH C:AMOUNT REPLACE TYPECODE WITH C:TYPECODE IF DEPOSIT REPLACE BALANCE WITH M:OLDBAL + AM߰ ߬ ߬ ߬߻Ѽ׼߉ ߬߼߾߽ߺ߽߳ ߬ ߬ ߬ ߲߫ ߬غߛߞ߲лЦ߸߲߯ ߬ ߫ٲ ߫߱ ױ߫߱ جѲ ߬ ߫߱ ױ߫߱ ߳׫׶Ѿ߶Ѿ߳׫׶Ѿ߶ ػߖߞ߽ٻ߶߾ٶپŶ ׫׶Ѿ߶ ػߖߞ߽ٻ߶߾ٶ ػߖ߽ٻ Żئ ػߙٱŻٱߖٻŻٱ ߫߱ ױ߫߱ ױ߫߱ Żٱئ ػٱŻٱߖٻŻٱ ߫߱ ױ߫߱ ױ߫߱ ثߞߑߛߙ عߖٹ جѲߖߑߏߐ߾߻ غߛߙߙ׌ߞߙߝߊ߻ ر߫ߦŻ زߜߖߜߛߖ ߛߙߙ׌ߐߙצб߫ߦű צű߫ߦű ر߫ߦű ر߫ߦŹ űئ ׾߼ߛߖצб߫ߦŻ צŻ߫ߦŻ ׽߼ߛߙߙ׌צб߫ߦű צű߫ߦű ׼߼ߛߙߙצб߫ߦŹ צŹ߫ߦŹ ؼ߫߼ űئ Żئ رߐߛߝ߫߻ ׻߫߻ رߐߖߤߑߗ߭߫߶ ׶߫߶ ߳׫׶Ѿ߶ رߐߌߖߤߑߗ߭߫߶ ׶߫߶ ߫߶ űئ ߫߱ Żٱئ Żٱ߱Żٱ߻Żٱߦűٱ ߫߱ ױ߫߱ ױ߫߱ Żٱر Żٱ ߫߱ ߫߱ ױ߫߱ ػ߆߈ߋߛߞߙ߫ߦŻٱ צŻٱ߫ߦŻٱ Żٱئ غߑߐߙߋ߱Żٱ ױŻٱ߫߱Żٱ ػߙٱŻٱ߫߻Żٱ ٱŻٱ߫ߦűٱ צűٱ߫ߦűٱ űٱر ٻŻٱ߫ٱŻٱ Żٱ߫ٱŻٱٱ ߫߱ ױ߫߱ ױ߫߱ ػߞߙ߫ߦŻٱ צŻٱ߫ߦŻٱ Żٱر ؼ߫ߦűٱ ߫߱ ױ߫߱ ױ߫߱ ر߫ߦŻٱ ؼ߫ߦűٱ Źئ رߑߐߙߙߤњ߹߈ߚߢ߫߹ ׹߫߹ ׫׶Ѿ߶Ѿ߳׫׶Ѿ߶ ٻ߶߾ٶپŶ ׫׶Ѿ߶ ٻ߶߾ٶ ٻ ح߫߭ ߬ جѾ߼ػ ذ߬׬߻׻߼ח߭ث߼ ׼ߋ߼ ح߫߭ جѰ߼ػ ߫߱ ױ߫߱ Żٱئ űٱر ׻ŻٱѾ߫׻Żٱ ٱŻٱ߈ߩ׻Żٱ űٱر ׻ŻٱѾ߫׻Żٱ ٱŻٱ߈߻Żٱ ߫߱ ױ߫߱ ױ߫߱ ߫ٹ ߫߱ ߫  ߫߬ ߰ ج  پŶ ׫׶Ѿ߶ ٻ߶߾ٶ ٻ ح߫߭ ߬ جѾ߼ػ ذ߬׬߻׻߼ח߭ث߼ ׼ߋ߼ ح߫߭ جѰ߼ػ ߫߱ ױ߫߱ Żٱئ űٱر ׻ŻٱѾ߫׻Żٱ ٱŻٱ߈ߩ׻Żٱ űٱر ׻ŻٱѾ߫׻Żٱ ٱŻٱ߈߻Żٱ ߫߱ ױ߫߱ ױ߫߱ ߫ٹ ߫߱ ߫  Documentation for DBFRED37.CMD (c) Version 3.70 FORMGEN.CMD (c) Version 2.3 Copyright AUGUST, 1985 by Ellis B. Levin Permission granted to use only for non-commercial purposes only. May not be used for commercial purposes, sold, or incorporated in anyother program used for commercial purposes or sold without written permission of copywriter. I. INTRODUCTION DBFRED37.CMD (c) is an updated version of DBFRED33.CMD (c) previously released to the public domain in December, 1984. DBFRED37.CMD (c) is a utility program that is designed to allow the appending of dBASEII (tm) database files with one or more fields being defaulted. Tested with version 2.4 of dBASEII (tm). Previous unreleased versions of this program were used with version 2.3 of dBASEII (tm). Although the 'bugs' in version 3 led to some unpredictable results. The author is not responsible for any damage to your system from use of this program. DBFRED37.CMD contains substantial changes from version 3.6. Under dBASE II (tm), the user can 'SET CARRY ON' to carry- over the previous record when appending records in the full- screen mode. BUT there is no option available which permits the defaulting of one or more fields, but less than all of the fields when appending. DBFRED37.CMD (C) provides that option. II. WHERE NO MEM FILE HAS PREVIOUSLY BEEN GENERATED After DBFRED37 is loaded, if SAVE370.MEM does not exist on the A drive, the program with warn 'SAVE370.MEM is not present on A Drive. Enter defaults for field(s) and frorm before using DBFRED37.' The program will then ask: 'Make changes in current database & indexes defaults for field(s), or form (Y/N)'. If you answer 'Y', the program will then give you a series of options: (A) Change database & indexes? (Y/N) (B) Change defaults for field(s)? (Y/N) (C) Change default for form? (Y/N) If you answer yes to (A), you will be asked to enter a database and up to two indexes. There is no need to enter a drive since the program assumes the database in on the B drive and any indexes are on the A drive. The entries will be saved to SAVE370.MEM. If you answer yes to (B), you will be asked the following series of questions: 'Do you want to default a field?' If you answer 'Y', you will then be asked: 'Enter name of field' 'Default for field' The default for field you enter will then appear automatically, everytime you enter a new record in the database using DBFRED37. You will then be asked again if you want to default a field. For example, if you enter 'Y' to default a field, and enter the name of field 'CITYST' , the third question will ask you: 'Default for CITYST'. If you enter 'Chicago, IL', that default will show up automatically in the field CITYST everytime you enter a new record using DBFRED37. You entries will be saved to SAVE370.MEM. You can default from 0 to all of the fields of the database. If you answer 'Y' to (C) you will be asked: 'New name of form file [i.e. FORM14 without extension]' Enter the name of the FMT screen generated with FORMGEN or other procedures. The name will then be saved to SAVE370.MEM. If the program finds SAVE370.MEM on the A drive, after DBFRED37 is initially generated it will display the existing database and indexes, defaulted fields together with the defaults, and FMT form. If you do not want to make any changes answer the question 'Make changes in current databaser & indexes, defaults for field(s), or form (Y/N)' should be answered 'N'. If you want to change the database or indexes, answer 'Y' to 'Change database & indexes? (Y/N)'. If you want to change any of the fields or defaults, answer 'Y' to 'Change defaults for fieold(s) (Y/N)'. If you want to change the FMT form, answer 'Y' to Change default for form? (Y/N)'. You will then be asked the questions relating to the hanges you indicated, and these changes will be store to SAVE370.MEM. Once you have finished with the initial questions, you are ready to enter no record. The following will appear once any changes are stored to SAVE370.MEM: ' Options:System (S), Dbase (D), Continue (hit RETURN) ' If you hit RETURN to continue, the screen form will be generated with the defaults appearing on the defaulted fields. e.g. FNAME: ' ' LNAME: ' ' ADDRNO: ' ' ADDRNAME: ' ' APT: ' ' CITYST: 'Chicago, IL' ZIP: '60640' You can override the default by simply typing the entry over the default!! After each new record is completed the query: 'Options: System (S), Dbase (D), Continue [hit RETURN]' reappears. Typing 'S' returns you to the operating system, 'D' returns you to Dbase II and RETURN generates a new screen. III. USE OF THE SAMPLE.DBF WITH FORM10.FMT AND SAVE370.MEM You can test DBFRED37.CMD using the sample database and screen form, SAMPLE.DBF, FORM10.FMT and the SAVE370.MEM, which come with this program. Remember the database should be in the B drive. IV. USE OF FORMGEN.CMD (c) TO GENERATE SCREEN FORMS FORMGEN.CMD (c) is used to generate the FMT forms for DBFRED37.CMD (c). Once FORMGEN.CMD (c) is generated, the following inputs will appear on the screen: 'Enter name of first field'. Enter name of first field in form in order the fields appear in the dbase structure. 'Enter name of next field [if none hit RETURN]' Enter name of second and each succeeding field until last field entered. Generates this input until RETURN entered. After last field inputed, the program asks 'R un DB(F)red37.Cmd or return to (D)baseII '. Enter 'F' to go directly to DBFRED37.CMD (c) or 'D' to dbaseII. FORMGEN.CMD (c) version 2.3 overcomes a limitation found in previous versions of FORMGEN.CMD of not being able to generate more than 19 fields. Version 2.2 can generate up to 38 fields. Since this version produces two columns of fields on a screen, the length of the fields is limited. After the FMT form is generated with FORMGEN.CMD, "PICTURE 'X:X'' can be added after the GET commands with MODIFY COMMAND or any text editor applied to the FMT form to fields defaulted or fields not defaulted by DBFRED37.CMD. V. FILES WITH THIS PROGRAM. Files that come with this library include the following: DBFRED37.CMD (c) DBFRED37.DOC FORM10.FMT FORMGEN.CMD (c) SAMPLE.DBF SAVE370.MEM VI. ADDRESS OF AUTHOR If there are any questions or suggestions, please call or write the author at: Ellis B. Levin 5307 N. Magnolia Avenue Chicago, Illinois 60640 (312) 975-0800 e more than 19 fields. Version 2.2 can generate up to 38 fields. Since this version produces two columns of fields on a screen, the length of the fields is limited. After the FMT form is generated with FORMGEN.CMD, "PICTURE 'X:X'' can be added after the GET commands with MODIFY COMMAND or any text editor applied to the FMT form to fields defaulted or fields not defaulted by DBFRED37.CMD. V. FILES WITH THIS PROGRAM. Files that come with this library include the following: DBFRED37.CMD (c) DBFRED37.DOC FORM10.FMT FORMGEN.CMD (c) SAMPLE.DBF SAVE370.MEM VI. ADDRESS OF AUTHOR If there are any questions or suggestions, pl @ 1,1 SAY 'RECORD# ' + NUMBER @ 2,1 SAY 'FNAME' @ 2,15 GET FNAME @ 3,1 SAY 'LNAME' @ 3,15 GET LNAME @ 4,1 SAY 'ADDRNO' @ 4,15 GET ADDRNO @ 5,1 SAY 'ADDRNAME' @ 5,15 GET ADDRNAME @ 6,1 SAY 'APT' @ 6,15 GET APT @ 7,1 SAY 'CITYST' @ 7,15 GET CITYST @ 8,1 SAY 'ZIP' @ 8,15 GET ZIP @ 9,1 SAY 'TEL' @ 9,15 GET TEL @ 10,1 SAY 'SOURCE' @ 10,15 GET SOURCE @ 11,1 SAY 'COMMENTS' @ 11,15 GET COMMENTS  @ 9,1 SAY 'TEL' @ 9,15 GET TEL @ 10,1 SAY 'SOURCE' @ 10,15 GET SOURCE ߰ ݻߨ߳׫׹ٱѾ߹ٱݫ߱ź ߫߱ ױ߫߱ ߹Ѽ׼߉ ߼߾߽ߺ߽߳ ߪߋߘߌߙߙߋ߻Ѽ׼ غߑߐߙߙ߫߹ٱ ׹ٱ߫߹ٱ &NOT:EMPTY ߫߱ ױ߫߱ ױ߫߱ غߑߐߑߙߤߑߗ߭ث߹ٱ ׹ٱ߫߹ٱ ߫߱ ױ߫߱ ߫߭ ׭߫߭ ر߫߼ رߐߙߙ߫߹ ׹߫߹ ߫ٹѹ ߰ ݿ߬ح߱ &NOT:EMPTY ر ݿ٭߬ٹٱ ݿ٭߸ٹٱ ݿ٭߬ٹٱ ݿ٭߸ٹٱ ߫߭ ׭߫߭ ׭߫߭ ߫߱ ױ߫߱ ױ߫߱ ߫߭ ߫߭ ئ߫߼ ߰ ߫ ح߻׹֍Ѽߐߍߋ׻֝߫߱ ױ߫߱ ߰ ع  ح߻׹֍Ѽߐߍߋ׻֝ غߑߐߙߙ߫߹ٱ ׹ٱ߫߹ٱ &NOT:EMPTY ߫߱ ױ߫߱ ױ߫߱ غߑߐߑߙߤߑߗ߭ث߹ٱ ׹ٱ߫߹ٱ ߫߱ ױ߫߱ ߫߭ ׭߫߭ ر߫߼ رߐߙߙ߫߹ ׹߫߹ ߫ٹѹ ߰ ݿ߬ح߱ &NOT:EMPTY ر ݿ٭߬ٹٱ ݿ٭߸ٹٱ ݿ٭߬ٹٱ ݿ٭߸ٹٱ ߫߭ ׭߫߭ UFNAMECpLNAMECpADDRNOCpADDRNAMECpAPTCpCITYSTCpZIPCqTELCqSOURCEC.qCOMMENTSC=q Sally Jones 4445 N. Broadway Chicago, IL 60640 Fred Smith 1234 W. Foster Avenue Chicago, IL 60640 Chicago, IL 60640 John Jones 5330 N. Kenmore Ave. Chicago, IL 60640  / / / 85/Corresp. School strike Emma Viveror 4321 N. Kenmore Chicago, IL 60613 / / / 85/Corresp. School strike Matilda Mercado 4416 N. Sheridan 12 Chicago, IL 60640 / / / 85/Corresp. School strike Glieland 4607 N. Sheridan 902 Chicago, IL 60640 / / / 85/Corresp. School strike Rosa Santiago 4412 N. Sheridan Chicago, IL 60640 / / / 85/Corresp. School strike Mr. & Mrs. Datil 4414 N. Sheridan Chicago, IL 60640 / / / 85/Corresp. School strike Fidelia Areila 4540 N. Sheridan  Chicago, IL 60640 / / / 85/Corresp. School strike Mrs. Rapier 925 W. Windsor Chicago, IL 60640 / / / 85/Corresp. School strike Myrna Colon 4410 N. Sheridan 3 Chicago, IL 60640 / / / 85/Corresp. School strike Remedios Ceovantes 4241 N. Kenmore Chicago, IL 60613 / / / 85/Corresp. School strike Debbie Hill 4208 N. Kenmore Chicago, IL 60613 / / / 85/Corresp. School strike Electa & Lorel Bey 922 W. Windsor 3rdFlChicago, IL 60640 / / / 85/Corresp. School strike Beverly Stepney 4640 N. Sheridan 604 Chicago, IL 60640  / / / 85/Corresp. School strike Mr. G. Prakash 725 W. Melrose Chicago, IL 60657 / / / 85/Corresp. School strike Radolfo Perez Nettlehorst School 3252 N. Broadway Chicago, IL 60657 / / / 85/Corresp. School strike Bernardo Mansarrez Nettlehost School 3252 N. Broadway Chicago, IL 60657 / / / 85/Corresp. School strike Sonia Ruiz Nettlehorst School 3252 N. Broadway Chicago, IL 60657 / / / 85/Corresp. School strike E. Bonilla Nettlehorst School 3252 N. Broadway Chicago, IL 60657 / / / 85/Corresp. School strike Jose Alvarez Nettlehorst School 3252 N. Broadway Chicago, IL 60657 / / / 85/Corresp. School strike Gerudiel Hermesillo Nettlehost School 3252 N. Broadway Chicago, IL 60657 / / / 85/Corresp. School strike Deborah Lopez Nettlehorst School 3252 N. Broadway Chicago, IL 60657 / / / 85/Corresp. School strike Benito Mansarrez Nettelhorst School 3252 N. Broadway Chicago, IL 60657 / / / 85/Corresp. School strike Kenyatta Wright 517 W. Brompton Chicago, IL 60657 / / / 85/Corresp. School strike icago, IL 60613 / / / 85/Corresp. School strike Electa & Lorel Bey 922 W. Windsor 3rdFlChicago, IL 60640 / / / 85/Corresp. School strike Beverly Stepney 4640 N. Sheridan 604 Chicago, IL 60640  Y:DEFAULT1dYCONTINUEdCC:DEFAULT1 d Chicago, ILN:DEFAULT1dCITYSTY:FORMdNFORM dFORM10Y:NEW(dNZIP1+d60640DOLPOT12dXWKPOT15dXD:DEFAULT1 8d Chicago, ILNUMEd1Y:NUMERIC1HdUSOUCE1 Kd 85/GroupsCITYST1 Vd Chicago, ILC:DEFAULT2cd85/RemerADD:NO(md(store str(&no+1,int((&no+1)/10)+1) to noNOd3Y:NUMERIC2dUY:DEFAULT3dNY:NUMERIC3dCSOURCE1 d 85/GroupsCOMMENTS1dtestY:NUMERIC5dCY:DEFAULT6dNY:NUMERIC6dCY:DEFAULT4dNY:NUMERIC4dCREDOdRY:DEFAULT2dYN:DEFAULT2dZIPD:DEFAULT2d60640FIVEDOLd 100NUMB d@0Y:NEWFdNY:DATAdYDATABASEdSAMPLEINDEX1d INDEX2d &NO, Y:NUMERIC&NO * &ADD:NO STORE NUMB + 1 TO NUMB IF NUMB < 10 STORE STR(NUMB,1) TO NO ELSE STORE STR(NUMB,2) TO NO ENDIF ENDDO IF Y:DEFAULT&NO = 'N' REasyPost.DOC May,14 1984 Version 1.0 __E A S Y___POST__ a dBase II applications prog. ________________by Bill Atkinson________________ copyright (c) 1984 by Bill Atkinson. All rights reserved. monetary gain not permitted under any circumstance by individual, partnership, or corporation, without written permission from copyright owner: Bill Atkinson, 9903 Vogue Lane, Houston, Texas 77080 - (713) 467-0449. ________________________________________________ dBaseII is a registered Trade Mark of Ashton-Tate. These programs require the Ashton-Tate software. ________________________________________________ Easy Post was written on VDO. Other public domain software used includes sd-82, disk77os,ERAA and DISPLAY and SAP. I am a new member of FOG and Houston's OUCH. After gaining such a wealth of programs from a 'Party' and on the Modem..I felt a little guilty - I like to give and not always take. Going through the FOG and OUCH catalog files I noticed a lack of dBase programs. I felt that this might be acceptable . EASY INSTRUCTIONS FOR EASY POST. Use a new (got any?) disk and format it. Then put the programs onto it using PIP or better still disk77os which I call D7 (less of a handfull) and do a mass transfer or two. The following is a print out using the disk77os $p alternate command...it tells all.... Drive B: files: 26 space used: 77k (106k free) B: -E/POST .001 0k | E/BEGIN .CMD 2k B: DBASEAPP.OVR 4k | E/BONES .CMD 1k B: DBASEBRO.OVR 2k | E/CHANGE.CMD 1k B: DBASEJOI.OVR 2k | E/DATA .DBF 1k B: DBASEMAI.OVR 7k | E/ENTER .CMD 1k B: DBASEMOD.OVR 4k | E/EOF .CMD 1k B: DBASEMSC.OVR 4k | E/FIND .CMD 2k B: DBASEMSG.COM 8k | E/INPUT .CMD 1k B: DBASERPG.OVR 6k | E/PADDRS.CMD 1k B: DBASESRT.OVR 2k | E/PHONE .CMD 1k B: DBASETTL.OVR 2k | E/PRINT .CMD 2k B: DBASEUPD.OVR 1k | E/REORG .CMD 1k B: DO .COM 18k | EASYPOST.DOC 6k EASY POST will work on both Single and Double Density Osborne Is. In both cases I recommend that the Programs disk be placed in 'A' and booted and use a seperate DATA disk in 'B' Transfer a Copy of E/DATA.DBF to drive 'B' and then type bBase E/begin...... Follow the Menu.....the rest should be easy to figure out. As structured E/DATA.DBF will allow about 250 records on Double Density and 125 records on Single density. The problem is that you can only use about 10% less than half of the capacity of the disk since dBase II sort is a disk sort and must be allowed the same space as the data takes for its Temporary file. Here is an oportunity for a bright programmer to have some fun. Suggest an IN-CORE sort could be implemented and strongly rcommend the UTOOL sort.comm available from FOG. If the implementor followed the source Text this version will be the one based on the Quick Sort alogrythm and could improve the capacity of Easy Post and many other similar dBase programs. Easy Post is written with business in mind. Business means business and we have no need nor patience for fancy Graphics and complicated Buggy programs. I have,therfore, kept it simple and, to save time and temper, it is fast and repetative. You can ADD DELETE CHANGE LIST & PRINT all day long without exiting and re-entering. The record format is really intended for use in Industrial Sales where multiple contacts must be recorded. These 'extras' could be used for many other purposes. Also, in business, the Disk capacity of the Ozzy is a problem and I have, through neccessity, only used one Data file and no indexing. dBase indexing I don't like ! The Find function is non-recursive. In a list of 250 who can remember enough to give find the first and only shot. Easy Post uses LOCATE and CONTINUE in a do while loop so that for example you might enter "M" alone and then scan through all Companies with the first letter of "M" until you find the one you want. FIND will only find the first occurance then gives up the guost! Not much good in business. DN X files also take up disk space and add code to programs. The best business programs are those that operate, bug free, on the fewest possible lines of code. I wish you all good luck with Easy Post. Don't start selling it...if you do.....don't forget to pay the Piper....ME. This describes the uses that the E/files are put to. It is intended as an aid to those wishing to modify for their own personal use. Tip : Unless you want to, the data structure can be left as is,just change the name. Example: To keep records of all friends and relatives change 'company' to 'name' in the display prog.E/bones.cmd Keep the same number of spaces between ' 's. The line reads > @ 3,1 say 'COMPANY ' CHANGE TO > @ 3,1 say 'NAME ' The SIX names,titles,extensions can then be used to record offspring with bithdays, married names etc. List of files and there Use: Main Program Data File Routine Sub-routine Main Programs Call F/BEGIN.CMD E/data.bdf (Main Menu) ADD "A" ..............E/enter.cmd EDIT "E" ..............E/find.cmd...E/change.cmd DISPLAY "S" ..............E/phone.cmd CREATE "Y" -->E/data.txt PRINT "P" ORGANIZE "O" ...E/data.dbf + E/temp.dbf "S" (not used) EXIT "T" ------------->Terminate F/FIND.CMD E/data.dbf (Edit) SEARCH ............................E/eof.cmd CHANGE ..............E/change.cmd..E/input.cmd DELETE .......marks for deletion F/ENTER.CMD E/data.dbf (Add) E/temp.dbf...............E/bones.cmd ...............E/input.cmd F/PHONE.CMD (Display) E/data.dbf F/REORG.CMD USE E/data.dbf SORTS to E/temp.dbf...(packs..removing the marked for del. records) DELETE E/data.dbf...(recovers Disk space) USE E/temp.dbf COPY to E/data.dbf DELETE E/temp.dbf RETURNS USE to E/data.dbf...(Deletions 'Packed'+  Sorted on 'Company') STRUCTURE OF E/DATA.DBF_______________________________ 001 COMPANY C 025 002 ADDRESS C 025 003 CITY C 020 004 STATE C 002 005 ZIP C 005 006 PHONE:H C 014 007 PHONE:W C 014 008 NAME:1 C 015 009 TITLE:1 C 015 010 EXT:1 C 008 011 NAME:2 C 015 012 TITLE:2 C 015 013 EXT:2 C 008 014 NAME:3 C 015 015 TITLE:3 C 015 016 EXT:3 C 008 017 NAME:4 C 015 018 TITLE:4 C 015 019 EXT:4 C 008 020 NAME:5 C 015 021 TITLE:5 C 015 022 EXT:5 C 008 023 NAME:6 C 015 024 TITLE:6 C 015 025 EXT:6 C 008 ** TOTAL ** 00334 *____________________________________________________ * END of EASYPOST.DOC 05/14/84 Bill Atkinson  ** 00* E/begin.cmd 05/11/84 WA clear set intensity on set talk off erase @ 10,0 ? '________________________________________________ ' ? ? 'copyright (c) 1984 by Bill Atkinson. All rights' ? 'reserved. monetary gain not permitted under any' ? ' circumstance by individual, partnership, or' ? ' corporation, without written permission from ' ? ' copyright owner: Bill Atkinson, 9903 Vogue Lane,' ? ' Houston, Texas 77080 - (713) 467-0449.' ? '__________________________________________________' store 1 to delay do while delay < 200 store delay+0.5 to delay enddo rele delay erase use b:E/data do while T erase ? ' E A S Y P O S T' ? ' ________________________' ? ? ' E _ Edit Change Delete' ? ' A _ Add New Addresses' ? ' S _ See Address List' ? ' Y _ Make File for Word' ? ' - Processing ' ? ? ' P _ Print Address List' ? ' O _ Sort and Organize' ? '  S' ? ' T _ ................EXIT' ? ' ________________________' @ 16,0 wait to action DO CASE CASE !(action)='T' erase release all ? ' Have a Nice Day' ? ' ____E A S Y P O S T____' ? ' Bill Atkinson' ? quit CASE !(action)='A' * Add New Addresses DO E/enter CASE !(action)='S' * see phone or address list on screen DO E/phone CASE !(action)='Y' * data file for Maimerge copy to b:E/data.txt delimited CASE !(action)='E' * find and change addreses DO E/find CASE !(action)='O' * reorganise delete, and sort DO E/reorg USE b:E/data CASE !(action)='P' * print address or phone list do E/print ENDCASE enddo reorg - Processing ' ? ? ' P _ Print Address List' ? ' O _ Sort and Organize' ? '  * E/bones.cmd @ 3,1 SAY 'COMPANY ' @ 4,1 SAY 'ADDRESS ' @ 5,1 SAY 'CITY ' @ 6,1 SAY 'STATE CODE ' @ 7,1 SAY 'ZIP code ' @ 8,1 SAY 'MAIN PHONE ' @ 9,1 SAY 'PURCH.PHONE ' @ 10,1 say 'Names:' @ 10,17 say 'Titles:' @ 10,33 say 'Extension:' @ 17,1 say '_________________________________________________' * ********end new display return @ 10,33 saSAVE370 MEM(EASYPOSTDOC8)*+,-./E/BEGIN CMD01E/BONES $$$* E/change.cmd part of EASY POST 05/14/84 WA store 'Y' to checking do while checking = 'Y' @ 1,0 @ 1,3 say 'Make Changes - Press to end' do E/input @ 1,0 @ 19,0 accept 'Do you want to re-enter and correct? ' to check @ 20,0 @ 21,0 if !(check) <> 'Y' store " " to checking else @ 1,3 say 'Make Corrections - Press to end' endif check enddo checking return Y' store " " to checking else @ 1,3 say 'Make Corrections - Press to end' endif check endE/CHANGE$$$NCOMPANYClADDRESSClCITYCmSTATECmZIPCmPHONE:HCmPHONE:WC,mNAME:1C:mTITLE:1CImEXT:1CXmNAME:2C`mTITLE:2ComEXT:2C~mNAME:3CmTITLE:3CmEXT:3CmNAME:4CmTITLE:4CmEXT:4CmNAME:5CmTITLE:5CmEXT:5CmNAME:6CmTITLE:6CnEXT:6Cn Bill Atkinson 9903 Vogue Lane Houston TX77080(713)-467-0449( )- - Bill Atkinson Copyrite Owner 467-0449of __EASY_POST________________ - - - - - ion from ' ? ' copyright owner: Bill Atkinson, 9903 Vogue Lane,' ? ' Houston, Texas 77080 - (713) 467-0449.' ? '________________________________________________* E/enter.cmd W Atkinson 05/09/84 set talk off erase use b:E/data copy struc to b:E/temp use b:E/temp append blank do E/bones store 'Y' to entering DO WHILE entering = 'Y' store 'Y' to checking @ 1,0 @ 1,3 say 'ENTER the NEW address' do while checking = 'Y' do E/input @ 1,0 @ 19,0 accept 'Do you want to make some corrections ?' to check @ 21,0 if !(check) <> 'Y' store " " to checking else @ 1,3 say "Make CORRECTIONS" endif check enddo checking if company = ' ' store ' ' to entering endif @ 19,0 accept 'Do you want to Add more New Addresses?' to enter @ 21,0 if !(enter) ='Y' append blank else store ' ' to entering endif enter enddo entering use b:E/data append from b:E/temp delete file b:e/temp release all RETURN tor!(HIT) = 'Y' store T to Ying do while Ying = T @ 19,0 @ 20,0 @ 20,7 say 'elete, hange, xit' store ' ' to choice accept ' Enter your choice ' to choice @ 20,0 @ 21,0 do case case !(choice) = 'D' store str(#,5) to number delet EXT:6 PICTURE '###-####' * __________end new display @ 18,0 store ' ' to hit accept " IS THIS THE ONE? (Y/N)" to hit @ 18,0 @ 19,0 IF !(HIT)<>'Y' CONTINUE do E/eof if eof store F to doit endif eof endif hit <> Y if !(HIT) = 'Y' store T to Ying do while Ying = T @ 19,0 @ 20,0 @ 20,7 say 'elete, hange, xit' store ' ' to choice accept ' Enter your choice ' to choice @ 20,0 @ 21,0 do case case !(choice) = 'D' store str(#,5) to number delete enter.cmd W Atkinson 05/09/84 set talk off erase use b:E/data copy struc to b:E/temp use E/temp append blank do E/bones store 'Y' to entering DO WHILE entering = 'Y' store 'Y' to checking @ 1,0 @ 1,3 say 'ENTER the NEW address' do while checking = 'Y' do E/input @ 1,0 @ 19,0 accept 'Do you want to make some corrections ?' to check @ 21,0 if !(check) <> 'Y' store " " to checking else @ 1,3 say "Make CORRECTIONS" endif check enddo checking if company = ' ' store ' ' to enterin EXT:6 PICTURE '###-####' * __________end new display @ 18,0 store ' ' to hit accept " IS THIS THE ONE? (Y/N)" to hit @ 18,0 @ 19,0 IF !(HIT)<>'Y' CONTINUE do E/eof if eof store F to doit endif eof endif hit <> Y if !(HIT) = 'Y' store T to Ying do while Ying = T @ 19,0 @ 20,0 @ 20,7 say 'elete, hange, xit' store ' ' to choice accept ' Enter your choice ' to choice @ 20,0 @ 21,0 do case case !(choice) = 'D' store str(#,5) to number delet* E/eof__________________________________________ IF EOF @ 18,0 ? " CAN'T FIND IT...definitely not on list" STORE 1 TO X DO WHILE X<100 STORE X+1 TO X ENDDO @ 19,0 @ 20,0 ENDIF return * E/eof__________________________________________ TODBFRED37DOC:FORM10 FMT FORMGEN CMD !"SAMPLE DBF(#$%&'SAVE370 MEM(EASYPOSTDOC8)*+,-./E/BEGIN CMD01E/BONES CMD2E/CHANGECMD3E/DATA DBF4E/ENTER CMD567E/EOF $$$* E/find.cmd.....W Atkinson 5/10/84 use b:E/data set talk off erase do E/bones store T to finding do while finding = T @ 19,0 @ 18,0 store " " to CO @ 19,7 say "Don't enter ' (apostrophy) dB don't like!" ACCEPT " ENTER COMPANY NAME" TO CO @ 19,0 @ 20,0 GO TOP LOCATE FOR COMPANY='&CO' if * skip endif do E/eof STORE T TO DOIT do while DOIT = T .and. .not. eof * do E/bones @ 3,16 say COMPANY @ 4,16 say ADDRESS @ 5,16 say CITY @ 6,16 say STATE @ 7,16 say ZIP @ 8,16 say PHONE:H PICTURE '(###)-###-####' @ 9,16 say PHONE:W PICTURE '(###)-###-####' @ 11,2 say NAME:1 @ 11,18 say TITLE:1 @ 11,34 say EXT:1 PICTURE '###-####' @ 12,2 say NAME:2 @ 12,18 say TITLE:2 @ 12,34 say EXT:2 PICTURE '###-####' @ 13,2 say NAME:3 @ 13,18 say TITLE:3 @ 13,34 say EXT:3 PICTURE '###-####' @ 14,2 say NAME:4 @ 14,18 say TITLE:4 @ 14,34 say EXT:4 PICTURE '###-####' @ 15,2 say NAME:5 @ 15,18 say TITLE:5 @ 15,34 say EXT:5 PICTURE '###-####' @ 16,2 say NAME:6 @ 16,18 say TITLE:6 @ 16,34 say EXT:6 PICTURE '###-####' * __________end new display @ 18,0 store ' ' to hit accept " IS THIS THE ONE? (Y/N)" to hit @ 18,0 @ 19,0 IF !(HIT)<>'Y' CONTINUE do E/eof if eof store F to doit endif eof endif hit <> Y if !(HIT) = 'Y' store T to Ying do while Ying = T @ 19,0 @ 20,0 @ 20,7 say 'elete, hange, xit' store ' ' to choice accept ' Enter your choice ' to choice @ 20,0 @ 21,0 do case case !(choice) = 'D' store str(#,5) to number delete record &number store 'E' to choice case !(choice) = 'E' store F to Ying store F to doit case !(choice) = 'C' do E/change endcase enddo Ying endif hit = Y ENDDO doit @ 18,0 @ 19,0 store ' ' to again accept 'Do you want to Find another address? ' to again @ 20,0 @ 21,0 if !(again) <>'Y' store F to finding endif again ENDDO finding return * end of E/find.cmd N>' to again @ 20,0 @ 21,0 if !(again) <>'Y' store F to finding endif again ENDDO finding return * end of record &number store 'E' to choice case !(choice) = 'E' store F to Ying store F to doit case !(choice) = 'C' do E/change endcase enddo Ying endif hit = Y ENDDO doit @ 18,0 @ 19,0 store ' ' to again accept 'Do you want to Find another address? ' to again @ 20,0 @ 21,0 if !(again) <>'Y' store F to finding endif again ENDDO finding return * end of E/find.cmd N>' to again @ 20,0 @ 21,0 if !(again) <>'Y' store F to finding endif again ENDDO finding return * end of * E/input.cmd @ 3,15 GET COMPANY @ 4,15 GET ADDRESS @ 5,15 GET CITY @ 6,15 GET STATE @ 7,15 GET ZIP @ 8,15 GET PHONE:H; PICTURE '(###)-###-####' @ 9,15 GET PHONE:W; PICTURE '(###)-###-####' @ 11,1 GET NAME:1 @ 11,17 get TITLE:1 @ 11,33 get EXT:1 PICTURE '###-####' @ 12,1 GET NAME:2 @ 12,17 get TITLE:2 @ 12,33 get EXT:2 PICTURE '###-####' @ 13,1 GET NAME:3 @ 13,17 get TITLE:3 @ 13,33 get EXT:3 PICTURE '###-####' @ 14,1 GET NAME:4 @ 14,17 GET TITLE:4 @ 14,33 GET EXT:4 PICTURE '###-####' @ 15,1 GET NAME:5 @ 15,17 GET TITLE:5 @ 15,33 GET EXT:5 PICTURE '###-####' @ 16,1 GET NAME:6 @ 16,17 GET TITLE:6 @ 16,33 GET EXT:6 PICTURE '###-####' READ * end__E/input.cmd ####' @ 16,1 GET NAME:6 @ 16,17 GET TITLE:6 @ 16,3* E/paddrs.cmd @ L,1 SAY 'COMPANY '+company @ L+1,1 SAY 'ADDRESS '+address @ L+2,1 SAY 'CITY '+city @ L+3,1 SAY 'STATE CODE '+state @ L+4,1 SAY 'ZIP code '+zip @ L+5,1 SAY 'MAIN PHONE '+phone:h PICTURE '(###)-###-####' @ L+6,1 SAY 'PURCH.PHONE '+phone:w PICTURE '(###)-###-####' @ L+8,1 say 'Names:' @ L+8,17 say 'Titles:' @ L+8,33 say 'Extension:' @ L+9,1 say NAME:1 @ L+9,17 say TITLE:1 @ L+9,33 say EXT:1 PICTURE '###-####' @ L+10,1 say NAME:2 @ L+10,17 say TITLE:2 @ L+10,33 say EXT:2 PICTURE '###-####' @ L+11,1 say NAME:3 @ L+11,17 say TITLE:3 @ L+11,33 say EXT:3 PICTURE '###-####' @ L+12,1 say NAME:4 @ L+12,17 say TITLE:4 @ L+12,33 say EXT:4 PICTURE '###-####' @ L+13,1 say NAME:5 @ L+13,17 say TITLE:5 @ L+13,33 say EXT:5 PICTURE '###-####' @ L+14,1 say NAME:6 @ L+14,17 say TITLE:6 @ L+14,33 say EXT:6 PICTURE '###-####' @ L+15,1 SAY "___________________________________________________" return * E/paddrs ************ T:6 PICTU* E/phone.cmd part of Easy Post 05/15/84 WA go top erase store 1 to p store T to phoning do while phoning = T if * skip endif @ p,0 say trim(company)+' ' @ p,18 say ' '+trim(city) @ p,31 say ' '+state @ p,35 say '.....' @ p,38 say phone:h picture '(###)-###-####' ? store p+1 to p store ' ' to go if p=20 ? '__________________' ? 'press G to go back' wait to go do case case !(go) = 'G' store 1 to p erase skip-42 case !(go) <> 'G' store 1 to p erase skip endcase else skip endif if eof ? '__________________' ? 'last on list' store ' ' to go ? 'press G to go back' wait to go if !(go)='G' store 1 to p skip-40 erase else store F to phoning endif endif enddo release all return * E/phone.cmd  !(go)='G' sto* E/print.cmd part of EASY POST 05/14/84 WA use b:E/data go top * Today's date_______________________ store ' ' to today @ 18,0 @ 18,10 say 'Enter Todays Date'get today pict '##/##/##' read set date to &today @ 13,0 ? ' Check to see that you have Paper in the printer' ? ' Set top of Form - Program will Offset 10 spaces' ? ' Program Prints 3 Complete detail Addreses per page' ? 'press when ready. Printer pauses at page end' wait * Page Number________________________ store 1 to p set eject off set margin to 10 set talk off set format to print store Y to printing do while printing = Y .and. .not. eof if * skip endif store str(p,3) to Pn @ 1,1 SAY 'ADDRESS LIST Updated as of: ' @ 1,30 say date() @ 1,55 SAY 'Page - ' @ 1,62 say &pn store 5 to L do E/paddrs skip store 26 to L do E/paddrs skip store 47 to L do E/paddrs skip store p+1 to p eject store ' ' to stopping ? ' to abort' wait to stopping if !(stopping)='S' store N to printing endif enddo release p,pn,L,today set format to screen return * E/print.cmd ing if !(stopping)='S' store N to printing endif enddo day @ 18,0 @ 18,10 say 'Enter Todays Date'get today pict '##/##/##' read set date to &today @ 13,0 ? ' Check to see that you have Paper in the printer' ? ' Set top of Form - Program will Offset 10 spaces' ? ' Program Prints 3 Complete detail Addreses per page' ? 'press when ready. Printer pauses at page end' wait * Page Number________________________ store 1 to p set eject off set margin to 10 set talk off set format to print store Y to printing do while printing = Y .and. .not. eof if * skip endif store str(p,3) to Pn @ 1,1 SAY 'ADDRESS LIST Updated as of: ' @ 1,30 say date() @ 1,55 SAY 'Page - ' @ 1,62 say &pn store 5 to L do E/paddrs skip store 26 to L do E/paddrs skip store 47 to L do E/paddrs skip store p+1 to p eject store ' ' to stopping ? ' to abort' wait to stopping if !(stopping)='S' store N to printing endif enddo * E/reorg.cmd part of EASY POST 05/15/84 WA @ 15,0 say ' Copying file to a Temporary File' copy struc to b:E/temp use b:E/temp append for company<>' ' .and. .not. * from b:E/data @ 15,0 say ' Deleting the Original File ' dele file b:E/data @ 15,0 say ' Sorting all Addresses Alphabetically' sort on company to b:E/data use @ 15,0 say ' Deleting the temporary file ' Dele file b:E/temp return * E/reorg.cmd n company to b:E/data use @ 15,0 say ' Deleting the temE/CHANGECMD3E/DATA DBF4E/ENTER CMD567E/EOF CMD8E/FIND CMD9:;E/INPUT CMD<E/PADDRSCMD=E/PHONE CMD>E/PRINT CMD ?@E/REORG $$$ EMF INVOICE SYSTEM MICHAEL LYNN, OBERLIN COLLEGE COPYRIGHT 1983, MICHAEL LYNN (see end of document for details) This is a multi-function dbase II invoice, inventory and purchase order program, designed to serve the needs of a small publishing and bookselling business. The system makes use of 5 different databases and is written for a 52 column screen format. The system could operate with single density drives but would have a very small capacity to store the purchase orders and invoices that are written. Many of this program's limitations are caused by the restricted storage available. The five DB used in the system are: 1. NAMES.DBF - This DB holds the names and addresses of the customers. It is indexed on last to indlast.ndx. STRUCTURE FOR FILE: B:NAMES.DBF NUMBER OF RECORDS: 00612 DATE OF LAST UPDATE: 08/25/83 PRIMARY USE DATABASE FLD NAME TYPE WIDTH DEC 001 LAST  C 011 002 FIRST C 011 003 COMPANY C 020 004 ADDRESS C 024 005 CITY C 015 006 STATE C 002 007 ZIPCODE C 005 ** TOTAL ** 00089 2. ITEM.DBF - This DB contains the items which the company sells. Each must have a unique catalogue number. It is indexed on catnum to indcat.ndx. STRUCTURE FOR FILE: B:ITEM.DBF NUMBER OF RECORDS: 00379 DATE OF LAST UPDATE: 08/25/83 PRIMARY USE DATABASE FLD NAME TYPE WIDTH DEC 001 CATNUM C 010 002 DESCR C 030 003 PRICE N 006 002 004 QUANTITY N 002 005 SOLD N 003 006 PODATE C 008 007 PONUM N 004 008 REORDER N 002 009 ORDERED N 002 010 VENDOR N 002  ** TOTAL ** 00070 3. INVOICE.DBF - This DB contains a summary of the information written on the invoice. It is indexed on num to indnum. STRUCTURE FOR FILE: INVOICE.DBF NUMBER OF RECORDS: 00115 DATE OF LAST UPDATE: 08/07/83 SECONDARY USE DATABASE FLD NAME TYPE WIDTH DEC 001 NUM N 004 002 LAST C 011 003 FIRST C 011 004 DATE C 008 005 CATNUM1 C 010 006 PRICE1 N 006 002 007 CATNUM2 C 010 008 PRICE2 N 006 002 009 CATNUM3 C 010 010 PRICE3 N 006 002 011 CATNUM4 C 010 012 PRICE4 N 006 002 013 CATNUM5 C 010 014 PRICE5 N 006 002 015 CATNUM6 C 010 016 PRICE6 N 006 002 017 CATNUM7 C 010 018  PRICE7 N 006 002 019 CATNUM8 C 010 020 PRICE8 N 006 002 021 CATNUM9 C 010 022 PRICE9 N 006 002 023 CATNUM10 C 010 024 PRICE10 N 006 002 025 CATNUM11 C 010 026 PRICE11 N 006 002 027 CATNUM12 C 010 028 PRICE12 N 006 002 029 TOTAL N 006 002 030 PAID L 001 031 TAX L 001 032 DISC N 002 ** TOTAL ** 00237 4. PO.DBF - This DB contains a record of information written on purchase orders. It is indexed on ponum to indpo.ndx. STRUCTURE FOR FILE: PO.DBF NUMBER OF RECORDS: 00006 DATE OF LAST UPDATE: 08/25/83 PRIMARY USE DATABASE FLD NAME TYPE WIDTH DEC 001 PONUM N 004 002 VENDOR N 002 003 DATE C 008 004 RECV L 001 005 AMOUNT N 006 002 006 PAID L 001 007 ITEM1 C 045 008 ITEM2 C 045 009 ITEM3 C 045 010 ITEM4 C 045 011 ITEM5 C 045 012 ITEM6 C 045 013 ITEM7 C 045 014 ITEM8 C 045 015 ITEM9 C 045 016 ITEM10 C 045 017 ITEM11 C 045 018 ITEM12 C 045 019 ITEM13 C 045 020 ITEM14 C 045 021 ITEM15 C 045 022 ITEM16 C 045 023 ITEM17 C 045 024 ITEM18 C 045 025 ITEM19 C 045 026 ITEM20 C 045 ** TOTAL ** 00923 5. VENDOR.DBF - This DB contains the addresses and some other information on suppliers to whom purchase orders may be written. Because this DB is normally not too large it has not been indexed. STRUCTURE FOR FILE: B:VENDOR.DBF NUMBER OF RECORDS: 00011 DATE OF LAST UPDATE: 08/25/83 PRIMARY USE DATABASE FLD NAME TYPE WIDTH DEC 001 VENDOR N 002 002 COMPANY C 020 003 LAST C 011 004 FIRST C 011 005 ADDRESS1 C 024 006 ADDRESS2 C 024 007 CITY C 015 008 STATE C 002 009 ZIPCODE C 006 010 COUNTRY C 012 011 DISC N 002 012 ACCOUNT C 015 ** TOTAL ** 00145 The EMF INVOICE SYSTEM performs many different functions using the five DB described briefly above and a series of command files. The main purpose of the system is to print a full invoice of up to 12 different items on a Ennis Invoice form INV-11 or a purchase order of up to 20 items on plain 8 1/2 X 11 paper. The Ennis form is 8 1/2 X 11 so the invoice program can operate using standard paper as well. [MAIN MENU] --------------------------------------------- *****EMF INVOICE SYSTEM***** --------------------------------------------- 1 ENTER AND PRINT INVOICES 2 ENTER NEW ITEMS INTO DATABASE 3 INVENTORY REPORTS AND UPDATING 4 INVOICE REPORTS AND UPDATING 5 PURCHASE ORDERS / ITEM STATUS / LABELS 6 EXIT TO DBASE 7 EXIT TO CPM VIA STAT ---------------------------------------------- ********************************************** CREATING AN INVOICE The first command file is called MENU.CMD (see menu above) which will be brought up by the version of AUTOST.COM included on this disk. If this version of AUTOST.COM is not used you would simply type DO B:MENU following the DBASE II dot prompt. Following the sign-on (sign.cmd) the operator is asked to enter the date. This date will be used on the invoices and purchase orders as well as various reports which can be produced. The obvious choice from the first menu is 1 ENTER AND PRINT INVOICES. This calls TEST.CMD which asks for the customer's name. The program searches NAMES.DBF and if it does not find the name it allows you it enter it into the DB. If it does find a name that matches the one you have entered it will show you the name and address and ask if it is correct. If the address is wrong or there is some other reason not to procede - simply enter any character other than a Y to return to the main menu. FILL.CMD is called next. It asks first for a purchase order number if applicable. This number will later be printed on the invoice but not stored in INVOICE.DBF. The invoice number is taken from the memory file NUM.MEM. The user may change this number if necessary although the new number will be stored into memory and that number + 1 will be used as the next invoice number. The catalogue number of the items desired on the invoice are now entered. If an invalid number is used the operator will be prompted to re-enter the number. It is a good idea to keep a catalogue number of MISC in the DB so this can be entered should the desired item not be in the DB. As each item is entered 1 is subtracted from the quantity listed for that item in ITEM.DBF and 1 is added to the total quantity sold of that item. The user may enter up to 12 items, if the number entered are less than 12 the user must enter a T to move on to the next part of the program. The program now moves on to TOTAL.CMD which first presents a screen showing the description and price of the items entered in the previous segment. The operator may change the price of any of the items, (price changes will be made to the printed invoice, and the information stored in Invoice.dbf - but not to the Item.dbf itself) or the purchase order number. When this is through the user is asked if a discount will be given on the invoice; if yes, the percentage should be entered. Postage, the next question, is figured as follows. Y - 5% of total for orders above $20.00, $1.00 for orders under $20.00. N - No charge. S - The user will be asked for the percentage to be charged. Postage is figured on the total before discount. The user is now asked whether the invoice has been prepaid. IF the answer is yes the invoice will be marked paid on the printed invoice and in the INVOICE.DBF record. The invoice is now printed (if the printer is on) and the operator is returned to the main menu. ENTER NEW ITEMS Selection 2 ENTER NEW ITEMS INTO DATABASE uses ENTER.CMD. The user is prompted to enter the new catalogue number. If the number has been used already the item will be displayed on the screen, if the number is unused the new description, price and quantity on hand, standard re-order point, and vendor number can be entered. INVENTORY REPORTS AND UPDATING Selection 3 INVENTORY REPORTS AND UPDATING brings up a new menu screen. (INVENTOR.CMD) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ****INVENTORY REPORTS & UPDATING**** 1 REPORT OF INSTOCK INVENTORY 2 REPORT OF ITEMS WITH QUANTITIES BELOW A CERTAIN NUMBER 3 REPORT OF ITEMS BELOW STANDARD RE-ORDER POINT 4 COMPLETE INVENTORY LIST 5 ITEM LISTING FOR PARTICULAR VENDOR 6 RETURN TO MAIN MENU =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Selection 1 of this new menu - REPORT OF INSTOCK INVENTORY lists all items in the ITEM.DBF which have a quantity above 0, and provides totals of their retail value. Selection 2 - REPORT OF ITEMS WITH QUANTITIES BELOW A CER TAIN NUMBER asks the user for the "MINIMUM NUMBER FOR INVENTORY" - if the user enters a 2 the report will list all items whose inventory is 2 or below. Selection 3 - REPORT OF ITEMS BELOW STANDARD RE-ORDER POINT produces a report which lists all items whose current inventory falls below the assigned re-order point. Selection 4 - COMPLETE INVENTORY LIST provides the user with an accounting of all items in the ITEM.DBF arranged by catalogue number. If one uses a large number of items it is very important to keep this on hand as it contains the correct number for each item. Selection 5 - ITEM LISTING FOR PARTICULAR VENDOR asks for the vendor number and then produces a report of all items supplied by that vendor. Now back to the main menu - Selection 4 - INVOICE REPORTS AND UPDATING. INVOICE REPORTS AND UPDATING =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= **INVOICE - REPORTS & UPDATING** ================================ 1 - PRINT REPORT OF UNPAID INVOICES 2 - PRINT REPORT OF SALES TOTALS TO DATE 3 - PRINT REPORT OF INVOICES FOR 1983 4 - PRINT REPORT OF INVOICES FOR SELECTED MONTH 5 - MONTHLY SALES SUMMARY FOR THIS YEAR 6 - MARK SELECTED INVOICES "PAID" 7 - RETURN TO MAIN MENU -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Selection 1 from this menu - PRINT REPORT OF UNPAID INVOICES will use a report form to print a listing of all the invoices in INVOICE.DBF that have not been marked "PAID". Selection 2 - PRINT REPORT OF TOTALS TO DATE will provide the following information. Total amount of sales to date Total number of sales Amount of average sale Total of unpaid sales Total taxable sales (in this case all sales from Michigan) Amount due Michigan (4% of in-state sales)  Selection 3 - PRINT REPORT OF INVOICES FOR THIS YEAR will give information on all invoices for 1983, with a sales total for the year to date. Selection 4 - PRINT REPORT OF INVOICES FOR SELECTED MONTH will ask the user for the month (in the form of a 2 digit num ber). A report of invoices for that month during the 1983 year will be printed. Selection 5 - MONTHLY SALES SUMMARY FOR THIS YEAR takes a long time to run as it must go through the entire INVOICE.DBF 12 times. When it is done it provides sales totals for each month and a total of sales to date. Selection 6 - MARK SELECTED INVOICES "PAID" will ask for the number of the invoice to mark paid. MARK.CMD will find that invoice and display information to confirm that it is the correct invoice. If so, enter a Y. PURCHASE ORDERS / ITEM STATUS / LABELS If we choose number 5 from the main menu we are presented with the following: ********************************************* PURCHASE ORDERS / LABEL PRINTING --------------------------------------------- 1. WRITE PURCHASE ORDERS 2. ENTER NEW SUPPLIER/VENDOR 3. PRINT VENDOR LIST 4. PRINT ENVELOPES AND LABELS 5. STATUS OF PARTICULAR ITEM 6. RETURN TO MAIN MENU ********************************************* WRITING PURCHASE ORDERS Entering a 1 from this menu will call PO.CMD. This program first displays the current purchase order number - which can be changed if necessary. The user next enters the vendor number which is the number assigned to each supplier in the VENDOR.DBF. The items are now entered - first the catalogue number and then the quantity. The program allows up to 20 items - if less are used enter a T to complete entry. The program checks to see whether the item you have entered is assigned to the vendor number you entered earlier - if it is not, entering an N will remove the item - Y will allow it to be put on the order. The next prompt will ask you for the number of copies desired. The complete purchase order is now printed and the information stored in PO.DBF. ENTER NEW SUPPLIER/VENDOR Entering a 2 creates a data entry screen for the VENDOR.DBF which allows entry for one supplier. If you have a long list of suppliers to enter, it is best to use APPEND. Information to be supplied is the vendor number, company name, first and last name of contact person (this will be printed on the purchase order and on labels or envelopes for this vendor number), address line 1, address line 2, city, state, zip, country, standard discount rate from this company, and account number. This DB is constructed to facilitate the inclusion of foreign suppliers. PRINT VENDOR LIST Entering a 3 yields a report listing information on the companies contained in the VENDOR.DBF. It is a good idea to keep an up-to-date copy of this report on hand, as it tells you which vendor numbers are in use. PRINT ENVELOPES AND LABELS Entering a 4 produces the following menu: ********************************************* LABEL AND ENVELOPE PRINTING 1. PRINT ENVELOPE FOR VENDOR 2. PRINT SINGLE LABEL FOR VENDOR 3. PRINT COMPLETE VENDOR LIST ON LABELS 4. PRINT ENVELOPE FOR CUSTOMER 5. PRINT SINGLE LABEL FOR CUSTOMER 6. PRINT COMPLETE CUSTOMER LIST ON LABELS 7. EXIT TO MENU ******************************************** This is fairly self-explanitory. Note, however, that numbers 1-3 of the above menu operate on the VENDOR.DBF and will ask you for the proper vendor number - numbers 4-6 operate on the NAMES.DBF and will ask for the first and last name. Labels are formated to print on 3.5" X15/16" ONE ACROSS and the envelopes - standard business size(not continuous feed). Back to the PURCHASE ORDER menu number 5. STATUS OF PARTICULAR ITEM This is an especially useful function (ITEM.CMD). The program first asks whether you will want to edit fields or just view them. It is best to have the fields open for editing only when needed to prevent inadvertant changes. It asks next for the catalogue number of an item. It then searches the ITEM.DBF - if the item is not in the DB it tells you and asks for a new number. If the catalogue number is valid (already used) the following information will be displayed. + Catalogue number + Price + Description of the item + Quantity on hand + Total sold to date + Vendor number + Standard re-order point Date of last order Quantity ordered Purchase order number * Whether the order has been received * Whether the order has beeen paid for If no purchase orders have been issued for this item you are told. Items on the above list proceeded by an astrisk can be edited during the display whether or not editing was selected as mentioned above. The fields marked + can be edited, but only when editing was previously selected. SYSTEM SETUP The program is supplied with all of the files necessary to its operation except, of course, the DBASE II program itself. The 5 databases have a few sample records in them to help the user try out the system. The normal methods of DELETE and PACK while using the indexes will clear out the database so that the "real" data can be entered. A version of AUTOST.COM which will load DBASE II and B:MENU.CMD is included. To use this - I recomend it - rename DBASE.COM to DB.COM and replace the usual AUTOST.COM on the DBASE II disk with the new one from this disk. The A: disk must also have STAT.COM on it as this is used when exiting from DBASE to CPM. The program is written to keep the INVOICE.DBF, INDNUM.NDX, PO.DBF and INDPO.NDX on the A: drive, therefore move those files to the A: drive. Next you should get to the DBASE II prompt (.) and type B:SETUP. You will then be asked for the starting invoice number and starting purchase order number. From then on the program will add 1 to this number with each invoice or purchase order written. This also sets up the memory files NUM.MEM and POMEM.MEM. To get a complete program listing print - using MAIL-MERGE the file MPRINT. The program will operate fine (with some modification) with all the files on the B: drive, but, if any reasonable number of names, items, invoices or purchase orders are to be stored, it is best to use the system recomended above. As the purchase orders take up quite a bit of space, one can also have two different disks to use in the A: drive - one with INVOICE.DBF and the other with PO.DBF. If this is done one must QUIT when changing from one disk to the other. With some additional programing the RESET command can be used and the disk changed while the program is active. As mentioned above, data has been entered in the various DB to allow you to try out the system. Invoice numbers 1000 - 1003 have been used as well as purchase orders 1000 - 1002. Vendor numbers 1, 99, 10, 3 and 13 contain information - customer names are: James Bond Donald Duck James Hendricks Johannes Kepler Michael Lynn Ellen Lynn David Sutherland Catalogue numbers are: A 1 vendor - 10 AS 61 vendor - 2 AS 62 vendor - 2 DHM 895/06 vendor - 3 EMF 111 vendor - 99 EMF 13 vendor - 99 EMF 27 vendor - 99 M 68 vendor - 1 MISC vendor - 0 You don't need to run SETUP.CMD until you want to enter your own starting invoice and purchase order numbers. When you do run SETUP.CMD, PO.DBF and INVOICE.DBF should be cleared out to avoid any problems which might be created by having 2 puchase orders with the number 1001 etc. SYSTEM CAPACITY File size for the A: drive works as follows: Dbase II system files + Autost + Stat = 69K 1 Record with index in Invoice.dbf = .25K 1 Record with index in Po.dbf = 1K File size for the B: drive EMF INVENTORY SYSTEM cmd, mem, frm, etc. = 54K 1 Record with index in Item.dbf = .1K 1 Record with index in Names.dbf = .12K 1 Record in Vendor.dbf = .145K This assumes erasure of DISK.DOC HELPFUL HINTS If you get any BDOS disk errors, or the like, while running DBASE II - "QUIT" from DBASE immediately. In many cases this will get taken care of for you, as the error will cause a return to CPM. Disk errors can really mess up database files. KEEP BACKUP COPIES. When you are through using the program, always exit from the main menu, selection 7 - EXIT TO CPM VIA STAT or by selecting 6 - EXIT TO DBASE and then typing QUIT at the dot prompt. Never take out your disk without first typing QUIT to close the files. If you are in a command file and you want to exit using the "ESCAPE" key - you may find that your keyboard entries no longer do anything - the program is frozen up. Type - SET CONSOLE ON - and in many cases you will find yourself at the dot prompt. The problem is caused by the use of SET CONSOLE OFF and SET CONSOLE ON surrounding a WAIT. * * * * * * * * * * * * * * * * * This instruction document and the command files which it describes are under copyright by Michael Lynn. They have been released to the Public Domain and may be modified, distributed, and used as one wishes except that they may not be sold in wole or part for profit. The author reserves the right to use this program and any later version of it, in any way. The author would be pleased to receive suggestions for the improvement of this program. The sign-on message must include the name "EMF INVOICE SYSTEM" and the programs must retain the comment "* WRITTEN BY MICHAEL LYNN". MICHAEL LYNN EARLY MUSIC FACSIMILES P.O. BOX 1813 ANN ARBOR, MICHIGAN 48106 313-484-4297  SET CONSOLE ON surrounding a WAIT. * * * * * * * * * * * * * * * * * This instruction document and the command files which it describes are under copyright by Michael Lynn. They have been released to the Public Domain and may be modified, distributed, and used as one wishes except that they may not be sold in wole or part for profit. The author reserves the right to use this program and any later version of it, in any way. The author would b* ENTER.CMD - TO ENTER NEW ITEMS INTO B:ITEM.DBF * WRITTEN BY MICHAEL LYNN 7/16/83 SET TALK OFF SELE SECO STORE ' ' TO mitem DO WHILE mitem <> 'T' ERASE STORE ' ' TO mitem STORE 000.00 TO mprice STORE 00 TO mquan STORE ' ' TO mdescr @ 5, 5 SAY "ENTER CATALOGUE # OF NEW ITEM" GET mitem PICTURE '!!!!!!!!!!' @ 6, 5 SAY "OR ENTER A T TO EXIT" READ IF mitem='T' RETURN ENDIF FIND &mitem IF #=0 APPEND BLANK @ 8, 5 SAY "ENTER DESCRIPTION OF ITEM" @ 9, 5 GET descr @ 10, 5 SAY "ENTER PRICE" GET price @ 11, 5 SAY "ENTER QUANTITY ON HAND" GET quantity PICTURE '99' @ 12, 5 SAY "ENTER REORDER AMOUNT" GET reorder PICTURE '99' @ 13, 5 SAY "ENTER VENDOR NUMBER" GET vendor PICTURE '99' READ REPLACE catnum WITH mitem ELSE @ 8, 5 SAY "THIS CATALOGUE NUMBER IS ALREADY IN USE BY:" @ 9, 5 SAY descr @ 10, 5 SAY "AT A PRICE OF" @ 10,21 GET price READ SET CONSOLE OFF WAIT SET CONSOLE ON ENDIF ENDDO RETURN * FILL.CMD * WRITTEN BY MICHAEL Lynn 5/16/83 revised 8/3/83 ERASE SELECT SECONDARY @ 1, 3 SAY 'ENTER PURCHASE ORDER # IF NEEDED' GET mpur PICTURE '!!!!!!!!!!!' @ 2, 3 SAY 'INVOICE NUMBER' GET mnum PICTURE '9999' @ 20, 3 SAY 'ENTER AN ITEM NUMBER OF T TO COMPLETE ENTRY' READ DO WHILE z<13 STORE ' ' to snum IF z=12 @ 16, 3 Say 'THIS IS THE LAST ITEM WHICH CAN BE' @ 17, 8 SAY 'ENTERED ON THIS INVOICE' ENDIF IF z>9 STORE '2' TO e ELSE STORE '1' TO e ENDIF STORE STR(z,&e) TO A STORE '@ '+STR(2+z,2)+',' TO B &B 3 SAY 'ENTER CATALOGUE NUMBER OF ITEM &A' GET snum PICTURE '!!!!!!!!!!' READ FIND &snum IF # <> 0 STORE catnum to Mcat&A STORE descr to mdescr&A STORE price to Mprice&A REPLACE quantity with quantity -1 REPLACE sold WITH sold +1 else IF snum ='T' STORE 12 + z TO z ELSE @ 14,5 SAY 'ITEM NOT IN DATABASE' @ 15,5 SAY 'RE-TRY OR EXIT AND APPEND ITEM' SET CONSOLE OFF WAIT SET CONSOLE ON @ 14,0 @ 15,0  LOOP ENDIF ENDIF STORE Z+1 TO Z ENDDO ERASE SET FORMAT TO SCREEN @ 1, 0 SAY "INVOICE NUMBER:" @ 1,15 SAY mnum @ 1,30 SAY date() @ 2, 0 SAY "NAME:" @ 2, 6 SAY TRIM(p.first)+' '+p.last @ 3, 0 SAY "==========================================" @ 4, 0 SAY mdescr1 @ 4,32 GET mprice1 @ 5, 0 SAY mdescr2 @ 5,32 GET mprice2 @ 6, 0 SAY mdescr3 @ 6,32 GET mprice3 @ 7, 0 SAY mdescr4 @ 7,32 GET mprice4 @ 8, 0 SAY mdescr5 @ 8,32 GET mprice5 @ 9, 0 SAY mdescr6 @ 9,32 GET mprice6 @ 10, 0 SAY mdescr7 @ 10,32 GET mprice7 @ 11, 0 SAY mdescr8 @ 11,32 GET mprice8 @ 12, 0 SAY mdescr9 @ 12,32 GET mprice9 @ 13, 0 SAY mdescr10 @ 13,32 GET mprice10 @ 14, 0 SAY mdescr11 @ 14,32 GET mprice11 @ 15, 0 SAY mdescr12 @ 15,32 GET mprice12 @ 16, 0 SAY "PURCHASE ORDER NUMBER:" GET mpur @ 17, 0 SAY "==========================================" READ STORE mprice1+mprice2+mprice3+mprice4+mprice5+mprice6+mprice7+mprice8; +mprice9+mprice10+mprice11+mprice12 TO msub ERASE @ 1, 5 SAY "YOUR PRINTER SHOULD BE ON!" @ 3, 5 SAY "ENTER A Y TO GIVE DISCOUNT ON ORDER" SET CONSOLE OFF WAIT TO disc SET CONSOLE ON STORE !(disc) TO disc IF disc ='Y' @ 5, 5 SAY "ENTER AMOUNT OF DISCOUNT IN %" GET mdisc PICTURE '99' READ STORE mdisc*.01 TO xdisc STORE xdisc*msub TO xdisc ENDIF RELEASE disc @ 7, 5 SAY "ENTER ONE OF THE FOLLOWING" @ 8, 5 SAY "Y - FOR REGULAR POSTAGE CHARGE" @ 9, 5 SAY "S - TO USE A SPECIAL PERCENTAGE" @ 10, 5 SAY "N - TO CHARGE NO POSTAGE" SET CONSOLE OFF WAIT TO post SET CONSOLE ON STORE !(post) TO post DO CASE CASE POST ='Y' IF msub < 19.99 STORE 1.00 TO mpost ELSE STORE msub*.05 TO mpost ENDIF CASE POST ='S' @ 11, 5 SAY "ENTER % RATE FOR POSTAGE CHARGE" GET mpost PICTURE '99' READ STORE mpost*.01 TO mpost STORE msub*mpost TO mpost OTHERWISE STORE 0 TO mpost ENDCASE RELEASE post SELE PRIM IF state = 'MI' STORE T TO mtax ELSE STORE F TO mtax ENDIF @ 13, 5 SAY "ENTER Y IF ORDER HAS BEEN PREPAID" GET mpaid PICTURE '!' READ STORE (msub-xdisc)+mpost to mtotal SELE SECO USE INVOICE INDEX INDNUM APPEND BLANK REPLACE num WITH Mnum,catnum1 WITH mcat1,price1 WITH mprice1 REPLACE catnum2 WITH mcat2,price2 WITH mprice3,catnum3 WITH mcat3 REPLACE price3 WITH mprice3,catnum4 WITH mcat4,price4 WITH mprice4 REPLACE catnum5 WITH mcat5,price5 WITH mprice5,catnum6 WITH mcat6 REPLACE price6 WITH mprice6,catnum7 WITH mcat7,price7 WITH mprice7 REPLACE catnum8 WITH mcat8,price8 WITH mprice8,catnum9 WITH mcat9 REPLACE price9 WITH mprice9,catnum10 WITH mcat10,price10 WITH mprice10 REPLACE catnum11 WITH mcat11,price11 WITH mprice11,catnum12 WITH mcat12 REPLACE price12 WITH mprice12 REPLACE disc WITH mdisc REPLACE s.last WITH p.last REPLACE s.first WITH p.first REPLACE date WITH date() REPLACE tax WITH mtax,total WITH mtotal IF mpaid = Y REPLACE paid WITH Y ELSE REPLACE paid WITH F ENDIF SET EJECT OFF SET FORMAT TO PRINT SET MARGIN TO 0 RELEASE print @ 8,50 SAY "INVOICE NUMBER:" @ 8,66 SAY mnum USING '9999' IF company =' ' @ 14,12 SAY TRIM(p.first)+' '+p.last @ 14,52 SAY 'SAME' @ 15,12 SAY p.address @ 16,12 SAY TRIM(p.city)+', '+p.state+' '+p.zipcode ELSE @ 14,12 SAY TRIM(p.first)+' '+p.last @ 14,52 SAY 'SAME' @ 15,12 SAY p.company @ 16,12 SAY p.address @ 17,12 SAY TRIM(p.city)+', '+p.state+' '+p.zipcode ENDIF @ 20,10 SAY 'ML' IF mpur <> ' ' @ 20,13 SAY mpur ENDIF @ 20,25 SAY 'SPEC 4TH CLASS' IF mpaid = Y @ 20,44 SAY 'Y' ELSE @ 20,58 SAY 'NET/30' ENDIF @ 20,72 SAY DATE() @ 20,82 SAY '1' STORE 1 TO z DO WHILE z<13 IF z>9 STORE '2' TO e ELSE STORE '1' TO e ENDIF STORE STR(z,&e) TO a STORE '@ '+STR(24+z,2)+',' TO b IF mcat&a <> ' ' &b 3 SAY '1' &b 17 SAY mcat&a &b 28 SAY mdescr&a &b 72 SAY mprice&a ENDIF STORE z+1 TO z ENDDO IF mdisc > 0 @ 45,30 SAY "DISCOUNT" @ 45,69 SAY mdisc USING '99' @ 45,75 SAY xdisc USING '$999.99' ENDIF IF mpaid = Y @ 47,35 SAY "*********" @ 48,35 SAY "*P A I D*" @ 49,35 SAY "*P A I D*" @ 50,35 SAY "*P A I D*" @ 51,35 SAY "*********" ENDIF @ 53,30 SAY "Thank you for your order" @ 54,30 SAY "========================" IF mpost > 0 @ 61,75 SAY mpost USING '$999.99' ENDIF @ 64,75 SAY mtotal USING '$999.99' EJECT SET FORMAT TO SCREEN STORE mnum + 1 TO mnum STORE ' 'to snum STORE 1 to Z STORE 000.00 to mpost STORE 000.00 to msub STORE F to mtax STORE F to mpaid STORE 00 to mdisc STORE 000.00 to xdisc STORE ' ' TO mpur store ' ' to mcat1 store ' ' to mcat2 store ' ' to mcat3 store ' ' to mcat4 store ' ' to mcat5 store ' ' to mcat6 store ' ' to mcat7 store ' ' to mcat8 store ' ' to mcat9 store ' ' to mcat10 store ' ' to mcat11 store ' ' to mcat12 store 000.00 to mprice1 store 000.00 to mprice2 store 000.00 to mprice3 store 000.00 to mprice4 store 000.00 to mprice5 store 000.00 to mprice6 store 000.00 to mprice7 store 000.00 to mprice8 store 000.00 to mprice9 store 000.00 to mprice10 store 000.00 to mprice11 store 000.00 to mprice12 store ' ' to mdescr1 store ' ' to mdescr2 store ' ' to mdescr3 store ' ' to mdescr4 store ' ' to mdescr5 store ' ' to mdescr6 store ' ' to mdescr7 store ' ' to mdescr8 store ' ' to mdescr9 store ' ' to mdescr10 store ' ' to mdescr11 store ' ' to mdescr12 store ' ' to LLL store ' ' to FFF SAVE TO B:NUM RETURN 2 store 000.00 to mprice1 store 000.00 to mprice2 store 000.00 to mprice3 store 000.00 to mprice4 store 000.00 to mprice5  $CATNUM $CATNUMBond Hendricks Lynn Lynn Sutherland A 1 AS 61 AS 62 DHM 895/06EMF 111 EMF 13 EMF 27 M 68 MISC  !LASTM $CATNUMA 1 AS 61 AS 62 EMF 111 EMF 27 EMF 27 Bond Duck Hendricks Kepler Lynn Lynn Sutherland  2NUMM $CATNUMA 1 AS 61 AS 62 EMF 111 EMF 27 CCCCEMF 111 EMF 27  2PONUM $CATNUMA 1 AS 61 AS 62 EMF 111 EMF 27 CCCAS 62 EMF 111 EMF 27 * INVENTOR.CMD * WRITTEN BY MICHAEL LYNN 8/3/83 SELE SECO DO WHILE T ERASE ? ? ? ' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-' ? ? ' ****INVENTORY REPORTS & UPDATING****' ? ? ' 1 REPORT OF INSTOCK INVENTORY' ? ? ' 2 REPORT OF ITEMS WITH QUANTITIES BELOW' ? ' A CERTAIN NUMBER' ? ? ' 3 REPORT OF ITEMS BELOW STANDARD RE-ORDER POINT' ? ? ' 4 COMPLETE INVENTORY LIST' ? ? ' 5 ITEM LISTING FOR PARTICULAR VENDOR' ? ? ' 6 RETURN TO MAIN MENU' ? ? ' =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=' ? SET CONSOLE OFF WAIT TO what SET CONSOLE ON IF what < '6' @ 22, 1 SAY 'ENTER A Y TO GET A PRINTED COPY OF REPORT' SET CONSOLE OFF WAIT TO print SET CONSOLE ON IF !(print) = 'Y' SET PRINT ON SET EJECT OFF RELEASE print ENDIF ENDIF ERASE DO CASE CASE WHAT ='1' SET HEAD TO STOCK ON HAND ERASE REPORT FORM B:INVENTOR FOR QUANTITY > 0 EJECT SET PRINT OFF SET CONSOLE OFF WAIT SET CONSOLE ON CASE WHAT ='2' STORE 0 TO mmin @ 19, 1 SAY "ENTER MINIMUM NUMBER FOR INVENTORY" GET mmin PICTURE '9' READ STORE STR(mmin,1) TO min SET HEAD TO ITEMS WITH INVENTORY OF &min OR BELOW ERASE REPORT FORM B:INVENTOR FOR QUANTITY <= &min SET CONSOLE OFF WAIT SET CONSOLE ON RELE mmin, min EJECT SET PRINT OFF CASE what ='3' SET HEAD TO ITEMS WITH QUANTITY BELOW RE-ORDER POINT ERASE REPORT FORM B:INVENTOR FOR quantity < reorder EJECT SET PRINT OFF SET CONSOLE OFF WAIT SET CONSOLE ON CASE what ='4' SET HEAD TO ***COMPLETE ITEM LISTING*** ERASE REPORT FORM B:INVENTOR EJECT SET PRINT OFF SET CONSOLE OFF WAIT SET CONSOLE ON CASE what ='5' STORE 00 TO mvend @ 19, 1 SAY "ENTER VENDOR NUMBER" GET mvend PICTURE '99' READ STORE STR(mvend,2) TO ven SET HEAD TO ITEMS SUPPLIED BY VENDOR &ven ERASE REPORT FORM B:INVENTOR FOR vendor = &ven SET CONSOLE OFF WAIT SET CONSOLE ON RELE mvend, ven EJECT SET PRINT OFF CASE WHAT ='6' SET PRINT OFF ERASE RELEASE what RETURN ENDCASE ENDDO  y EMF INVENTORY REPORT;==================== N Y N 10,CATNUM CATALOGUE;NUMBER 30,DESCR DESCRIPTION;=========== 6,PRICE PRICE;EACH N 8,QUANTITY QUANTITY ON HAND Y 10,QUANTITY*PRICE VALUE OF;STOCK Y  SNUMNrLASTC rFIRSTC rDATECrCATNUM1C rPRICE1NrCATNUM2C rPRICE2NrCATNUM3C sPRICE3NsCATNUM4C sPRICE4NsCATNUM5C $sPRICE5N.sCATNUM6C 4sPRICE6N>sCATNUM7C DsPRICE7NNsCATNUM8C TsPRICE8N^sCATNUM9C dsPRICE9NnsCATNUM10C tsPRICE10N~sCATNUM11C sPRICE11NsCATNUM12C sPRICE12NsTOTALNsPAIDLsTAXLsDISCNs 1000Lynn Ellen 08/28/83AS 62 11.95A 1 8.25EMF 27 8.25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00242.44FT10 1001Lynn Michael 08/28/83EMF 27 8.25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 8.25TT 0 1002Duck Donald 08/28/83EMF 13 9.50MISC 36.00M 68 36.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00853.39FF20 1003Kepler Johannes 04/12/83A 1 235.00AS 61 11.95AS 62 11.95EMF 13 9.50MISC 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00255.93FF10 MI48197 Duck Donald Space Tech Univ. 110110 Binary ANs 1000Lynn Ellen 08/28/83AS 62 11.95A 1 8.25EMF 27 8.25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00242.44FT10 1001Lynn Michael 08/28/83EMF 27 8.25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 8.25TT 0 1002Duck Donald 08* ITEM.CMD * MICHAEL LYNN 8/24/83 STORE ' ' TO h @ 1, 1 SAY 'IF YOU WOULD LIKE TO BE ABLE TO CHANGE ALL' @ 2, 1 SAY 'VALUES RATHER THAN JUST VIEW THEM - ENTER Y' GET h PICTURE '!' READ IF h ="Y" STORE 'GET' TO how STORE 'PICTURE' TO ho ELSE STORE 'SAY' TO how STORE 'USING' TO ho ENDIF DO WHILE T STORE ' ' TO snum ERASE @ 1, 1 SAY "ENTER CATALOGUE NUMBER OF ITEM" GET snum PICTURE '!!!!!!!!!!' @ 2, 1 SAY "ENTER A T TO RETURN TO MENU" READ SELECT SECONDARY FIND &snum IF snum = 'T' RETURN ENDIF IF #=0 @ 3, 1 SAY 'NOT IN DATABASE - RE-ENTER' SET CONSOLE OFF WAIT SET CONSOLE ON @ 3, 0 LOOP ENDIF ERASE @ 4, 1 SAY "-------------------------------------------------" @ 5, 1 SAY "CATALOGUE NUMBER PRICE" @ 6, 1 &how S.catnum @ 6,20 &how S.price @ 8, 1 SAY "DESCRIPTION OF ITEM" @ 9, 1 &how S.descr @ 11, 1 SAY "QUANTITY ON HAND" @ 11,17 &how S.quantity &ho '99' @ 11,26 SAY "TOTAL SOLD:" @ 11,37 &how S.sold @ 13, 1 SAY "RE-ORDER POINT" @ 13,15 &how S.reorder &ho '99' @ 13,26 SAY "VENDOR NUMBER:" @ 13,42 &how S.vendor @ 20, 0 SAY "--------------------------------------------------" READ STORE str(ponum,4) to po SELECT PRIMARY FIND &po IF #=0 @ 17, 1 SAY "PURCHASE ORDER NOT ON FILE" SET CONSOLE OFF WAIT SET CONSOLE ON ELSE @ 15, 1 SAY 'DATE OF LAST ORDER:' @ 15,20 SAY podate @ 15,30 SAY "QUANTITY ORDERED:" @ 15,47 SAY ordered @ 17, 1 SAY "PURCHASE ORDER NUMBER:" @ 17,23 SAY ponum @ 19, 1 SAY "ORDER RECEIVED?" @ 19,19 GET recv PICTURE '!' @ 19,25 SAY "ORDER PAID?" @ 19,40 GET paid PICTURE '!' READ ENDIF ENDDO RELEASE how, h, po, ho RETURN --------------------------------------------" @ 5, 1 SAY "CATALOGUE NUMBER PRICE" @ 6, 1 &how S.catnum @ 6,20 &how S.price @ 8, 1 SAY "DESCRIPTION OF ITEM" @ 9, 1 &how S.descr @ 11, 1 SAY "QUANTITY ON HAND" @ 11,17 &how S.quantity &ho '99'  SFCATNUMC rDESCRCrPRICENrQUANTITYNrSOLDNrPODATECrPONUMNrREORDERNsORDEREDNsVENDORNs A 1 Italian Diminutions 235.00 0 5 0 1 010 AS 61 Bach. Pieces de Luth I 11.9522 1104/12/831001 440 2 AS 62 Bach. Pieces de Luth II 11.95 9 2704/12/831001 4 2 2 EMF 111 Eberlin. Fugen. 8.25 4 107/25/831002 2 499 EMF 27 Telemann. Six Sonatas 8.25-2 707/25/831002 2 399 MISC Misc. Item 0.00-2 2 0 0 EMF 13 Handel. Sonatas Op. 1 9.50 1 207/25/831002 1 099 M 68 Couperin. Les Gouts-Reunis 36.00 1 1 1 1 DHM 895/06Virtuose Verzierungkunst 17.90 6 2 3A 1 AS 61 AS 62 EMF 111 EMF 27 EMF 27 A 1 Italian Diminutions 235.00 0 5 0 1 010 AS 61 Bach. Pieces de Luth I 11.9522 1104/12/831001 440 2 AS 62 Bach. Pieces de Luth II 11.95 9 2704/12/831001 4 2 2 EMF 111 Eberlin. Fugen. 8.25 4 107/25/831002 2 499 EMF 27 Telemann. Six Sonatas 8.25-2 707/25/831002 2 399 MISC Misc. Item 0.00-2 2 0 0 EMF 13 Handel. Sonatas Op. 1 9.50 1 207/25/831002 1 099 M 68 Co* LABEL.CMD * MICHAEL LYNN 8/25/83 USE DO WHILE T ERASE STORE ' ' TO who STORE ' ' TO lll STORE ' ' TO fff STORE ' ' TO x STORE 00 TO mvendor ? ? ? '*********************************************' ? ' LABEL AND ENVELOPE PRINTING' ? ? '1. PRINT ENVELOPE FOR VENDOR' ? '2. PRINT SINGLE LABEL FOR VENDOR' ? '3. PRINT COMPLETE VENDOR LIST ON LABELS' ? '4. PRINT ENVELOPE FOR CUSTOMER' ? '5. PRINT SINGLE LABEL FOR CUSTOMER' ? '6. PRINT COMPLETE CUSTOMER LIST ON LABELS' ? ? '7. EXIT TO MENU' ? ? '********************************************' ? ? ? ? SET CONSOLE OFF WAIT TO what SET CONSOLE ON ERASE DO CASE CASE what ='1' USE B:VENDOR @ 3, 1 SAY "ENTER VENDOR NUMBER FOR ENVELOPE PRINTING" GET mvendor PICTURE '99' READ LOCATE FOR vendor=mvendor SET MARGIN TO 0 SET EJECT OFF SET FORMAT TO PRINT IF last = ' ' .and. address2 = ' ' @ 13,45 SAY company @ 14,45 SAY address1 @ 15,45 SAY TRIM(city)+', '+state+' '+zipcode @ 16,45 SAY country ELSE  IF last = ' ' @ 12,45 SAY company @ 13,45 SAY address1 @ 14,45 SAY address2 @ 15,45 SAY TRIM(city)+', '+state+' '+zipcode @ 16,45 SAY country ELSE IF address2 = ' ' @ 12,45 SAY company @ 13,45 SAY TRIM(first)+' '+last @ 14,45 SAY address1 @ 15,45 SAY TRIM(city)+', '+state+' '+zipcode @ 16,45 SAY country ELSE @ 12,45 SAY company @ 13,45 SAY TRIM(first)+' '+last @ 14,45 SAY address1 @ 15,45 SAY address2 @ 16,45 SAY TRIM(city)+', '+state+' '+zipcode @ 17,45 SAY country ENDIF ENDIF ENDIF EJECT SET FORMAT TO SCREEN CASE what ='2' USE B:VENDOR @ 3, 1 SAY "ENTER VENDOR NUMBER FOR LABEL PRINTING" GET mvendor PICTURE '99' READ LOCATE FOR vendor=mvendor SET MARGIN TO 0 SET EJECT OFF SET PRINT ON IF last = ' ' .and. address2 = ' ' ? company ? address1 ? TRIM(city)+', '+state+' '+zipcode ? country ? ? ELSE IF last = ' ' ? company ? address1 ? address2 ? TRIM(city)+', '+state+' '+zipcode ? country ? ELSE IF address2 = ' ' ? company ? TRIM(first)+' '+last ? address1 ? TRIM(city)+', '+state+' '+zipcode ? country ? ELSE ? company ? TRIM(first)+' '+last ? address1 ? address2 ? TRIM(city)+', '+state+' '+zipcode+' '+country ? ENDIF ENDIF ENDIF SET PRINT OFF CASE what ='3' USE B:VENDOR SET MARGIN TO 0 SET EJECT OFF SET PRINT ON DO WHILE .NOT. EOF IF last = ' ' .and. address2 = ' ' ? company ? address1 ? TRIM(city)+', '+state+' '+zipcode ? country ? ? ELSE IF last = ' ' ? company ? address1 ? address2 ? TRIM(city)+', '+state+' '+zipcode ? country ? ELSE IF address2 = ' ' ? company ? TRIM(first)+' '+last ? address1 ? TRIM(city)+', '+state+' '+zipcode ? country ? ELSE ? company ? TRIM(first)+' '+last ? address1 ? address2 ? TRIM(city)+', '+state+' '+zipcode+' '+country ? ENDIF ENDIF ENDIF SKIP ENDDO SET PRINT OFF CASE what ='4' USE B:NAMES INDEX B:INDLAST @ 3, 1 SAY "ENTER LAST NAME" GET lll PICTURE '!AAAAAAAAAA' @ 4, 1 SAY "ENTER FIRST NAME" GET fff PICTURE '!AAAAAAAAAA' READ FIND &lll DO WHILE last=lll .and. first # fff SKIP ENDDO IF last=lll .and. first=fff STORE 'X' to who ENDIF IF who =' ' @ 14, 5 SAY '********************' @ 15, 5 SAY 'NAME NOT IN DATABASE' @ 16, 5 SAY '********************' ELSE SET MARGIN TO 0 SET EJECT OFF SET FORMAT TO PRINT IF company = ' ' @ 12,45 SAY TRIM(first)+' '+last @ 13,45 SAY address @ 14,45 SAY TRIM(city)+', '+state+' '+zipcode ELSE @ 12,45 SAY company @ 13,45 SAY TRIM(first)+' '+last @ 14,45 SAY address @ 15,45 SAY TRIM(city)+', '+state+' '+zipcode ENDIF ENDIF EJECT SET FORMAT TO SCREEN CASE what ='5' USE B:NAMES INDEX B:INDLAST @ 3, 1 SAY "ENTER LAST NAME" GET lll PICTURE '!AAAAAAAAAA' @ 4, 1 SAY "ENTER FIRST NAME" GET fff PICTURE '!AAAAAAAAAA' READ FIND &lll DO WHILE last=lll .and. first # fff SKIP ENDDO IF last=lll .and. first=fff STORE 'X' to who ENDIF IF who =' ' @ 14, 5 SAY '********************' @ 15, 5 SAY 'NAME NOT IN DATABASE' @ 16, 5 SAY '********************' ELSE SET MARGIN TO 0 SET EJECT OFF SET PRINT ON IF company = ' ' ? TRIM(first)+' '+last ? address ? TRIM(city)+', '+state ? zipcode ? ? ELSE ? company ? TRIM(first)+' '+last ? address ? TRIM(city)+', '+state+' '+zipcode ? ? ENDIF ENDIF SET PRINT OFF CASE what ='6' USE B:NAMES INDEX B:INDLAST SET MARGIN TO 0 SET EJECT OFF SET PRINT ON DO WHILE .NOT. EOF IF company = ' ' ? TRIM(first)+' '+last ? address ? TRIM(city)+', '+state ? zipcode ? ? ELSE ? company ? TRIM(first)+' '+last ? address ? TRIM(city)+', '+state+' '+zipcode ? ? ENDIF SKIP ENDDO SET PRINT OFF CASE WHAT ='7' RETURN ENDCASE ENDDO  WHILE last=lll .and. first # fff SKIP ENDDO IF last=lll .and. first=fff STORE 'X' to who ENDIF IF who =' ' @ 1* MARK.CMD * WRITTEN BY MICHAEL LYNN DO WHILE T store 0000 to xnum ERASE @ 5, 4 SAY 'ENTER AN INVOICE NUMBER OF 0 TO RETURN TO MENU' @ 6, 4 SAY 'ENTER INVOICE NUMBER TO MARK PAID' GET xnum PICTURE '9999' READ IF xnum = 0 ERASE RETURN ENDIF STORE STR(xnum,4) TO um FIND &um IF #=0 @ 8, 6 SAY 'THAT INVOICE NUMBER HAS NOT YET BEEN USED' SET CONSOLE OFF WAIT SET CONSOLE ON ELSE @ 8, 6 SAY TRIM(FIRST)+' '+LAST @ 9, 6 SAY "DATE OF INVOICE"+' '+date @ 10, 6 SAY "INVOICE TOTAL" @ 10,20 say total @ 12, 6 SAY "ENTER A Y IF INVOICE HAS BEEN PAID" @ 13, 6 GET paid PICTURE '!' READ ENDIF ENDDO RELEASE xnum, still, um RETURN 1SURNAMEC |CHR:NAMEC |MEM:NOC|N:NUMBERC |WORK:DOC'|SEC:PAYC)|TIEDOWNC+|TD:NOC0|COMMENTSC2|ADDRESSCF|CITYC^|STATECm|ZIPCo|PHONEC t|FONE:BUSC ~|NICKNAMEC |MATENAMEC |GOC|MOC| ANDERSON WILLIAM O. 753 WEST HIGHLAND ROAD SAGAMORE HILLS OH44067 467-6725 BILL ANGSLEY DONALD 843 SHAWNEE LANE BEDFORD OH44146 232-4736 DON BARKER WILLIAM A. 8504 STONE ROAD VALLEY VIEW OH44125 447-1826 467-3943 BENDER WILLIAM  14601 ALEXANDER ROAD VALLEY VIEW OH44125 524-5676 BILL BESSER HOMER 61 FELL AVENUE NORTHFIELD OH44067 467-8742 BOGGS DANIEL A. 213 LAURIE LANE NORTHFIELD OH44067 467-4172 BOWERS RONALD D. 6843 SHADY LANE NORTHFIELD OH44067 467-3456 RON BROWER HARVEY C. 6469 BRANDYWINE HUDSON OH44236 656-2583 662-5200 BROWN CHARLES W. 513 WILLOW LAKE DR. SAGAMORE HILLS OH44067 467-4418 CHARLIE CARBONE DOMINIC 7239 OLDE EIGHT ROAD PENINSULA OH44264 650-1037 DOM CHILDERS JAMES E. 862 CESSNA DRIVE MACEDONIA OH44056 467-4492 JIM CORRY JOHN R. 572 CESSNA DRIVE MACEDONIA OH44056 467-6721 JACK DUNN HOWARD 316 BEECHWOOD DRIVE NORTHFIELD OH44067 467-2934 HOWIE DURHAM RICHARD B. 1346 HALL'S CARRIAGE RD.WESTLAKE OH44145 871-7504 835-9216DICK FORREST HENRY L. 2138 14th STREET CUYAHOGA FALLS OH44223 GARNER GARY 5604 CUMBERLAND DRIVE GARFIELD HTS. OH44125 662-8325 GORDON JOHN L. 6529 McLELLAN DRIVE WALTON HILLS OH44146 439-3649 JOHN GRAHAM CHARLES W. 4128 COVENTRY DRIVE PARMA OH44134 842-4562 842-4562CHUCK HANDFORD RICHARD E. 509-A LEE ROAD BEDFORD OH44146 475-5661 475-2304DICK HARTMANN ERIC 631 MANITOV AVENUE AKRON OH443051-794-8447 HEDDON CLYDE P. 610-A CORKHILL RD ,#418 BEDFORD OH44146 581-6116 439-2100CLYDE HERBLOCH GEORGE 4296 DYSART ROAD UNIVERSITY HTS.OH44118 321-4402 JACKSON JOHN T. 6492 WOOD HOLLOW ROAD SAGAMORE HILLS OH44067 468-2291 831-3096JACK JEFFERSON WILLIAM E. 7225 BRISTOL CIRCLE RAVENNA OH442661-296-3117 696-5040BILL JORDAN ROLAND A. 207 WASHINGTON BLVD. NORTHFIELD OH44067 467-6557 KRAMER WALTER 3349 STICKNEY AVE. CLEVELAND OH44144 351-8072 271-1505WALT LEWIS LOUIS E. P.O.BOX 13263 AKRON OH443131-666-41241-825-5703LOU LIPMANN GERALD 38 WEST GLENDALE BEDFORD OH44146 439-5219 JERRY LOWERY THOMAS P. 582 BUTTON ROAD BEDFORD OH44146 232-5032 TOM  LYTLE CECIL L. 4184 SKYVIEW DRIVE BRUNSWICK OH44212 225-0623 225-0623LYTT MALDEN RALPH 5117 BARTLETT ROAD BEDFORD HEIGHTSOH44146 232-4192 MELTON CHESTER T. 5118 BARTLETT ROAD BEDFORD HEIGHTSOH44146 232-4447 CHESS MERTON RALPH D. 15442 TINKERS CREEK RD. VALLEY VIEW OH44125 524-4296 524-4296 MONTGOMERY DONALD C. 426 STARLIGHT DRIVE SEVEN HILLS OH44131 524-5872 DON MORTON HERMAN R. 1016 MT. VERNON AVE. AKRON OH44310 HERMAN NEAL JOHN C.  4983 E. 98th ST. GARFIELD HTS. OH44125 441-6338 344-4019 NELSON THOMAS 552 BARTON ROAD SAGAMORE HILLS OH44067 467-6619 439-3283TOM NEWTON DAVID A. 413 BELTON DRIVE SAGAMORE HILLS OH44067 467-0992 473-1680DAVE OREHEK JAMES R. 5066 RUSHWOOD LANE SAGAMORE HILLS OH44067 467-3392 JIM OSTEEN DUANE L. 5219 DORA BLVD. INDEPENDENCE OH44131 524-7721 581-0396LES PERCY MICHAEL J. 2219 ARCHWOOD ROAD INDEPENDENCE OH44131 524-6229 252-5100MIKE PLACIK JOSEF 19 NORTH OAKMONT NORTHFIELD CENTOH44067 467-8814  JOE POSNER ANTHONY 8229 JENKINS ROAD MACEDONIA OH44056 467-8446 TONY QUILLEN PATRICK E. 910 EAST DECKER DR. SEVEN HILLS OH44131 524-9062 PAT RESTON PERCIVAL. 3391 LAKE ROCKWELL AVE. RAVENNA OH442661-297-5690 292-2814PERRY REYNOLDS ROBERT B. P.O.BOX 804 NORTHFIELD OH44067 468-1663 468-1509BOB ROWAN SAMUEL N. 12763 MARY MAC DRIVE NORTHFIELD OH44067 467-4871 SAM RUCKER ROBERT R. 15604 LOUIS AVENUE CLEVELAND OH44135 267-5981 BOB RUSSELL TIMOTHY P.  7156 RIVERVIEW ROAD BRECKSVILLE OH44141 526-8813 TIM REYNOLDS ROBERT B. 76 8400 P.O.BOX 804 NORTHFIELD OH44067 468-1663 468-1509BOB *RICHARDSON ROBERT W. 45 8410 299 BENTLEYVILLE RD CHAGRIN FALLS OH44022 247-3251 523-4534BOB JAMAE ROWAN SAMUEL N. 04 8400 12763 MARY MAC DRIVE NORTHFIELD OH44067 467-4871 SAM RUCKER ROBERT R. 57 4455U831012/8436 15604 LOUIS AVENUE CLEVELAND OH44135 267-5981 BOB RUSSELL TIMOTHY P. 03 961Z841006/85LH 7156 RIVERVIEW ROAD BRECKSVILLE OH44141 526-8813 TIM *SABO RANDY 75 8400 JOIN 5/85 17614 EGBERT WALTON HILLS OH44146 439-8039 587-5554RANDY * * * * * * *  * *  8410 21118 AURORA ROAD * * * * * MENU.CMD * WRITTEN BY MICHAEL LYNN 7/8/83, 8/1/83 * COPYRIGHT 1983, MICHAEL LYNN - phone 313-484-4297 * RELEASED TO PUBLIC DOMAIN FOR NOT FOR PROFIT USE SET TALK OFF DO B:SIGN STORE ' ' to mdate ERASE @ 10, 8 SAY "ENTER DATE" GET mdate PICTURE "99/99/99" READ SET DATE TO &mdate RELE mdate DO WHILE T SELE SECO USE B:ITEM INDEX B:INDCAT SELE PRIM USE B:NAMES INDEX B:INDLAST ERASE ? ? ? '---------------------------------------------' ? ' *****EMF INVOICE SYSTEM*****' ? '---------------------------------------------' ? ? ' 1 ENTER AND PRINT INVOICES' ? ? ' 2 ENTER NEW ITEMS INTO DATABASE' ? ? ' 3 INVENTORY REPORTS AND UPDATING' ? ? ' 4 INVOICE REPORTS AND UPDATING' ? ? ' 5 PURCHASE ORDERS / ITEM STATUS / LABELS' ? ? ' 6 EXIT TO DBASE' ? ? ' 7 EXIT TO CPM VIA STAT' ? ? '----------------------------------------------' ? '**********************************************' ? SET CONSOLE OFF WAIT TO NEXT SET CONSOLE ON ERASE DO CASE CASE NEXT ='1' DO B:TEST CASE NEXT ='2' DO B:ENTER CASE NEXT ='3' DO B:INVENTOR CASE NEXT ='4' DO B:MENU2 CASE NEXT ='5' DO B:POMENU CASE NEXT ='6' SET TALK ON CANCEL CASE NEXT ='7' QUIT TO 'STAT B:*.*' ENDCASE ENDDO AMES INDEX B:INDLAST ERASE ? ? ? '---------------------------------------------' ? ' *****EMF INVOICE SYSTEM*****' ? '---------------------------------------------' ? ? ' 1 ENTER AND PRINT INVOICES' ? ? ' 2 ENTER NEW ITEMS INTO DATABASE' ? ? ' 3 INVENTORY REPORTS AND UPDATING' ? ? ' 4 INVOICE REPORTS AND UPDATING' ? ? ' 5 PURCHASE ORDERS / ITEM STATUS / LABELS' ? ? ' 6 EXIT TO DBASE' ? ? ' 7 EXIT TO CPM VIA STAT' ? ? '----------------------------------------------' ? '**********************************************' ? SET CONSOLE OFF WAIT TO NEXT SET CONSOLE ON ERASE DO CASE C* MENU2.CMD * WRITTEN BY MICHAEL LYNN 8/1/83 USE INVOICE INDEX INDNUM RELEASE ALL DO WHILE T ERASE ? ? '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=' ? ? ' **INVOICE - REPORTS & UPDATING**' ? ' ================================' ? ? '1 - PRINT REPORT OF UNPAID INVOICES' ? ? '2 - PRINT REPORT OF SALES TOTALS TO DATE' ? ? '3 - PRINT REPORT OF INVOICES FOR 1983' ? ? '4 - PRINT REPORT OF INVOICES FOR SELECTED MONTH' ? ? '5 - MONTHLY SALES SUMMARY FOR THIS YEAR' ? ? '6 - MARK SELECTED INVOICES "PAID"' ? ? '7 - RETURN TO MAIN MENU' ? ? '-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-' ? SET CONSOLE OFF WAIT TO what SET CONSOLE ON ERASE IF what < '6' @ 18, 1 SAY 'ENTER A Y TO GET A PRINTED COPY OF REPORT' SET CONSOLE OFF WAIT TO print SET CONSOLE ON ENDIF DO CASE ERASE CASE WHAT ='1' IF !(print) ='Y' SET PRINT ON SET EJECT OFF ENDIF RELEASE print SET HEAD TO ***UNPAID INVOICES*** ERASE REPORT FORM B:UNPAID FOR .NOT. PAID SET PRINT OFF  SET CONSOLE OFF WAIT SET CONSOLE ON CASE WHAT ='2' IF !(print) ='Y' SET EJECT OFF SET FORMAT TO PRINT ENDIF RELEASE print ERASE USE INVOICE @ 4, 6 SAY "SALES STATISTICS TO DATE:" @ 4,31 SAY date() @ 5, 6 SAY "============================================" @ 6, 6 SAY "TOTAL AMOUNT OF SALES TO DATE:" SUM total TO xtot @ 6,36 SAY xtot USING '$99,999.99' GO BOTT STORE # TO xsales @ 7, 6 SAY "TOTAL NUMBER OF SALES:" @ 7,29 SAY xsales USING '9999' @ 8, 6 SAY "AVERAGE SALE AMOUNT:" @ 8,27 SAY xtot/xsales USING '$999.99' SUM total FOR .NOT. paid TO notpaid @ 9, 6 SAY "TOTAL OF SALES NOT PAID:" @ 9,30 SAY notpaid USING '$9,999.99' SUM total FOR tax TO mtax @ 10, 6 SAY "TOTAL TAXABLE SALES:" @ 10,27 SAY mtax USING '$9,999.99' @ 11, 6 SAY "AMOUNT DUE MICHIGAN:" @ 11,27 SAY mtax*.04 USING '$999.99' @ 12, 6 SAY "==========================================" SET FORMAT TO SCREEN SET CONSOLE OFF  WAIT SET CONSOLE ON ERASE RELEASE xtot, xsales, notpaid EJECT SET INDEX TO INDNUM CASE what ='3' IF !(print) ='Y' SET PRINT ON SET EJECT OFF ENDIF SET HEAD TO ***REPORT OF SALES TO DATE FOR 1983*** ERASE REPORT FORM B:UNPAID FOR $(date,7,2)='83' EJECT SET PRINT OFF SET CONSOLE OFF WAIT SET CONSOLE ON CASE what ='4' STORE '!!' TO month @ 4, 1 SAY 'ENTER MONTH FOR REPORT AS A 2 DIGIT NUMBER' @ 5, 1 SAY 'REPORT WILL BE FOR CURRENT YEAR ONLY' GET month PICTURE '99' READ IF !(print) ='Y' SET PRINT ON SET EJECT OFF ENDIF ERASE SET HEAD TO REPORT FOR &month ,1983 REPORT FORM B:UNPAID FOR $(date,1,2) = month .and. $(date,7,2)='83' EJECT SET PRINT OFF SET CONSOLE OFF WAIT SET CONSOLE ON RELEASE month CASE what ='5' USE INVOICE ERASE @ 4, 4 SAY 'THIS PROGRAM TAKES A WHILE TO RUN' @ 5, 4 SAY 'YOU REALLY MIGHT WANT TO GET A CUP OF COFFEE' SUM total FOR $(date,1,2)='01' .AND. $(date,7,2)='83' TO JAN SUM total FOR $(date,1,2)='02' .AND. $(date,7,2)='83' TO FEB SUM total FOR $(date,1,2)='03' .AND. $(date,7,2)='83' TO MAR @ 6, 4 SAY "DON'T GIVE UP" SUM total FOR $(date,1,2)='04' .AND. $(date,7,2)='83' TO APR SUM total FOR $(date,1,2)='05' .AND. $(date,7,2)='83' TO MAY SUM total FOR $(date,1,2)='06' .AND. $(date,7,2)='83' TO JUN SUM total FOR $(date,1,2)='07' .AND. $(date,7,2)='83' TO JUL SUM total FOR $(date,1,2)='08' .AND. $(date,7,2)='83' TO AUG @ 8, 4 SAY 'STILL WORKING' SUM total FOR $(date,1,2)='09' .AND. $(date,7,2)='83' TO SEP SUM total FOR $(date,1,2)='10' .AND. $(date,7,2)='83' TO OCT SUM total FOR $(date,1,2)='11' .AND. $(date,7,2)='83' TO NOV @ 10, 4 SAY 'ALMOST DONE' SUM total FOR $(date,1,2)='12' .AND. $(date,7,2)='83' TO DEC ERASE IF !(print) ='Y' SET FORMAT TO PRINT SET MARGIN TO 10 @ 3, 1 SAY date() @ 4, 5 SAY 'MONTHLY SALES REPORT FOR 1983' @ 6, 1 SAY '===============================================' @ 8, 5 SAY 'SALES FOR JANUARY:' @ 8,30 SAY jan USING '$99,999.99' @ 10, 5 SAY 'SALES FOR FEBRUARY:' @ 10,30 SAY feb USING '$99,999.99' @ 12, 5 SAY 'SALES FOR MARCH:' @ 12,30 SAY mar USING '$99,999.99' @ 14, 5 SAY 'SALES FOR APRIL:' @ 14,30 SAY apr USING '$99,999.99' @ 16, 5 SAY 'SALES FOR MAY:' @ 16,30 SAY may USING '$99,999.99' @ 18, 5 SAY 'SALES FOR JUNE:' @ 18,30 SAY jun USING '$99,999.99' @ 20, 5 SAY 'SALES FOR JULY:' @ 20,30 SAY jul USING '$99,999.99' @ 22, 5 SAY 'SALES FOR AUGUST:' @ 22,30 SAY aug USING '$99,999.99' @ 24, 5 SAY 'SALES FOR SEPTEMBER:' @ 24,30 SAY sep USING '$99,999.99' @ 26, 5 SAY 'SALES FOR OCTOBER:' @ 26,30 SAY oct USING '$99,999.99' @ 28, 5 SAY 'SALES FOR NOVEMBER:' @ 28,30 SAY nov USING '$99,999.99' @ 30, 5 SAY 'SALES FOR DECEMBER:' @ 30,30 SAY dec USING '$99,999.99' @ 32, 1 SAY '==============================================' @ 34, 5 SAY 'TOTAL 1983 SALES:' @ 34,30 SAY jan+feb+mar+apr+may+jun+jul+aug+sep+oct+nov+dec USING '$99,999.99' @ 36, 1 SAY '==============================================' SET MARGIN TO 0 EJECT SET FORMAT TO SCREEN ELSE @ 1, 5 SAY date() @ 2, 5 SAY 'MONTHLY SALES REPORT FOR 1983' @ 3, 1 SAY '===============================================' @ 5, 5 SAY 'SALES FOR JANUARY:' @ 5,30 SAY jan USING '$99,999.99' @ 6, 5 SAY 'SALES FOR FEBRUARY:' @ 6,30 SAY feb USING '$99,999.99' @ 7, 5 SAY 'SALES FOR MARCH:' @ 7,30 SAY mar USING '$99,999.99' @ 8, 5 SAY 'SALES FOR APRIL:' @ 8,30 SAY apr USING '$99,999.99' @ 9, 5 SAY 'SALES FOR MAY:' @ 9,30 SAY may USING '$99,999.99' @ 10, 5 SAY 'SALES FOR JUNE:' @ 10,30 SAY jun USING '$99,999.99' @ 11, 5 SAY 'SALES FOR JULY:' @ 11,30 SAY jul USING '$99,999.99' @ 12, 5 SAY 'SALES FOR AUGUST:' @ 12,30 SAY aug USING '$99,999.99' @ 13, 5 SAY 'SALES FOR SEPTEMBER:' @ 13,30 SAY sep USING '$99,999.99' @ 14, 5 SAY 'SALES FOR OCTOBER:' @ 14,30 SAY oct USING '$99,999.99' @ 15, 5 SAY 'SALES FOR NOVEMBER:' @ 15,30 SAY nov USING '$99,999.99' @ 16, 5 SAY 'SALES FOR DECEMBER:' @ 16,30 SAY dec USING '$99,999.99' @ 18, 1 SAY '==============================================' @ 19, 5 SAY 'TOTAL 1983 SALES:' @ 19,30 SAY jan+feb+mar+apr+may+jun+jul+aug+sep+oct+nov+dec USING '$99,999.99' @ 20, 1 SAY '==============================================' SET CONSOLE OFF WAIT SET CONSOLE ON ERASE ENDIF SET INDEX TO INDNUM RELEASE jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec CASE WHAT ='6' DO B:MARK CASE what ='7' RETURN ENDCASE ENDDO 9,999.99' @ 9, 5 SAY 'SALES FOR MAY:' @ 9,30 SAY may USING '$99,999.99' @ 10, 5 SAY 'SALES FOR JUNE:' @ 10,30 SAY jun USING '$99,999.99' @ 11, 5 SAY 'SALES FOR JULY:' @ 11,30 SAY jul USING '$99,999.99' @ 12, 5 SAY 'SALES FOR AUGUST:' @ 12,30 SAY aug USING '$99,999.99' @ 13, 5 SAY 'SALES FOR SEPTEMBER:' @ 13,30 SAY sep USING '$99,999.99' @ 14, 5 SAY 'SALES FOR OCTOBER:' @ 14,30 SAY oct USING '$99,999.99' @ 15, 5 SAY 'SALES FOR NOVEMBER:' @ 15,30 SAY nov USING '$99,999.99' @ 16, 5 SAY 'SALES FOR DECEMBER:' @ 16,30 SAY dec USING '$99,999.99' @ 18, 1 SAY '==============================================' @ 19, 5 SAY 'TOT SYLASTC lFIRSTC lCOMPANYClADDRESSClCITYCmSTATEC"mZIPCODEC$m Lynn Michael Early Music Facs. P.O. Box 1813 Ann Arbor MI48106 Hendricks James 1367 State Street New York NY10021 Sutherland David 801 Miner Ann Arbor MI48106 Bond James Meta Quasi Pseudo 221 S. Washington StreetYpsilanti MI48197 Lynn Ellen H/Stuff N. River Street Ypsilanti MI48197 Duck Donald Space Tech Univ. 110110 Binary Ave. Free Water CA99908 Kepler Johannes Iowa State Univ. 12256 Cow Path Lane Iowa City IA48999          Lynn Michael Early Music Facs. P.O. Box 1813 Ann Arbor MI48106 Hendricks James 1367 State Street New York NY10021 Sutherland David 801 Miner Ann Arbor MI48106 Bond James Meta Quasi Pseudo 221 S. Washington StreetYpsilanti MI48197 Lynn Ellen H/Stuff N. River Street Ypsilanti MI48197 Duck Donald Space Tech Univ. 110110 Binary AMNUM dSNUM dZ dMPOST dMSUB #dMTAX*dMPAID,dMDISC .dXDISC 5dMPUR 9 STORE '2' TO e ELSE STORE '1' TO e ENDIF STORE STR(z,&e) TO a STORE '@ '+STR(z,2)+',' TO b &b 1 SAY 'CATALOGUE NUMBER AND QUANTITY OF ITEM &a'; GET snum PICTURE '!!!!!!!!!!' &b 53 GET mquan PICTURE '99' READ FIND &snum IF # <> 0 IF vendor # mvendor .and. snum # 'T' @ 21, 1 SAY "ITEM IS NOT FROM THIS VENDOR - ENTER; ANYWAY (Y/N)" SET CONSOLE OFF WAIT TO ahead SET CONSOLE ON IF !(ahead) ='N' @ 21, 1 LOOP ENDIF @ 21, 1 RELE ahead ENDIF STORE STR(mquan,2) TO quan REPLACE S.ordered WITH mquan STORE quan+' == '+S.catnum+' '+S.descr TO mitem&a REPLACE S.podate WITH date() REPLACE S.ponum WITH mponum ELSE IF snum ='T' STORE 22 TO z ELSE @ 21, 1 SAY 'NOT IN DATABASE - RE-ENTER' SET CONSOLE OFF WAIT SET CONSOLE ON @ 21, 0 LOOP ENDIF ENDIF STORE z+1 TO z ENDDO SELECT PRIMARY APPEND BLANK REPLACE P.ponum WITH mponum REPLACE P.vendor WITH mvendor REPLACE P.date WITH date() REPLACE recv WITH F REPLACE paid WITH F REPLACE item1 WITH mitem1 REPLACE item2 WITH mitem2 REPLACE item3 WITH mitem3 REPLACE item4 WITH mitem4 REPLACE item5 WITH mitem5 REPLACE item6 WITH mitem6 REPLACE item7 WITH mitem7 REPLACE item8 WITH mitem8 REPLACE item9 WITH mitem9 REPLACE item10 WITH mitem10 REPLACE item11 WITH mitem11 REPLACE item12 WITH mitem12 REPLACE item13 WITH mitem13 REPLACE item14 WITH mitem14 REPLACE item15 WITH mitem15 REPLACE item16 WITH mitem16 REPLACE item17 WITH mitem17 REPLACE item18 WITH mitem18 REPLACE item19 WITH mitem19 REPLACE item20 WITH mitem20 ERASE @ 3, 1 SAY "PRINT PURCHASE ORDER NOW? (Y/N)" SET CONSOLE OFF WAIT TO print SET CONSOLE ON STORE !(print) TO print STORE 1 TO mpage STORE 1 TO cpage IF print ='Y' @ 5, 1 SAY "ENTER NUMBER OF COPIES TO PRINT" GET mpage PICTURE '9' READ SET PRINT ON SET EJECT OFF SET FORMAT TO PRINT SET MARGIN TO 8 ENDIF DO WHILE cpage <= mpage @ 2,25 SAY "**************" @ 3,25 SAY "PURCHASE ORDER" @ 4,25 SAY "**************" @ 6,21 SAY "EARLY MUSIC FACSIMILES" @ 7,23 SAY "***Michael Lynn***" @ 8,25 SAY "P.O. Box 1813" @ 9,23 SAY "Ann Arbor, Michigan" @ 10,25 SAY "48106 U.S.A." @ 11,26 SAY "313-484-4297" @ 13, 0 SAY "Fed. Id. 38-2209695" @ 14, 0 SAY "PURCHASE ORDER NUMBER:" @ 14,22 SAY ponum @ 15, 0 SAY "DATE:" @ 15, 6 SAY date @ 17, 0 SAY "TO:" SELECT SECONDARY USE B:VENDOR LOCATE FOR vendor=P.vendor IF address2 <> ' ' @ 18, 0 SAY company @ 19, 0 SAY  TRIM(first)+' '+last @ 20, 0 SAY address1 @ 21, 0 SAY address2 @ 22, 0 SAY TRIM(city)+', '+state+' '+zipcode @ 23, 0 SAY country ELSE @ 18, 0 SAY company @ 19, 0 SAY TRIM(first)+' '+last @ 20, 0 SAY address1 @ 21, 0 SAY TRIM(city)+', '+state+' '+zipcode @ 22, 0 SAY country ENDIF IF account <> ' ' @ 25, 0 SAY "ACCOUNT NUMBER:" @ 25,15 SAY account ENDIF SELECT PRIMARY @ 27, 0 SAY "QUANTITY CATALOGUE DESCRIPTION" STORE 1 TO z DO WHILE z<21 IF z>9 STORE '2' TO e ELSE STORE '1' TO e ENDIF STORE STR(z,&e) TO a STORE '@ '+STR(27+z,2)+',' TO b IF mitem&a # ' ' &b 3 SAY mitem&a ENDIF STORE z+1 TO z ENDDO @ 49,17 SAY "PLEASE SHIP AS SOON AS POSSIBLE" @ 51, 0 SAY "IF MAILING BY U.P.S. PLEASE SEND TO:" @ 53,26 SAY "MICHAEL LYNN" @ 54,24 SAY "221 S. Washington" @ 55,25 SAY "Ypsilanti, MI." @ 56,30 SAY "48197" EJECT STORE 1 + cpage TO cpage ENDIF ENDDO SET FORMAT TO SCREEN SET PRINT OFF RELEASE cpage, mpage STORE mponum+1 TO mponum STORE ' 'to snum STORE 1 to z STORE F to mpaid STORE 00 to mdisc STORE 00 TO mvendor STORE ' ' TO mitem1 STORE ' ' TO mitem2 STORE ' ' TO mitem3 STORE ' ' TO mitem4 STORE ' ' TO mitem5 STORE ' ' TO mitem6 STORE ' ' TO mitem7 STORE ' ' TO mitem8 STORE ' ' TO mitem9 STORE ' ' TO mitem10 STORE ' ' TO mitem11 STORE ' ' TO mitem12 STORE ' ' TO mitem13 STORE '  ' TO mitem14 STORE ' ' TO mitem15 STORE ' ' TO mitem16 STORE ' ' TO mitem17 STORE ' ' TO mitem18 STORE ' ' TO mitem19 STORE ' ' TO mitem20 SAVE TO B:POMEM ERASE RETURN  STORE ' ' TO mitem9 STORE ' ' TO mitem10 STORE ' ' TO mitem11 STORE ' ' TO mitem12 STORE ' ' TO mitem13 STORE ' SPONUMNlVENDORNlDATEClRECVLlAMOUNTNlPAIDLlITEM1C-lITEM2C-mITEM3C-AmITEM4C-nmITEM5C-mITEM6C-mITEM7C-mITEM8C-"nITEM9C-OnITEM10C-|nITEM11C-nITEM12C-nITEM13C-oITEM14C-0oITEM15C-]oITEM16C-oITEM17C-oITEM18C-oITEM19C-pITEM20C->p 1000 208/28/83F F 4 == AS 61 Bach. Pieces de Luth I 6 == AS 62 Bach. Pieces de Luth II  10011304/12/83F F 2 == AS 62 Bach. Pieces de Luth II 4 == EMF 13 Handel. Sonatas Op. 1 40 == AS 61 Bach. Pieces de Luth I ! 10029907/25/83F F 4 == EMF 111 Eberlin. Fugen. 0 == EMF 13 Handel. Sonatas Op. 1 3 == EMF 27 Telemann. Six Sonatas   EMF 111 Eberlin. Fugen. 8.25 4 107/25/831002 2 499 EMF 27 Telemann. Six Sonatas 8.25-2 707/25/831002 2 399 MISC Misc. Item 0.00-2 2 0 0 EMF 13 Handel. Sonatas Op. 1 9.50 1 207/25/831002 1 099 M 68 Co MPONUM dSNUM dZ dMPAIDdMDISC dMVENDOR %dMITEM1&dMITEM2&gMITEM3&gMITEM4&[dMITEM5&sgMITEM6&dMITEM7&dMITEM8&eMITEM9&+eMITEM10&SeMITEM11&{eMITEM12&eMITEM13&eMITEM14&eMITEM15&fMITEM16&CfMITEM17&kfMITEM18&fMITEM19&fMITEM20&fMQUAN gEgA6dBgQUANgPRINT,d C @Y20(& (& (& (& (& (& (& (& (& (& (& (& (& (& (& (& (& 2@ 47, 3(& (& (& POMEM.CMD * MICHAEL LYNN 8/23/83 TO SET UP MEMORY VAR FOR PO STORE 0000 TO mponum @ 4, 3 SAY 'ENTER STARTING PURCHSE ORDER NUMBER' GET mponum PICTURE '9999' READ STORE ' 'to snum STORE 1 to Z STORE F to mpaid STORE 00 to mdisc STORE 00 TO mvendor STORE ' ' TO mitem1 STORE ' ' TO mitem2 STORE ' ' TO mitem3 STORE ' ' TO mitem4 STORE ' ' TO mitem5 STORE "* POMENU.CMD * MICHAEL LYNN 8/23/83 SET TALK OFF ERASE DO WHILE T SELECT PRIMARY USE PO INDEX INDPO SELECT SECONDARY USE B:ITEM INDEX B:INDCAT RESTORE FROM B:POMEM ? ? ? ? ? '*********************************************' ? " PURCHASE ORDERS / LABEL PRINTING " ? '---------------------------------------------' ? ? ' 1. WRITE PURCHASE ORDERS' ? ? ' 2. ENTER NEW SUPPLIER/VENDOR' ? ? ' 3. PRINT VENDOR LIST' ? ? ' 4. PRINT ENVELOPES AND LABELS' ? ? ' 5. STATUS OF PARTICULAR ITEM' ? ? ' 6. RETURN TO MAIN MENU' ? ? ? '*********************************************' ? ? ? ? SET CONSOLE OFF WAIT TO what SET CONSOLE ON ERASE DO CASE CASE what='1' DO B:PO.CMD CASE what='2' USE B:VENDOR APPEND BLANK @ 3, 1 SAY "ENTER COMPANY NAME" GET company PICTURE '!XXXXXXXXXXXXXXXX; XXX' @ 4, 1 SAY "ENTER VENDOR NUMBER" GET vendor PICTURE '99' @ 5, 1 SAY "ENTER LAST NAME OF CONTACT PERSON" GET last PICTURE; '!AAAAAAAAAA' @ 6, 1 SAY "ENTER FIRST NAME" GET first PICTURE '!AAAAAAAAAA' @ 7, 1 SAY "FIRST LINE OF ADDRESS" GET address1 @ 8, 1 SAY "SECOND LINE OF ADDRESS" GET address2 @ 9, 1 SAY "CITY" GET city @ 9, 22 SAY "STATE" GET state PICTURE '!!' @ 10, 1 SAY "ZIPCODE" GET zipcode @ 10,16 SAY "COUNTRY" GET country PICTURE '!!!!!!!!!!!!' @ 11, 1 SAY "STANDARD DISCOUNT RATE" GET disc PICTURE '99' @ 12, 1 SAY "ACCOUNT NUMBER" GET account READ CASE what='3' @ 20, 1 SAY "DO YOU WANT A PRINTED COPY (Y/N)" SET CONSOLE OFF WAIT TO print SET CONSOLE ON IF !(print) ='Y' SET EJECT OFF SET PRINT ON USE B:VENDOR SET HEAD TO REPORT FORM B:VEND EJECT SET PRINT OFF ELSE USE B:VENDOR SET HEAD TO REPORT FORM B:VEND SET CONSOLE OFF WAIT SET CONSOLE ON ENDIF CASE what='4' DO B:LABEL CASE what='5' DO B:ITEM CASE what='6' RETURN ENDCASE ENDDO ndor PICTURE '99' @ 5, 1 SAY "ENTER LAST NAME OF CONTACT PERSON" GET last PICTURE; '!AAAAAAAAAA' @ 6, 1 SAY "E* SETUP.CMD (sets up memory var. for invoice system) * WRITTEN BY MICHAEL Lynn 8/2/83 SET TALK OFF STORE 0000 TO mnum @ 4, 3 SAY 'ENTER STARTING INVOICE NUMBER' GET mnum PICTURE '9999' READ STORE ' 'to snum STORE 1 to z STORE 000.00 to mpost STORE 000.00 to msub STORE F to mtax STORE F to mpaid STORE 00 to mdisc STORE 000.00 to xdisc STORE ' ' TO mpur store ' ' to mcat1 store ' ' to mcat2 store ' ' to mcat3 store ' ' to mcat4 store ' ' to mcat5 store ' ' to mcat6 store ' ' to mcat7 store ' ' to mcat8 store ' ' to mcat9 store ' ' to mcat10 store ' ' to mcat11 store ' ' to mcat12 store 000.00 to mprice1 store 000.00 to mprice2 store 000.00 to mprice3 store 000.00 to mprice4 store 000.00 to mprice5 store 000.00 to mprice6 store 000.00 to mprice7 store 000.00 to mprice8 store 000.00 to mprice9 store 000.00 to mprice10 store 000.00 to mprice11 store 000.00 to mprice12 store ' ' to mdescr1 store ' ' to mdescr2 store ' ' to mdescr3 store ' ' to mdescr4 store ' ' to mdescr5 store ' ' to mdescr6 store ' ' to mdescr7 store ' ' to mdescr8 store ' ' to mdescr9 store ' ' to mdescr10 store ' ' to mdescr11 store ' ' to mdescr12 store ' ' to LLL store ' ' to FFF SAVE TO B:NUM RELEASE ALL STORE 0000 TO mponum @ 6, 3 SAY 'ENTER STARTING PURCHSE ORDER NUMBER' GET mponum PICTURE '9999' READ STORE ' 'to snum STORE 1 to z STORE F to mpaid STORE 00 to mdisc STORE 00 TO mvendor STORE ' ' TO mitem1 STORE ' ' TO mitem2 STORE ' ' TO mitem3 STORE '  ' TO mitem4 STORE ' ' TO mitem5 STORE ' ' TO mitem6 STORE ' ' TO mitem7 STORE ' ' TO mitem8 STORE ' ' TO mitem9 STORE ' ' TO mitem10 STORE ' ' TO mitem11 STORE ' ' TO mitem12 STORE ' ' TO mitem13 STORE ' ' TO mitem14 STORE ' ' TO mitem15 STORE ' ' TO mitem16 STORE ' ' TO mitem17 STORE ' ' #TO mitem18 STORE ' ' TO mitem19 STORE ' ' TO mitem20 SAVE TO B:POMEM RETURN  ' TO mitem8 STORE ' ' TO mitem9 STORE ' ' TO mitem10 STORE ' ' TO mitem11 STORE ' ' TO mitem12 STORE ' ' TO mitem13 STORE ' ' TO mitem14 STORE ' ' TO mitem15 STORE ' ' TO mitem16 STORE ' ' TO mitem17 STORE ' ' * SIGN.CMD * WRITTEN BY MICHAEL LYNN 8/28/83 ERASE SET TALK OFF ? CHR(27)+'g' @ 8, 5 SAY CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155) @ 8, 12 SAY CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155) @ 8, 19 SAY CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155) @ 8, 26 SAY CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155) @ 8, 33 SAY CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155) @ 8, 40 SAY CHR(155)+CHR(155)+CHR(155) @ 9, 5 SAY CHR(24) @ 10, 5 SAY CHR(24) @ 11, 5 SAY CHR(24) @ 12, 5 SAY CHR(24) @ 13, 5 SAY CHR(24) @ 14, 5 SAY CHR(24) @ 15, 5 SAY CHR(24) @ 16, 5 SAY CHR(24) @ 17, 5 SAY CHR(24) @ 9, 42 SAY CHR(24) @ 10, 42 SAY CHR(24) @ 11, 42 SAY CHR(24) @ 12, 42 SAY CHR(24) @ 13, 42 SAY CHR(24) @ 14, 42 SAY CHR(24) @ 15, 42 SAY CHR(24) @ 16, 42 SAY CHR(24) @ 17, 42 SAY CHR(24) @ 10, 14 SAY 'EMF INVOICE SYSTEM' @ 12, 14 SAY '***MICHAEL LYNN***' @ 13, 10 SAY CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160) @ 13, 17 SAY CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160) @ 13, 24 SAY CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160) @ 13, 31 SAY CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160) @ 15, 14 SAY 'Ennis Form INV-11' @ 17, 9 SAY '1983, ANN ARBOR, MI. ver. 1.9' @ 18, 5 SAY CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155) @ 18, 12 SAY CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155) @ 18, 19 SAY CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155) @ 18, 26 SAY CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155) @ 18, 33 SAY CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155)+CHR(155) @ 18, 40 SAY CHR(155)+CHR(155)+CHR(155) @ 19, 1 SAY CHR(27)+'G' STORE 1 TO c DO WHILE c < 120 STORE c+1 TO c ENDDO RELEASE c RETURN 14 SAY 'EMF INVOICE SYSTEM' @ 12, 14 SAY '***MICHAEL LYNN***' @ 13, 10 SAY CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(160)+CHR(1 * TEST.CMD * WRITTEN BY MICHAEL Lynn 5/16/83 revised 8/25/83 ERASE RESTORE FROM B:num STORE ' ' to who SELE PRIM @ 6,3 SAY 'ENTER LAST NAME OF CUSTOMER' GET lll PICTURE '!AAAAAAAAAA' @ 8,3 SAY 'ENTER FIRST NAME ' GET fff PICTURE '!AAAAAAAAAA' READ FIND &lll IF #=0 @ 14, 5 SAY '********************' @ 15, 5 SAY 'NAME NOT IN DATABASE' @ 16, 5 SAY 'TO ENTER A NEW NAME TYPE Y' @ 17, 2 SAY 'ANY OTHER CHARACTER TO RETURN TO MAIN MENU' @ 18, 2 SAY '******************************************' SET CONSOLE OFF WAIT TO go SET CONSOLE ON IF !(go) ='Y' APPEND BLANK ERASE @ 3, 3 SAY "Last Name" GET last PICTURE '!AAAAAAAAAA' @ 4, 3 SAY "First Name" GET first PICTURE '!AAAAAAAAAA' @ 5, 3 SAY "Company or School" GET company @ 6, 3 SAY "Address" GET address @ 7, 3 SAY "City" GET city @ 8, 3 SAY "State & Zipcode" GET state PICTURE '!!' @ 8,28 GET zipcode PICTURE '99999' READ RELEASE go DO B:FILL RETURN ELSE RETURN ENDIF ELSE DO WHILE last=lll .AND. first # fff SKIP ENDDO ENDIF IF last = lll .AND. first = fff STORE 'X' to who @ 12, 5 SAY TRIM(FIRST)+' '+LAST @ 13, 5 SAY company @ 14, 5 SAY address @ 15, 5 SAY TRIM(city)+', '+state+' '+zipcode @ 17, 5 SAY "IF THIS IS THE CORRECT PERSON ENTER A Y" SET CONSOLE OFF WAIT TO quick SET CONSOLE ON IF !(quick) # 'Y' RETURN ENDIF RELEASE quick ENDIF IF who =' ' @ 14, 5 SAY '********************' @ 15, 5 SAY 'NAME NOT IN DATABASE' @ 16, 5 SAY 'TO ENTER A NEW NAME TYPE Y' @ 17, 2 SAY 'ANY OTHER CHARACTER TO RETURN TO MAIN MENU' @ 18, 2 SAY '******************************************' SET CONSOLE OFF WAIT TO go SET CONSOLE ON IF !(go) ='Y' APPEND BLANK ERASE @ 3, 3 SAY "Last Name" GET last PICTURE '!AAAAAAA$AAA' @ 4, 3 SAY "First Name" GET first PICTURE "!AAAAAAAAAA" @ 5, 3 SAY "Company or School" GET company @ 6, 3 SAY "Address" GET address @ 7, 3 SAY "City" GET city @ 8, 3 SAY "State & Zipcode" GET state PICTURE '!!' @ 8,28 GET zipcode PICTURE '99999' READ RELE go DO B:FILL RETURN ELSE RETURN ENDIF ENDIF RELEASE go DO B:fill RETURN k SET CONSOLE ON IF !(quick) # 'Y' RETURN ENDIF RELEASE quick ENDIF IF who =' ' @ 14, 5 SAY '********************' @ 15, 5 SAY 'NAME NOT IN DATABASE' @ 16, 5 SAY 'TO ENTER A NEW NAME TYPE Y' @ 17, 2 SAY 'ANY OTHER CHARACTER TO RETURN TO MAIN MENU' @ 18, 2 SAY '******************************************' SET CONSOLE OFF WAIT TO go SET CONSOLE ON IF !(go) ='Y' APPEND BLANK ERASE @ 3, 3 SAY "Last Name" GET last PICTURE '!AAAAAAA y ***EMF INVOICE REPORT*** Y Y N 7,NUM INVOICE NUMBER N 11,LAST LAST NAME;======== 11,FIRST FIRST NAME;========== 8,DATE DATE;==== 8,TOTAL AMOUNT;====== Y MARK CMDtMEMBERS DBFTuvwxyz{|}~MENU CMD MENU2 CMD3NAMES DBF NUM MEMPO CMD-PO DBFPOMEM MEMPOMENU CMDSETUP CMDSIGN CMDTEST CMDUNPAID $$$ Y ***VENDOR LIST*** Y N 20,COMPANY COMPANY 6,VENDOR VENDOR NUMBER 8,DISC STANDARD DISCOUNT 15,CITY LOCATION 15,ACCOUNT ACCOUNT NUMBER MARK CMDtMEMBERS DBFTuvwxyz{|}~MENU CMD MENU2 CMD3NAMES DBF NUM MEMPO CMD-PO DBFPOMEM MEMPOMENU CMDSETUP CMDSIGN CMDTEST CMDUNPAID FRMVEND $$$ SVENDORNrCOMPANYCrLASTC rFIRSTC rADDRESS1CrADDRESS2CsCITYCsSTATEC-sZIPCODEC/sCOUNTRYC 5sDISCNAsACCOUNTCCs 1Minkoff Reprint Minkoff Sylvie 1225 Chene-Bourg Chemin de la Mousse, 46 Geneve SWITZERLAND 30GG 6855 99Early Music Facs. LyndenburghMiguel P.O. Box 1813 Ann Arbor MI48106 USA 9099 H8 10Barenreiter Verlag Postfach 10 03 29 D-1000 KASSEL WEST GERMANY3534549 3German News 288 Madison Ave.  New York NY10023 USA 40465463 13Nanny Goat Graphics Johnson Nanny Grove Street New York NY10027 USA 19Spend  6Frits Knuf P.O. Box 720 NL 2707 Buren Gelderland Netherlands 30 99Early Music Facs. Lynn Michael P.O. Box 1813 Ann Arbor MI48106 0 10Barenreiter Verlag Postfach 10 03 29 D-3500 KASSEL West Germany30345451 9Dovehouse Editions 32 Glen Avenue Ottawa K1S2Z7Canada 30 11Les Gouts Reunis C.P. 509 succ. Youville Montreal PQH2P 2WCANADA 20 7Harmonia Mundi USA Young Robina 2351 Westwood Boulevard % Los Angeles CA90064 35  @1 8(& (& 10Barenreiter Verlag Postfach 10 03 29 D-3500 KASSEL West Germany30345451 9Dovehouse Editions 32 Glen Avenue Ottawa K1S2Z7Canada 30 11Les Gouts Reunis C.P. 509 succ. Youville Montreal PQH2P 2WCANADA 20 7Harmonia Mundi USA Young Robina 2351 Westwood Boulevard  * UNDLINES.CMD -- A sample program to demonstrate the use of print commands * for Epson or Star dot matrix printers in dBASE and how to * underline headings when the print commands for this will * not work properly. Any printout of this program should * be printed in condensed print to give a reasonable view * of spacing required for the subheadings. * - W. Ragsdale (5/30/86) - SET TALK OFF SET EJECT OFF SET RAW ON * Above eliminates spaces between columns. ACCEPT 'ENTER DATE' TO RDATE ERASE STORE 1 TO PG * Above starts page count USE B:MEMBERS *SORT ON SURNAME TO B:MEMLIST *USE B:MEMLIST SET FORMAT TO PRINT SET PRINT ON @ 1,1 SAY CHR(15) * Above sets print to condensed mode. @ 2,2 SAY 'PAGE' ?? PG * Above is same as '?', except there is no carriage return. @ 3,2 SAY 'DATE' @ 3,8 SAY RDATE @ 3,17 SAY CHR(18) * Above cancels condensed print @ 5,1 SAY CHR(14) * Above sets print to expanded mode, it is cancelled by a carriage return. @ 5,13 SAY 'CLUB MEMBERS' @ 6,1 SAY CHR(15) ? ' NAME' + CHR(13) + ' ____', * In dBASE, this is the only way to underline on Epson or Star printers. * Headings are measured from the previous heading, but underlining is * measured from the left margin. ?? ' ADDRESS' + CHR(13) ?? + ' _______', ?? ' CITY' + CHR(13) ?? + ' ____', ?? ' ST' + CHR(13) ?? +' __' ?? ' ZIP ' + CHR(13) ?? +' ___' ?? ' HOME PHONE' + CHR(13) ?? +' ____ _____' ?? ' BUS. PHONE' + CHR(13) ?? +'  ____ _____' ?? ' COMMENTS' + CHR(13) ?? +' ________' STORE 7 TO X * This sets line count at 7 DO WHILE .NOT. EOF ? CHR:NAME,' ',SURNAME,' ',ADDRESS,' ',CITY,' ',STATE,' ',ZIP,' ', ?? PHONE,' ',FONE:BUS,' ',COMMENTS,' ',# * The # is a request for the record number; if file is sorted, this will * provide an accurate item count. ? * Above will provide a blank line to double space the report. STORE X+2 TO X IF X>55 EJECT @ 1,1 SAY CHR(15) @ 2,2 SAY 'PAGE' STORE PG+1 TO PG ?? PG @ 3,2 SAY 'DATE' @ 3,8 SAY RDATE @ 3,17 SAY CHR(18) @ 5,1 SAY CHR(14) @ 5,13 SAY 'CLUB MEMBERS' @ 6,1 SAY CHR(15) ? ' NAME' + CHR(13) + ' ____', ?? ' ADDRESS' + CHR(13) ?? + ' _______', ?? ' CITY' + CHR(13) ?? + ' ____', ?? ' ST' + CHR(13) ?? +' __' ?? ' ZIP ' + CHR(13) ?? +' ___' ?? ' HOME PHONE' + CHR(13) ?? +' ____ _____' ?? ' BUS. PHONE' + CHR(13) ?? +' ____ _____' ?? ' COMMENTS' + CHR(13) ?? +' ________' STORE 7 TO X ENDIF SKIP ENDDO ? CHR(27)+CHR(66)+CHR(2) * Above is for Elite size print (12 per inch) TEXT The above listing of active members is updated once each month based on records at the end of the month& and a new listing will be completed by the tenth of the month. ENDTEXT ?? CHR(18), ?? CHR(13) * Above is a carriage return to insure that the last line is printed SET EJECT OFF SET PRINT OFF CANCEL  ?? +' ___' ?? ' HOME PHONE' + CHR(13) ?? +' ____ _____' ?? ' BUS. PHONE' + CHR(13) ?? +' ____ _____' ?? ' COMMENTS' + CHR(13) ?? +' ________' STORE 7 TO X ENDIF SKIP ENDDO ? CHR(27)+CHR(66)+CHR(2) * Above is for Elite size print (12 per inch) TEXT The above listing of active members is updated once each month based on records at the end of the month You Can Underline In dBASE II With An Epson Printer ( But it ain't easy ) W. Ragsdale Recentl wante t creat repor usin dBAS I tha woul no fi int th standar 8 columns considere buyin wid carriag printer bu decide t se ho wel coul fi th repor o 1/2 wid pag b usin condense print An sinc wa goin t hav t writ progra fo this becaus di no kno ho t alte prin siz whil usin th repor format decide t us expande prin fo th headin an t underlin th subheadings Tha i whe becam awar o th peculiaritie o dBASŠ regardin certai prin commands. Instruction t Epso typ do matri printer (min i Sta Gemin 10X fo cancellatio o underlinin en wit CHR(0) whic i no accepte a vali b dBAS (Joh Gaudio/FOGHOR ??) trie doubl an i didn' wor either s a  temporar fix se serie o dashe o th nex line Bu stil wondere i ther wa way Ther was I th dBAS manua -ver 2.43*-(Sec.A pag 79) ther i th suggestio tha yo d i thi way enter 'TITLE CHR(13 '_____' I i no quit tha simple however becaus i doe no wor wit th " x, SAY instruction On mus us th "? o "?? (Sam a "? bu n lin feed use a a additiona instructio fo th preceedin line) A unusua requiremen i tha whil th heading ar measure fro th previou headin i you allowanc fo spaces al underlinin i measure fro th lef margi (Thi wa discovere b experimentation i wa no mentione i th dBAS manua -- i mean tha lo o blan space wil b include withi th quotatio mark i fron o you entries). Anothe perhap usefu ite discovere i th manua wa tha i th "# i include o th lin wit "? instruction th recor numbe wil b displaye o printed Whil i ma serv n usefu purpos fo indexe files wit sorte files i ca b use a a ite coun (als grea fo editin purposes).  '_____' I i no quit tha simple however becaus i doe no wor wit th " x, SAY instruction On mus us th "? o "?? (Sam a "? bu n lin feed use a a additiona instructio fo th preceedin line) A unusua requiremen i tha whil th heading ar measure fro th previou headin i you allowanc fo spaces al underlinin i measure fro th lef margi (Thi wa discovere b experimentation i wa no mentione i th dBAS manua -- i mean tha lo o blan space wil b include withi th quotatio mark i fron o you entries). Anothe perhap usefu ite discovere i th manua wa tha i th "# i include o th lin wit "? instruction th This is the release date of the disk. CANCEL CMD  CHECKS DBF CHECKS MEM CHECKS NDX NEWENTERCMD  DBFRED37CMD DBFRED37DOC FORM10 FMT FORMGEN CMD !SAMPLE DBF #SAVE370 MEM (EASYPOSTDOC )E-BEGIN CMD 0E-BONES CMD 2FORMGEN .CMD C9 BB 1408 11 SAMPLE .DBF FA 79 5120 40 SAVE370 .MEM A2 D3 1024 8 EASYPOST.DOC 5C C6 7168 56 E/BEGIN .CMD 48 D3 1920 15 E/BONES .CMD BD 41 384 3 E/CHANGE.CMD 43 BD 512 4 E/DATA .DBF CB 6F 1024 8 E/ENTER .CMD 8A C5 2560 20 E/EOF .CMD 0E E1 256 2 E/FIND .CMD 33 2A 2560 20 E/INPUT .CMD 78 0A 896 7 E/PADDRS' Fog Library Disk FOG-CPM.090 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. dBASE II application programs and utilities. Filename Description -07-00 .86 This is the release date of the disk. -CPM090 .DOC This is the description of the disk contents. CHECKS .CMD 64EE 3K [Checkbook mgmt. 1 of 6] A checkbook management system for use with dBASE II. CANCEL .CMD 0CDD 4K [Checkbook mgmt. 2 of 6] CHECKS .DBF 1335 1K [Checkbook mgmt. 3 of 6] CHECKS .MEM 198D 3K [Checkbook mgmt. 4 of 6] CHECKS .NDX 3789 1K [Checkbook mgmt. 5 of 6] NEWENTER.CMD D6C2 4K [Checkbook mgmt. 6 of 6] DBFRED37.CMD BFC0 5K ver. 3.70 [DBFRED 1 of 6] This compiled (tokenized) dBASE II program allows you to append with some fields being defaulted in each append operation. DBFRED37.DOC D9F5 8K ver. 3.70 [DBFRED 2 of 6] FORM10 .FMT 9398 1K ver. 3.70 [DBFRED 3 of 6] FORMGEN .CMD C9BB 2K ver. 3.70 [DBFRED 4 of 6] SAMPLE .DBF FA79 5K ver. 3.70 [DBFRED 5 of 6] SAVE370 .MEM A2D3 1K ver. 3.70 [DBFRED 6 of 6] EASYPOST.DOC 5CC6 7K ver. 1.0  [EasyPost Mail List 1 of 13] A menu-driven dBASE II program to keep a name & address list and output information for use with WordStar and MailMerge. E-BEGIN .CMD 48D3 2K ver. 1.0 [EasyPost Mail List 2 of 13] E-BONES .CMD BD41 1K ver. 1.0 [EasyPost Mail List 3 of 13] E-CHANGE.CMD 43BD 1K ver. 1.0 [EasyPost Mail List 4 of 13] E-DATA .DBF CB6F 1K ver. 1.0 [EasyPost Mail List 5 of 13] E-ENTER .CMD 8AC5 3K ver. 1.0 [EasyPost Mail List 6 of 13] E-EOF .CMD 0EE1 1K ver. 1.0 [EasyPost Mail List 7 of 13] E-FIND .CMD 332A 3K ver. 1.0 [EasyPost Mail List 8 of 13] E-INPUT .CMD 780A 1K ver. 1.0 [EasyPost Mail List 9 of 13] E-PADDRS.CMD 987B 1K ver. 1.0 [EasyPost Mail List 10 of 13] E-PHONE .CMD 809A 1K ver. 1.0 [EasyPost Mail List 11 of 13] E-PRINT .CMD 6D2E 2K ver. 1.0 [EasyPost Mail List 12 of 13] E-REORG .CMD B5AD 1K ver. 1.0 [EasyPost Mail List 13 of 13] EMF .DOC 1627 24K [EMF 1 of 29] A menu-driven dBASE II program to do invoicing, inventory, and purchase orders for a small publishing business. ENTER .CMD 9439 1K [EMF 2 of 29] FILL .CMD 65C6 7K [EMF 3 of 29] INDCAT .NDX B917 1K [EMF 4 of 29] INDLAST .NDX 6C99 1K [EMF 5 of 29] INDNUM .NDX 23DE 1K [EMF 6 of 29] INDPO .NDX F488 1K [EMF 7 of 29] INVENTOR.CMD A67B 2K [EMF 8 of 29] INVENTOR.FRM 1DB3 1K [EMF 9 of 29] INVOICE .DBF 286E 2K [EMF 10 of 29] ITEM .CMD B2A2 2K [EMF 11 of 29] ITEM .DBF BFF2 2K [EMF 12 of 29] LABEL .CMD C6CE 5K [EMF 13 of 29] MARK .CMD CA95 1K [EMF 14 of 29] MEMBERS .DBF 9705 11K [EMF 15 of 29] MENU .CMD 3C80 2K [EMF 16 of 29] MENU2 .CMD 6BD7 7K [EMF 17 of 29] NAMES .DBF 2BC8 2K [EMF 18 of 29] NUM .MEM 85D4 3K [EMF 19 of 29] PO .CMD E9B5 6K [EMF 20 of 29] PO .DBF EB00 4K [EMF 21 of 29] POMEM .MEM 4EE1 3K [EMF 22 of 29] POMENU .CMD E7C6 2K [EMF 23 of 29] SETUP .CMD D828 4K [EMF 24 of 29] SIGN .CMD 4460 2K [EMF 25 of 29] TEST .CMD 5E51 3K [EMF 26 of 29] UNPAID .FRM 7903 1K [EMF 27 of 29] VEND .FRM B5E7 1K [EMF 28 of 29] VENDOR .DBF 689E 3K [EMF 29 of 29] UNDLINES.CMD 745A 5K [dBASE Underlining 1 of 2] How to use print codes to underline headings in dBASE II, complete with sample command file. UND-MEMB.DOC 8C1F 3K [dBASE Underlining 2 of 2] -"-"-SUBST(dfile,5,3)-"&mdiskno"-".DOC" TO malt SET ALTE TO &malt SET ALTE ON DO WHILE diskno="&mdiskno".AND. .NOT. EOF() IF diskno="000" IF dfile="FOG-DOS" ? "