|
DataMuseum.dkPresents historical artifacts from the history of: Christian Rovsing CR7, CR8 & CR16 CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Christian Rovsing CR7, CR8 & CR16 CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3584 (0xe00) Types: TextFile Names: »LABELS.PRG«
└─⟦96695c514⟧ Bits:30005859 DBase II og SuperCalc2 └─⟦this⟧ »LABELS.PRG«
* Program.: LABELS.CMD * Author..: Luis A. Castro. * Date....: 9/15/82. * Notice..: Copyright 1982, ASHTON-TATE. * Notes...: To print mailing labels more than one across without * printing a blank line when the company field is blank. * You may want to remove all the comment lines, if you want * to make this program run faster. Uses a data file with * the following structure: * NAME,C,<number> * COMPANY,C,<number> * ADDRESS,C,<number> * CITY,C,<number> * STATE,C,<number> * ZIP,C,<number> * * References: * You will notice that I use macro substitution extensively * in this program (i.e., using the ampersand (&) symbol). * You will want to look in your manual for documentation on * this command. * SET TALK OFF SET BELL OFF SET INTENSITY OFF * Initialize macros... STORE "TRIM(city)+', '+TRIM(state)+' '+TRIM(zip)" TO Macro STORE "line1+$(blank,1,column*gap-LEN(line1))" TO Mline1 STORE "line2+$(blank,1,column*gap-LEN(line2))" TO Mline2 STORE "line3+$(blank,1,column*gap-LEN(line3))" TO Mline3 STORE "line4+$(blank,1,column*gap-LEN(line4))" TO Mline4 * Initialize memory variables... * The expression "$(STR(0,133),1,132)" is a tricky way of * initializing 132 blanks to memory variables. STORE $(STR(0,133),1,132) TO blank,line1,line2,line3,line4 STORE "NAMES" TO filename STORE 1 TO nacross STORE " " TO select STORE 25 TO gap STORE "Y" TO printer ERASE * Heading is displayed and parameters are entered... @ 2,29 SAY "PRINT MAILING LABELS" @ 3,29 SAY "--------------------" @ 5,20 SAY "Enter number of labels to go across "; GET nacross PICTURE "9" @ 6,25 SAY "Enter gap between columns "; GET gap PICTURE "99" READ * Minimum and maximum values are tested... IF gap < 25 STORE 25 TO gap ENDIF IF nacross > 4 STORE 4 TO nacross ENDIF * At this point a prompt is displayed to allow the user * to send output to the screen or printer. SET COLON OFF @ 8,15 SAY "Do you want to send output to the printer? (Y/N) "; GET printer PICTURE "!" READ @ 9,17 SAY "When labels are in place, hit carriage return "; GET select READ SET COLON ON ERASE USE &filename DO WHILE .NOT. EOF * Store first column to output lines... STORE TRIM(name) TO line1 IF company=" " STORE TRIM(address) TO line2 STORE &Macro TO line3 STORE " " TO line4 ELSE STORE TRIM(company) TO line2 STORE TRIM(address) TO line3 STORE &Macro TO line4 ENDIF * Store rest of columns to output lines... IF nacross > 1 SKIP ENDIF STORE 1 TO column DO WHILE .NOT. EOF .AND. column < nacross STORE &Mline1+TRIM(name) TO line1 IF company=" " STORE &Mline2+TRIM(address) TO line2 STORE &Mline3+&Macro TO line3 ELSE STORE &Mline2+TRIM(company) TO line2 STORE &Mline3+TRIM(address) TO line3 STORE &Mline4+&Macro TO line4 ENDIF STORE column+1 TO column IF column < nacross SKIP ENDIF ENDDO while .not.eof.and.column<across * We are now ready to display (or print) the * contents of memory variables line1 thru line4. IF printer = "Y" SET CONSOLE OFF SET PRINT ON ENDIF ? line1 ? line2 ? line3 ? line4 ? ? IF printer="Y" SET PRINT OFF SET CONSOLE ON ENDIF SKIP ENDDO while .not.eof ? ? "THAT'S ALL FOLKS..." CLEAR RETURN * EOF labels.cmd «eof»