Introduction

When working in a shared systems environment it is quite often necessary to view, modify, convert or compare the content and format of data files. This is especially true when moving source code, JCL or control files between the Mainframe System, an Application Server, a Windows System, a UNIX System or a Linux System. The ability to quickly convert the format and modify the content between ASCII and EBCDIC is a requirement. The ability to view or dump the content of a file in a hexadecimal display format can also be very helpful. When testing an application it is quite useful to be able to compare the contents of two data files and to select the information to be compared within a record.

In many circumstances these tasks are repetitive and run as transparent, automated processes. In this environment it is more important to be able to create a callable program or batch file than it is to have a graphical user interface that may require some human interaction during the execution process. The techniques used to do data file conversion or comparison must be able to execute on a Windows, UNIX, Linux or Mainframe System.

SimoZAPS is a collection of utility programs that are designed to fill this niche. SimoZAPS provides the following capabilities.

Item

Description

1

View the contents of a file in hexadecimal format with translation to EBCDIC or ASCII whenever possible.Scan a file and find information based on a user-submitted argument. The find argument may be specified in ASCII, EBCDIC or Hexadecimal format.Patch bytes of information within a file based on a user submitted patch value. The patch information may be specified in ASCII, EBCDIC or HEX.

2

Generate COBOL programs that will convert data files on the mainframe, a Windows platform with Micro Focus or a UNIX platform with Micro Focus. Provide for the conversion of file format, record format and record content changes. Convert between ASCII and EBCDIC encoded formats at the field level while maintaining numeric encoded fields (packed or binary).

3

Generate a COBOL program that will compare the contents of two files.

4

Read an ASCII/Text file and create an EBCDIC, 80-byte, fixed record length file.

5

Read an EBCDIC, 80-byte, fixed record length file and create an ASCII/Text file.

6

Read an ASCII file of mixed case and create an ASCII file of all upper case.

7

Read an ASCII file of mixed case and create an ASCII file of all lower case.

8

Read a COBOL source program and create a new file with case formatting.

9

Read an ASCII/Text file and create a new ASCII/Text file allowing include, omit and global changes to the individual records.

Overview of Functions provided by SIMOZAPS

In most cases SimoZAPS does not change the input file. It creates a copy of the file that contains the modifications. The PATCH function of HEXCESS makes changes directly to the specified file name.

SimoZAPS does not actually do the data conversion or comparison, it generates COBOL source code (or programs) that will be used to do the data conversion or comparison. This technique has two advantages.

Item

Description

1

The COBOL source code may be compiled and executed on a Windows, UNIX or Windows System using Micro Focus COBOL or on a Mainframe System using IBM OS/390 COBOL or a later version.

2

The generated COBOL source code may be changed to meet unique or specialized processing requirements.

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.

Requirements and Installation

SimoZAPS requires approximately 1.1M of disk space. Windows/2000, Windows/NT or Windows/98 is the required operating system. The SimoZAPS program, this documentation, the Installation Verification Procedures (IVP's) and examples are provided in a zip'ed file.

Note: If the target install directory for SimoLIBR is changed it will be necessary to modify the ZAPSREC1.CMD, ZAPSREC2.CMD and the IVP.CMD's to access the new directory structure. Also, the modified SimoLIBR directory should be added to the path statement.

Installation Verification Programs

SimoZAPS contains a suite of Installation Verification Programs (IVP's). Their primary purpose is to verify that SimoZAPS has been properly installed. Their secondary purpose is to serve as sample programs.

Use the GENERATE function to read a SEQUENTIAL, 80-byte, fixed, EBCDIC file and create an ASCII/CRLF, 80-byte, variable, ASCII file.Note:this function does not do the actual conversion. This function generates (or creates) the COBOL source code for a program that will do the conversion.

Use the GENERATE function to read a SEQUENTIAL, 80-byte, fixed, EBCDIC file and create an INDEXED, 256-byte, variable, ASCII file with key position at 1 for a key length of 6.Note:this function does not do the actual conversion. This function generates (or creates) the COBOL source code for a program that will do the conversion.

Use the GENERATE function to read a SEQUENTIAL, 80-byte, fixed, EBCDIC file and create a SEQUENTIAL, 80-byte, fixed, ASCII file.Note:this function does not do the actual conversion. This function generates (or creates) the COBOL source code for a program that will do the conversion.

Use the GENERATE function to read an ASCII/CRLF, 80-byte, variable, ASCII file and create an INDEXED, 80-byte, variable, EBCDIC file.Note:this function does not do the actual conversion. This function generates (or creates) the COBOL source code for a program that will do the conversion.

IVP, Generate Convert Programs

The GENERATE function will generate (or create) the source code for a program that will do a file conversion. The following four Installation Verification Procedures (IVP's) are provided to verify proper installation of SimoZAPS and the proper configuration for the GENERATE function. Detailed information about the IVP's is provided in the Using SimoZAPS section.

The GENERATE function will generate (or create) the source code for a program that will do a file conversion. The following five Installation Verification Procedures (IVP's) are provided to verify proper installation of SimoZAPS and the proper configuration for the GENERATE function. Detailed information about the IVP's is provided in the
Using SIMOZAPS, Generate a Data File Conversion Program
section of this document for a more detailed description of the preceding process.

EBCDIC Sequential to ASCII Text

The following command (IVP4GFC1.cmd) will run the GENERATE function to create the COBOL source code for doing a file conversion from an EBCDIC Sequential file to an ASCII Text file.

ASCII Text to EBCDIC Indexed (Random)

The following command (IVP4GFC5.cmd) will run the GENERATE function to create the COBOL source code for doing a file conversion from an ASCII Text file to an EBCDIC Indexed file. This IVP uses a random add and update approach for adding or updating records to the output file.

IVP, Generate Compare Programs

The GENERATE function will generate (or create) the source code for a program that will do a file comparison of two files at the record level. The following Installation Verification Procedure (IVP) is provided to verify proper installation of SimoZAPS and the proper configuration for the GENERATE function for Data File Comparison. Detailed information about the IVP's is provided in the
Using SIMOZAPS, Generate a Data File Comparison Program
section of this document for a more detailed description of the preceding process.

C:\SIMOLIBR> IVPZFCG1

The following is the Window's Command file (IVPZFCG1.cmd) that executes the IVP.

Using SIMOZAPS

This function will read a file and produce a new file containing hexadecimal dump information. The new file (SYSLOG) is ASCII/Text. In addition to the hexadecimal format the SYSLOG includes an EBCDIC and ASCII translation when possible.

This function provides for translation between ASCII/Text and EBCDIC files. The content (ASCII or EBCDIC), record format (variable and fixed), the record lengths and the file type (sequential, indexed or ASCII/Text) may be converted.

Compare

This function will compare the contents of two data files at the record level. Text string (by position and length) within each record may be selected for comparison. For keyed-indexed files missing or added records will be identified. Missing or added records may also be identified for sequential files if the files are sorted by a key field.When a difference occurs the possible ASCII and EBCDIC values are displayed to the screen and written to a log file. A hexadecimal dump of the records is also displayed and written to the log file. This can be very useful in an environment where files have been downloaded from a mainframe in EBCDIC format.

This function provides the capability of copying an ASCII/Text file. The content of the output file may be modified in the process. Individual records may be included or deleted based on their content. Also, individual records that are being copied may be modified using such keywords as insert, append, replace and more.

This function simply provides a consistent use of upper and lower case for COBOL source code. Many times we work with COBOL code that has evolved over a number of years and the use of upper and lower case varies widely. With the consistent use of upper/lower case it makes the code easier to read and understand.

Brief Description of the Five Function provided by SIMOZAPS

The functions provided by SimoZAPS are described in more detail in the following sections.

HEXCESS, Hexadecimal Function

The hexadecimal access function (HEXCESS) provides a "VIEW" capability (or hexadecimal dump) of a file in hexadecimal format (HEXDUMP). When possible the EBCDIC and ASCII characters are displayed. The HEXDUMP information is displayed and written to a SYSLOG file. The starting and stopping positions may be specified.

HEXCESS provides a "FIND" capability. A search argument may be specified and the input file is read until a data match is found. Once a data match is found the 128 byte section of the file containing the match is displayed and written to the SYSLOG file.

HEXCESS provides a "PATCH" capability. A data string of a maximum of thirty-two (32) bytes may be specified on the command line. This data string will be written at the position specified within the file.

The HEXCESS function of SimoZAPS is run from the command line as follows.

The following is a summary of the keyword=parameters capabilities provided by SimoZAPS and the HEXCESS function.

Run

Function

filename

keyword=parameter keyword=parameter etc...

SIMOZAPS

HEXCESS

filename

VIEW

This keyword=parameter defines the function to be performed and the starting position within the file.VIEW=nnnnn where nnnnn specifies the starting position within the file.

stop

This keyword=parameter defines the stopping position within the fileSTOP=nnnnn where nnnnn is the stopping position within the file.

SIMOZAPS

HEXCESS

filename

FIND

This keyword=parameter defines the function to be performed and the starting position within the file.FIND=nnnnn where nnnnn specifies the starting position within the file.

length

This keyword=parameter defines the length of the search argumentLENGTH=nnnnn where nnnnn is the length of the search argument.

value

This keyword=parameter defines the format and content of the search argument.ASCII=xxxxxxxx where xxxxxxxx is the ASCII content of the search argumentEBCDIC= xxxxxxxx where xxxxxxxx is the EBCDIC content
of the search argument.HEX=xxxxxxxx where xxxxxxxx is the hexadecimal content of the search argument. For example, HEX=C1C2 would be the EBCDIC equivalent of the letters AB.

SIMOZAPS

HEXCESS

filename

PATCH

This keyword=parameter defines the function to be performed and the starting position within the file.PATCH=nnnnn where nnnnn specifies the starting position within the file.

length

This keyword=parameter defines the length of the search argumentLENGTH=nnnnn where nnnnn is the length of the search argument.

value

This keyword=parameter defines the format and content of the search argument.ASCII=xxxxxxxx where xxxxxxxx is the ASCII content of the search argumentEBCDIC= xxxxxxxx where xxxxxxxx is the EBCDIC content
of the search argument.HEX=xxxxxxxx where xxxxxxxx is the hexadecimal content of the search argument. For example, HEX=C1C2 would be the EBCDIC equivalent of the letters AB.

HEXCESS includes three installation verification procedures (IVP's) that also serve as examples.

HEXCESS, Hex-View (or HEXDUMP)

The following command (IVP4HEX1.cmd) does a simple hexadecimal view. The information is displayed to the screen and written to the SYSLOG file. The following shows the content of the command file.

HEXCESS, the Find Function

The IVP4HEX2.CMD does a find and dump when a match is found. The match process is not case sensitive. The argument for the FIND is specified in upper case it will find text string matches that are upper, lower or mixed case. For example, a FIND argument of 'ABC' would find a match for 'ABC', 'abc', or 'aBc'.

The hexadecimal find information is displayed to the screen and written to the SYSLOG file. The following command (IVP4HEX2.cmd) shows the content of the command file.

HEXCESS, the Patch Function

The following command (IVP4HEX3.cmd) does a patch and dump using the specified data string from the command line. The hexadecimal dump information is displayed to the screen and written to the SYSLOG file.

@echo OFF
rem * *******************************************************************
rem * IVP4HEX3.CMD - a Windows Command File *
rem * This program is provided by SimoTime Technologies *
rem * (C) Copyright 1987-2018 All Rights Reserved *
rem * Web Site URL: http://www.simotime.com *
rem * e-mail: helpdesk@simotime.com *
rem * *******************************************************************
rem * This procedure will read the HELLO.CBL file and modify or
rem * patch the file directly. This is one of the functions that
rem * does NOT create a new file. Therefore, make a backup copy
rem * of the file prior to making any changes that use the
rem * patch function.
rem *
echo * IVP4HEX3 Starting the PATCH function of HEXCESS
set syslog=syslog.txt
if exist syslog.txt erase syslog.txt
run SimoZAPS HEXCESS hello.cbl patch=1 len=6 hex=303132333435
echo *
echo * IVP4HEX3 The SYSLOG is displayed in a separate window,
echo * IVP4HEX3 to continue... close the SYSLOG window.
notepad syslog.txt
echo * IVP4HEX3 Thank you for using HEXCESS by SimoTime Technologies

The following is the hexadecimal dump information that is displayed and written to the SYSLOG.

HEXCESS, Micro Focus Environment

The Mainframe Express (MFE) and Net Express products from Micro Focus offer excellent program development environments that run on the PC. Both products have an "Options" capability that provides for the integration of programs and other development tools. This section describes how to integrate the Hex-Dump capabilities of SimoZAPS into either the MFE or Net Express desktop. It is assumed that SimoZAPS has been installed in the C:\SIMOLIBR directory.

If all you want to do is a Hex-Dump of PC files the SIMOZAPS.EXE member is all that is needed. It was originally designed to run from a PC Command Line as a batch process. Using the ZAPSHEX1.CMD file makes it a simple process to add the Hex-Dump capability to the MFE or Net Express toolbar.

Note: depending on the version of Windows you are running the pause statement may or may-not be required.

From the toolbar of the desktop for MFE or Net Express select Options, then select Customize IDE from the drop-down menu and a new window will be displayed.

From the "Customize IDE" window select the Tools Tab, then select New Tool.

Enter the following for the “Enter menu text” prompt.

HexCess 1st 1K, highlight a file

Now enter the following values

Command:

c:\SIMOLIBR\ZAPSHEX1.CMD

Arguments:

$(FileSel) 1 1024 nopause

Start in;

c:\SIMOLIBR

Note: The $(FileSel) will substitute the name of the high-lighted member when executing ZAPS4HEX1 from the MFE or Net Express Tool bar.

Click OK and this will complete the process of integrating the Hex-Dump function of SimoZAPS.

From the MFE or Net Express desktop (either the source member list or the catalog for MFE) select a member or simple high-light a member name.

Select the Tools option from the MFE or Net Express Tool bar, then select the HexCess 1st 1K, highlight a file from the drop-down menu.

Note: The dump information will scroll in a window and the dump information will be written to the ZAPSDUMP.LOG file. Notepad will be used to view the dump file.

Generate COBOL Source Code

SimoZAPS does not actually do the Data File Conversion or Comparison. It generates COBOL source code that does the actual conversion or comparison. This COBOL source code may be compiled and executed on a Mainframe System (z/OS or VSE) or a Linux, UNIX or Windows System with Micro Focus COBOL. The following sections describe the Data File Conversion and Comparison processes in more detail.

Generate a File Convert Program

This function will generate the COBOL source code for a file conversion program. This file conversion program (SYSCOBOL) will read an input file (SYSUT1) and create a new output file (SYSUT2). The format of SYSUT1 and SYSUT2 is specified by records contained in a control or specifications file (SYSCNTL).

IVP4GFC1cmd

Start the processing to generate Convert Program

SIMOZAPSutility

Determine if a CONVERT request and call SimoCNVT.

SYSCNTLlseq

SIMOCNVTconvert

SYSCOBOLcbl

Read the specifications from SYSCNTL and use SYSMODEL as a template to create SYSCOBOL.CBL.

SYSMODEL lseq

EOJ

End-Of-Job

Generate a Data File Conversion Program

The following (IVP4GFC1.cmd) is an example of a batch file that will generate the source code for a file conversion program.

The following is a description of the statements (or record types) contained in the control file (SYSCNTL) that is ued to generate a Data File Convert Program.

The following keyword/parameters are used for file and translate definitions.

Keyword

Parameters

/PROGID

ProgID=xxxxxxxx - where XXXXXXXX is an eight character name

/DIALECT

Dialect=xx - where XX is one of the following

C2

COBOL/2 compliant

MF

Micro Focus COBOL compliant

/HEAD34

A thirty-four (34) character text string that will be included in the header information that is displayed when the generated conversion program is executed.

/VSAMLOAD

Sequential

This will do a sequential or ordered load. The keys are expected to be in sequence. This option should use SYSMASK1.TXT as the SYSMODEL

Random

This will do a random add or update for an unordered load. The keys may be out of sequence. This option should use SYSMASK2.TXT as the SYSMODEL

/SYSUT1

org=sequential recfm=fixed rlen=80 block=1600

name

This keyword=parameter defines the 8-character (or less) DD name for SYSUT1. The default value is SYSUT1.name=SEQINPUT defines the DDNAME for SYSUT1.

org

This keyword=parameter defines the file organization.
org=SEQUENTIAL defines a sequential file.
org=INDEXED defines a a keyed-index file or VSAM Key-Sequenced-Data-Set (KSDS).
org=RELATIVE defines a Relative Record file or a VSAM Relative-Record-Data-Set (RRDS)
org=ASCII/CRLF defines an ASCII/Text file with Carriage Return and Line Feed used as record separators.
org=ASCII/TEXT is the same as ASCII/CRLF.
org=ZOS/V defines a sequential file with variable length records. This file uses a mainframe format and is usually downloaded from a mainframe using FTP with BINARY mode.

recfm

This keyword=parameter defines the format of the records within the file.recfm=FIXED defines the records as fixed length.recfm=VARIABLE defines the records as variable length

rlen

This keyword=parameter defines the fixed record length of each record in the file.rlen=nnnnn where nnnnn is the fixed record length. For variable length records refer to RMIN and RMAX.

rmin

This keyword=parameter defines the minimum record length of records in the file.rmin=nnnnn where nnnnn is the minimum record length. For fixed record length files refer to RLEN.

rmax

This keyword=parameter defines the maximum record length of records in the file.rmax=nnnnn where nnnnn is the maximum record length. For fixed record length files refer to RLEN.

block

This keyword=parameter defines the block length.block=nnnnn where nnnnn is the block length

klen

This keyword=parameter defines the length of the key.klen=nnnnn where nnnnn is the key length.

kpos

This keyword=parameter defines the starting position of the key within the record.kpos=nnnnn where nnnnn is the key starting position within a record.

recmode

This keyword will cause the RECORDING MODE to be added to the FD statement using the RECFM value.

recvary

This keyword will cause the RECORD VARYING to be added to the FD statement using the RMIN and RMAX values.

/SYSUT1A

alen=6 apos=1 with duplicates

alen

This keyword=parameter defines the length of an alternate key.alen=nnnnn where nnnnn is the key length.

apos

This keyword=parameter defines the starting postion of an alternate key within the record.apos=nnnnn where nnnnn is the key starting position within a record.

with

This is an optional keyword

dupes

This keyword (dupes or duplicates) is used to specify a file that has duplicate keys for an alternate key (or index).

/SYSUT2

org=sequential recfm=fixed rlen=80 block=1600

name

This keyword=parameter defines the 8-character (or less) DD name for SYSUT1. The default value is SYSUT1.name=SEQINPUT defines the DDNAME for SYSUT1.

org

This keyword=parameter defines the file organization.
org=SEQUENTIAL defines a sequential file.
org=INDEXED defines a a keyed-index file or VSAM Key-Sequenced-Data-Set (KSDS).
org=RELATIVE defines a Relative Record file or a VSAM Relative-Record-Data-Set (RRDS)
org=ASCII/CRLF defines an ASCII/Text file with Carriage Return and Line Feed used as record separators.
org=ASCII/TEXT is the same as ASCII/CRLF.
org=ZOS/V defines a sequential file with variable length records. This file uses a mainframe format and is usually downloaded from a mainframe using FTP with BINARY mode.

recfm

This keyword=parameter defines the format of the records within the file.recfm=FIXED defines the records as fixed length.recfm=VARIABLE defines the records as variable length

rlen

This keyword=parameter defines the fixed record length of each record in the file.rlen=nnnnn where nnnnn is the fixed record length. For variable length records refer to RMIN and RMAX.

rmin

This keyword=parameter defines the minimum record length of records in the file.rmin=nnnnn where nnnnn is the minimum record length. For fixed record length files refer to RLEN.

rmax

This keyword=parameter defines the maximum record length of records in the file.rmax=nnnnn where nnnnn is the maximum record length. For fixed record length files refer to RLEN.

block

This keyword=parameter defines the block length.block=nnnnn where nnnnn is the block length

klen

This keyword=parameter defines the length of the key.klen=nnnnn where nnnnn is the key length.

kpos

This keyword=parameter defines the starting position of the key within the record.kpos=nnnnn where nnnnn is the key starting position within a record.

RECMODE

This keyword will cause the RECORDING MODE to be added to the FD statement using the RECFM value.

RECVARY

This keyword will cause the RECORD VARYING to be added to the FD statement using the RMIN and RMAX values.

EXTEND

This keyword will cause the file to be opened as EXTEND. This is typically used when the file type is sequential or relative.

/SYSUT2A

alen=6 apos=1 with duplicates

alen

This keyword=parameter defines the length of an alternate key.alen=nnnnn where nnnnn is the key length.

apos

This keyword=parameter defines the starting postion of an alternate key within the record.apos=nnnnn where nnnnn is the key starting position within a record.

with

This is an optional keyword

dupes

This keyword (dupes or duplicates) is used to specify a file that has duplicate keys for an alternate key (or index).

/TRANSMODE

TransMODE=XXX - where XXX is one of the following.Note: if using the /TRANSCALL function to do the conversion then refer to the SimoREC1 documentation for specifying the conversion.

E2A

Do EDCDIC to ASCII conversion

A2E

Do ASCII to EBCDIC conversion

E2E

The input file (SYSUT1) and the output file (SYSUT2) are both EBCDIC. The /TransLATE option will perform the same as the /TransCOPY option.

A2A

The input file (SYSUT1) and the output file (SYSUT2) are both ASCII. The /TransLATE option will perform the same as the /TransCOPY option.

/TRANSINIT

TransINIT=XXXXXXXXXX - where XXXXXXXXXXX is one of the following

SPACES

Initialize the SYSUT2 record to all spaces

LOW-VALUES

Initialize the SYSUT2 record to all low-values

HIGH-VALUES

Initialize the SYSUT2 record to all high-values

X'00'

Initialize the SYSUT2 record to the hex value specified

The following keyword/parameters are used for data transfer/manipulation within a record.

Keyword

Parameters

/TRANSCALL

Callable routine name (eight characters maximum length)

/TRANSCOPY

The TRANSCOPY function will simply copy information from the input record to the output record. The keyword/parameter syntax is as follows:FROM POS pos-1
LENlen-1 TO POS pos-2 LENlen-2

/TRANSFILL

POS pos-1 LENlen-1 'zzzzzzz'POS pos-1 LENlen-1 x'zzzzzzz'

/TRANSFLIP

FROM POS pos-1 LENlen-1 TO POS pos-2 LENlen-2

/TRANSLATE

FROM POS pos-1 LENlen-1 TO POS pos-2 LENlen-2

/TRANSVREC

The TRANSVREC function requires one parameter. If used it must be ENABLE or DISABLE. If the ENABLE is specified the input record will be copied to the output record based on the length if the input record. If this function is missing the DISABLE
keyword is used then the Variable length information will be ignored.

ASCII - EBCDIC Convert Tables

The following command member (ASCEBCB1.cpy) is the source code (or COBOL copy file) for the ASCII - EBCDIC conversion tables.

Model Source Code

The GENERATE Function includes two COBOL source code templates or masks. The first mask (SYSMASK1.TXT} provides the COBOL source code for sequential processing and should be used when the SYSCOBOL or output file is not an indexed file or when the output is an indexed file and the records are written sequentially by key.

The second mask file (SYSMASK2.TXT) should be used when the output file will be an indexed file and the records are written and the keys may not be in sequential order.

The format of the records in the mask file are as follows.

Columns

Description

01-06

Should be spaces or a keywordSPACES - copy the recordPROGID - the ampersand strings in columns 8-72 will be replaced with the program ID.CNVRT - This record will be replaced with the BUILD-OUTPUT-RECORD logic.OPEN2 - the ampersand string will be replaced with OUTPUT or I-O for open.

07-72

COBOL source code

73-80

ignored.

The Format of the Records in the Mask (or Template) File

Columns 1-6 of each record within each of the records in the SYSMASK file should be spaces or a valid keyword. If Columns 1-6 contains a valid keyword then the statement is processed according to the keyword. Otherwise, the statement is simply copied from the SYSMASK file to the SYSCOBOL file.

Model, Consecutive Access (Load/Extend)

The following (SYSMASK1.txt) is the source code for the mask that does sequential output.

Convert, Consecutive Access (Load/Extend)

Consecutive access of a file will maintain the sequence of the physical records in a file. The file access (reads and writes) can be buffered or cached for faster processing. This is the preferred method of processing if the logical sequence of the output file is not dependent on a key field with an alpha-numeric format that is being converted between ASCII and EBCDIC encoding.

EBCDIC Sequential to ASCII Text

The following (IVP4GFC1.cmd) is the Windows Command file that is used to generate a program that read an EBCDIC Sequential file and creates an ASCII Text file.

This example uses the following control file (SYSCNTL2.pcf) to generate the COBOL source code that does the data file conversion.

***********************************************************************
* SYSCNTL2.CTL - Input Specifications *
* This is an example of the convert specifications to generate a *
* Data File Conversion Program. This is used by SimoZAPS *
* SimoTime Technologies *
* (C) Copyright 1987-2016 All Rights Reserved *
* Web Site URL: http://www.simotime.com *
* e-mail: helpdesk@simotime.com *
***********************************************************************
* SYSUT1 should be a sequential, 80-byte, fixed, ebcdic file. *
* SYSUT2 should be an INDEXED, 256-byte, variable, ascii file *
* with key position at 1 for a key length of 6. *
* *
* The DIALECT statement specifies the use of COBOL/2 compliant code *
* for the generated conversion program. *
* *
* The TransINIT statement will initialize the SYSUT2 record to X'20' *
* or an ASCII SPACE character. This is especially useful when the *
* output record length for SYSUT2 is greater than the input record *
* length of SYSUT1. The hex value is used since the generated program *
* could run on the PC or the mainframe. *
* *
* The VSAMLOAD statement specifies a sequential load or add of *
* records to the indexed (i.e VSAM KSDS) file. If the input records *
* (from SYSUT1) do not provide records in sequence by the key then a *
* write error will occur when an attempt is made to write the record *
* to SYSUT2. The IVP4GFC5.BAT provides an example of an unordered or *
* random load or update of a VSAM Keyed Sequential Data Set. *
***********************************************************************
/Dialect C2
/VSAMload Sequential
/progid ZAP002C1
/sysut1 name=ZAP002D1 org=sequential recfm=fixed rlen=80
/sysut2 name=ZAP002D2 org=indexed recfm=variable rlen=256 klen=6 kpos=1
*
/transmode E2A
/transinit X'20'
/translate From pos 1 len 80 To pos 1 len 80
*
/END

You may
view the COBOL source code
that is generated from the information in the control file (SYSCNTL2.pcf) and the mask file (SYSMASK1.TXT).

EBCDIC Sequential to ASCII Sequential

The following (IVP4GFC3.cmd) is the Windows Command file that is used to generate a program to read an EBCDIC Sequential file and create an ASCII Record Sequential file.

You may
view the COBOL source code
that is generated from the information in the control file (SYSCNTL4.pcf) and the mask file (SYSMASK1.TXT).

Convert, Random Access (Update/Add)

WIP

ASCII Text to EBCDIC Indexed

The following (IVP4GFC5.cmd) is the Windows Command file that is used to generate a program that will read an ASCII/Text file and access an existing ASCII Indexed file or Key-Sequenced-Data-Set (KSDS) to randomly add new records or update existing records.

You may
view the COBOL source code
that is generated from the information in the control file (SYSCNTL5.pcf) and the mask file (SYSMASK2.TXT).

Generate a File Compare Program

This function will generate the COBOL source code for a file comparison program. This generated file comparison program (SYSCOBOL) will read two files (SYSUT1) and (SYSUT2). The format of the two input files (SYSUT1 and SYSUT2) is specified by records contained in a control or specifications file (SYSCNTL).

IVPZFCG1cmd

Start the processing to generate Compare Program

SIMOZAPSutility

Determine if a COMPARE request and call SimoCNVT.

SYSCNTLlseq

SIMOCNVTcompare

SYSCOBOLcbl

Read the specifications from SYSCNTL and use SYSMODEL as a template to create SYSCOBOL.CBL.

SYSMODEL lseq

EOJ

End-Of-Job

Generate a Data File Comparison Program

A Window's Command (.CMD) file is provided for easy execution of SimoZAPS and the "Generate a Comparison Program" function.

The preceding statement will run SimoZAPS and create a COBOL source member that will do a file comparison. The first parameter is the fully-qualified file name for the control file. The second parameter is the name of the COBOL program to be generated. The third parameter is optional and SYSUT3 will cause a COBOL program to be generated that will read a control file (containing /COMPARE statements) at execution time.

SimoZAPS has the ability to generate two types of compare programs. One type determines the positions to be compared at compiled time and the other determines the positions to be compared at execution time. This is covered in more detail in the following sections.

The reading and comparing of the two files are the easy parts. What to compare in each record is determined by the use of a /COMPARE statement in the control file (SYSCNTL for compile time or SYSUT3 for execution time). Multiple /COMPARE statements may be specified in the control files. The following is an example of a /COMPARE statement.

/COMPARE SYSUT1 POS nnnnn LEN nnnn SYSUT2 POS nnnnn LEN nnnn

The maximum length of a text string that may be compared is 1,024 bytes. If a record exceeds this length then multiple /COMPARE statements will be required. If more than 1.024 bytes needs to be compared then multiple "/COMPARE" statements will be required.

Compare Positions Defined at Compile Time

The first type of program will simple read two files and do the comparison of positions within the records base on hard-coded values in the generated program. This type of program has the /COMPARE statements in the same control file (SYSCNTL) that is used to generate the COBOL source code. The positions to be compared will be determined at compile time and become part of the generated source code. The advantage of using this approach is that fewer parameters are required at execution time. The disadvantage of using this approach is that it requires the program to be regenerated and compiled if a user wants to change the positions within the records to be compared.

Prepare a Control File & Generate Program

The following is an example of a control file that will generate the COBOL source code that will compare the contents of two files based on the /COMPARE statements in a control file (SYSCNTL) used at compile time. The compare positions will be included in the generated COBOL source code.

The following is the command to generate a compare program using the preceding control file.

C:\SIMOLIBR> ZAPSCOMP IVPZCPT1spec.CTL CPLS80C1.CBL

Compile the Program

Once the COBOL source code has been generated it needs to be compiled. Since this example uses an ASCII/Text file for input (on the mainframe this would need to be a sequential file) we will use Micro Focus COBOL on a Windows platform to compile the program. We will compile to a .GNT for improved performance over .INT and use the ASSIGN(EXTERNAL) directive for mapping file names when we execute the program.

Execute the Program

The following (CPLS80W1.cmd) is an example of a Windows command file (or batch file) that will set the environment and execute (or run) the program.

Compare Positions Defined at Execute Time

The second type file comparison program will read a control file (SYSUT3) containing /COMPARE statements at execution time and do positional comparisons within the records based on the /COMPARE statements submitted at execution time. The advantage of this approach is the compare positions are defined when the generated COBOL program is executed. The user may change the positions within the record to be compared without having to re-generate and compile the program. The disadvantage is that it is necessary to have a control file with compare statements at execution time.

Prepare a Control File & Generate Program

The following is an example of a control file that will generate the COBOL source code that will compare the contents of two files based on the /COMPARE statements in a control file (SYSUT3) that will be processed when the generated program is executed.

The following is the command to generate a compare program using the preceding control file.

C:\SIMOLIBR> ZAPSCOMP IVPZCPT2spec.CTL CPLS80C2.CBL

Compile the Program

Once the COBOL source code has been generated it needs to be compiled. Since this example uses an ASCII/Text file for input (on the mainframe this would need to be a sequential file) we will use Micro Focus COBOL on a Windows platform to compile the program. We will compile to a .GNT for improved performance over .INT and use the ASSIGN(EXTERNAL) directive for mapping file names when we execute the program.

Execute the Program

The following (CPLS80W3.cmd) is an example of a Windows command file (or batch file) that will set the environment and execute (or run) the program.

The preceding example will generate a Compare Program that will compare the contents of two indexed files or VSAM, Key-Sequenced-Data-Sets (KSDS).

The use of the /KEYFIELD statement will generate program logic to test for missing records. Since this is an indexed file (VSAM, KSDS) and the records are processed sequentially by key then it is possible to check for inserted or deleted records when the compare program is executed.

Compare, Sample Output for Not Equal

What to do when a not equal condition occurs can be challenging on a single platform but in today's environment with multiple platforms and a mix of encoding schemes (such as EBCDIC and ASCII) and numeric formats (such as PACKED and BINARY) the task can become time consuming and difficult.

When a difference is found the type of display or logging information is defined by the use of a /DFORMAT statement in the control file. The following shows the format of the /DFORMAT statement.

/DFORMAT ASC HEX EBCNOASC NOHEX NOEBC

SimoZAPS does not actually do the data file comparison but generates a COBOL program to do the comparison. This technique provides greater flexibility since the COBOL program may be compiled on an IBM mainframe (z/OS or VSE) and Windows or UNIX using Micro Focus. Also, unique comparison requirements may be addressed by simply modifying the generated COBOL program.

The generated comparison program provides support for Keyed data sets and Sequential files. For Keyed data sets support is included for inserted, added or deleted records. If Sequential files are in sequence by a certain field then support for inserted, added or deleted records is provided. For files not in sequence a record by record comparison is performed.

It is possible to compare parts or segments of a record.

When a not equal condition is encountered the following is displayed to the screen and written to a logging file. The RED shows the possible ASCII translation. The BLUE shows the
possible EBCDIC translation. The BLACK shows the hexadecimal dump information on two lines (high nibble on line 1, low nibble on line 2). The GREEN shows reference information
about each file. For example, the relative record number is displayed along with the position and length of the text string within the record that was compared. The MAROON row shows the positions that are equal (=) or
not equal (#).

This keyword=parameter defines the 8-character (or less) DD name for SYSUT1. The default value is SYSUT1..name=SEQINPUT defines the DDNAME for SYSUT1

org

This keyword=parameter defines the file organization.org=SEQUENTIAL defines a sequential file.org=INDEXED defines a a keyed-index file or VSAM Data Set (KSDS).org=ASCII/CRLF defines an ASCII/Text file with Carriage Return and
Line Feed used as record separators.org=ASCII/TEXT is the same as ASCII/CRLF.

recfm

This keyword=parameter defines the format of the records within the file.recfm=FIXED defines the records as fixed length.recfm=VARIABLE defines the records as variable length

rlen

This keyword=parameter defines the fixed record length of each record in the file.rlen=nnnnn where nnnnn is the fixed record length. For variable length records refer to RMIN and RMAX.

rmin

This keyword=parameter defines the minimum record length of records in the file.rmin=nnnnn where nnnnn is the minimum record length. For fixed record length files refer to RLEN.

rmax

This keyword=parameter defines the maximum record length of records in the file.rmax=nnnnn where nnnnn is the maximum record length. For fixed record length files refer to RLEN.

block

This keyword=parameter defines the block length.block=nnnnn where nnnnn is the block length

klen

This keyword=parameter defines the length of the key.klen=nnnnn where nnnnn is the key length.

kpos

This keyword=parameter defines the starting postion of the key within the record.kpos=nnnnn where nnnnn is the key starting position within a record.

recmode

This keyword will cause the RECORDING MODE to be added to the FD statement using the RECFM value.

recvary

This keyword will cause the RECORD VARYING to be added to the FD statement using the RMIN and RMAX values. This will add the DEPENDING ON to the FD statement using the eight-byte filename-LRECL field name.

This keyword=parameter defines the 8-character (or less) DD name for SYSUT2. The default value is SYSUT2..name=TEMPOUT defines the DDNAME for SYSUT2.

org

This keyword=parameter defines the file organization.org=SEQUENTIAL defines a sequential file.org=INDEXED defines a a keyed-index file or VSAM Data Set (KSDS).org=ASCII/CRLF defines an ASCII/Text file with Carriage Return and
Line Feed used as record separators.org=ASCII/TEXT is the same as ASCII/CRLF.

recfm

This keyword=parameter defines the format of the records within the file.recfm=FIXED defines the records as fixed length.recfm=VARIABLE defines the records as variable length

rlen

This keyword=parameter defines the fixed record length of each record in the file.rlen=nnnnn where nnnnn is the fixed record length. For variable length records refer to RMIN and RMAX.

rmin

This keyword=parameter defines the minimum record length of records in the file.rmin=nnnnn where nnnnn is the minimum record length. For fixed record length files refer to RLEN.

rmax

This keyword=parameter defines the maximum record length of records in the file.rmax=nnnnn where nnnnn is the maximum record length. For fixed record length files refer to RLEN.

block

This keyword=parameter defines the block length.block=nnnnn where nnnnn is the block length

klen

This keyword=parameter defines the length of the key.klen=nnnnn where nnnnn is the key length.

kpos

This keyword=parameter defines the starting postion of the key within the record.kpos=nnnnn where nnnnn is the key starting position within a record.

recmode

This keyword will cause the RECORDING MODE to be added to the FD statement using the RECFM value.

recvary

This keyword will cause the RECORD VARYING to be added to the FD statement using the RMIN and RMAX values. This will add the DEPENDING ON to the FD statement using the eight-byte filename-LRECL field name.

/UT1OMIT

IF POS nnnn LEN nnnn EQ xxxx BYPASS RECORD +nnn

IF

Conditional keyword

POS nnnn

Position within the record to start the compare (for SYSUT1)

LEN nnnn

Length of the text string to compare (for SYSUT1)

BYPASS

This is the action to be performed if the condition is true. BYPASS is the default.

RECORD

Identifies what is to be omitted, RECORD is the default.

+nnn

Specifies the number of additional records to omit or bypass.

/UT2OMIT

IF POS nnnn LEN nnnn EQ xxxx BYPASS RECORD +nnn

IF

Conditional keyword

POS nnnn

Position within the record to start the compare (for SYSUT2)

LEN nnnn

Length of the text string to compare (for SYSUT2)

BYPASS

This is the action to be performed if the condition is true. BYPASS is the default.

RECORD

Identifies what is to be omitted, RECORD is the default.

+nnn

Specifies the number of additional records to omit or bypass.

/UT1CALL

The name of a callable translation routine to be executed immediatley after a read of a SYSUT1 record.

/UT2CALL

The name of a callable translation routine to be executed immediatley after a read of a SYSUT2 record.

/DELTAMAX

Parm-1

The first parameter must be a numeric value, five (5) digits or less).

nnnnn

where nnnnn is the maximum number of differences before comparing will stop

Parm-2

The second parameter must be one of the following two values.

EOF

When DELTAMSX is reached or exceeded continue to read and count records until end-of-file.

QUIT

When DELTAMSX is reached or exceeded close files and quit.

/KEYFIELD

SYSUT1 POS nnnn LEN nnnn SYSUT2 POS nnnn LEN nnnn

SYSUT1

References the first file

POS nnnn

Position within the record to start the compare (for SYSUT1)

LEN nnnn

Length of the text string to compare (for SYSUT1)

SYSUT2

References the second file

POS nnnn

Position within the record to start the compare (for SYSUT2)

LEN nnnn

Length of the text string to compare (for SYSUT2)

/COMPARE

compare_type SYSUT1 POS nnnn LEN nnnn SYSUT2 POS nnnn LEN nnnn

compare_type

PHYSICAL or LOGICAL keyword, if missing the default is PHYSICAL

PHYSICAL

A physical compare requires the bit-patterns of each byte to be the same in order to get an equal compare results.

LOGICAL

An equal compare can result if the bit-patterns of each byte are the same or if the logical charater of the encoding schemas (or character set) match.

SYSUT1

References the first file

POS nnnn

Position within the record to start the compare (for SYSUT1)

LEN nnnn

Length of the text string to compare (for SYSUT1)

SYSUT2

References the second file

POS nnnn

Position within the record to start the compare (for SYSUT2)

LEN nnnn

Length of the text string to compare (for SYSUT2)

Note: It is possible to have more than one compare statement. The maximum length for each compare string is 1,024 bytes.
Therefore, if a record is longer that 1,024 bytes it will require multiple compare statements.

/DFORMAT

ASC HEX EBC

ASC

Show the possible ASCII translation, NOASC will not show the possible ASCII translation.

HEX

Show the hexadecimal value of two lines, NOHEX will not show the hexidecimal value.

EBC

Show the possible EBCDIC translation, NOEBC will not show the possible EBCDIC translation.

/SYSLOG

ENABLE, DISABLE or SYSPROBE

/DISPLAY

NONE, SYSOUT or CONSOLE

/END

End of control statements, this statement is optional.

Compare, Create Test Data

The following (CPMK80W8.cmd) is an example of a Windows Command File that will create test data for the compare process of files with 80 byte records.

Translate Function, 80/80 Convert

This procedure will read an ASCII/Text file and create an EBCDIC, 80-byte, fixed-record-length file. The intent of this function is to convert the many "control card" files used in a mainframe job stream. It is an 80/80 copy with conversion between EBCDIC and ASCII.

The following is a summary of the parameters used by the Translate Function.

Parameter

Description

sysin

This is the name of the input file. Depending on the ASCtoEBC or EBCtoASC parameter this will be an ASCII/Text file or an 80-byte EBCDIC file.

sysout

This is the name of the output file. Depending on the ASCtoEBC or EBCtoASC parameter this will be an 80-byte EBCDIC file or an ASCII/Text file.

ASCtoEBCEBCtoASCASCtoA80

This keyword/parameter will explicitly define the format of the output file. The format of the input file is implicitly defined, it is the complement of the output file. If this keyword/parameter is missing then ASCtoEBC is the default value.ASCtoEBC - copy from an ASCII/Text file to an 80-byte, fixed-length, EBCDIC file.EBCtoASC - copy from an 80-byte, fixed-length, EBCDIC file to an ASCII/Text file to .ASCtoA80 - copy from an ASCII/Text file to an 80-byte, fixed-length, ASCII file.

NODISPLAYorDISPLAY

This keyword/parameter provides the capability of displaying the records from the input file as they are being converted. If this keyword/parameter is missing then NODISPLAY is the default value.

KEEPNULLSorPADNULLS

This keyword/parameter provides the capability of leaving null values (low-values or hex'00') unchanged or converting null values to spaces. If the keyword/parameter is missing then KEEPNULLS is the default value.

Parameters used by the Translate 80/80 Function

For additional file conversion capability refer to the
Generate a Data File Conversion Program
section of this document. This additional file convert function of SimoZAPS does not do the actual conversion of a file. It creates a COBOL source member that may be compiled and executed on a Mainframe System or a Windows, UNIX or Linux System with Micro Focus COBOL.

Modify Function

The MODIFY function of SimoZAPS provides the capability of copying an ASCII/Text file with include, omit or modify capability. As the SYSIN file is being read a record may be selected (included or omitted) based on content for writing to the SYSOUT file. Prior to writing a record to the SYSOUT file the record may be changed using the keyword/parameter combinations described below.

The following is the command line format for the MODIFY function of SimoZAPS.

SIMOZAPS MODIFYsysin sysoutCOMMANDkeyword parameters

or

SIMOZAPS MODIFYsysin sysoutLISTFILEfilename.ext

Note: the COMMAND keyword may be abbreviated as CMD and the LISTFILE keyword may be abbreviated as LIST or FILE.

The following keyword/parameters are used to include or omit records.

Keyword

Parameters

INCLUDE

IF position EQ literal AND CASE [IGNORE /MATCH ]

OMIT

IF position EQ literal AND CASE [IGNORE /MATCH ]

Include and/or Omit Records based on a Positional Value

The following keyword/parameters are used to format each record.

Keyword

Parameters

APPEND

literal-1

COMPRESS

FROM position-1 TO position-2

COPYNOW

IF position EQ literal AND CASE [IGNORE /MATCH ]

FORCE

literal-1 AT position-1

INSERT

literal-1 AT position-1

REMOVE

FROM position-1 TO position-2

REPEAT

FROM position-1 TO position-2 AT position-3

REPLACE

[FIRST /ALL /VARIABLE] value-1 WITH value-2Note: For FIRST and ALLvalue-1 and value-2 must be the same length.For VARIABLE the information after value-1 will be shifted if the values are different lengths. The following shows the two formats for the VARIABLE replacement function.VARIABLEvalue-1WITHvalue-2VARIABLEvalue-1DROP If the DROP keyword is specified and value-2 is not specified the specified variable string will be dropped from the output.

SEQUENCE

FROM position-1 TO position-2 by value-1

TOLOWER

FROM position-1 TO position-2

TOUPPER

FROM position-1 TO position-2

Record Content Modification

Capabilities, Possibilities & Limitations

This section will describe how and when to use the SimoZAPS utility program. Practical examples will be used.

When specifying literals with leading, embedded or trailing spaces it will be necessary to place the literal within a pair of double-quotes. Since double-quotes are used to define the beginning and end of a literal then a literal that contains double-quotes cannot be specified.

When specifying values with the percent sign (%) the results may not be as anticipated if using the COMMAND function.

Item

Description

1

When using the COMMAND function the actual percent value will be substituted.

2

When using a LISTFILE the percent string literal will be substituted.

Considerations when using the Modify Function

When multiple statements that use conditional arguments are specified then consideration should be given to the sequence of the statements with the longest search arguments being specified first if subsequent shorter search argument contain identical text strings. For example, changing the sequence of the following two statements would produce different results because in the first sequence the value "ABCDEF" would never to be found.

Keyword

Description

INCLUDE

IF 1 EQ "ABC" AND CASE MATCH

OMIT

IF 1 EQ "ABCDEF" AND CASE MATCH

Considerations when using Multiple Condition Statements

Change a Text String

This section will describe how to use the MODIFY function of SimoZAPS to make a global change to a text string in an ASCII/Text file.

IVP4ZAP1cmd

Start the processing for Search/Replace

IVP4ZAP1TXT

SIMOZAPScbl

IVP4ZAP1NEW

Use the MODIFY function to create a new file replacing occurrences of " zap " with " SimoZAP1 "

The IVP4ZAP1.cmd will execute the SimoZAPS program with the MODIFY function. The CMD parameter indicates the additional parameters are included in the command line. In this example the text string " zap " will be replaced with " " SimoZAP1 " when the file is copied.

The keyword is zap
Repeat keyword is zap
The keyword should be replaced with SimoZAP1.
If successful the new keyword should be SimoZAP1.

After running IVP4ZAP1.cmd the new file (TXT4ZAP1.new) should have the text string " zap " replaced with " SimoZAP1 ".

Member Names in Lower Case

One of the problems we encountered when building our Web site was the naming of the members within a directory. Windows is not case sensitive to member names but UNIX systems are case sensitive to member names. We developed the Web site on a Windows platform and everything worked fine. After uploading the files to the UNIX server we encountered many missing links even though the members were copied to the UNIX server. The missing links were due to the case sensitivity for member names.

The following is an example of using the MODIFY function of SimoZAPS to create a batch file to ensure the member names within our Web directory are all lower case. There are other ways to do this but the purpose here is to illustrate the capabilities of the SimoZAPS utility.

CAUTION!!! A back-up copy of the target directory should be created prior to executing this type of process.

IVP4ZAP2cmd

Start the processing to rename Member Names

DIRcmd

SYSWORK2lseq

Create a file with a list of member names

TXT4ZAP2lseq

SIMOZAPScbl

DOITONCElseq

Read the list of member names and create a new executable CMD file

SYSWORK2 lseq

EOJ

End-Of-Job

Changing Member Names into Lower Case

The following is the IVP4ZAP2.cmd file referenced in the preceding figure.

The following is the contents of the TXT4ZAP2.txt file used by the MODIFY function of SimoZAPS.

*
* The following control statements will create a DOS
* Command to rename a member using lower case.
*
omit if 1 eq *
repeat from 1 to 12 at 14
toupper from 1 to 12
tolower from 14 to 25
*
* The following statement may need to be modified to point
* to the proper drive and directory.
*
insert "c:\simozaps\" at 1
*
* The following statement is required to do the renaming
* from mixed or upper case to all lower case.
*
insert "rename " at 1
*

In the preceding example the MODIFY function of SimoZAPS does not actually do the task of renaming the members in the directory to ensure a lower-case format. The MODIFY function of SimoZAPS is used to create the DOITONCE.CMD file that will do the actual task.

Format COBOL Source Code

This program will read an ASCII/Text file of COBOL source code and format in UPPER/lower case. It will create a SYSOUT file in the new format, the original file is unchanged.

CAUTION!!! A back-up copy of the target directory should be created prior to executing this type of process.

or NoDisplay, Display is the default value and as the sysin is read the records will be displayed to the screen. If NoDisplay is specified the records will not be displayed to the screen.

CobolLower

or CobolUpper, CobolLower is the default value and the COBOL verbs will be changed to lower case. If CobolUpper is specified the COBOL verbs will be changed to upper case.

NameUpper

or NamesLower, NamesUpper is the default value and the names will be changed to upper case. If NamesLower is specified the names will be changed to lower case.

Command Line Format and Parameter Descriptions

COBOL Code, Case Consistency

This section will describe how to use the FormatCOBOL function of SimoZAPS to read a COBOL source member and create a new file with case consistency. The following shows the contents of the IVP4ZAP3.cmd file.

In the preceding example the FormatCOBOL function will read the HELLO.CBL member and create a new HELLO.NEW file with case consistency. The "nodisplay" option suppresses the scrolling of source code on the screen.

In the new COBOL.NEW file the COBOL verbs will be lower case and the user defined fields will be upper case.

Summary

The SIMOZAPS Utility Program is intended to assist programmers in performing a variety of utilitarian tasks when working with non-relational data structures. 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 document and the links to other documents are intended to provide a greater awareness of the Data Management and Application Processing alternatives.

The 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 send an e-mail to: helpdesk@simotime.com or call 415 883-6565. We appreciate hearing from you.

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.

Purchases, 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.

Current Server or Internet Access

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

The SimoZAPS program, the documentation, the Installation Verification Procedures (IVP's) and examples are provided electronically or on a Compact Disk (CD) with a predefined SETUP procedure. Additional information about acquiring SimoZAPS may be obtained by contacting
the helpdesk at SimoTime
or refer to the
Product Availability
and Pricing document.

Explore the Principles of Data File Conversion. This link includes guidelines for defining requirements and determining the scope of effort for a data conversion effort.

Explore How to Generate a Data File Convert Program using simple specification statements in a Process Control File (PCF). This link to the User Guide includes the information necessary to create a Process Control File and generate the COBOL programs that will do the actual data file conversion. The User Guide contains a list of the PCF statements that are used for the data file convert process.

Explore the Principles of Data File Validation. This link includes guidelines for defining requirements and determining the scope of effort for a data validation effort. This effort includes a data file compare process, a technique for accumulating summary totals with a record count and a technique for reading a VSAM, KSDS and producing a hex-dump output based on a list of user-defined keys.

Explore How to Generate a Data File Compare, Validate or Hex-Dump Program using simple specification statements in a Process Control File (PCF). This link to the User Guide includes the information necessary to create a Process Control File and generate the COBOL programs that will do a data file compare, accumulate summary totals with a record count or produce a Hex-Dump of records in a VSAM, KSDS based on a list of user-defined keys. The User Guide contains a list of the PCF statements that are used for the data file compare, validate or dump process.

Explore the COBOL Connection for more examples of COBOL programming techniques and sample code.

Explore the non-Relational Data Connection for more examples of accessing methodologies and coding techniques for Data Files and VSAM Data Sets.

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.

Convert from an ASCII-Text file to an EBCDIC-Indexed file (Random-Add).

A List of Sample Conversion Programs Generated by SIMOZAPS

Internet Access Required

The following links will require an internet connect.

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 and services available from Micro Focus. This link requires an Internet Connection.

Glossary of Terms

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

Comments or Feedback

This document was created and is copyrighted and maintained by SimoTime Technologies.

If you have any questions, suggestions, comments or feedback please call or send an e-mail to: helpdesk@simotime.com

We appreciate hearing from you.

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 or need assistance with converting non-relational data structures simply give us a call at 415 883-6565 or check the web site at http://www.simotime.com