1 ! FILE NAME: SERIF.BAS ! AUTHOR: R.W.MCDOUGALL ! CREATION DATE: 5/1/86 ! REVISION DATE: 05/04/89 RWM cleaned up code ! LOCATION: HSTC ! MAIN FRAME: VAX 11/780 ! SYSTEM: VAX/VMS V4.1 ! LANGUAGE: VAX-11 BASIC V2.4 ! DESCRIPTION: SERIF BANNER PROGRAM LETTERSET ! --------------------------------------------------------------------- XA$=STRING$(35%,32%)+CHR$(79%)+STRING$(92%,32%) !O XB$=STRING$(35%,32%)+CHR$(88%)+STRING$(92%,32%) !X DIM IPOS%(128%),LEN%(128%),EROR%(10%) MAP (LDAT) LIN$=132% FOR A% = 1% TO 126% READ IPOS%(A%),LEN%(A%) CHARSET$=CHARSET$+CHR$(A%) IF IPOS%(A%) <> 0% NEXT A% OPEN 'SERIF.REL' FOR INPUT AS FILE #1%, & RELATIVE, & RECORDSIZE 132%, & MAP LDAT Z9$ = "Y" WHILE EDIT$(Z9$,32%) = "Y" Z9$ = "N" PRINT ESC+'[2J'; & ESC+'[0;0H'; & ESC+'#3 SERIF BANNER PROGRAM' PRINT ESC+'#4 SERIF BANNER PROGRAM' PRINT ' by R. W. McDougall 05/01/86' PRINT ' ' CCEN = LEN(CHARSET$)/2 PRINT 'Character set: {';LEFT$(CHARSET$,CCEN);' ' PRINT ' ';RIGHT$(CHARSET$,CCEN+1);'}' PRINT ' ' INPUT 'OUTPUT FILE ';F$ F$='SERIF.BAN' IF F$='' OPEN F$ FOR OUTPUT AS FILE #2%, RECORDSIZE 400% PRINT ' ' PRINT 'STRIKING (1/2/3) <1>'; WHILE S% = 0% INPUT S% S% = 1% IF S% = 0% SELECT S% CASE 1%, 2%, 3% CASE ELSE PRINT ESC+'[9;21H';' ' PRINT ESC+'[9;21H'; S% = 0% END SELECT NEXT PRINT ' ' INPUT 'OUPUT STRING <>';O$ PRINT ' ' PRINT 'Now printing:' L%=LEN(O$) FOR A% = 1% TO L% LET$=MID(O$,A%,1%) PRINT LET$; SUB%=ASCII(LET$) IF IPOS%(SUB%) <> 0 THEN !OUTPUT LETTER DATA ---------------------------- FOR B% = IPOS%(SUB%) TO IPOS%(SUB%)+LEN%(SUB%) GET #1%, RECORD B% LIN$=EDIT$(LIN$,4%) SELECT S% CASE 1% PRINT #2%, LIN$ CASE 2% !DOUBLE STRIKE-------------- PRINT #2%, LIN$;CR;XLATE(LIN$,XA$) CASE 3% !TRIPLE STRIKE ------------- PRINT #2%, LIN$;CR; & XLATE(LIN$,XA$);CR; & XLATE(LIN$,XB$) END SELECT NEXT B% !SPACE BETWEEN LETTERS ------------------------- PRINT #2%, ' ' FOR B% = 1% TO 5% ELSE !ERROR HANDLER --------------------------------- ER% = ER% + 1% IF ER% > 9% THEN PRINT ' ' PRINT 'EXECUTION TERMINATED! TOO MANY INVALID SYMBOLS.' GOTO BOT_CODE END IF EROR%(ER%) = A% END IF NEXT A% IF ER% > 0% THEN PRINT ' ' PRINT TAB(EROR%(A%)-1);'^'; FOR A% = 1% TO ER% PRINT ' ' PRINT TAB(EROR%(A%)-1);NUM1$(A%); FOR A% = 1% TO ER% PRINT ' ' PRINT A%;' INVALID SYMBOL' FOR A% = 1% TO ER% END IF PRINT ' ' INPUT 'Would you like to run this program again (Y/N)';Z9$ NEXT ! IPOSITON LENGTH DATA 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 1, 8, & 10, 8, & 19, 8, & 28, 16, & 45, 35, & 81, 31, & 113, 26, & 140, 8, & 149, 15, & 165, 15, & 181, 23, & 205, 24, & 230, 8, & 239, 23, & 263, 8, & 272, 31, & 304, 35, & 340, 16, & 357, 36, & 394, 34, & 429, 37, & 467, 33, & 501, 34, & 536, 35, & 572, 35, & 608, 34, & 643, 8, & 652, 8, & 0, 0, & 661, 23, & 0, 0, & 685, 29, & 715, 34, & 750, 54, & 805, 42, & 848, 37, & 886, 42, & 929, 41, & 971, 42, & 1014, 40, & 1055, 45, & 1101, 16, & 1118, 34, & 1153, 42, & 1196, 41, & 1238, 48, & 1287, 43, & 1331, 43, & 1375, 40, & 1416, 43, & 1460, 42, & 1503, 37, & 1541, 42, & 1584, 46, & 1631, 45, & 1677, 61, & 1739, 45, & 1785, 46, & 1832, 41, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 1874, 29, & 1904, 30, & 1935, 26, & 1962, 30, & 1993, 29, & 2023, 21, & 2045, 30, & 2076, 31, & 2108, 11, & 2120, 20, & 2141, 31, & 2173, 11, & 2185, 39, & 2225, 31, & 2257, 30, & 2288, 31, & 2320, 30, & 2351, 28, & 2380, 27, & 2408, 19, & 2428, 31, & 2460, 31, & 2492, 41, & 2534, 31, & 2566, 31, & 2598, 29, & 0, 0, & 0, 0, & 0, 0, & 0, 0, & 0, 0 BOT_CODE: CLOSE #1%, #2% END