|
|
COBOL
Numeric Formats Converting Numeric Formats using COBOL http://www.simotime.com |
| When technology complements business | Copyright © 1987-2010 SimoTime Enterprises All Rights Reserved |
This suite of example programs describes how to convert between the various numeric formats (or data types such as DISPLAY, COMP, COMP-3 and BINARY) used with COBOL and on an IBM Mainframe System. This example also illustrates how to display the actual hexadecimal content of a numeric field using a callable dump routine.
This example includes JCL for execution in a Mainframe-oriented environment such as an actual IBM Mainframe running ZOS or a Micro Focus environment such as Mainframe Express or Server Enterprise Edition. A CMD file is included for executing in a Windows environment with Micro Focus COBOL.
In the wonderful world of programming there are many ways to solve a problem. This suite of programs is provided as a COBOL example of one of the possible solutions to the problem of determining the actual format, content and length of a numeric field and converting to a different format.
This example illustrates the following functions.
| 1. | Describe the commonly used Numeric field formats available in COBOL. |
| 2. | Describe the internal structure of the Numeric fields. |
| 3. | Show how to dump the actual hexadecimal value of a numeric field. |
| 4. | Show how to convert a simple packed numeric field to a display numeric field. |
| 5. | Show how to convert a packed numeric field with three (3) decimal positions to a display numeric field with two (2) decimal positions. |
| 6. | Provide an example of mainframe JCL to run the job on Windows using Micro Focus Mainframe Express (MFE) . |
| 7. | Provide an example of a Window's CMD file to run the job on Windows using Micro Focus Net Express. |
| 8. | Maintain a single set of COBOL source code that will run on OS/390, Widows and UNIX. |
| 9. | Show how to convert various numeric fields to an edited text field that may be exported for use in an Excel spreadsheet. Refer to Examples 104, 204 and 304. |
This suite of example programs will run on the following platforms.
| 1. | Executes on an IBM Mainframe running MVS or OS/390. The COBOL programs comply with ANSI/85 and run with COBOL/2, COBOL for MVS and COBOL for OS/390. |
| 2. | Executes on Windows/NT and Windows/XP using Micro Focus Mainframe Express (MFE). |
| 3. | Executes on Windows/NT and Windows/XP using Micro Focus Net Express and the CMD file provided. |
| 4. | May be ported to run on the UNIX platforms supported by Micro Focus COBOL. |
The following is a flowchart of the job for executing the programs that show the conversion between the various numeric field types. The NBRCVTJ1 and IEFBR14 members (identified by the blue boxes) are unique to the mainframe and Micro Focus Mainframe Express (MFE). The NBRCVTE1 member (identified by the red box) is unique to the Windows platform using Micro Focus Net Express. The COBOL members (identified by the green boxes) are coded to the ANSI/85 standard and run on an IBM Mainframe (with OS/390) or Windows (with Micro Focus COBOL).
|
|
Entry Points | |||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
JCL or CMD with an optional DD or SET statement to write to a log file. | |||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
This member is a COBOL Demonstration program that calls the actual Hexadecimal Dump routine. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
The SIMODUMP member is a COBOL Hexadecimal Dump routine that displays the dump information on the screen. The dump information is only displayed if the SIMODUMP-SYSOUT field contains SHOW or BOTH. | |||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
The SIMOLOGS member is a COBOL Write-to-Log routine that writes the dump information to a log file. This routine is only called if the SIMODUMP-REQUEST field contains FILE or BOTH. | |||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
The following is a sample of the Dump information produced on an IBM Mainframe or Micro Focus Mainframe Express on the PC. This is an EBCDIC encoded environment.
Offset Hex..... ........ ........ ........ ebcdic.......... ascii........... 1-016 F0F0F1F2 F3xxxxxx xxxxxxxx xxxxxxxx 00123........... ................
The following is a sample of the Dump information produced on a PC with Micro Focus COBOL and Net Express, version 4.0. This is an ASCII encoded environment.
Offset Hex..... ........ ........ ........ ebcdic.......... ascii........... 1-016 30303132 33xxxxxx xxxxxxxx xxxxxxxx ................ 00123...........
For more information about the Hex-Dump format refer to the Hexadecimal Dump Format section of this document.
The following sections describe the various numeric field formats with techniques for displaying the contents of the actual value (hexadecimal) as stored in memory.
The three most common mainframe numeric encoding formats are Zoned-Decimal, Packed-Decimal and Binary. The following shows how the numeric fields would be defined in a COBOL WORKING-STORAGE SECTION.
| Numeric Field Type | Coding Syntax | Normally Coded (Minimum) |
| Binary (alternate coding technique) |
USAGE IS COMPUTATIONAL USAGE IS BINARY |
COMP BINARY |
| Packed Decimal | USAGE IS COMPUTATIONAL-3 | COMP-3 |
| Zoned Decimal | USAGE IS DISPLAY | Left blank, this is the default |
The following is an example of actual COBOL source code.
* The following two lines show the syntax for a binary field,
* 1st line is full syntax, 2nd line is normally coded syntax.
01 NUMERIC-BINARY-FULL PIC S9(5)V99 USAGE IS COMPUTATIONAL.
01 NUMERIC-BINARY-NORM PIC S9(5)V99 COMP.
* The following two lines show the syntax for a packed field,
* 1st line is full syntax, 2nd line is normally coded syntax.
01 NUMERIC-PACKED-FULL PIC S9(5)V99 USAGE IS COMPUTATIONAL-3.
01 NUMERIC-PACKED-NORM PIC S9(5)V99 COMP-3.
* The following two lines show the syntax for a zoned field,
* 1st line is full syntax, 2nd line is normally coded syntax.
01 NUMERIC-ZONED-FULL PIC S9(5)V99 USAGE IS DISPLAY.
01 NUMERIC-ZONED-NORM PIC S9(5)V99.
The following shows the picture (PIC) clause, how the item is displayed using the DISPLAY verb, the field as it is stored in memory for an EBCDIC environment, the field as it would be stored in memory for an ASCII environment
| Picture Clause | DISPLAY | Memory Content (EBCDIC) | Memory Content (ASCII) |
| PIC 9(5) | 00123 | F0F0F1F2F3 | 3030313233 |
| PIC S9(5) plus | 00123 | F0F0F1F2C3 | 3303013233 |
| PIC S9(5) minus | 00123- | F0F0F1F2D3 | 3030313273 |
| PIC S9(5) COMP-3 plus | 00123 | 00123C | 00123C |
| PIC S9(5) COMP-3 minus | 00123- | 00123D | 00123D |
| PIC S9(5) COMP plus | 00123 | 0000007B | 00007B |
| PIC S9(5) COMP minus | 00123- | FFFFFF85 | FFFF85 |
In addition to the ASCII and EBCDIC differences it is important to note the hardware differences. Most COBOL compilers hide this level of processing. However, it occasionally shows up as a problem.
Big Endian - within a multi-byte numeric representation the most significant byte has the lowest address. Processors such as the IBM 370 family, the PDP-10, the Motorola microprocessor family, and most of the various RISC architectures are big-endian.
Little Endian - within a sixteen or thirty-two bit word the bytes at lower addresses have lower significance. Processors such as the PDP-11 and VAX family of computers, the Intel microprocessors, and much of the communications and networking hardware are little-endian.
The following is an example of the Dump information produced on an IBM Mainframe or Micro Focus Mainframe Express on the PC that works with EBCDIC. The hexadecimal information is (highlighted in green) The possible translated, displayable EBCDIC characters are (highlighted in blue). The possible translated, displayable ASCII characters are (highlighted in red).
If the sample program is executed in the PC, ASCII environment the following would be displayed and written to the log file.
*** 2008/05/22 09:23:42:10 * Dump0001 * *** 2008/05/22 09:23:42:10 * Dump0001 ******************************************************************** *** 2008/05/22 09:23:42:10 * Dump0001 Starting Convert Packed to Display *** 2008/05/22 09:23:42:10 * Dump0001 Starting... Length = 0003 *** 2008/05/22 09:23:42:10 * Offset Hex..... ........ ........ ........ ebcdic.......... ascii........... *** 2008/05/22 09:23:42:10 * 1-016 00123Fxx xxxxxxxx xxxxxxxx xxxxxxxx ................ ..?............. *** 2008/05/22 09:23:42:10 * Dump0001 Complete... Length = 0003 *** 2008/05/22 09:23:42:10 * Dump0001 Starting... Length = 0005 *** 2008/05/22 09:23:42:10 * Offset Hex..... ........ ........ ........ ebcdic.......... ascii........... *** 2008/05/22 09:23:42:10 * 1-016 30303132 33xxxxxx xxxxxxxx xxxxxxxx ................ 00123........... *** 2008/05/22 09:23:42:10 * Dump0001 Complete... Length = 0005 *** 2008/05/22 09:23:42:10 * Dump0001 Finished Convert Packed to Display
Numeric formats quite often require a conversion to another numeric format or data type prior to being printed, displayed or exported to a non-mainframe or non-COBOL environment. The Zoned-Decimal format may be used as the result field of a conversion process, for COBOL this is explicitly coded or defaulted as "USAGE IS DISPLAY".
This approach will work for unsigned numbers with zero decimal positions. If a signed number or an explicit decimal is required then a different data type will be required for the result of a conversion process. For this requirement an edited numeric result field may be used.
The following links will provide additional information about Data File Conversion between ASCII and EBCDIC or Mainframe Numeric encoding and Windows or UNIX numeric Encoding.
http://www.simotime.com/cbldfc01.htm
http://www.simotime.com/simorec1.htm#ProgrammingConsiderationsLimitations
This section provides various examples of converting different types of numeric fields. The IBM Mainframe and the COBOL programming language support a variety of numeric formats and each has its advantages and disadvantages. Refer to the Downloads and Links to Similar Pages section of this document for links that provide additional detail about numeric formats.
This example will show the process for converting a packed-numeric format (COMPUTATIONAL-3 or COMP-3) to a display format. The Source Field is defined as a Packed (or COMP-3) and the result fields are "USAGE IS DISPLAY" or a numeric edited field.
This example will show the process for converting a packed-numeric format to a display format. The Source Field is defined as a Packed (or COMP-3) field with 5 digits and zero decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 PACK-DECIMAL-UNSIGN pic 9(5) COMP-3.
The Result Field is defined as a Display field with 5 digits and zero decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 DISPLAY-UNSIGN PIC 9(5) VALUE 0.
The following PROCEDURE DIVISION statement shows how to convert from a PACKED to a DISPLAY (or unsigned Zoned-Decimal) numeric value.
add PACK-DECIMAL-UNSIGN to ZERO giving DISPLAY-UNSIGN
The process of adding the packed field to zero giving a result in a display field is the same as doing an unpack of the packed field into a zoned-decimal (or display) field. Refer to COBOL Routine for Example-101 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a packed-numeric format to a display (or zoned-decimal) format. The fewer decimal positions of the result field will cause the numeric value to be truncated. The Result field is also defined with a SIGN TRAILING SEPARATE that creates an additional byte to the field for the sign.
The Source Field is defined as a Packed (or COMP-3) field with 6 digits and 3 decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 PACK-DECIMAL-SIGN-6-3 pic S9(6)V999 COMP-3.
The Result Field is defined as a Zoned Decimal (or USAGE IS DISPLAY) field with 7 digits and 2 decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 DISPLAY-SIGN-7-2 PIC S9(7)V99 SIGN TRAILING SEPARATE.
The following PROCEDURE DIVISION statement shows how to convert from a PACKED to a DISPLAY (with SIGN TRAILING SEPARATE) numeric value.
add PACK-DECIMAL-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2
Refer to COBOL Routine for Example-102 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a packed-numeric format to a display (or zoned-decimal) format. The fewer decimal positions of the result field will be rounded because of the ROUNDED keyword on the ADD statement. The Result field is also defined with a SIGN TRAILING SEPARATE that creates an additional byte to the field for the sign.
The Source Field is defined as a Packed (or COMP-3) field with 6 digits and 3 decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 PACK-DECIMAL-SIGN-6-3 pic S9(6)V999 COMP-3.
The Result Field is defined as a Zoned Decimal (or USAGE IS DISPLAY) field with 7 digits and 2 decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 DISPLAY-SIGN-7-2 PIC S9(7)V99 SIGN TRAILING SEPARATE.
The following PROCEDURE DIVISION statement shows how to convert from a PACKED to a DISPLAY (with SIGN TRAILING SEPARATE) numeric value.
add PACK-DECIMAL-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2 ROUNDED
Refer to COBOL Routine for Example-103 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a packed-numeric format to an edited numeric format. The fewer decimal positions of the result field will be rounded because of the ROUNDED keyword on the ADD statement. The mask for the Result field will cause an explicit decimal point to be inserted.
The Source Field is defined as a Packed (or COMP-3) field with 6 digits and 3 decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 PACK-DECIMAL-SIGN-6-3 pic S9(6)V999 COMP-3.
The Result Field is defined as a Zoned Decimal (or USAGE IS DISPLAY) field with 7 digits and 2 decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 EDIT-FIELD-7-2 pic Z,ZZZ,ZZZ.99+.
The following PROCEDURE DIVISION statement shows how to convert from a PACKED to a EDITED numeric value.
add PACK-DECIMAL-SIGN-6-3 to ZERO
giving EDIT-FIELD-7-2 ROUNDED
Refer to COBOL Routine for Example-104 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a BINARY numeric format (COMPUTATIONAL or COMP) to a display format. The Source Field is defined as a BINARY (or COMP) and the result fields are "USAGE IS DISPLAY" or a numeric edited field.
This example will show the process for converting a binary numeric format to a display (or zoned-decimal) format. The Source Field is defined as a Binary (or COMP) field with 5 digits and zero decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 BINARY-UNSIGN pic 9(9) COMP VALUE 0.
The Result Field is defined as a Zoned Decimal (or USAGE IS DISPLAY) field with 5 digits and zero decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 DISPLAY-UNSIGN PIC 9(5) VALUE 0.
The following PROCEDURE DIVISION statement shows how to convert from a BINARY to a DISPLAY (or unsigned Zoned-Decimal) numeric value.
add BINARY-UNSIGN to ZERO giving DISPLAY-UNSIGN
Refer to COBOL Routine for Example-201 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a binary numeric format to a display (or zoned-decimal) format. The fewer decimal positions of the result field will cause the numeric value to be truncated. The Result field is also defined with a SIGN TRAILING SEPARATE that creates an additional byte to the field for the sign.
The Source Field is defined as a Binary (or COMP) field with 6 digits and 3 decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 BINARY-SIGN-6-3 pic S9(6)V999 COMP VALUE 0.
The Result Field is defined as a Zoned Decimal (or USAGE IS DISPLAY) field with 7 digits and 2 decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 DISPLAY-SIGN-7-2 PIC S9(7)V99 SIGN TRAILING SEPARATE.
The following PROCEDURE DIVISION statement shows how to convert from a BINARY to a DISPLAY (with SIGN TRAILING SEPARATE) numeric value.
add BINARY-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2
Refer to COBOL Routine for Example-202 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a binary numeric format to a display (or zoned-decimal) format. The fewer decimal positions of the result field will be rounded because of the ROUNDED keyword on the ADD statement. The Result field is also defined with a SIGN TRAILING SEPARATE that creates an additional byte to the field for the sign.
The Source Field is defined as a Binary (or COMP) field with 6 digits and 3 decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 BINARY-SIGN-6-3 pic S9(6)V999 COMP VALUE 0.
The Result Field is defined as a Zoned Decimal (or USAGE IS DISPLAY) field with 7 digits and 2 decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 DISPLAY-SIGN-7-2 PIC S9(7)V99 SIGN TRAILING SEPARATE.
The following PROCEDURE DIVISION statement shows how to convert from a BINARY to a DISPLAY (with SIGN TRAILING SEPARATE) numeric value.
add BINARY-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2 ROUNDED
Refer to COBOL Routine for Example-203 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a binary numeric format to an edited numeric format. The fewer decimal positions of the result field will be rounded because of the ROUNDED keyword on the ADD statement. The mask for the Result field will cause an explicit decimal point to be inserted.
The Source Field is defined as a Binary (or COMP) field with 6 digits and 3 decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 BINARY-SIGN-6-3 pic S9(6)V999 COMP VALUE 0.
The Result Field is defined as a Zoned Decimal (or USAGE IS DISPLAY) field with 7 digits and 2 decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 EDIT-FIELD-7-2 pic Z,ZZZ,ZZZ.99+.
The following PROCEDURE DIVISION statement shows how to convert from a BINARY to a EDITED numeric value.
add BINARY-SIGN-6-3 to ZERO
giving EDIT-FIELD-7-2 ROUNDED
Refer to COBOL Routine for Example-204 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a zoned-decimal-numeric format (USAGE IS DISPLAY) to a display format. The Source Field is defined as a Zoned-Decimal (or USAGE IS DISPLAY) and the result fields are "USAGE IS DISPLAY" or a numeric edited field.
This example will show the process for converting a zoned-decimal-numeric format to a display (or zoned-decimal) format. The Source Field is defined as a Zoned-Decimal (or USAGE IS DISPLAY) field with 5 digits and zero decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 ZONED-DECIMAL-UNSIGN pic 9(5) VALUE 0.
The Result Field is defined as a Zoned Decimal (or USAGE IS DISPLAY) field with 5 digits and zero decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 DISPLAY-UNSIGN PIC 9(5) VALUE 0.
The following PROCEDURE DIVISION statement shows how to convert from a ZONED-DECIMAL to a DISPLAY (or unsigned Zoned-Decimal) numeric value. Since this example uses an unsigned number the conversion is the same as a simple move. The source field content is already in a display format.
add ZONED-DECIMAL-UNSIGN to ZERO giving DISPLAY-UNSIGN
Refer to COBOL Routine for Example-301 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a zoned-decimal-numeric format to a display format. The fewer decimal positions of the result field will cause the numeric value to be truncated. The Result field is also defined with a SIGN TRAILING SEPARATE that creates an additional byte to the field for the sign.
The Source Field is defined as a Zoned Decimal field with 6 digits and 3 decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 ZONED-DECIMAL-SIGN-6-3 pic S9(6)V999 VALUE 0.
The Result Field is defined as a Display field with 7 digits and 2 decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 DISPLAY-SIGN-7-2 PIC S9(7)V99 SIGN TRAILING SEPARATE.
The following PROCEDURE DIVISION statement shows how to convert from a ZONED-DECIMAL to a DISPLAY (with SIGN TRAILING SEPARATE) numeric value.
add ZONED-DECIMAL-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2
Refer to COBOL Routine for Example-302 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a zoned-decimal-numeric format to a display format. The fewer decimal positions of the result field will be rounded because of the ROUNDED keyword on the ADD statement. The Result field is also defined with a SIGN TRAILING SEPARATE that creates an additional byte to the field for the sign.
The Source Field is defined as a Zoned Decimal field with 6 digits and 3 decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 ZONED-DECIMAL-SIGN-6-3 pic S9(6)V999 VALUE 0.
The Result Field is defined as a Display field with 7 digits and 2 decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 DISPLAY-SIGN-7-2 PIC S9(7)V99 SIGN TRAILING SEPARATE.
The following PROCEDURE DIVISION statement shows how to convert from a ZONED-DECIMAL to a DISPLAY (with SIGN TRAILING SEPARATE) numeric value.
add ZONED-DECIMAL-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2 ROUNDED
Refer to COBOL Routine for Example-303 and view the COBOL source code for this numeric field conversion example.
This example will show the process for converting a zoned-decimal-numeric format to an edited numeric format. The fewer decimal positions of the result field will be rounded because of the ROUNDED keyword on the ADD statement. The mask for the Result field will cause an explicit decimal point to be inserted.
The Source Field is defined as a Zoned Decimal field with 6 digits and 3 decimal positions. The following is the WORKING-STORAGE definition for the source field.
01 ZONED-DECIMAL-SIGN-6-3 pic S9(6)V999 VALUE 0.
The Result Field is defined as a Display field with 7 digits and 2 decimal positions. The following is the WORKING-STORAGE definition for the result field.
01 EDIT-FIELD-7-2 pic Z,ZZZ,ZZZ.99+.
The following PROCEDURE DIVISION statement shows how to convert from a ZONED-DECIMAL to an EDITED numeric value.
add ZONED-DECIMAL-SIGN-6-3 to ZERO
giving EDIT-FIELD-7-2 ROUNDED
Refer to COBOL Routine for Example-304 and view the COBOL source code for this numeric field conversion example.
This section describes the three (3) Windows Command Files that will be used to set the environment and execute the COBOL programs that perform the sample numeric field conversions.
The following (NBRCVTE1.CMD) is a sample of the Windows CMD needed to run this job in a non-Mainframe environment.
@echo OFF
rem * *******************************************************************
rem * This program is provided by: *
rem * SimoTime Enterprises, LLC *
rem * (C) Copyright 1987-2010 All Rights Reserved *
rem * Web Site URL: http://www.simotime.com *
rem * e-mail: helpdesk@simotime.com *
rem * *******************************************************************
rem *
rem * Text - Packed Numeric Format Conversion using COBOL
rem * Author - SimoTime Enterprises
rem * Date - November 11, 2003
rem * Version - 03.12.15
rem *
rem * This set of programs describes how to convert packed numeric
rem * field formats used with COBOL and on an IBM Mainframe.
rem *
rem * This technique provides for the use of a single COBOL source
rem * program that may be compiled and executed on an IBM Mainframe
rem * with ZOS or VSE. The same COBOL source code may be compiled and
rem * executed on a Windows or UNIX platform with Micro Focus.
rem *
rem * The COBOL programs are compiled with the ASSIGN(EXTERNAL)
rem * directive. This provides for external file mapping of file names.
rem *
rem * ************
rem * * NBRCVTE1 *
rem * ********cmd*
rem * *
rem * *
rem * ************ ************ ************
rem * * RUN ******* NBRCVTC1 ******* SIMODUMP *
rem * ************ ********gnt* * ********dll*
rem * * *
rem * * ************ ************
rem * * * SIMOLOGS ******* CONSOLE *
rem * * ********dll* * ************
rem * * *
rem * * * ************
rem * * **** SYSLOG *
rem * * *******data*
rem * *
rem * ************
rem * * EOJ *
rem * ************
rem *
rem * *******************************************************************
rem * Step 1 of 2 Set the global environment variables...
rem *
call Env1PROD
set CmdName=NBRCVTE1
rem *
call SimoNOTE "*******************************************************%CmdName%.CMD"
call SimoNOTE "Starting JobName %CmdName%.CMD"
rem *
rem * *******************************************************************
rem * Step 1 of 1, Execute the Number Format Analysis Program...
rem *
run NbrCVTC1
if not "%ERRORLEVEL%" == "0" set JobStatus=0010
if not "%JobStatus%" == "0000" goto :EojNOK
:EojAOK
call SimoNOTE "Finished JobName %CmdName%, Job Status is %JobStatus%"
goto :End
:EojNOK
call SimoNOTE "ABENDING JobName %CmdName%, Job Status is %JobStatus%"
goto :End
:End
call SimoNOTE "Conclude SysOut is %SYSOUT%"
if not "%1" == "nopause" pause
The following (NBRCVTE2.CMD) is a sample of the Windows CMD needed to run this job in a non-Mainframe environment.
@echo OFF
rem * *******************************************************************
rem * This program is provided by: *
rem * SimoTime Enterprises, LLC *
rem * (C) Copyright 1987-2010 All Rights Reserved *
rem * Web Site URL: http://www.simotime.com *
rem * e-mail: helpdesk@simotime.com *
rem * *******************************************************************
rem *
rem * Text - Convert Binary numeric formats using COBOL
rem * Author - SimoTime Enterprises
rem * Date - November 11, 2003
rem * Version - 03.12.15
rem *
rem * This set of programs describes how to convert binary numeric
rem * field formats used with COBOL and on an IBM Mainframe.
rem *
rem * This technique provides for the use of a single COBOL source
rem * program that may be compiled and executed on an IBM Mainframe
rem * with ZOS or VSE. The same COBOL source code may be compiled and
rem * executed on a Windows or UNIX platform with Micro Focus.
rem *
rem * The COBOL programs are compiled with the ASSIGN(EXTERNAL)
rem * directive. This provides for external file mapping of file names.
rem *
rem * When running with Net Express the IBMCOMP an NOTRUNC directives
rem * will be required to maintain compatability with the mainframe
rem * format and field sizes for binary fields.
rem *
rem * ************
rem * * NBRCVTE2 *
rem * ********cmd*
rem * *
rem * *
rem * ************ ************ ************
rem * * RUN ******* NBRCVTC2 ******* SIMODUMP *
rem * ************ ********gnt* * ********dll*
rem * * *
rem * * ************ ************
rem * * * SIMOLOGS ******* CONSOLE *
rem * * ********dll* * ************
rem * * *
rem * * * ************
rem * * **** SYSLOG *
rem * * *******data*
rem * *
rem * ************
rem * * EOJ *
rem * ************
rem *
rem * *******************************************************************
rem * Step 1 of 2 Set the global environment variables...
rem *
call Env1PROD
set CmdName=NBRCVTE2
rem *
call SimoNOTE "*******************************************************%CmdName%.CMD"
call SimoNOTE "Starting JobName %CmdName%.CMD"
rem *
rem * *******************************************************************
rem * Step 1 of 1, Execute the Number Format Conversion Program...
rem *
run NbrCVTC2
if not "%ERRORLEVEL%" == "0" set JobStatus=0010
if not "%JobStatus%" == "0000" goto :EojNOK
:EojAOK
call SimoNOTE "Finished JobName %CmdName%, Job Status is %JobStatus%"
goto :End
:EojNOK
call SimoNOTE "ABENDING JobName %CmdName%, Job Status is %JobStatus%"
goto :End
:End
call SimoNOTE "Conclude SysOut is %SYSOUT%"
if not "%1" == "nopause" pause
The following (NBRCVTE3.CMD) is a sample of the Windows CMD needed to run this job in a non-Mainframe environment.
@echo OFF
rem * *******************************************************************
rem * This program is provided by: *
rem * SimoTime Enterprises, LLC *
rem * (C) Copyright 1987-2010 All Rights Reserved *
rem * Web Site URL: http://www.simotime.com *
rem * e-mail: helpdesk@simotime.com *
rem * *******************************************************************
rem *
rem * Text - Packed Numeric Format Conversion using COBOL
rem * Author - SimoTime Enterprises
rem * Date - November 11, 2003
rem * Version - 03.12.15
rem *
rem * This set of programs describes how to convert zoned-decimal
rem * numeric field formats used with COBOL and on an IBM Mainframe.
rem *
rem * This technique provides for the use of a single COBOL source
rem * program that may be compiled and executed on an IBM Mainframe
rem * with ZOS or VSE. The same COBOL source code may be compiled and
rem * executed on a Windows or UNIX platform with Micro Focus.
rem *
rem * The COBOL programs are compiled with the ASSIGN(EXTERNAL)
rem * directive. This provides for external file mapping of file names.
rem *
rem * ************
rem * * NBRCVTE3 *
rem * ********cmd*
rem * *
rem * *
rem * ************ ************ ************
rem * * RUN ******* NBRCVTC3 ******* SIMODUMP *
rem * ************ ********gnt* * ********dll*
rem * * *
rem * * ************ ************
rem * * * SIMOLOGS ******* CONSOLE *
rem * * ********dll* * ************
rem * * *
rem * * * ************
rem * * **** SYSLOG *
rem * * *******data*
rem * *
rem * ************
rem * * EOJ *
rem * ************
rem *
rem * *******************************************************************
rem * Step 1 of 2 Set the global environment variables...
rem *
call Env1PROD
set CmdName=NBRCVTE3
rem *
call SimoNOTE "*******************************************************%CmdName%.CMD"
call SimoNOTE "Starting JobName %CmdName%.CMD"
rem *
rem * *******************************************************************
rem * Step 1 of 1, Execute the Number Format Analysis Program...
rem *
run NbrCVTC3
if not "%ERRORLEVEL%" == "0" set JobStatus=0010
if not "%JobStatus%" == "0000" goto :EojNOK
:EojAOK
call SimoNOTE "Finished JobName %CmdName%, Job Status is %JobStatus%"
goto :End
:EojNOK
call SimoNOTE "ABENDING JobName %CmdName%, Job Status is %JobStatus%"
goto :End
:End
call SimoNOTE "Conclude SysOut is %SYSOUT%"
if not "%1" == "nopause" pause
The following is the mainframe JCL required to run the jobs in a ZOS oriented, Mainframe environment.
The following (NBRCVTJ1.JCL) is a sample of the ZOS oriented JCL needed to run this job in a non-Mainframe environment.
//NBRCVTJ1 JOB SIMOTIME,ACCOUNT,CLASS=1,MSGCLASS=0,NOTIFY=CSIP1 //* ******************************************************************* //* This program is provided by: * //* SimoTime Enterprises, LLC * //* (C) Copyright 1987-2010 All Rights Reserved * //* Web Site URL: http://www.simotime.com * //* e-mail: helpdesk@simotime.com * //* ******************************************************************* //* //* Text - Packed Numeric Format Conversion using COBOL //* Author - SimoTime Enterprises //* Date - November 11, 2003 //* Version - 03.12.15 //* //* This set of programs describes how to convert packed numeric //* field formats used with COBOL and on an IBM Mainframe. //* //* This technique provides for the use of a single COBOL source //* program that may be compiled and executed on an IBM Mainframe //* with ZOS or VSE. The same COBOL source code may be compiled and //* executed on a Windows or UNIX platform with Micro Focus. //* //* ******************************************************************* //* Step 1 of 2 This job step will delete a previously created //* hex-dump file. //* //DELTHEX1 EXEC PGM=IEFBR14 //SYSLOG DD DSN=SIMOTIME.DATA.SYSLOGT1,DISP=(MOD,DELETE,DELETE), // STORCLAS=MFI, // SPACE=(TRK,5), // DCB=(RECFM=V,LRECL=1055,DSORG=PS) //* //* ******************************************************************* //* Step 2 of 2 Execute the program. //* //NBRCVTX1 EXEC PGM=NBRCVTC1,PARM='SYSOUT(BOTH)' //STEPLIB DD DSN=SIMOTIME.DEMO.LOADLIB1,DISP=SHR //* The following DD statement is for the logging file. //SYSLOG DD DSN=SIMOTIME.DATA.SYSLOGT1,DISP=(NEW,CATLG,CATLG), // STORCLAS=MFI, // SPACE=(TRK,5), // DCB=(RECFM=V,LRECL=1055,DSORG=PS) //* The following DD statement is SYSOUT and is used when //* the COBOL program does a Display. //SYSOUT DD SYSOUT=* //*
The following (NBRCVTJ2.JCL) is a sample of the ZOS oriented JCL needed to run this job in a non-Mainframe environment.
The following (NBRCVTJ3.JCL) is a sample of the ZOS oriented JCL needed to run this job in a non-Mainframe environment.
This suite of sample programs contains the following three (3) COBOL programs.
| COBOL Program | Description |
| NBRCVTC1.CBL | This program contains various examples for converting a packed field to a display or edited field. |
| NBRCVTC2.CBL | This program contains various examples for converting a binary field to a display or edited field. |
| NBRCVTC3.CBL | This program contains various examples for converting a zoned-decimal field to a display or edited field. |
This program (NBRCVTC1.CBL) was written to show various techniques for converting between various Packed numeric field formats used on the mainframe and/or with the COBOL programming language.
IDENTIFICATION DIVISION.
PROGRAM-ID. NBRCVTC1.
AUTHOR. SIMOTIME ENTERPRISES.
*****************************************************************
* Copyright (C) 1987-2010 SimoTime Enterprises, LLC. *
* *
* 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 *
* Enterprises. *
* *
* Permission to use, copy, modify and distribute this software *
* for any commercial purpose requires a fee to be paid to *
* SimoTime Enterprises. 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 *
* Enterprises. *
* *
* SimoTime Enterprises makes no warranty or representations *
* about the suitability of the software for any purpose. It is *
* provided "AS IS" without any express or implied warranty, *
* including the implied warranties of merchantability, fitness *
* for a particular purpose and non-infringement. SimoTime *
* Enterprises 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 Enterprises *
* 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 Enterprises, *
* 15 Carnoustie Drive, Novato, CA 94949-5849. *
* *
*****************************************************************
* This program is provided by SimoTime Enterprises *
* Our e-mail address is: helpdesk@simotime.com *
* Also, visit our Web Site at http://www.simotime.com *
* *
*****************************************************************
*
*****************************************************************
* Source Member: NBRCVTC1.CBL
*****************************************************************
*
* NBRCVTC1 - Numeric format conversion for COBOL.
*
* DESCRIPTION
* -----------
* This set of programs is used to show how to convert between
* the various numeric formats used with COBOL and on an IBM
* Mainframe System.
*
* This program illustrates the use of some of the commonly
* used numeric formats. It will show actual hex-dump content of
* the fields along with the field length for the display format
* (actual digits), the packed format (COMP-3) and the binary
* (COMP) formats.
*
* The COBOL programs are compiled with the ASSIGN(EXTERNAL)
* directive. This provides for external file mapping of file
* names.
*
* When running with Net Express the IBMCOMP an NOTRUNC directives
* will be required to maintain compatability with the mainframe
* format and field sizes for binary fields.
*
* This technique provides for the use of a single COBOL source
* program that will run on OS/390, Windows or Unix.
*
* This program will run on a Personal Computer with Windows
* and Micro Focus Net Express or Mainframe Express.
*
* This program will also run on an IBM Mainframe.
*
*****************************************************************
*
* MAINTENANCE
* -----------
* 1996/03/15 Simmons, Created program.
* 1996/03/15 Simmons, No changes to date.
*
*****************************************************************
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*****************************************************************
* Data-structure for Title and Copyright...
* ------------------------------------------------------------
01 SIM-TITLE.
05 T1 pic X(11) value '* NBRCVTC1 '.
05 T2 pic X(34) value 'Numeric Packed Convert using COBOL'.
05 T3 pic X(10) value ' v08.05.31'.
05 T4 pic X(24) value ' http://www.simotime.com'.
01 SIM-COPYRIGHT.
05 C1 pic X(11) value '* NBRCVTC1 '.
05 C2 pic X(20) value 'Copyright 1987-2010 '.
05 C3 pic X(28) value ' SimoTime Enterprises, LLC '.
05 C4 pic X(20) value ' All Rights Reserved'.
01 SIM-THANKS-01.
05 C1 pic X(11) value '* NBRCVTC1 '.
05 C2 pic X(32) value 'Thank you for using this sample '.
05 C3 pic X(32) value 'by SimoTime Enterprises, LLC '.
05 C4 pic X(04) value ' '.
01 SIM-THANKS-02.
05 C1 pic X(11) value '* NBRCVTC1 '.
05 C2 pic X(32) value 'Please send comments or suggesti'.
05 C3 pic X(32) value 'ons to helpdesk@simotime.com '.
05 C4 pic X(04) value ' '.
*****************************************************************
* Buffer used for posting messages to the console.
* ------------------------------------------------------------
01 MESSAGE-BUFFER.
05 MESSAGE-HEADER pic X(11) value '* NBRCVTC1 '.
05 MESSAGE-TEXT pic X(68).
*****************************************************************
* Coding techniques for various numeric formats...
* ------------------------------------------------------------
* The following shows the full syntax for ZONED-DECIMAL
*01 DISPLAY-UNSIGN PIC 9(5) USAGE IS DISPLAY.
* However, it is usually coded as follows.
*01 DISPLAY-UNSIGN PIC 9(5).
* For Working Storage fields a value clause may be added to
* minimize or avoid the occurence of a "S0C7" or an error
* message of "Invalid value in numeric field" followed
* by a program ABEND. The value clause will cause the field
* to contain all ZEROES when the program is loaded. If the
* value clause is not used as follows the numeric field may
* contain spaces.
01 DISPLAY-UNSIGN PIC 9(5) VALUE 0.
*
01 DISPLAY-SIGN-7-2 PIC S9(7)V99 SIGN TRAILING SEPARATE.
01 DISPLAY-SIGN-7-2-X redefines DISPLAY-SIGN-7-2
PIC X(10).
01 EDIT-FIELD-7-2 pic Z,ZZZ,ZZZ.99+.
* ------------------------------------------------------------
* The following is the full syntax for PACKED-DECIMAL.
*01 PACK-DECIMAL-UNSIGN pic 9(5) USAGE IS COMPUTATIONAL-3.
* However, it is usually coded as follows. The VALUE clause
* is optional and will initialize the field to ZEROES when
* the program is started.
01 PACK-DECIMAL-UNSIGN pic 9(5) COMP-3 VALUE 0.
01 PACK-DECIMAL-UNSIGN-X redefines PACK-DECIMAL-UNSIGN
pic X(3).
*
01 PACK-DECIMAL-SIGN-6-3 pic S9(6)V999 COMP-3 VALUE 0.
01 PACK-DECIMAL-SIGN-6-3-X redefines PACK-DECIMAL-SIGN-6-3
pic X(5).
COPY PASSDUMP.
*****************************************************************
PROCEDURE DIVISION.
perform FIRST-TIME-LOGIC
* Show the process for converting a packed-numeric format to a
* to a display (or unsigned ZONED-DECIMAL-decimal) format.
* Source Field, Packed, 5 digits and zero decimal positions
* Result Field, Display, 5 digits and zero decimal positions
perform EXAMPLE-01
* Show the process for converting a packed-numeric format to a
* to a display (or ZONED-DECIMAL-decimal, SIGN TRAILING SEPARATE)
* format.
* Source Field, Packed, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will cause the
* numeric value to be truncated.
perform EXAMPLE-02
* Show the process for converting a packed-numeric format to a
* to a display (or ZONED-DECIMAL-decimal, SIGN TRAILING SEPARATE)
* format.
* Source Field, Packed, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will be
* rounded because of the ROUNDED keyword on the ADD statement.
perform EXAMPLE-03
* Show the process for converting a packed-numeric format to an
* edited numeric format with an explicit decimal point.
* Source Field, Packed, 6 digits and 3 decimal positions
* Result Field, Edited, 7 digits and 2 decimal positions
perform EXAMPLE-04
GOBACK.
*****************************************************************
DUMP-ASTERISK-ROW.
move 'NOTE' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
move all '*' to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
exit.
*****************************************************************
DUMP-ASTERISK-ROW-2X.
perform DUMP-ASTERISK-SINGLE
perform DUMP-ASTERISK-ROW
exit.
*****************************************************************
DUMP-ASTERISK-SINGLE.
move 'NOTE' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
move SPACES to SIMODUMP-BUFFER
move '*' to SIMODUMP-BUFFER(1:1)
call 'SIMODUMP' using SIMODUMP-PASS-AREA
exit.
*****************************************************************
DUMP-NOTE.
move 'NOTE' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
call 'SIMODUMP' using SIMODUMP-PASS-AREA
exit.
*****************************************************************
* Convert Packed to Display
* Show the process for converting a packed-numeric format to a
* display (or zoned-decimal) format.
* Source Field, Packed, 5 digits and zero decimal positions
* Result Field, Display, 5 digits and zero decimal positions
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-01.
* Prepare to show the Number...
move 'Dump0001' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move 'Starting Convert Packed to Display' to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a packed field and show the hexadecimal
* content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of PACK-DECIMAL-UNSIGN-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123 to ZERO giving PACK-DECIMAL-UNSIGN
move PACK-DECIMAL-UNSIGN-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Packed Field to a Display field and show the
* hexadecimal content of the result field after conversion.
* Note: the following single statement is all that is required
* to convert the packed format to a display format.
add PACK-DECIMAL-UNSIGN to ZERO giving DISPLAY-UNSIGN
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of DISPLAY-UNSIGN
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move DISPLAY-UNSIGN to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move 'Finished Convert Packed to Display' to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
* Different Decimal Positions
* Show the process for converting a packed-numeric format to a
* display (or zoned-decimal) format.
* Source Field, Packed, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will cause the
* numeric value to be truncated.
* The Result field is also defined with a SIGN TRAILING SEPARATE
* that creates an additional byte to the field for the sign.
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-02.
* Prepare to show the Number...
move 'Dump0002' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move
'Starting Convert Packed (6.3) to Display (7.2) Truncation'
to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a packed field and show the hexadecimal
* content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of PACK-DECIMAL-SIGN-6-3-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123.456 to ZERO giving PACK-DECIMAL-SIGN-6-3
move PACK-DECIMAL-SIGN-6-3-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Packed Field to a Display field and show the
* hexadecimal content of the result field after conversion.
* Note: the following single statement is all that is required
* to convert the packed format to a display format.
add PACK-DECIMAL-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of DISPLAY-SIGN-7-2
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move DISPLAY-SIGN-7-2-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move
'Finished Convert Packed (6.3) to Display (7.2) Truncation'
to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
* Decimal Positions Rounded
* Show the process for converting a packed-numeric format to a
* display (or zoned-decimal) format.
* Source Field, Packed, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will be
* rounded because of the ROUNDED keyword on the ADD statement.
* The Result field is also defined with a SIGN TRAILING SEPARATE
* that creates an additional byte to the field for the sign.
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-03.
* Prepare to show the Number...
move 'Dump00032' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move
'Starting Convert Packed (6.3) to Display (7.2) Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a packed field and show the hexadecimal
* content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of PACK-DECIMAL-SIGN-6-3-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123.456 to ZERO giving PACK-DECIMAL-SIGN-6-3
move PACK-DECIMAL-SIGN-6-3-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Packed Field to a Display field and show the
* hexadecimal content of the result field after conversion.
* Note: the following single statement is all that is required
* to convert the packed format to a display format.
add PACK-DECIMAL-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2 ROUNDED
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of DISPLAY-SIGN-7-2
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move DISPLAY-SIGN-7-2-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move
'Finished Convert Packed (6.3) to Display (7.2) Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
* Include Explicit Decimal Point
* Show the process for converting a packed-numeric format to an
* edited numeric format with an explicit decimal point.
* Source Field, Packed, 6 digits and 3 decimal positions
* Result Field, Edited, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will be
* rounded because of the ROUNDED keyword on the ADD statement.
* The mask for the Resulting edited field will cause a physical
* decimal point to be inserted.
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-04.
* Prepare to show the Number...
move 'Dump0004' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move
'Starting Convert with Explicit Decimal Point Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a packed field and show the hexadecimal
* content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of PACK-DECIMAL-SIGN-6-3-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123456.789 to ZERO giving PACK-DECIMAL-SIGN-6-3
move PACK-DECIMAL-SIGN-6-3-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Packed Field to an Edited field and show the
* hexadecimal content of the result field after conversion.
* Note: the following single statement is all that is required
* to convert the packed format to a display format.
add PACK-DECIMAL-SIGN-6-3 to ZERO
giving EDIT-FIELD-7-2 ROUNDED
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of EDIT-FIELD-7-2
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move EDIT-FIELD-7-2 to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move
'Finished Convert with Explicit Decimal Point Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
FIRST-TIME-LOGIC.
perform Z-POST-COPYRIGHT.
move 'BOTH' to SIMODUMP-SYSOUT
move 'HIDE' to SIMODUMP-COPYRIGHT
exit.
*****************************************************************
* The following Z-Routines perform administrative tasks *
* for this program. *
*****************************************************************
Z-POST-CONSOLE-MESSAGE.
display MESSAGE-BUFFER upon console
move SPACES to MESSAGE-TEXT
exit.
*****************************************************************
Z-POST-COPYRIGHT.
display SIM-TITLE upon console
display SIM-COPYRIGHT upon console
exit.
*****************************************************************
Z-POST-NOTE-AND-CLEAR.
move 'NOTE' to SIMODUMP-REQUEST
call 'SIMODUMP' using SIMODUMP-PASS-AREA
move SPACES to SIMODUMP-BUFFER
exit.
*****************************************************************
Z-THANK-YOU.
display SIM-THANKS-01 upon console
display SIM-THANKS-02 upon console
exit.
*****************************************************************
* This example is provided by SimoTime Enterprises *
* Our e-mail address is: helpdesk@simotime.com *
* Also, visit our Web Site at http://www.simotime.com *
*****************************************************************
This program (NBRCVTC2.CBL) was written to show various techniques for converting between various binary numeric field formats used on the mainframe and/or with the COBOL programming language.
IDENTIFICATION DIVISION.
PROGRAM-ID. NBRCVTC2.
AUTHOR. SIMOTIME ENTERPRISES.
*****************************************************************
* Copyright (C) 1987-2010 SimoTime Enterprises, LLC. *
* *
* 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 *
* Enterprises. *
* *
* Permission to use, copy, modify and distribute this software *
* for any commercial purpose requires a fee to be paid to *
* SimoTime Enterprises. 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 *
* Enterprises. *
* *
* SimoTime Enterprises makes no warranty or representations *
* about the suitability of the software for any purpose. It is *
* provided "AS IS" without any express or implied warranty, *
* including the implied warranties of merchantability, fitness *
* for a particular purpose and non-infringement. SimoTime *
* Enterprises 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 Enterprises *
* 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 Enterprises, *
* 15 Carnoustie Drive, Novato, CA 94949-5849. *
* *
*****************************************************************
* This program is provided by SimoTime Enterprises *
* Our e-mail address is: helpdesk@simotime.com *
* Also, visit our Web Site at http://www.simotime.com *
* *
*****************************************************************
*
*****************************************************************
* Source Member: NBRCVTC2.CBL
*****************************************************************
*
* NBRCVTC2 - Numeric format conversion for COBOL.
*
* DESCRIPTION
* -----------
* This set of programs is used to show how to convert between
* the various numeric formats used with COBOL and on an IBM
* Mainframe System.
*
* This program illustrates the use of some of the commonly
* used numeric formats. It will show actual hex-dump content of
* the fields along with the field length for the display format
* (actual digits), the packed format (COMP-3) and the binary
* (COMP) formats.
*
* The COBOL programs are compiled with the ASSIGN(EXTERNAL)
* directive. This provides for external file mapping of file
* names.
*
* When running with Net Express the IBMCOMP an NOTRUNC directives
* will be required to maintain compatability with the mainframe
* format and field sizes for binary fields.
*
* This technique provides for the use of a single COBOL source
* program that will run on OS/390, Windows or Unix.
*
* This program will run on a Personal Computer with Windows
* and Micro Focus Net Express or Mainframe Express.
*
* This program will also run on an IBM Mainframe.
*
*****************************************************************
*
* MAINTENANCE
* -----------
* 1996/03/15 Simmons, Created program.
* 1996/03/15 Simmons, No changes to date.
*
*****************************************************************
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*****************************************************************
* Data-structure for Title and Copyright...
* ------------------------------------------------------------
01 SIM-TITLE.
05 T1 pic X(11) value '* NBRCVTC2 '.
05 T2 pic X(34) value 'Numeric Binary Convert using COBOL'.
05 T3 pic X(10) value ' v08.05.31'.
05 T4 pic X(24) value ' http://www.simotime.com'.
01 SIM-COPYRIGHT.
05 C1 pic X(11) value '* NBRCVTC2 '.
05 C2 pic X(20) value 'Copyright 1987-2010 '.
05 C3 pic X(28) value ' SimoTime Enterprises, LLC '.
05 C4 pic X(20) value ' All Rights Reserved'.
01 SIM-THANKS-01.
05 C1 pic X(11) value '* NBRCVTC2 '.
05 C2 pic X(32) value 'Thank you for using this sample '.
05 C3 pic X(32) value 'by SimoTime Enterprises, LLC '.
05 C4 pic X(04) value ' '.
01 SIM-THANKS-02.
05 C1 pic X(11) value '* NBRCVTC2 '.
05 C2 pic X(32) value 'Please send comments or suggesti'.
05 C3 pic X(32) value 'ons to helpdesk@simotime.com '.
05 C4 pic X(04) value ' '.
*****************************************************************
* Buffer used for posting messages to the console.
* ------------------------------------------------------------
01 MESSAGE-BUFFER.
05 MESSAGE-HEADER pic X(11) value '* NBRCVTC2 '.
05 MESSAGE-TEXT pic X(68).
*****************************************************************
* Coding techniques for various numeric formats...
* ------------------------------------------------------------
* The following shows the full syntax for ZONED-DECIMAL
*01 DISPLAY-UNSIGN pic 9(5) USAGE IS DISPLAY.
* However, it is usually coded as follows.
*01 DISPLAY-UNSIGN PIC 9(5).
* For Working Storage fields a value clause may be added to
* minimize or avoid the occurence of a "S0C7" or an error
* message of "Invalid value in numeric field" followed
* by a program ABEND. The value clause will cause the field
* to contain all ZEROES when the program is loaded. If the
* value clause is not used as follows the numeric field may
* contain spaces.
01 DISPLAY-UNSIGN PIC 9(5) VALUE 0.
*
01 DISPLAY-SIGN-7-2 PIC S9(7)V99 SIGN TRAILING SEPARATE.
01 DISPLAY-SIGN-7-2-X redefines DISPLAY-SIGN-7-2
PIC X(10).
01 EDIT-FIELD-7-2 pic Z,ZZZ,ZZZ.99+.
* ------------------------------------------------------------
* The following is the full syntax for BINARY.
*01 BINARY--UNSIGN pic 9(5) USAGE IS COMPUTATIONAL.
* However, it is usually coded as follows. The VALUE clause
* is optional and will initialize the field to ZEROES when
* the program is started.
01 BINARY-UNSIGN pic 9(9) COMP VALUE 0.
01 BINARY-UNSIGN-X redefines BINARY-UNSIGN
pic X(4).
*
01 BINARY-SIGN-6-3 pic S9(6)V999 COMP VALUE 0.
01 BINARY-SIGN-6-3-X redefines BINARY-SIGN-6-3
pic X(4).
COPY PASSDUMP.
*****************************************************************
PROCEDURE DIVISION.
perform FIRST-TIME-LOGIC
* Show the process for converting a packed-numeric format to a
* to a display (or unsigned ZONED-DECIMAL-decimal) format.
* Source Field, Binary, 5 digits and zero decimal positions
* Result Field, Display, 5 digits and zero decimal positions
perform EXAMPLE-01
* Show the process for converting a packed-numeric format to a
* to a display (or ZONED-DECIMAL-decimal, SIGN TRAILING SEPARATE)
* format.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will cause the
* numeric value to be truncated.
perform EXAMPLE-02
* Show the process for converting a packed-numeric format to a
* to a display (or ZONED-DECIMAL-decimal, SIGN TRAILING SEPARATE)
* format.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will be
* rounded because of the ROUNDED keyword on the ADD statement.
perform EXAMPLE-03
* Show the process for converting a packed-numeric format to an
* edited numeric format with an explicit decimal point.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Edited, 7 digits and 2 decimal positions
perform EXAMPLE-04
GOBACK.
*****************************************************************
DUMP-ASTERISK-ROW.
move 'NOTE' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
move all '*' to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
exit.
*****************************************************************
DUMP-ASTERISK-ROW-2X.
perform DUMP-ASTERISK-SINGLE
perform DUMP-ASTERISK-ROW
exit.
*****************************************************************
DUMP-ASTERISK-SINGLE.
move 'NOTE' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
move SPACES to SIMODUMP-BUFFER
move '*' to SIMODUMP-BUFFER(1:1)
call 'SIMODUMP' using SIMODUMP-PASS-AREA
exit.
*****************************************************************
DUMP-NOTE.
move 'NOTE' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
call 'SIMODUMP' using SIMODUMP-PASS-AREA
exit.
*****************************************************************
* Convert Binary to Display
* Show the process for converting a packed-numeric format to a
* display (or zoned-decimal) format.
* Source Field, Binary, 9 digits and zero decimal positions
* Result Field, Display, 5 digits and zero decimal positions
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-01.
* Prepare to show the Number...
move 'Dump0001' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move 'Starting Convert Binary to Display' to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a binary field and show the hexadecimal
* content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of BINARY-UNSIGN-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123 to ZERO giving BINARY-UNSIGN
move BINARY-UNSIGN-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Binary Field to a Display field and show the
* hexadecimal content of the result field after conversion.
* Note: the following single statement is all that is required
* to convert the Binary format to a display format.
add BINARY-UNSIGN to ZERO giving DISPLAY-UNSIGN
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of DISPLAY-UNSIGN
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move DISPLAY-UNSIGN to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move 'Finished Convert Binary to Display' to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
* Different Decimal Positions
* Show the process for converting a binary numeric format to a
* display (or zoned-decimal) format.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will cause the
* numeric value to be truncated.
* The Result field is also defined with a SIGN TRAILING SEPARATE
* that creates an additional byte to the field for the sign.
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-02.
* Prepare to show the Number...
move 'Dump0002' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move
'Starting Convert Binary (6.3) to Display (7.2) Truncation'
to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a Binary field and show the hexadecimal
* content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of BINARY-SIGN-6-3-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123.456 to ZERO giving BINARY-SIGN-6-3
move BINARY-SIGN-6-3-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Binary Field to a Display field and show the
* hexadecimal content of the result field after conversion.
* Note: the following single statement is all that is required
* to convert the Binary format to a display format.
add BINARY-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of DISPLAY-SIGN-7-2
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move DISPLAY-SIGN-7-2-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move
'Finished Convert Binary (6.3) to Display (7.2) Truncation'
to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
* Decimal Positions Rounded
* Show the process for converting a Binary numeric format to a
* display (or zoned-decimal) format.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will be
* rounded because of the ROUNDED keyword on the ADD statement.
* The Result field is also defined with a SIGN TRAILING SEPARATE
* that creates an additional byte to the field for the sign.
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-03.
* Prepare to show the Number...
move 'Dump00032' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move
'Starting Convert Binary (2.3) to Display (7.2) Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a Binary field and show the hexadecimal
* content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of BINARY-SIGN-6-3-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123.456 to ZERO giving BINARY-SIGN-6-3
move BINARY-SIGN-6-3-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Binary Field to a Display field and show the
* hexadecimal content of the result field after conversion.
* Note: the following single statement is all that is required
* to convert the packed format to a display format.
add BINARY-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2 ROUNDED
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of DISPLAY-SIGN-7-2
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move DISPLAY-SIGN-7-2-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move
'Finished Convert Binary (6.3) to Display (7.2) Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
* Include Explicit Decimal Point
* Show the process for converting a binary numeric format to an
* edited numeric format with an explicit decimal point.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Edited, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will be
* rounded because of the ROUNDED keyword on the ADD statement.
* The mask for the Resulting edited field will cause a physical
* decimal point to be inserted.
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-04.
* Prepare to show the Number...
move 'Dump0004' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move
'Starting Convert with Explicit Decimal Point Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a Binary field and show the hexadecimal
* content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of BINARY-SIGN-6-3-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123456.789 to ZERO giving BINARY-SIGN-6-3
move BINARY-SIGN-6-3-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Binary Field to an Edited field and show the
* hexadecimal content of the result field after conversion.
* Note: the following single statement is all that is required
* to convert the Binary format to a display format.
add BINARY-SIGN-6-3 to ZERO
giving EDIT-FIELD-7-2 ROUNDED
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of EDIT-FIELD-7-2
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move EDIT-FIELD-7-2 to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move
'Finished Convert with Explicit Decimal Point Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
FIRST-TIME-LOGIC.
perform Z-POST-COPYRIGHT.
move 'BOTH' to SIMODUMP-SYSOUT
move 'HIDE' to SIMODUMP-COPYRIGHT
exit.
*****************************************************************
* The following Z-Routines perform administrative tasks *
* for this program. *
*****************************************************************
Z-POST-CONSOLE-MESSAGE.
display MESSAGE-BUFFER upon console
move SPACES to MESSAGE-TEXT
exit.
*****************************************************************
Z-POST-COPYRIGHT.
display SIM-TITLE upon console
display SIM-COPYRIGHT upon console
exit.
*****************************************************************
Z-POST-NOTE-AND-CLEAR.
move 'NOTE' to SIMODUMP-REQUEST
call 'SIMODUMP' using SIMODUMP-PASS-AREA
move SPACES to SIMODUMP-BUFFER
exit.
*****************************************************************
Z-THANK-YOU.
display SIM-THANKS-01 upon console
display SIM-THANKS-02 upon console
exit.
*****************************************************************
* This example is provided by SimoTime Enterprises *
* Our e-mail address is: helpdesk@simotime.com *
* Also, visit our Web Site at http://www.simotime.com *
*****************************************************************
This program (NBRCVTC3.CBL) was written to show various techniques for converting various zoned-decimal numeric field formats used on the mainframe and/or with the COBOL programming language.
IDENTIFICATION DIVISION.
PROGRAM-ID. NBRCVTC3.
AUTHOR. SIMOTIME ENTERPRISES.
*****************************************************************
* Copyright (C) 1987-2010 SimoTime Enterprises, LLC. *
* *
* 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 *
* Enterprises. *
* *
* Permission to use, copy, modify and distribute this software *
* for any commercial purpose requires a fee to be paid to *
* SimoTime Enterprises. 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 *
* Enterprises. *
* *
* SimoTime Enterprises makes no warranty or representations *
* about the suitability of the software for any purpose. It is *
* provided "AS IS" without any express or implied warranty, *
* including the implied warranties of merchantability, fitness *
* for a particular purpose and non-infringement. SimoTime *
* Enterprises 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 Enterprises *
* 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 Enterprises, *
* 15 Carnoustie Drive, Novato, CA 94949-5849. *
* *
*****************************************************************
* This program is provided by SimoTime Enterprises *
* Our e-mail address is: helpdesk@simotime.com *
* Also, visit our Web Site at http://www.simotime.com *
* *
*****************************************************************
*
*****************************************************************
* Source Member: NBRCVTC3.CBL
*****************************************************************
*
* NBRCVTC3 - ZONED-DECIMAL-Decimal format conversion for COBOL.
*
* DESCRIPTION
* -----------
* This set of programs is used to show how to convert between
* the various numeric formats used with COBOL and on an IBM
* Mainframe System.
*
* The COBOL programs are compiled with the ASSIGN(EXTERNAL)
* directive. This provides for external file mapping of file
* names.
*
* This technique provides for the use of a single COBOL source
* program that will run on OS/390, Windows or Unix.
*
* This program will run on a Personal Computer with Windows
* and Micro Focus Net Express or Mainframe Express.
*
* This program will also run on an IBM Mainframe.
*
*****************************************************************
*
* MAINTENANCE
* -----------
* 1996/03/15 Simmons, Created program.
* 1996/03/15 Simmons, No changes to date.
*
*****************************************************************
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*****************************************************************
* Data-structure for Title and Copyright...
* ------------------------------------------------------------
01 SIM-TITLE.
05 T1 pic X(11) value '* NBRCVTC3 '.
05 T2 pic X(34) value 'Zoned Decimal Convert using COBOL '.
05 T3 pic X(10) value ' v08.05.31'.
05 T4 pic X(24) value ' http://www.simotime.com'.
01 SIM-COPYRIGHT.
05 C1 pic X(11) value '* NBRCVTC3 '.
05 C2 pic X(20) value 'Copyright 1987-2010 '.
05 C3 pic X(28) value ' SimoTime Enterprises, LLC '.
05 C4 pic X(20) value ' All Rights Reserved'.
01 SIM-THANKS-01.
05 C1 pic X(11) value '* NBRCVTC3 '.
05 C2 pic X(32) value 'Thank you for using this sample '.
05 C3 pic X(32) value 'by SimoTime Enterprises, LLC '.
05 C4 pic X(04) value ' '.
01 SIM-THANKS-02.
05 C1 pic X(11) value '* NBRCVTC3 '.
05 C2 pic X(32) value 'Please send comments or suggesti'.
05 C3 pic X(32) value 'ons to helpdesk@simotime.com '.
05 C4 pic X(04) value ' '.
*****************************************************************
* Buffer used for posting messages to the console.
* ------------------------------------------------------------
01 MESSAGE-BUFFER.
05 MESSAGE-HEADER pic X(11) value '* NBRCVTC3 '.
05 MESSAGE-TEXT pic X(68).
*****************************************************************
* The following is the full syntax for ZONED-DECIMAL-DECIMAL
*01 DISPLAY-UNSIGN pic 9(5) USAGE IS DISPLAY.
* However, it is usually coded as follows.
*01 DISPLAY-UNSIGN PIC 9(5).
* For Working Storage fields a value clause may be added to
* minimize or avoid the occurence of a "S0C7" or an error
* message of "Invalid value in numeric field" followed
* by a program ABEND. The value clause will cause the field
* to contain all ZEROES when the program is loaded. If the
* value clause is not used as follows the numeric field may
* contain spaces.
01 DISPLAY-UNSIGN PIC 9(5) VALUE 0.
*
01 DISPLAY-SIGN-7-2 PIC S9(7)V99 SIGN TRAILING SEPARATE.
01 DISPLAY-SIGN-7-2-X redefines DISPLAY-SIGN-7-2
PIC X(10).
01 EDIT-FIELD-7-2 pic Z,ZZZ,ZZZ.99+.
* ------------------------------------------------------------
* The following is the full syntax for BINARY.
*01 ZONED-DECIMAL-UNSIGN pic 9(5) USAGE IS DISPLAY.
* However, it is usually coded as follows. The VALUE clause
* is optional and will initialize the field to ZEROES when
* the program is started.
01 ZONED-DECIMAL-UNSIGN pic 9(5) VALUE 0.
01 ZONED-DECIMAL-UNSIGN-X redefines ZONED-DECIMAL-UNSIGN
pic X(5).
*
01 ZONED-DECIMAL-SIGN-6-3 pic S9(6)V999 VALUE 0.
01 ZONED-DECIMAL-SIGN-6-3-X redefines ZONED-DECIMAL-SIGN-6-3
pic X(9).
COPY PASSDUMP.
*****************************************************************
PROCEDURE DIVISION.
perform FIRST-TIME-LOGIC
* Show the process for converting a zoned decimal numeric format
* to a display (or unsigned ZONED-DECIMAL-decimal) format.
* Source Field, Binary, 5 digits and zero decimal positions
* Result Field, Display, 5 digits and zero decimal positions
perform EXAMPLE-01
* Show the process for converting a zoned decimal numeric format
* to a display (or ZONED-DECIMAL-decimal, SIGN TRAILING SEPARATE)
* format.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will cause the
* numeric value to be truncated.
perform EXAMPLE-02
* Show the process for converting a zoned decimal numeric format
* to a display (or ZONED-DECIMAL-decimal, SIGN TRAILING SEPARATE)
* format.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will be
* rounded because of the ROUNDED keyword on the ADD statement.
perform EXAMPLE-03
* Show the process for converting a zoned decimal numeric format
* to an edited numeric format with an explicit decimal point.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Edited, 7 digits and 2 decimal positions
perform EXAMPLE-04
GOBACK.
*****************************************************************
DUMP-ASTERISK-ROW.
move 'NOTE' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
move all '*' to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
exit.
*****************************************************************
DUMP-ASTERISK-ROW-2X.
perform DUMP-ASTERISK-SINGLE
perform DUMP-ASTERISK-ROW
exit.
*****************************************************************
DUMP-ASTERISK-SINGLE.
move 'NOTE' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
move SPACES to SIMODUMP-BUFFER
move '*' to SIMODUMP-BUFFER(1:1)
call 'SIMODUMP' using SIMODUMP-PASS-AREA
exit.
*****************************************************************
DUMP-NOTE.
move 'NOTE' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
call 'SIMODUMP' using SIMODUMP-PASS-AREA
exit.
*****************************************************************
* Convert Zoned Decimal to Display
* Show the process for converting a zoned-decimal-numeric format
* to a display (or ZONED-DECIMAL-decimal) format.
* Since the source field is an unsigned numeric value the result
* field will be the same as the source field.
* Source Field, Binary, 9 digits and zero decimal positions
* Result Field, Display, 5 digits and zero decimal positions
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-01.
* Prepare to show the Number...
move 'Dump0001' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move 'Starting Convert Zoned Decimal to Display'
to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a Zoned Decimal field and show the
* hexadecimal content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of ZONED-DECIMAL-UNSIGN-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123 to ZERO giving ZONED-DECIMAL-UNSIGN
move ZONED-DECIMAL-UNSIGN-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Zoned Decimal Field to a Display field and show the
* hexadecimal content of the result field after conversion.
* Note: the following single statement is all that is required
* to convert the Zoned Decimal format to a display format.
add ZONED-DECIMAL-UNSIGN to ZERO giving DISPLAY-UNSIGN
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of DISPLAY-UNSIGN
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move DISPLAY-UNSIGN to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move 'Finished Convert Zoned Decimal to Display'
to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
* Different Decimal Positions
* Show the process for converting a Zoned Decimal numeric format
* to a display (or ZONED-DECIMAL-decimal) format.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will cause the
* numeric value to be truncated.
* The Result field is also defined with a SIGN TRAILING SEPARATE
* that creates an additional byte to the field for the sign.
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-02.
* Prepare to show the Number...
move 'Dump0002' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move
'Starting Zoned Decimal (6.3) to Display (7.2) Truncation'
to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a Zoned Decimal field and show the
* hexadecimal content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of ZONED-DECIMAL-SIGN-6-3-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123.456 to ZERO giving ZONED-DECIMAL-SIGN-6-3
move ZONED-DECIMAL-SIGN-6-3-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Zoned Decimal Field to a Display field and show
* the hexadecimal content of a result field after conversion.
* Note: the following single statement is all that is required
* to convert the Zoned Decimal format to a display format.
add ZONED-DECIMAL-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of DISPLAY-SIGN-7-2
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move DISPLAY-SIGN-7-2-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move
'Finished Zoned Decimal (6.3) to Display (7.2) Truncation'
to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
* Decimal Positions Rounded
* Show the process for converting a Zoned Decimal numeric format
* to a display (or ZONED-DECIMAL-decimal) format.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Display, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will be
* rounded because of the ROUNDED keyword on the ADD statement.
* The Result field is also defined with a SIGN TRAILING SEPARATE
* that creates an additional byte to the field for the sign.
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-03.
* Prepare to show the Number...
move 'Dump00032' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move
'Starting Zoned Decimal (2.3) to Display (7.2) Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a Zoned Decimal field and show the
* hexadecimal content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of ZONED-DECIMAL-SIGN-6-3-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123.456 to ZERO giving ZONED-DECIMAL-SIGN-6-3
move ZONED-DECIMAL-SIGN-6-3-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Zoned Decimal Field to a Display field and show
* the hexadecimal content of a result field after conversion.
* Note: the following single statement is all that is required
* to convert the packed format to a display format.
add ZONED-DECIMAL-SIGN-6-3 to ZERO
giving DISPLAY-SIGN-7-2 ROUNDED
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of DISPLAY-SIGN-7-2
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move DISPLAY-SIGN-7-2-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move
'Finished Zoned Decimal (6.3) to Display (7.2) Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
* Include Explicit Decimal Point
* Show the process for converting a Zoned Decimal numeric format
* to an edited numeric format with an explicit decimal point.
* Source Field, Binary, 6 digits and 3 decimal positions
* Result Field, Edited, 7 digits and 2 decimal positions
* The fewer decimal positions of the result field will be
* rounded because of the ROUNDED keyword on the ADD statement.
* The mask for the Resulting edited field will cause a physical
* decimal point to be inserted.
* Note: most of the following code is for the display (or dump)
* of the numeric fields in a hexadecimal dump format.
*****************************************************************
EXAMPLE-04.
* Prepare to show the Number...
move 'Dump0004' to SIMODUMP-DUMP-ID
perform DUMP-ASTERISK-ROW-2X
*
move
'Starting Convert with Explicit Decimal Point Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
*---------------------------------------------------------------*
* Place a value in a Zoned Decimal field and show the
* hexadecimal content of the source for conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of ZONED-DECIMAL-SIGN-6-3-X
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
add 123456.789 to ZERO giving ZONED-DECIMAL-SIGN-6-3
move ZONED-DECIMAL-SIGN-6-3-X to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
* Convert a Zoned Decimal Field to an Edited field and show
* the hexadecimal content of a result field after conversion.
* Note: the following single statement is all that is required
* to convert the Zoned Decimal format to a display format.
add ZONED-DECIMAL-SIGN-6-3 to ZERO
giving EDIT-FIELD-7-2 ROUNDED
* Show the hexadecimal content of the result after conversion
move 'DUMP' to SIMODUMP-REQUEST
move 'BOTH' to SIMODUMP-SYSOUT
add length of EDIT-FIELD-7-2
to ZERO giving SIMODUMP-LENGTH
move SPACES to SIMODUMP-BUFFER
move EDIT-FIELD-7-2 to SIMODUMP-BUFFER
call 'SIMODUMP' using SIMODUMP-PASS-AREA
*---------------------------------------------------------------*
move
'Finished Convert with Explicit Decimal Point Rounded'
to SIMODUMP-BUFFER
perform DUMP-NOTE
exit.
*****************************************************************
FIRST-TIME-LOGIC.
perform Z-POST-COPYRIGHT.
move 'BOTH' to SIMODUMP-SYSOUT
move 'HIDE' to SIMODUMP-COPYRIGHT
exit.
*****************************************************************
* The following Z-Routines perform administrative tasks *
* for this program. *
*****************************************************************
Z-POST-CONSOLE-MESSAGE.
display MESSAGE-BUFFER upon console
move SPACES to MESSAGE-TEXT
exit.
*****************************************************************
Z-POST-COPYRIGHT.
display SIM-TITLE upon console
display SIM-COPYRIGHT upon console
exit.
*****************************************************************
Z-POST-NOTE-AND-CLEAR.
move 'NOTE' to SIMODUMP-REQUEST
call 'SIMODUMP' using SIMODUMP-PASS-AREA
move SPACES to SIMODUMP-BUFFER
exit.
*****************************************************************
Z-THANK-YOU.
display SIM-THANKS-01 upon console
display SIM-THANKS-02 upon console
exit.
*****************************************************************
* This example is provided by SimoTime Enterprises *
* Our e-mail address is: helpdesk@simotime.com *
* Also, visit our Web Site at http://www.simotime.com *
*****************************************************************
The purpose of this document is to assist as a tutorial for new programmers or as a quick reference for experienced programmers. These sample programs are made available on an "as-is" basis and may be downloaded, copied and modified for specific situations as long as the copyright information is not removed or changed. As always, it is the programmer's responsibility to thoroughly test all programs.
Permission to use, copy, modify and distribute this software for any commercial purpose requires a fee to be paid to SimoTime Enterprises. 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 Enterprises.
Permission to use, copy, modify and distribute this software for a 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 Enterprises.
SimoTime Enterprises makes no warranty or representations about the suitability of the software for any purpose. It is provided "AS IS" without any express or implied warranty, including the implied warranties of merchantability, fitness for a particular purpose and non-infringement. SimoTime Enterprises 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.
If you have any questions, suggestions or comments please call or send an e-mail to: helpdesk@simotime.com
You may download this example at http://www.simotime.com/sim4dzip.htm#COBOLNumericConversion as a Z-Pack. The Z-Packs provide individual programming examples, documentation and test data files in a single package. The Z-Packs are usually in zip format to reduce the amount of time to download.
Please view the complete list of SimoTime Z-Pack Examples at http://www.simotime.com/sim4dzip.htm.
Note: You must be attached to the Internet to download a Z-Pack or view the list.
Check out The Numbers Connection for more examples of how to define and manipulate Mainframe and COBOL numeric fields.
Check out The COBOL Connection for more examples of mainframe COBOL coding techniques and sample code.
The following list provides links to additional SimoTime documents about numeric data fields.
| Link Name | Description |
| number01 | This is an introductory, self-study course about the commonly used numeric formats available on the mainframe. The course material may be purchased from SimoTime. The documentation may be viewed online. |
| databn01 | This is a White Paper that describes the usage and format of BINARY fields (or "USAGE IS COMPUTATIONAL" in COBOL terminology). |
| datapk01 | This is a White Paper that describes the usage and format of PACKED-DECIMAL fields (or "USAGE IS COMPUTATIONAL-3" in COBOL terminology). |
| datazd01 | This is a White Paper that describes the usage and format of ZONED-DECIMAL fields (or "USAGE IS DISPLAY" in COBOL terminology). |
The following chart provides a list of the sample COBOL programs that focus on processing numeric fields.
| HTML Tag | Description |
| cblnum01 | This is an example of how COBOL can test that a data field contains a valid numeric value. It also illustrates how to redefine a numeric field and then scan the field from left to right testing for a digit in each position. |
| cblraz01 | This suite of programs provides an example of a routine that will Right Adjust (or Right Justify) a text string within a numeric field and fill the left-most or high-order bytes with zeroes. |
| cbltxn01 | This suite of programs provides an example of how a COBOL program calls a COBOL routine to create a 150-character, English-oriented text data string from a 12-digit numeric field. For example, if the numeric field contains 000000001234 then a text string is created with the following information, One-Thousand-Two-Hundred-Thirty-Four |
| nbrtyp01 | This suite of example programs will describe the use, format and size of some of the commonly used numeric fields of the COBOL programming language. This example also illustrates how to redefine a numeric field and how to display the actual hexadecimal content of a numeric field. |
| number01 | This document is an introduction to the various numeric formats used by COBOL and the IBM mainframe systems The session will describe three of the popular numeric formats used with COBOL and IBM Mainframe systems. The discussions include further detail about the issues and concerns of unsigned (or implied positive) numbers, signed (positive or negative) numbers and decimal or whole numbers. A sample of how to convert non-print formats to display or print formats is included along with a sample COBOL program. |
| numbug01 | The challenge with this program is that it is expected to process the various numeric items in the same manner as the mainframe. For example, a zoned-decimal field that contains leading spaces should not cause an ABEND (i.e. 163 error on Micro Focus) but should treat the leading spaces as zeroes and complete the arithmetic calculation. However, a packed-decimal field that contains non-numeric values would issue a S0C7 (referred to as a sock-seven) on the mainframe and should issue a 163 error in the Micro Focus environment. |
To review all the information available on this site start at The SimoTime Home Page .
If you have any questions, suggestions or comments please call or send an e-mail to: helpdesk@simotime.com
Founded in 1987, SimoTime Enterprises 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. This includes the smallest thin client using the Internet and the very large mainframe systems. There is more to making the Internet work for your company's business than just having a nice looking WEB site. It is about combining the latest technologies and existing technologies with practical business experience. It's about the business of doing business and looking good in the process. 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. 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 |
| Copyright © 1987-2010 SimoTime Enterprises All Rights Reserved |
| When technology complements business |
| http://www.simotime.com |