COBOL Print & Display
Remove Non-Print Characters
  Table of Contents  v-24.01.01 - cblprt01.htm 
  Introduction
  Programming Objectives
  Programming Input and Output
  Programming Requirements
  Programming Overview
  The CMD File
  The JCL Member
  The COBOL Program
  The COBOL Copy Files
  Table of Binary Values
  Tables of Printable Characters
  ASCII Characters (based on USA)
  ASCII Characters with Alternate Codes
  EBCDIC Characters (based on USA)
  EBCDIC Characters with Alternate Codes
  Summary
  Software Agreement and Disclaimer
  Downloads and Links
  Current Server or Internet Access
  Internet Access Required
  Glossary of Terms
  Contact or Feedback
  Company Overview
The SimoTime Home Page 

Table of Contents Previous Section Next Section Introduction

A data string that is going to be printed or displayed on a display device should not contain binary data (i.e. non-display or non-printable characters). The binary characters may be the same value as a print or display control character that could result in the incorrect presentation of the data. This suite of programs provides an example of how a COBOL program may be used to define a binary table and then display data strings that have embedded binary (or non-display and non-print) values by removing the binary characters. This is accomplished by replacing the binary characters with space characters.

The sample programs will attempt to display the data strings with the binary values and then use a routine that replaces non-display or non-print values with spaces prior to displaying or printing. The intent of this example is to show how binary values may conflict with control or formatting characters for display devices or printers. The results may be slightly different depending on the display device or printer used when running this example.

The COBOL program is written using the IBM COBOL for OS/390 dialect and will also work with IBM Enterprise COBOL. A JCL member is provided to run the job as an MVS batch job on an IBM mainframe or as a project with Micro Focus Mainframe Express (MFE) running on a PC with Windows. A batch or command file is provided to run the job as a Windows batch job on a Wintel platform using Micro Focus Net Express.


We have made a significant effort to ensure the documents and software technologies are correct and accurate. We reserve the right to make changes without notice at any time. The function delivered in this version is based upon the enhancement requests from a specific group of users. The intent is to provide changes as the need arises and in a timeframe that is dependent upon the availability of resources.

Copyright © 1987-2024
SimoTime Technologies and Services
All Rights Reserved

Table of Contents Previous Section Next Section Programming Objectives

This example illustrates the following functions.

1 Demonstrate how to define a table containing the 256, single-byte binary values from x'00' to x'FF' using COBOL.
2 Demonstrate how to access each element in the table or byte within a field or data string.
3 Demonstrate how to use the tables to replace non-display or non-print characters in a data string with spaces prior to displaying or printing the data string.
  Managing the Print and non-Print Characters in a Data String

Table of Contents Previous Section Next Section Programming Input and Output

The following shows the input and output for the program. The x'nn' represents a single byte for the actual binary value.

TEST-01-ROUTINE is Starting...
Test-000,x'00',End-of-Text-String...
Test-001,x'01',End-of-Text-String...
Test-002,x'02',End-of-Text-String...
Test-003,x'03',End-of-Text-String...
Test-004,x'04',End-of-Text-String...
Test-005,x'05'   ,End-of-Text-String...
Test-006,x'06',End-of-Text-String...
Test-007,x'07',End-of-Text-String...
Test-008,x'08',End-of-Text-String...
Test-009,x'09',End-of-Text-String...
Test-010,x'0A'
,End-of-Text-String...
Test-011,x'0B',End-of-Text-String...
Test-012,x'0C',End-of-Text-String...
Test-013,x'0D',End-of-Text-String...
Test-014,x'0E',End-of-Text-String...
Test-015,x'0F',End-of-Text-String...
Test-016,x'10',End-of-Text-String...
TEST-01-ROUTINE is Finished...
TEST-02-ROUTINE is Starting...
Test-000, ,End-of-Text-String...
Test-001, ,End-of-Text-String...
Test-002, ,End-of-Text-String...
Test-003, ,End-of-Text-String...
Test-004, ,End-of-Text-String...
Test-005, ,End-of-Text-String...
Test-006, ,End-of-Text-String...
Test-007, ,End-of-Text-String...
Test-008, ,End-of-Text-String...
Test-009, ,End-of-Text-String...
Test-010, ,End-of-Text-String...
Test-011, ,End-of-Text-String...
Test-012, ,End-of-Text-String...
Test-013, ,End-of-Text-String...
Test-014, ,End-of-Text-String...
Test-015, ,End-of-Text-String...
Test-016, ,End-of-Text-String...
TEST-02-ROUTINE is Finished...
TEST-03-ROUTINE is Starting...
Next two lines should be identical...
Test-0D0A
End-of-Text-String
Test-0D0A   End-of-Text-String
TEST-03-ROUTINE is Finished...

Table of Contents Previous Section Next Section Programming Requirements

This suite of samples programs will run on the following platforms.

1 Executes on Windows/NT and Windows/XP using Micro Focus Net Express and the CMD file provided.
2 May be ported to run on the UNIX platforms supported by Micro Focus COBOL.
3 Executes on an IBM Mainframe with ZOS or a Linux, UNIX or Windows System with Micro Focus Enterprise Server or Studio.
  Operating Systems and Supporting Software

Table of Contents Previous Section Next Section Programming Overview

This program will create a text string with non-display binary data mixed with display data and then attempt to display (refer to TEST-01-ROUTINE). The same test is then performed (refer to TEST-02-ROUTINE) but the message display routine will scan the display buffer to remove any non-display values from the text string. A third test (refer to TEST-03-ROUTINE) will insert a x'0D0A' into the text string and attempt to display the string with the binary (or non-display) values. Also, the third test will display the string using the display routine that replaces non-display values with spaces.

The COBOL program will first do a perform loop 17 times and create text strings that will contain a binary value from x'00' to x'10'. During each iteration of the programming loop a routine will be called that will attempt to display the text strings with the included binary values.

Next, the COBOL program will do a perform loop 17 times and create text strings that will contain a binary value from x'00' to x'10'. During each iteration of the programming loop a routine will be called that will replace the binary values with space characters before displaying the text strings.

             
Entry Point
ZOS
Entry Point
Windows
   
   
CBLPRTJ1
jcl
CBLPRTE1
cmd
The JCL or CMD member for running the application.
   
   
IEFBR14
Utility
IF Exist
statement
Delete previously created output files
   
   
 
 
   
   
 
 
   
   
CBLPRTC1
cbl
 
 
SYSMEMO1
rseq
Display the Text Strings, refer to Note-1.
   
EOJ
End-Of-Job
 
Note-1: Attempt to display text strings with embedded binary values and then display same text strings with binary values replaced by space characters. Also, write the text strings to a file.
Overview of the Edit Functions for a Print or Display Text String

Color Associations: The  light-green  boxes are unique to SIMOTIME Technologies using an IBM Mainframe System or Micro Focus Enterprise Developer. The  light-red  boxes are unique to the SIMOTIME Technologies using a Linux, UNIX or Windows System and COBOL Technologies such as Micro Focus. The  light-yellow  boxes are SIMOTIME Technologies, Third-party Technologies, decision points or program transitions in the processing logic or program generations. The  light-blue  boxes identify the input/output data structures such as Documents, Spreadsheets, Data Files, VSAM Data Sets, Partitioned Data Set Members (PDSM's) or Relational Tables. The  light-gray  boxes identify a system function or an informational item.

Table of Contents Previous Section Next Section The CMD File

The following is the Windows CMD (CBLPRTE1.cmd) required to run the sample COBOL program. This is a two step job. The first step (identified by the :DELETEQSAM statement) will delete the file that was created from a previous run of this job. The second step (identified by the :CREATEQSAM statement) will execute the sample program.

@echo OFF
rem  * *******************************************************************
rem  *               CBLPRTE1.cmd - a Windows Command File               *
rem  *         This program is provided by SimoTime Technologies         *
rem  *           (C) Copyright 1987-2019 All Rights Reserved             *
rem  *             Web Site URL:   http://www.simotime.com               *
rem  *                   e-mail:   helpdesk@simotime.com                 *
rem  * *******************************************************************
rem  *
rem  * Text   - Create a Record Sequential File of 80-byte records.
rem  * Author - SimoTime Technologies
rem  * Date   - January 24, 1996
rem  *
rem  * The first job step (DeleteQSAM) will delete any previously created
rem  * file.
rem  *
rem  * The second job step (CreateQSAM) will create a new file of 80-byte
rem  * records.
rem  * For this program to work the COBOL program must be compiled with
rem  * the ASSIGN(EXTERNAL) and SEQUENTIAL(LINE) directives under
rem  * Net Express.
rem  *
rem  * This set of programs will run on a Linux. UNIX or Windows system
rem  * with Micro Focus technology.
rem  *
rem  * ********************************************************************
rem  * Step   1 of 2  Set the global environment variables,
rem  *                Delete any previously created file...
rem  *
     set CmdName=CBLPRTE1
     call ..\ENV1BASE
rem  *
     call SimoNOTE "*******************************************************%CmdName%"
     call SimoNOTE "Starting JobName %CmdName%, User is %USERNAME%"
     call SimoNOTE "Identify JobStep DeleteQSAM"
:DeleteQSAM
     set SYSMEMO1=%BaseLib1%\DATA\WRK1\SYSMEMO1.DAT
     if exist %SYSMEMO1% erase %SYSMEMO1%
rem  *
rem  * *******************************************************************
rem  * Step   2 of 2  Create and populate a new QSAM file...
rem  *
:CreateQSAM
     call SimoNOTE "Identify JobStep CreateQSAM"
     run CBLPRTC1
     echo ERRORLEVEL is %ERRORLEVEL%
     if not "%ERRORLEVEL%" == "0" set JobStatus=0010
     if not "%JobStatus%" == "0000" goto :EojNOK
rem  *
     if exist %SYSMEMO1% goto :EojAok
     set JobStatus=0020
     goto :EojNok
:EojAok
     call SimoNOTE "DATAMAKE %SYSMEMO1%"
     call SimoNOTE "SYSOUT.. %SYSOUT%"
     call SimoNOTE "Finished JobName %CmdName%, Job Status is %JobStatus%"
     goto :End
:EojNok
     call SimoNOTE "ABENDING JobName %CmdName%, Job Status is %JobStatus%"
:End
     call SimoNOTE "Conclude SysLog is %SYSLOG%"
     if not "%1" == "nopause" pause

Table of Contents Previous Section Next Section The JCL Member

The following is the mainframe JCL (CBLPRTJ1.jcl) required to run the sample COBOL program. This is a two step job. The first step (identified by the //BLOWAWAY statement) will delete the file that was created from a previous run of this job. The second step (identified by the //SHOWTEXT statement) will execute the sample program.

The JOB and DD statements may need to be modified for different mainframe environments.

//CBLPRTJ1 JOB SIMOTIME,CLASS=1,MSGCLASS=0,NOTIFY=CSIP1
//* *******************************************************************
//*       CBLPRTJ1.JCL - a JCL Member for Batch Job Processing        *
//*       This JCL Member is provided by SimoTime Technologies        *
//*           (C) Copyright 1987-2019 All Rights Reserved             *
//*             Web Site URL:   http://www.simotime.com               *
//*                   e-mail:   helpdesk@simotime.com                 *
//* *******************************************************************
//*
//* Text   - Replace non-display, non-print characters with a SPACE.
//* Author - SimoTime Technologies
//* Date   - January 24, 1996
//*
//* The job will attempt to display a text string with non-display
//* characters embedded in the string. The program will then attempt
//* to display the text string after scanning and replacing the
//* non-display characters with spaces.
//*
//* This set of programs will run on a mainframe under MVS or on a
//* Personal Computer with Windows and Micro Focus Mainframe Express.
//*
//*                     ************
//*                     * CBLPRTJ1 *
//*                     ********jcl*
//*                          *
//*                     ************
//*                     * IEFBR14  *
//*                     ********utl*
//*                          *
//*                     ************     ************
//*                     * CBLPRTC1 *-----* SYSMEMO1 *
//*                     ********cbl*     ********dat*
//*                          *
//*                          *
//*                     ************
//*                     *   EOJ    *
//*                     ************
//*
//* *******************************************************************
//* Step 1 of 2, Delete any previously created file...
//*
//BLOWAWAY EXEC PGM=IEFBR14
//DD1      DD  DSN=SIMOTIME.DATA.SYSMEMO1,DISP=(MOD,DELETE,DELETE),
//             STORCLAS=MFI,
//             SPACE=(TRK,5),
//             DCB=(RECFM=FB,LRECL=80,DSORG=PS)
//*
//* *******************************************************************
//* Step 2 of 2, Edit input, create a new output file...
//*
//SHOWTEXT EXEC PGM=CBLPRTC1
//STEPLIB  DD  DSN=SIMOTIME.DEMO.LOADLIB1,DISP=SHR
//SYSMEMO1 DD  DSN=SIMOTIME.DATA.SYSMEMO1,
//             DISP=(NEW,CATLG,DELETE),
//             STORCLAS=MFI,
//             SPACE=(TRK,5),
//             DCB=(RECFM=FB,LRECL=80,DSORG=PS)
//SYSOUT   DD  SYSOUT=*
//

Table of Contents Previous Section Next Section The COBOL Program

The following is the source code (CBLPRTC1.cbl) for the sample COBOL program.

       IDENTIFICATION DIVISION.
       PROGRAM-ID.    CBLPRTC1.
       AUTHOR.        SIMOTIME TECHNOLOGIES.
      *****************************************************************
      * Copyright (C) 1987-2019 SimoTime Technologies.                *
      *                                                               *
      * All rights reserved.  Unpublished, all rights reserved under  *
      * copyright law and international treaty.  Use of a copyright   *
      * notice is precautionary only and does not imply publication   *
      * or disclosure.                                                *
      *                                                               *
      * Permission to use, copy, modify and distribute this software  *
      * for any non-commercial purpose and without fee is hereby      *
      * granted, provided the SimoTime copyright notice appear on all *
      * copies of the software. The SimoTime name or Logo may not be  *
      * used in any advertising or publicity pertaining to the use    *
      * of the software without the written permission of SimoTime    *
      * Technologies.                                                 *
      *                                                               *
      * Permission to use, copy, modify and distribute this software  *
      * for any commercial purpose requires a fee to be paid to       *
      * SimoTime Technologies. Once the fee is received by SimoTime   *
      * the latest version of the software will be delivered and a    *
      * license will be granted for use within an enterprise,         *
      * provided the SimoTime copyright notice appear on all copies   *
      * of the software. The SimoTime name or Logo may not be used    *
      * in any advertising or publicity pertaining to the use of the  *
      * software without the written permission of SimoTime           *
      * Technologies.                                                 *
      *                                                               *
      * SimoTime Technologies makes no warranty or representations    *
      * about the suitability of the software for any purpose. It is  *
      * provided "AS IS" without any expressed or implied warranty,   *
      * including the implied warranties of merchantability, fitness  *
      * for a particular purpose and non-infringement. SimoTime       *
      * Technologies shall not be liable for any direct, indirect,    *
      * special or consequential damages resulting from the loss of   *
      * use, data or projects, whether in an action of contract or    *
      * tort, arising out of or in connection with the use or         *
      * performance of this software                                  *
      *                                                               *
      * SimoTime Technologies                                         *
      * 15 Carnoustie Drive                                           *
      * Novato, CA 94949-5849                                         *
      * 415.883.6565                                                  *
      *                                                               *
      * RESTRICTED RIGHTS LEGEND                                      *
      * Use, duplication, or disclosure by the Government is subject  *
      * to restrictions as set forth in subparagraph (c)(1)(ii) of    *
      * the Rights in Technical Data and Computer Software clause at  *
      * DFARS 52.227-7013 or subparagraphs (c)(1) and (2) of          *
      * Commercial  Computer Software - Restricted Rights  at 48      *
      * CFR 52.227-19, as applicable.  Contact SimoTime Technologies, *
      * 15 Carnoustie Drive, Novato, CA 94949-5849.                   *
      *                                                               *
      *****************************************************************
      *      This program is provided by SimoTime Technologies        *
      *        Our e-mail address is: helpdesk@simotime.com           *
      *     Also, visit our Web Site at http://www.simotime.com       *
      *                                                               *
      *****************************************************************
      *
      *****************************************************************
      * Source Member: CBLPRTC1.CBL
      * Copy Files:    BIN256B1.CPY
      *                PRTASCB1.CPY
      *                PRTASCB2.CPY
      *                PRTEBCB1.CPY
      *                PRTEBCB2.CPY
      *****************************************************************
      *
      * CBLPRTC1 - Show what happens when binary data is in a display
      *            message.
      *
      * CALLING PROTOCOL
      * ----------------
      * Use standard procedure to RUN or ANIMATE.
      *
      * DESCRIPTION
      * -----------
      * This program will create a text string with non-display binary
      * data and then attempt to display (refer to TEST-01-ROUTINE).
      * The same test is performed (refer to TEST-02-ROUTINE) with but
      * the message display routine will scan the display buffer to
      * remove any non-display values from the text string.
      *
      *          ************
      *          * CBLPRTJ1 *
      *          ********jcl*
      *               *
      *               *
      *          ************     ************
      *          * CBLPRTC1 *-----* CONSOLE  *
      *          ********cbl*  *  ******dsply*
      *               *        *
      *               *        *
      *               *        *  ************
      *               *        *--* SYSMEMO1 *
      *               *           ********txt*
      *          ************
      *          *   EOJ    *
      *          ************
      *
      *****************************************************************
      *
      * MAINTENANCE
      * -----------
      * 1989/02/27 Simmons, Created program.
      * 1997/03/17 Simmons, No changes to date....
      *
      *****************************************************************
      *
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT SYSMEMO1-FILE  ASSIGN to     SYSMEMO1
                  ORGANIZATION is SEQUENTIAL
                  ACCESS MODE  is SEQUENTIAL
                  FILE STATUS  is SYSMEMO1-STATUS.

      *****************************************************************
       DATA DIVISION.
       FILE SECTION.
       FD  SYSMEMO1-FILE
           DATA RECORD    is SYSMEMO1-RECORD
           .
       01  SYSMEMO1-RECORD.
           05  SYSMEMO1-DATA-01  pic X(00080).

       WORKING-STORAGE SECTION.
      *****************************************************************
      *    Data-structure for Title and Copyright...
      *    ------------------------------------------------------------
       01  SIM-TITLE.
           05  T1 pic X(11) value '* CBLPRTC1 '.
           05  T2 pic X(34) value 'Sample Print with Embedded Hex... '.
           05  T3 pic X(10) value ' v05.11.09'.
           05  T4 pic X(24) value ' http://www.simotime.com'.
       01  SIM-COPYRIGHT.
           05  C1 pic X(11) value '* CBLPRTC1 '.
           05  C2 pic X(20) value 'Copyright 1987-2019 '.
           05  C3 pic X(28) value '   SimoTime Technologies    '.
           05  C4 pic X(20) value ' All Rights Reserved'.

       01  SIM-THANKS-01.
           05  C1 pic X(11) value '* CBLPRTC1 '.
           05  C2 pic X(32) value 'Thank you for using this program'.
           05  C3 pic X(32) value ' provided from SimoTime Technolo'.
           05  C4 pic X(04) value 'gies'.

       01  SIM-THANKS-02.
           05  C1 pic X(11) value '* CBLPRTC1 '.
           05  C2 pic X(32) value 'Please send all inquires or sugg'.
           05  C3 pic X(32) value 'estions to the helpdesk@simotime'.
           05  C4 pic X(04) value '.com'.

      *****************************************************************
      *    Buffer used for posting messages to the console.
      *    ------------------------------------------------------------
       01  MESSAGE-BUFFER.
           05  MESSAGE-HEADER      pic X(11)   value '* CBLPRTC1 '.
           05  MESSAGE-TEXT.
               10  MESSAGE-TEXT-1  pic X(68)   value SPACES.
               10  MESSAGE-TEXT-2  pic X(188)  value SPACES.

       01  SYSMEMO1-STATUS.
           05  SYSMEMO1-STATUS-L   pic X.
           05  SYSMEMO1-STATUS-R   pic X.
       01  SYSMEMO1-EOF            pic X       value 'N'.
       01  SYSMEMO1-OPEN-FLAG      pic X       value 'C'.

       01  IO-STATUS.
           05  IO-STAT1            pic X.
           05  IO-STAT2            pic X.
       01  TWO-BYTES.
           05  TWO-BYTES-LEFT      pic X.
           05  TWO-BYTES-RIGHT     pic X.
       01  TWO-BYTES-BINARY        redefines TWO-BYTES pic 9(4) comp.

       01  APPL-RESULT             pic S9(9)   comp.
           88  APPL-AOK            value 0.
           88  APPL-EOF            value 16.

      *****************************************************************
      *    Work fields used for testing Print or Display.
      *    ------------------------------------------------------------
       01  TEST-BUFFER.
           05  FILLER      pic X(5)  value 'Test-'.
           05  TEST-CTR    pic 9(3)  value 0.
           05  FILLER      pic X     value ','.
           05  TEST-HEX    pic X     value SPACE.
           05  FILLER      pic X     value ','.
           05  FILLER      pic X(21) value 'End-of-Text-String...'.

       01  A-ASCII         pic X     value x'41'.
       01  A-EBCDIC        pic X     value x'C1'.
       01  A-COMPILE       pic X     value 'A'.

       01  IX-1            pic 9(3)  value 0.
       01  IX-2            pic 9(3)  value 0.

       01  DISPLAY-LINE.
           05  DISPLAY-VALUE   pic X(16)    value SPACES.
           05  DISPLAY-TEXT    pic X(20)    value SPACES.
       01  MESSAGE-ITEMS.
           05  FILLER pic X(20)    value ' * hex-00 to hex-0F '.
           05  FILLER pic X(20)    value ' * hex-10 to hex-1F '.
           05  FILLER pic X(20)    value ' * hex-20 to hex-2F '.
           05  FILLER pic X(20)    value ' * hex-30 to hex-3F '.
           05  FILLER pic X(20)    value ' * hex-40 to hex-4F '.
           05  FILLER pic X(20)    value ' * hex-50 to hex-5F '.
           05  FILLER pic X(20)    value ' * hex-60 to hex-6F '.
           05  FILLER pic X(20)    value ' * hex-70 to hex-7F '.
           05  FILLER pic X(20)    value ' * hex-80 to hex-8F '.
           05  FILLER pic X(20)    value ' * hex-90 to hex-9F '.
           05  FILLER pic X(20)    value ' * hex-A0 to hex-AF '.
           05  FILLER pic X(20)    value ' * hex-B0 to hex-BF '.
           05  FILLER pic X(20)    value ' * hex-C0 to hex-CF '.
           05  FILLER pic X(20)    value ' * hex-D0 to hex-DF '.
           05  FILLER pic X(20)    value ' * hex-E0 to hex-EF '.
           05  FILLER pic X(20)    value ' * hex-F0 to hex-FF '.
       01  MESSAGE-TABLE           redefines MESSAGE-ITEMS.
           05  MESSAGE-ELEMENT     pic X(20)   occurs 16 times.

       COPY BIN256B1.

       COPY PRTASCB1.
       COPY PRTEBCB1.
       COPY PRTASCB2.
       COPY PRTEBCB2.

      *****************************************************************
       PROCEDURE DIVISION.

           perform Z-POST-COPYRIGHT

           perform SYSMEMO1-OPEN

           perform TEST-01-ROUTINE

           perform TEST-02-ROUTINE

           perform TEST-03-ROUTINE

           perform TEST-04-ROUTINE

           perform TEST-05-ROUTINE

           perform TEST-06-ROUTINE

           perform TEST-07-ROUTINE

           perform SYSMEMO1-CLOSE

           perform Z-THANK-YOU.

           GOBACK.

      *****************************************************************
       PUT-APPL-MESSAGE.
           move MESSAGE-TEXT to SYSMEMO1-DATA-01
           perform Z-DISPLAY-CONSOLE-MESSAGE
           perform SYSMEMO1-WRITE
           exit.

      *****************************************************************
       PUT-APPL-MESSAGE-WITH-EDIT.
      *    The following inspect will replace any non-display text
      *    bytes with a space. The following evaluate will determine
      *    if the program has been compiled for an ASCII or EBCDIC
      *    environment and then replace the appropriate non-display
      *    characters with the appropriate space character.
           evaluate A-COMPILE
             when A-ASCII  inspect MESSAGE-TEXT
                           converting B-INFO to P1-ASC
             when A-EBCDIC inspect MESSAGE-TEXT
                           converting B-INFO to P1-EBC
           end-evaluate
           move MESSAGE-TEXT to SYSMEMO1-DATA-01
           perform Z-DISPLAY-CONSOLE-MESSAGE
           perform SYSMEMO1-WRITE
           exit.

      *****************************************************************
       PUT-APPL-MESSAGE-WITH-EDIT-2.
      *    The following inspect will replace any non-display text
      *    bytes with a space. The following evaluate will determine
      *    if the program has been compiled for an ASCII or EBCDIC
      *    environment and then replace the appropriate non-display
      *    characters with the appropriate space character.
           evaluate A-COMPILE
             when A-ASCII  inspect MESSAGE-TEXT
                           converting B-INFO to P2-ASC
             when A-EBCDIC inspect MESSAGE-TEXT
                           converting B-INFO to P2-EBC
           end-evaluate
           move MESSAGE-TEXT to SYSMEMO1-DATA-01
           perform Z-DISPLAY-CONSOLE-MESSAGE
           perform SYSMEMO1-WRITE
           exit.

      *****************************************************************
       TEST-01-ROUTINE.
           move 'TEST-01-ROUTINE is Starting...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT

           move ZERO  to TEST-CTR
           move SPACE to TEST-HEX

           move TEST-BUFFER to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT

           perform varying TEST-CTR from 0 by 1
           until TEST-CTR > 16
      *      Force a binary value into the text string to be displayed.
      *      As TEST-CTR is incremented a non-display value of x'00'
      *      through x'0F' is placed in the message to be displayed.
             move B-INFO(TEST-CTR + 1:1) to TEST-HEX
             move TEST-BUFFER to MESSAGE-TEXT
      *      The following perform will attempt to display the text
      *      string without testing and changing the embedded
      *      non-display, non-print characters.
             perform PUT-APPL-MESSAGE
           end-perform

           move 'TEST-01-ROUTINE is Finished...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT

           exit.

      *****************************************************************
       TEST-02-ROUTINE.
           move 'TEST-02-ROUTINE is Starting...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT

           move ZERO to TEST-CTR
           move SPACE to TEST-HEX

           move TEST-BUFFER to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT

           perform varying TEST-CTR from 0 by 1
           until TEST-CTR > 16
      *      Force a binary value into the text string to be displayed
             move B-INFO(TEST-CTR + 1:1) to TEST-HEX
             move TEST-BUFFER to MESSAGE-TEXT
      *      The following perform will attempt to display the text
      *      string after testing and changing the embedded
      *      non-display, non-print characters to a space character.
             perform PUT-APPL-MESSAGE-WITH-EDIT
           end-perform

           move 'TEST-02-ROUTINE is Finished...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT

           exit.

      *****************************************************************
       TEST-03-ROUTINE.
           move 'TEST-03-ROUTINE is Starting...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT

           move 'Next two lines should be identical...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT

           move 'Test-0D0A '  to MESSAGE-TEXT(1:10)
           move x'0D0A'       to MESSAGE-TEXT(11:2)
           move 'End-of-Text-String' to MESSAGE-TEXT(13:18)
      *      The following perform will attempt to display the text
      *      string without testing and changing the embedded
      *      carriage-return, line feed characters.
           perform PUT-APPL-MESSAGE

           move 'Test-0D0A '  to MESSAGE-TEXT(1:10)
           move x'0D0A'       to MESSAGE-TEXT(11:2)
           move 'End-of-Text-String' to MESSAGE-TEXT(13:18)
           perform PUT-APPL-MESSAGE-WITH-EDIT

           move 'TEST-03-ROUTINE is Finished...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT

           exit.

      *****************************************************************
       TEST-04-ROUTINE.
           move 'TEST-04-ROUTINE is Starting...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE
           perform varying IX-1 from 1 by 16 until IX-1 > 256
             move B-INFO(IX-1:16) to MESSAGE-TEXT(13:18)
      *      The following perform will attempt to display the text
      *      string without testing and changing the embedded
      *      carriage-return, line feed characters.
             perform PUT-APPL-MESSAGE
           end-perform
           move 'TEST-04-ROUTINE is Finished...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT
           exit.

      *****************************************************************
       TEST-05-ROUTINE.
           move 'TEST-05-ROUTINE is Starting...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE
           add 3 to ZERO giving IX-2
           perform varying IX-1 from 33 by 16 until IX-1 > 256
             move B-INFO(IX-1:16) to DISPLAY-VALUE
             move MESSAGE-ELEMENT(IX-2)to DISPLAY-TEXT
             move DISPLAY-LINE to MESSAGE-TEXT
      *      The following perform will attempt to display the text
      *      string without testing and changing the embedded
      *      carriage-return, line feed characters.
             perform PUT-APPL-MESSAGE
             add 1 to IX-2
           end-perform
           move 'TEST-05-ROUTINE is Finished...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT
           exit.

      *****************************************************************
       TEST-06-ROUTINE.
           move 'TEST-06-ROUTINE is Starting...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE
           add 1 to ZERO giving IX-2
           perform varying IX-1 from 1 by 16 until IX-1 > 256
             move B-INFO(IX-1:16) to DISPLAY-VALUE
             move MESSAGE-ELEMENT(IX-2)to DISPLAY-TEXT
             move DISPLAY-LINE to MESSAGE-TEXT
      *      The following perform will attempt to display the text
      *      string with testing and changing the embedded non-display
      *      characters using the USA table.
             perform PUT-APPL-MESSAGE-WITH-EDIT
             add 1 to IX-2
           end-perform
           move 'TEST-06-ROUTINE is Finished...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE-WITH-EDIT
           exit.

      *****************************************************************
       TEST-07-ROUTINE.
           move 'TEST-07-ROUTINE is Starting...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE
           add 1 to ZERO giving IX-2
           perform varying IX-1 from 1 by 16 until IX-1 > 256
             move B-INFO(IX-1:16) to DISPLAY-VALUE
             move MESSAGE-ELEMENT(IX-2)to DISPLAY-TEXT
             move DISPLAY-LINE to MESSAGE-TEXT
      *      The following perform will attempt to display the text
      *      string with testing and changing the embedded non-display
      *      characters using the extended table.
             perform PUT-APPL-MESSAGE-WITH-EDIT-2
             add 1 to IX-2
           end-perform
           move 'TEST-07-ROUTINE is Finished...' to MESSAGE-TEXT
           perform PUT-APPL-MESSAGE
           exit.

      *****************************************************************
      * I/O ROUTINES FOR SYSMEMO1...                                  *
      *****************************************************************
       SYSMEMO1-WRITE.
           if  SYSMEMO1-OPEN-FLAG = 'C'
               perform SYSMEMO1-OPEN
           end-if
           write SYSMEMO1-RECORD
           if  SYSMEMO1-STATUS = '00'
               subtract APPL-RESULT from APPL-RESULT
           else
               if  SYSMEMO1-STATUS = '10'
                   add 16 to ZERO giving APPL-RESULT
               else
                   add 12 to ZERO giving APPL-RESULT
               end-if
           end-if.
           if  APPL-AOK
               CONTINUE
           else
               move 'SYSMEMO1-Failure-WRITE...' to MESSAGE-TEXT
               perform Z-DISPLAY-CONSOLE-MESSAGE
               move SYSMEMO1-STATUS to IO-STATUS
               perform Z-DISPLAY-IO-STATUS
               perform Z-ABEND-PROGRAM
           end-if
           exit.
      *---------------------------------------------------------------*
       SYSMEMO1-OPEN.
           add 8 to ZERO giving APPL-RESULT.
           open output SYSMEMO1-FILE
           if  SYSMEMO1-STATUS = '00'
               subtract APPL-RESULT from APPL-RESULT
               move 'O' to SYSMEMO1-OPEN-FLAG
           else
               add 12 to ZERO giving APPL-RESULT
           end-if
           if  APPL-AOK
               CONTINUE
           else
               move 'SYSMEMO1-Failure-OPEN...' to MESSAGE-TEXT
               perform Z-DISPLAY-CONSOLE-MESSAGE
               move SYSMEMO1-STATUS to IO-STATUS
               perform Z-DISPLAY-IO-STATUS
               perform Z-ABEND-PROGRAM
           end-if
           exit.
      *---------------------------------------------------------------*
       SYSMEMO1-CLOSE.
           add 8 to ZERO giving APPL-RESULT.
           close SYSMEMO1-FILE
           if  SYSMEMO1-STATUS = '00'
               subtract APPL-RESULT from APPL-RESULT
               move 'C' to SYSMEMO1-OPEN-FLAG
           else
               add 12 to ZERO giving APPL-RESULT
           end-if
           if  APPL-AOK
               CONTINUE
           else
               move 'SYSMEMO1-Failure-CLOSE...' to MESSAGE-TEXT
               perform Z-DISPLAY-CONSOLE-MESSAGE
               move SYSMEMO1-STATUS to IO-STATUS
               perform Z-DISPLAY-IO-STATUS
               perform Z-ABEND-PROGRAM
           end-if
           exit.

      *****************************************************************
      * The following Z-Routines perform administrative tasks         *
      * for this program.                                             *
      *****************************************************************
      * ABEND the program, post a message to the console and issue    *
      * a STOP RUN.                                                   *
      *****************************************************************
       Z-ABEND-PROGRAM.
           if  MESSAGE-TEXT not = SPACES
               perform Z-DISPLAY-CONSOLE-MESSAGE
           end-if
           move 'PROGRAM-IS-ABENDING...'  to MESSAGE-TEXT
           perform Z-DISPLAY-CONSOLE-MESSAGE
           add 12 to ZERO giving RETURN-CODE
           STOP RUN.
      *    exit.

      *****************************************************************
       Z-POST-COPYRIGHT.
           display SIM-TITLE
           display SIM-COPYRIGHT
           exit.

      *****************************************************************
      * Display the file status bytes. This routine will display as   *
      * two digits if the full two byte file status is numeric. If    *
      * second byte is non-numeric then it will be treated as a       *
      * binary number.                                                *
      *****************************************************************
       Z-DISPLAY-IO-STATUS.
           if  IO-STATUS not NUMERIC
           or  IO-STAT1    = '9'
               subtract TWO-BYTES-BINARY from TWO-BYTES-BINARY
               move IO-STAT2 to TWO-BYTES-RIGHT
               display '* CBLPRTC1 File-Status-' IO-STAT1 '/'
                       TWO-BYTES-BINARY upon console
               display '* CBLPRTC1 File-Status-' IO-STAT1 '/'
                       TWO-BYTES-BINARY
           else
               display '* CBLPRTC1 File-Status-' IO-STATUS upon console
               display '* CBLPRTC1 File-Status-' IO-STATUS
           end-if
           exit.

      *****************************************************************
      * Display CONSOLE messages...                                   *
      *****************************************************************
       Z-DISPLAY-CONSOLE-MESSAGE.
           if MESSAGE-TEXT-2 = SPACES
               display MESSAGE-BUFFER(1:79)
           else
               display MESSAGE-BUFFER
           end-if
           move all SPACES to MESSAGE-TEXT
           exit.

      *****************************************************************
       Z-THANK-YOU.
           display SIM-THANKS-01
           display SIM-THANKS-02
           exit.
      *****************************************************************
      *      This example is provided by SimoTime Technologies        *
      *        Our e-mail address is: helpdesk@simotime.com           *
      *     Also, visit our Web Site at http://www.simotime.com       *
      *****************************************************************

Table of Contents Previous Section Next Section The COBOL Copy Files

This section provides a listing of the source code for the COBOL copy files used to define the tables of binary values. These tables are used to inspect a message buffer and replace non-display or non-print characters with spaces.

Table of Contents Previous Section Next Section Table of Binary Values

The following is the source code (BIN256B1.cpy) for the COBOL copy file that defines a table of the possible 256 binary values.

      *****************************************************************
      *               BIN256B1.CPY - a COBOL Copy File                *
      *         Copyright (C) 1987-2018 SimoTime Technologies         *
      *                     All Rights Reserved                       *
      *              Provided by SimoTime Technologies                *
      *        Our e-mail address is: helpdesk@simotime.com           *
      *     Also, visit our Web Site at http://www.simotime.com       *
      *****************************************************************
      *
....:.*..1....:....2....:....3....:....4....:....5....:....6....:....7. ..:....8
       01  BINARY-DATA.
           05  FILLER pic X(16)
                          value X'000102030405060708090A0B0C0D0E0F'.    000-015
           05  FILLER pic X(16)
                          value X'101112131415161718191A1B1C1D1E1F'.    016-031
           05  FILLER pic X(16)
                          value X'202122232425262728292A2B2C2D2E2F'.    032-047
           05  FILLER pic X(16)
                          value X'303132333435363738393A3B3C3D3E3F'.    048-063
           05  FILLER pic X(16)
                          value X'404142434445464748494A4B4C4D4E4F'.    064-079
           05  FILLER pic X(16)
                          value X'505152535455565758595A5B5C5D5E5F'.    080=095
           05  FILLER pic X(16)
                          value X'606162636465666768696A6B6C6D6E6F'.    096-111
           05  FILLER pic X(16)
                          value X'707172737475767778797A7B7C7D7E7F'.    112-127
           05  FILLER pic X(16)
                          value X'808182838485868788898A8B8C8D8E8F'.    128-143
           05  FILLER pic X(16)
                          value X'909192939495969798999A9B9C9D9E9F'.    144-159
           05  FILLER pic X(16)
                          value X'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF'.    160-175
           05  FILLER pic X(16)
                          value X'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'.    176-191
           05  FILLER pic X(16)
                          value X'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF'.    192-207
           05  FILLER pic X(16)
                          value X'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF'.    208-223
           05  FILLER pic X(16)
                          value X'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF'.    224-239
           05  FILLER pic X(16)
                          value X'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'.    240-255
....:.*..1....:....2....:....3....:....4....:....5....:....6....:....7. ..:....8
      *
       01  B-INFO          redefines BINARY-DATA pic X(256).
       01  BINARY-TABLE    redefines BINARY-DATA.
           05  BINARY-BYTE pic X     occurs 256 times.
      *
      ***  BIN256B1 - End-of-Copy File - - - - - - - - - - - BIN256B1 *
      *****************************************************************
      *

Table of Contents Previous Section Next Section Tables of Printable Characters

The following sub-sections describe various tables that may be used to identify printable characters. Table values may be determined based on user preference, country of residence or code page.

Table of Contents Previous Section Next Section ASCII Characters (based on USA)

The following is the source code (PRTASCB1.cpy) for the COBOL copy file that defines a table of the valid print or display characters for the ASCII-encoded environment.

      *****************************************************************
      *                PRTASCB1 is a COBOL Copy File                  *
      *       Data Table to Identify non-Print ASCII Characters.      *
      *         Copyright (C) 1987-2018 SimoTime Technologies         *
      *                     All Rights Reserved                       *
      *****************************************************************
      *              Provided by SimoTime Technologies                *
      *        Our e-mail address is: helpdesk@simotime.com           *
      *     Also, visit our Web Site at http://www.simotime.com       *
      *****************************************************************
      * This table is commonly used to change the non-display or      *
      * non-print characters in a message text string to spaces.      *
      * This table will only work for ASCII-encoded text strings.     *
      * The following is an example of an inspect statement for COBOL *
      *                                                               *
      *       inspect MESSAGE-TEXT converting B-INFO to P1-ASC        *
      *                                                               *
      * Note: Refer to BIN256B1.CPY for the table of binary values.   *
      *****************************************************************
      *
      *..1....:....2....:....3....:....4....:....5....:....6....:....7.
       01  P1-ASC-DATA.
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'202122232425262728292A2B2C2D2E2F'.
      *                            ! " # $ % & ' ( ) * + , - . /
           05 FILLER pic X(16)
                         value X'303132333435363738393A3B3C3D3E3F'.
      *                          0 1 2 3 4 5 6 7 8 9 : ; < = > ?
           05 FILLER pic X(16)
                         value X'404142434445464748494A4B4C4D4E4F'.
      *                          @ A B C D E F G H I J K L M N O
           05 FILLER pic X(16)
                         value X'505152535455565758595A5B5C5D5E5F'.
      *                          P Q R S T U V W X Y Z [ \ ] ^ _
           05 FILLER pic X(16)
                         value X'606162636465666768696A6B6C6D6E6F'.
      *                          ` a b c d e f g h i j k l m n o
           05 FILLER pic X(16)
                         value X'707172737475767778797A7B7C7D7E20'.
      *                          p q r s t u v w x y z { | } ~
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
      *..1....:....2....:....3....:....4....:....5....:....6....:....7.
       01  P1-ASC redefines P1-ASC-DATA pic X(256).
      *
      ***  PRTASCB1 - End-of-Copy File - - - - - - - - - - - PRTASCB1 *
      *****************************************************************
      *

Table of Contents Previous Section Next Section ASCII Characters with Alternate Codes

The following is the source code (PRTASCB2.cpy) for the COBOL copy file that defines a table of the valid print or display characters for the ASCII-encoded environment that includes the vowels with the Acute, Grave, Umlaut, Circumflex, Tilde, A-ring, Cedilla, O-slash and Strasse plus additional currency symbols and Diphthongs.

      *****************************************************************
      *                PRTASCB2 is a COBOL Copy File                  *
      *       Data Table to Identify non-Print ASCII Characters.      *
      *         Copyright (C) 1987-2018 SimoTime Technologies         *
      *                     All Rights Reserved                       *
      *****************************************************************
      *              Provided by SimoTime Technologies                *
      *        Our e-mail address is: helpdesk@simotime.com           *
      *     Also, visit our Web Site at http://www.simotime.com       *
      *****************************************************************
      * This table is commonly used to change the non-display or      *
      * non-print characters in a message text string to spaces.      *
      * This table will only work for ASCII-encoded text strings.     *
      *                                                               *
      * The table includes the vowels with the acute, grave, umlat,   *
      * circumflex, tilde, a-ring, cedilla, o-slash and strasse.      *
      * The font type for the screen or printer may need to be        *
      * configured for Courier New (fixed font) or  Times New Roman   *
      * (proportional font).                                          *
      *                                                               *
      * The following is an example of an inspect statement for COBOL *
      *                                                               *
      *       inspect MESSAGE-TEXT converting B-INFO to P2-ASC        *
      *                                                               *
      * Note: Refer to BIN256B2.CPY for the table of binary values.   *
      *****************************************************************
      *
      *..1....:....2....:....3....:....4....:....5....:....6....:....7.
       01  P2-ASC-DATA.
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'202122232425262728292A2B2C2D2E2F'.
      *                            ! " # $ % & ' ( ) * + , - . /
           05 FILLER pic X(16)
                         value X'303132333435363738393A3B3C3D3E3F'.
      *                          0 1 2 3 4 5 6 7 8 9 : ; < = > ?
           05 FILLER pic X(16)
                         value X'404142434445464748494A4B4C4D4E4F'.
      *                          @ A B C D E F G H I J K L M N O
           05 FILLER pic X(16)
                         value X'505152535455565758595A5B5C5D5E5F'.
      *                          P Q R S T U V W X Y Z [ \ ] ^ _
           05 FILLER pic X(16)
                         value X'606162636465666768696A6B6C6D6E6F'.
      *                          ` a b c d e f g h i j k l m n o
           05 FILLER pic X(16)
                         value X'707172737475767778797A7B7C7D7E20'.
      *                          p q r s t u v w x y z { | } ~
           05 FILLER pic X(16)
                         value X'80202020202020202020202020202020'.
      *                          €
           05 FILLER pic X(16)
                         value X'2020202020202020202020202020209F'.
      *                                                        Ÿ
           05 FILLER pic X(16)
                         value X'202020A320A520202020202020202020'.
      *                                £   ¥
           05 FILLER pic X(16)
                         value X'20202020202020202020202020202020'.
      *
           05 FILLER pic X(16)
                         value X'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF'.
      *                          À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
           05 FILLER pic X(16)
                         value X'20D1D2D3D4D5D620D8D9DADBDCDD20DF'.
      *                            Ñ Ò Ó Ô Õ Ö   Ø Ù Ú Û Ü Ý   ß
           05 FILLER pic X(16)
                         value X'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF'.
      *                          à á â ã ä å æ ç è é ê ë ì í î ï
           05 FILLER pic X(16)
                         value X'20F1F2F3F4F5F620F8F9FAFBFCFD20FF'.
      *                            ñ ò ó ô õ ö   ø ù ú û ü ý   ÿ
      *
      *..1....:....2....:....3....:....4....:....5....:....6....:....7.
       01  P2-ASC redefines P2-ASC-DATA pic X(256).
      *
      ***  PRTASCB2 - End-of-Copy File - - - - - - - - - - - PRTASCB2 *
      *****************************************************************
      *

Table of Contents Previous Section Next Section EBCDIC Characters (based on USA)

The following is the source code (PRTEBCB1.cpy) for the COBOL copy file that defines a table of the valid print or display characters for the EBCDIC-encoded environment.

      *****************************************************************
      *                PRTEBCB1 is a COBOL Copy File                  *
      *      Data Table to Identify non-Print EBCDIC Characters.      *
      *         Copyright (C) 1987-2018 SimoTime Technologies         *
      *                     All Rights Reserved                       *
      *****************************************************************
      *              Provided by SimoTime Technologies                *
      *        Our e-mail address is: helpdesk@simotime.com           *
      *     Also, visit our Web Site at http://www.simotime.com       *
      *****************************************************************
      * This table is commonly used to change the non-display or      *
      * non-print characters in a message text string to spaces.      *
      * This table will only work for EBCDIC-encoded text strings.    *
      * The following is an example of an inspect statement for COBOL *
      *                                                               *
      *       inspect MESSAGE-TEXT converting B-INFO to P1-EBC        *
      *                                                               *
      * Note: Refer to BIN256B1.CPY for the table of binary values.   *
      *****************************************************************
      *
      *..1....:....2....:....3....:....4....:....5....:....6....:....7.
       01  P1-EBC-DATA.
           05 FILLER pic X(16)
                         value X'40404040404040404040404040404040'.
      *
           05 FILLER pic X(16)
                         value X'40404040404040404040404040404040'.
      *
           05 FILLER pic X(16)
                         value X'40404040404040404040404040404040'.
      *
           05 FILLER pic X(16)
                         value X'40404040404040404040404040404040'.
      *
           05 FILLER pic X(16)
                         value X'40404040404040404040404B4C4D4E4F'.
      *                                                . < ( + |
           05 FILLER pic X(16)
                         value X'504040404040404040405A5B5C5D5E5F'.
      *                          &                   ! $ * ) ; ¬
           05 FILLER pic X(16)
                         value X'606140404040404040406A6B6C6D6E6F'.
      *                          - /                 ¦ , % _ > ?
           05 FILLER pic X(16)
                         value X'404040404040404040797A7B7C7D7E7F'.
      *                                            ` : # @ ' = "
           05 FILLER pic X(16)
                         value X'40818283848586878889404040404040'.
      *                            a b c d e f g h i
           05 FILLER pic X(16)
                         value X'40919293949596979899404040404040'.
      *                            j k l m n o p q r
           05 FILLER pic X(16)
                         value X'40A1A2A3A4A5A6A7A8A9404040AD4040'.
      *                            ~ s t u v w x y z
           05 FILLER pic X(16)
                         value X'B0404040B44040404040BABB40404040'.
      *                          ^       ©           [ ]
           05 FILLER pic X(16)
                         value X'C0C1C2C3C4C5C6C7C8C9404040404040'.
      *                          { A B C D E F G H I
           05 FILLER pic X(16)
                         value X'D0D1D2D3D4D5D6D7D8D9404040404040'.
      *                          } J K L M N O P Q R
           05 FILLER pic X(16)
                         value X'E040E2E3E4E5E6E7E8E9404040404040'.
      *                          \   S T U V W X Y Z
           05 FILLER pic X(16)
                         value X'F0F1F2F3F4F5F6F7F8F9404040404040'.
      *                          0 1 2 3 4 5 6 7 8 9
      *
      *..1....:....2....:....3....:....4....:....5....:....6....:....7.
       01  P1-EBC redefines P1-EBC-DATA pic X(256).
      *
      ***  PRTEBCB1 - End-of-Copy File - - - - - - - - - - - PRTEBCB1 *
      *****************************************************************
      *

Table of Contents Previous Section Next Section EBCDIC Characters with Alternate Codes

The following is the source code (PRTEBCB2.cpy) for the COBOL copy file that defines a table of the valid print or display characters for the EBCDIC-encoded environment that includes the vowels with the Acute, Grave, Umlaut, Circumflex, Tilde, A-ring, Cedilla, O-slash and Strasse plus additional currency symbols and Diphthongs.

      *****************************************************************
      *                PRTEBCB2 is a COBOL Copy File                  *
      *      Data Table to Identify non-Print EBCDIC Characters.      *
      *         Copyright (C) 1987-2018 SimoTime Technologies         *
      *                     All Rights Reserved                       *
      *****************************************************************
      *              Provided by SimoTime Technologies                *
      *        Our e-mail address is: helpdesk@simotime.com           *
      *     Also, visit our Web Site at http://www.simotime.com       *
      *****************************************************************
      * This table is commonly used to change the non-display or      *
      * non-print characters in a message text string to spaces.      *
      * This table will only work for EBCDIC-encoded text strings.    *
      *                                                               *
      * The table includes the vowels with the acute, grave, umlat,   *
      * circumflex, tilde, a-ring, cedilla, o-slash and strasse.      *
      * The font type for the screen or printer may need to be        *
      * configured for Courier New (fixed font) or  Times New Roman   *
      * (proportional font).                                          *
      *                                                               *
      * The following is an example of an inspect statement for COBOL *
      *                                                               *
      *       inspect MESSAGE-TEXT converting B-INFO to P2-EBC        *
      *                                                               *
      * Note: Refer to BIN256B1.CPY for the table of binary values.   *
      *****************************************************************
      *
      *..1....:....2....:....3....:....4....:....5....:....6....:....7.
       01  P2-EBC-DATA.
           05 FILLER pic X(16)
                         value X'40404040404040404040404040404040'.
      *
           05 FILLER pic X(16)
                         value X'40404040404040404040404040404040'.
      *
           05 FILLER pic X(16)
                         value X'20404040404040404040404040404040'.
      *                          €
           05 FILLER pic X(16)
                         value X'40404040404040404040404040404040'.
      *
           05 FILLER pic X(16)
                         value X'40404243444546474849404B4C4D4E4F'.
      *                              â ä à á ã å ç ñ ¢ . < ( + |
           05 FILLER pic X(16)
                         value X'505152535455565758595A5B5C5D5E5F'.
      *                          & é ê ë è í î ï ì ß ! $ * ) ; ¬
           05 FILLER pic X(16)
                         value X'606162636465666768696A6B6C6D6E6F'.
      *                          - / Â Ä À Á Ã Å Ç Ñ ¦ , % _ > ?
           05 FILLER pic X(16)
                         value X'707172737475767778797A7B7C7D7E7F'.
      *                          ø É Ê Ë È Í Î Ï Ì ` : # @ ' = "
           05 FILLER pic X(16)
                         value X'808182838485868788894040408D4040'.
      *                          Ø a b c d e f g h i       ý
           05 FILLER pic X(16)
                         value X'4091929394959697989940409C409E40'.
      *                            j k l m n o p q r     æ   Æ
           05 FILLER pic X(16)
                         value X'40A1A2A3A4A5A6A7A8A9404040AD4040'.
      *                            ~ s t u v w x y z       Ý
           05 FILLER pic X(16)
                         value X'B0B1B240B44040404040BABB40404040'.
      *                          ^ £ ¥   ©           [ ]
           05 FILLER pic X(16)
                         value X'C0C1C2C3C4C5C6C7C8C940CBCCCDCECF'.
      *                          { A B C D E F G H I   ô ö ò ó õ
           05 FILLER pic X(16)
                         value X'D0D1D2D3D4D5D6D7D8D940DBDCDDDEDF'.
      *                          } J K L M N O P Q R   û ü ù ú ÿ
           05 FILLER pic X(16)
                         value X'E040E2E3E4E5E6E7E8E940EBECEDEEEF'.
      *                          \   S T U V W X Y Z   Ô Ö Ò Ó Õ
           05 FILLER pic X(16)
                         value X'F0F1F2F3F4F5F6F7F8F940FBFCFDFEFF'.
      *                          0 1 2 3 4 5 6 7 8 9   Û Ü Ù Ú Ÿ
      *
      *..1....:....2....:....3....:....4....:....5....:....6....:....7. ..:....8
       01  P2-EBC redefines P2-EBC-DATA pic X(256).
      *
      ***  PRTEBCB2 - End-of-Copy File - - - - - - - - - - - PRTEBCB2 *
      *****************************************************************
      *

Table of Contents Previous Section Next Section Summary

This suite of programs provides an example of how a COBOL program may remove non-display and non-print characters from a text string before printing the text string. This document may be used to assist as a tutorial for new programmers or as a quick reference for experienced programmers.

In the world of programming there are many ways to solve a problem. This documentation and software were developed and tested on systems that are configured for a SIMOTIME environment based on the hardware, operating systems, user requirements and security requirements. Therefore, adjustments may be needed to execute the jobs and programs when transferred to a system of a different architecture or configuration.

SIMOTIME Services has experience in moving or sharing data or application processing across a variety of systems. For additional information about SIMOTIME Services or Technologies please contact us using the information in the  Contact or Feedback  section of this document.

Table of Contents Previous Section Next Section Software Agreement and Disclaimer

Permission to use, copy, modify and distribute this software, documentation or training material for any purpose requires a fee to be paid to SimoTime Technologies. Once the fee is received by SimoTime the latest version of the software, documentation or training material will be delivered and a license will be granted for use within an enterprise, provided the SimoTime copyright notice appear on all copies of the software. The SimoTime name or Logo may not be used in any advertising or publicity pertaining to the use of the software without the written permission of SimoTime Technologies.

SimoTime Technologies makes no warranty or representations about the suitability of the software, documentation or learning material for any purpose. It is provided "AS IS" without any expressed or implied warranty, including the implied warranties of merchantability, fitness for a particular purpose and non-infringement. SimoTime Technologies shall not be liable for any direct, indirect, special or consequential damages resulting from the loss of use, data or projects, whether in an action of contract or tort, arising out of or in connection with the use or performance of this software, documentation or training material.

Table of Contents Previous Section Next Section Downloads and Links

This section includes links to documents with additional information that are beyond the scope and purpose of this document. The first group of documents may be available from a local system or via an internet connection, the second group of documents will require an internet connection.

Note: A SimoTime License is required for the items to be made available on a local system or server.

Table of Contents Previous Section Next Section Current Server or Internet Access

The following links may be to the current server or to the Internet.

Note: The latest versions of the SimoTime Documents and Program Suites are available on the Internet and may be accessed using the Link to Internet icon. If a user has a SimoTime Enterprise License the Documents and Program Suites may be available on a local server and accessed using the Link to Server icon.

Link to Internet   Link to Server   Explore the JCL Connection for more examples of JCL functionality with programming techniques and sample code.

Link to Internet   Link to Server   Explore the COBOL Connection for more examples of COBOL programming techniques and sample code.

Link to Internet   Link to Server   Explore An Enterprise System Model that describes and demonstrates how Applications that were running on a Mainframe System and non-relational data that was located on the Mainframe System were copied and deployed in a Microsoft Windows environment with Micro Focus Enterprise Server.

Link to Internet   Link to Server   Explore The ASCII and EBCDIC Translation Tables. These tables are provided for individuals that need to better understand the bit structures and differences of the encoding formats.

Link to Internet   Link to Server   Explore The File Status Return Codes that are used to interpret the results of accessing VSAM data sets and/or QSAM files.

Table of Contents Previous Section Next Section Internet Access Required

The following links will require an internet connect.

This suite of programs and documentation is available to download for review and evaluation purposes. Other uses will require a SimoTime Software License. Link to an Evaluation zPAK Option that includes the program members, documentation and control files.

A good place to start is The SimoTime Home Page for access to white papers, program examples and product information. This link requires an Internet Connection

Explore The Micro Focus Web Site for more information about products (including Micro Focus COBOL) and services available from Micro Focus. This link requires an Internet Connection.

Table of Contents Previous Section Next Section Glossary of Terms

Link to Internet   Link to Server   Explore the Glossary of Terms for a list of terms and definitions used in this suite of documents and white papers.

Table of Contents Previous Section Next Section Contact or Feedback

This document was created and is maintained by SimoTime Technologies. If you have any questions, suggestions, comments or feedback please use the following contact information.

1. Send an e-mail to our helpdesk.
1.1. helpdesk@simotime.com.
2. Our telephone numbers are as follows.
2.1. 1 415 763-9430 office-helpdesk
2.2. 1 415 827-7045 mobile

 

We appreciate hearing from you.

Table of Contents Previous Section Next Section Company Overview

SimoTime Technologies was founded in 1987 and is a privately owned company. We specialize in the creation and deployment of business applications using new or existing technologies and services. We have a team of individuals that understand the broad range of technologies being used in today's environments. Our customers include small businesses using Internet technologies to corporations using very large mainframe systems.

Quite often, to reach larger markets or provide a higher level of service to existing customers it requires the newer Internet technologies to work in a complementary manner with existing corporate mainframe systems. We specialize in preparing applications and the associated data that are currently residing on a single platform to be distributed across a variety of platforms.

Preparing the application programs will require the transfer of source members that will be compiled and deployed on the target platform. The data will need to be transferred between the systems and may need to be converted and validated at various stages within the process. SimoTime has the technology, services and experience to assist in the application and data management tasks involved with doing business in a multi-system environment.

Whether you want to use the Internet to expand into new market segments or as a delivery vehicle for existing business functions simply give us a call or check the web site at http://www.simotime.com


Return-to-Top
Print and Display using COBOL, Remove Non-Print Characters
Copyright © 1987-2024
SimoTime Technologies and Services
All Rights Reserved
When technology complements business
http://www.simotime.com