home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / TURBOPAS / PASUTIL1.ZIP / TABSET2.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1985-12-28  |  2.9 KB  |  115 lines

  1. {$TITLE:'Epson MX-100 TabSet Procedure',$PAGESIZE:57,$LINESIZE:132,$LINE+}
  2.  
  3. {This program is another version of the preceding program; this version
  4.  shows how the same functions can be done by accessing the printer as
  5.  as a binary file with PUTs.}
  6.  
  7. PROGRAM TabTest (Input,Output);
  8.  
  9. VAR
  10.   I, Col, Count: INTEGER;
  11.   Flag: BOOLEAN;
  12.   Answer: CHAR;
  13.   Tabs: ARRAY[1..132] OF BOOLEAN;
  14.   Printer: FILE OF CHAR;
  15.  
  16. PROCEDURE TabSet (TabCol: INTEGER; VerifyFlag: BOOLEAN);
  17.  
  18. CONST
  19.   Escape = CHR(27);
  20.   CarRet = CHR(13);
  21.   LineFeed = CHR(10);
  22.   HorTab = CHR(9);
  23.   NullChar = CHR(0);
  24.      
  25. BEGIN
  26.  
  27.   IF TabCol < 0 THEN
  28.     BEGIN
  29.       Count:= 0;
  30.       FOR I:= 1 TO 132 DO
  31.         Tabs[I]:= FALSE
  32.     END
  33.   
  34.   ELSE IF (TabCol >= 1) AND (TabCol <= 132) AND (Count < 12) THEN
  35.     BEGIN
  36.       Count:= Count+1;
  37.       Tabs[TabCol]:= TRUE
  38.     END
  39.  
  40.   ELSE IF TabCol = 0 THEN
  41.     BEGIN
  42.       ASSIGN (Printer,'LPT1:'); { Open print file }
  43.       Printer.Mode:= TERMINAL;
  44.       REWRITE (Printer);
  45.       Printer^:= Escape; { Send Escape D }
  46.       PUT (Printer);
  47.       Printer^:= 'D';
  48.       PUT (Printer);
  49.       FOR I:= 2 TO 132 DO { Send column numbers for tab settings }
  50.         IF Tabs[I] THEN
  51.           BEGIN
  52.             Printer^:= CHR(I-1);
  53.             PUT (Printer)
  54.           END;
  55.       Printer^:= NullChar; { Send null to terminate sequence }
  56.       PUT (Printer);
  57.             
  58.       IF VerifyFlag = TRUE THEN
  59.         BEGIN
  60.           Printer^:= '-';
  61.           PUT (Printer);
  62.           FOR I:=2 TO 132 DO
  63.             BEGIN
  64.               IF Tabs[I] THEN 
  65.                 Printer^:= '+'
  66.               ELSE
  67.                 Printer^:= '-';
  68.               PUT (Printer)
  69.             END;
  70.           Printer^:= CarRet;
  71.           PUT (Printer);
  72.           Printer^:= LineFeed;
  73.           PUT (Printer);
  74.           FOR I:= 1 TO Count DO
  75.             BEGIN
  76.               Printer^:= HorTab;
  77.               PUT (Printer);
  78.               Printer^:= '+';
  79.               PUT (Printer)
  80.             END;
  81.           Printer^:= CarRet;
  82.           PUT (Printer);
  83.           Printer^:= LineFeed;
  84.           PUT (Printer)
  85.         END;
  86.       CLOSE (Printer)
  87.     END;
  88. END;
  89.   
  90. BEGIN
  91.   WRITE ('Will You Want To Display Tab Settings (Y/N)? ');
  92.   READLN (Answer);
  93.   IF (Answer='Y') OR (Answer='y') THEN
  94.     BEGIN
  95.       Flag:= TRUE;
  96.       WRITELN ('Tab Settings Will Be Displayed . . .')
  97.     END
  98.   ELSE
  99.     BEGIN
  100.       Flag:= FALSE;
  101.       WRITELN ('Tab Settings Will Not Be Displayed . . .')
  102.     END;
  103.   TabSet (-1,Flag);
  104.   WRITELN;
  105.   WRITELN ('Enter Up To Ten Tabs, Each On A Separate Line.');
  106.   WRITELN ('Enter A "0" To Stop Column Prompts . . .');
  107.   WRITELN;
  108.   REPEAT
  109.     READLN (Col);
  110.     TabSet (Col,Flag);
  111.     IF Col <>0
  112.       THEN WRITELN ('A Tab Will Be Set in Column ', Col:1)
  113.       ELSE WRITELN ('Tab Setting Completed.')
  114.   UNTIL Col=0
  115. END.