Microsoft KB Archive/37885

From BetaArchive Wiki

How to Send Two-Character Printer Control Codes in Version 1.x

PSS ID Number: Q37885 Article last modified on 02-13-1991

1.07 1.10 1.12 MS-DOS

Summary: The program below shows how to send two-character printer control codes to the printer from programs compiled in Microsoft COBOL Versions 1.x. Please refer to your printer manual for a listing of the control codes for your printer.

More Information: The value sent to the printer must be the decimal equivalent of the concatenated hexadecimal number representing the sequence of control codes. ESC+E is the standard Epson printer control code to turn on boldface type. In hexadecimal representation, ESC is 1B hex, and the letter E is 45 hex. When you concatenate these hexadecimal codes, you get 1B45 hex. 1B45 hex is equal to a decimal value of 6981. When using two-character control codes, you should assign this decimal value (6981) to a COMP-0 variable (an integer of two bytes) in the WORKING-STORAGE SECTION. A COMP-4 variable should be used for three-character control codes, because the three-character control sequence requires an integer of 4 bytes. The example below, plus examples for later versions, are included in an application note entitled “Cobol 1.x-4.00 Printer Control Codes,” which can be obtained from Microsoft Product Support Services. The following is a code example:

   identification division.
   program-id.    print.
  *
  * COBOL VERSION 1.X: sending two-character control codes
  *                    to the printer
   environment division.
   configuration section.
   special-names.
      printer is printer-device.
   input-output section.
   file-control.
      select print-file assign to printer.
  *
   data division.
   file section.
   fd  print-file
       label records omitted
       linage is 56 lines.
   01  print-rec pic x(80).
  *
   working-storage section.
  * Epson printer reset = ESC+@ = hex 1B40 = 6976 decimal 
   01 reset-code    pic 9(4)   value 6976 comp-0.
  * Epson printer boldface on = ESC+E = 1B45 hex = 6981 decimal 
   01 twochr-code   pic 9(4)   value 6981 comp-0.
  *  
   procedure division.
   s000-mainline.  
       open output print-file.
       display ' program "print" now beginning'
            upon printer-device.
       display ' ' upon printer-device.
       display reset-code upon printer-device.
  * Turn boldface on by sending ESC+E (1B45 hex) to Epson printer:
       display print-code upon printer-device.
       move "this is line 1" to print-rec.
       write print-rec.
       move "this is line 2" to print-rec.
       write print-rec.
       move "this is line 3" to print-rec.
       write print-rec.
       move "this is line 4" to print-rec.
       write print-rec.
       move "this is line 5" to print-rec.
       write print-rec.
  *
  * Reset printer, thus turning boldface off, by
  * sending ESC+F (1B46 hex) to Epson printer:
       display reset-code upon printer-device.
  *
       move "this is line 6" to print-rec.
       write print-rec.
       close print-file.
       stop run.

Copyright Microsoft Corporation 1991.