|
Variable Length Records SimoVREC - The COBOL Source Code |
![]() |
| The SimoTime Home Page |
The primary purpose of the SIMOVREC program is to provide a capability for accessing a mainframe file with variable length records that has been transferred from the mainframe to a Windows platform using "BINARY" mode. This capability will allow a user to read the mainframe formatted file and write to a standard Micro Focus file using variable length records. This document provides a listing of the COBOL source code for viewing. Additional information about this program may be obtained by sending an e-mail to: helpdesk@simotime.com .
We have made a significant effort to ensure the documents and software technologies are correct and accurate. We reserve the right to make changes without notice at any time. The function delivered in this version is based upon the enhancement requests from a specific group of users. The intent is to provide changes as the need arises and in a timeframe that is dependent upon the availability of resources.
Copyright © 1987-2024
SimoTime Technologies and Services
All Rights Reserved
The SimoVREC routine (or callable program) will provide access to a mainframe formatted sequential file with variable length records that has been downloaded from a mainframe using the File Transfer Protocol (FTP) in "BINARY" mode.
The following is an example of how to initialize the pass area. This only needs to be done one time prior to the first call.
move 'GET ' to VREC-REQUEST
move ZERO to VREC-RESPOND
move ZERO to VREC-LENGTH
move SPACES to VREC-BUFFER
The following is an example of a call statement for the callable routine.
call 'SIMOVREC' using PASSVREC-AREA
It is not necessary to do an explicit open of the input, byte-stream file. The first call to the routine will open the file and read the first record. Subsequent calls will return a logical record in the buffer with its record length in the RTN1-LENGTH field. When a call results in an end of file condition the routine will close the file. The COBOL copy file that defines the data structure for the pass area is described in a following section of this document. For convenience the following shows the field layout.
01 PASSVREC-AREA.
05 VREC-REQUEST pic X(8).
05 VREC-RESPOND pic 9(4).
05 VREC-LENGTH pic 9(5).
05 VREC-BUFFER pic X(32760).
The following is a list of the parameters and the required content when using the PASSVREC-AREA to call the SimoVREC routine.
| ||||||||||||||||||
| A List of the Environment Variables used by the SIMOVREC Callable Program |
The following are environment variables used by the byte-stream read routine for mainframe formatted files with variable length records.
| ||||||||||||||||||||||
| A List of the Environment Variables used by the SIMOVREC Callable Program |
The following (SIMOVREC.cbl) is the COBOL Source Code.
IDENTIFICATION DIVISION.
PROGRAM-ID. SIMOVREC.
*AUTHOR. SIMOTIME TECHNOLOGIES.
*****************************************************************
* Copyright (C) 1987-2019 SimoTime Technologies. *
* *
* All rights reserved. Unpublished, all rights reserved under *
* copyright law and international treaty. Use of a copyright *
* notice is precautionary only and does not imply publication *
* or disclosure. *
* *
* Permission to use, copy, modify and distribute this software *
* for any non-commercial purpose and without fee is hereby *
* granted, provided the SimoTime copyright notice appear on all *
* copies of the software. The SimoTime name or Logo may not be *
* used in any advertising or publicity pertaining to the use *
* of the software without the written permission of SimoTime *
* Technologies. *
* *
* Permission to use, copy, modify and distribute this software *
* for any commercial purpose requires a fee to be paid to *
* SimoTime Technologies. Once the fee is received by SimoTime *
* the latest version of the software will be delivered and a *
* license will be granted for use within an enterprise, *
* provided the SimoTime copyright notice appear on all copies *
* of the software. The SimoTime name or Logo may not be used *
* in any advertising or publicity pertaining to the use of the *
* software without the written permission of SimoTime *
* Technologies. *
* *
* SimoTime Technologies makes no warranty or representations *
* about the suitability of the software for any purpose. It is *
* provided "AS IS" without any expressed or implied warranty, *
* including the implied warranties of merchantability, fitness *
* for a particular purpose and non-infringement. SimoTime *
* Technologies shall not be liable for any direct, indirect, *
* special or consequential damages resulting from the loss of *
* use, data or projects, whether in an action of contract or *
* tort, arising out of or in connection with the use or *
* performance of this software *
* *
* SimoTime Technologies *
* 15 Carnoustie Drive *
* Novato, CA 94949-5849 *
* 415.883.6565 *
* *
* RESTRICTED RIGHTS LEGEND *
* Use, duplication, or disclosure by the Government is subject *
* to restrictions as set forth in subparagraph (c)(1)(ii) of *
* the Rights in Technical Data and Computer Software clause at *
* DFARS 52.227-7013 or subparagraphs (c)(1) and (2) of *
* Commercial Computer Software - Restricted Rights at 48 *
* CFR 52.227-19, as applicable. Contact SimoTime Technologies, *
* 15 Carnoustie Drive, Novato, CA 94949-5849. *
* *
*****************************************************************
* This program is provided by SimoTime Technologies *
* Our e-mail address is: helpdesk@simotime.com *
* Also, visit our Web Site at http://www.simotime.com *
* *
*****************************************************************
*
*****************************************************************
* Source Member: SIMOVREC.CBL
* Copy Files: PASSVREC.CPY (used in LINKAGE Section)
* PASSBSIO.CPY (used in WORKING-STORAGE Section)
* Calls to: SIMOBSIO.CBL
*****************************************************************
*
* ************
* * VRECEXE1 *
* ********cmd*
* *
* ************
* * if exist *
* ********stmt*
* *
* ************ ************
* * VRECEXC1 *-----* SQEDDV01 *
* ********cbl* ********dat*
* *
* **********
* call * *
* * *
* ************ *
* * SIMOVREC * *
* ********cbl* *
* * * End
* call * * Of
* * * File
* ************ ************ *
* * BSIODSN1 *-----* SIMOBSIO * *
* ********dat* ********cbl* *
* *
* **********
* *
* ************
* * EOJ *
* ************
*
*****************************************************************
*ENVIRONMENT DIVISION.
*****************************************************************
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SIM-TITLE.
05 T1 pic X(11) value '* SIMOVREC '.
05 T2 pic X(34) value 'File Reader via Byte-Stream I/O '.
05 T3 pic X(10) value ' v11.08.23'.
05 T4 pic X(24) value ' http://www.simotime.com'.
01 SIM-COPYRIGHT.
05 C1 pic X(11) value '* SIMOVREC '.
05 C2 pic X(20) value 'Copyright 1987-2019 '.
05 C3 pic X(28) value ' SimoTime Technologies '.
05 C4 pic X(20) value ' All Rights Reserved'.
01 SIM-THANKS-01.
05 C1 pic X(11) value '* SIMOVREC '.
05 C2 pic X(32) value 'Thank you for using this program'.
05 C3 pic X(32) value ' provided from SimoTime Technolo'.
05 C4 pic X(04) value 'gies'.
01 SIM-THANKS-02.
05 C1 pic X(11) value '* SIMOVREC '.
05 C2 pic X(32) value 'Please send all inquires or sugg'.
05 C3 pic X(32) value 'estions to the helpdesk@simotime'.
05 C4 pic X(04) value '.com'.
*****************************************************************
* Message Buffer used for display to SYSOUT or CONSOLE.
* MB-LSB, Last Significant Byte in Message Buffer
*****************************************************************
01 MESSAGE-BUFFER.
05 MESSAGE-HEADER pic X(011) value '* SIMOVREC '.
05 MESSAGE-TEXT.
10 MESSAGE-TEXT-1 pic X(068) value SPACES.
10 MESSAGE-TEXT-2 pic X(188) value SPACES.
01 MB-LSB pic 9(3) value 267.
*****************************************************************
* Data-structure for environment variable get routine... *
*****************************************************************
01 ENV-VAR-NAME pic X(16) value SPACES.
01 ENV-VAR-VALUE pic X(256) value SPACES.
01 APPL-RESULT pic S9(9) comp.
88 APPL-AOK value 0.
88 APPL-EOF value 16.
01 DEBUG-LEVEL pic 9(2) value 0.
01 FIRST-TIME pic X value 'Y'.
01 BSIO-OPEN-FLAG pic X value 'N'.
01 FILE-TYPE pic X(3) value 'V '.
01 DW-EDIT pic X value 'Y'.
01 DW-EXPECTED pic X value LOW-VALUES.
01 INITREC1-MESSAGE.
05 FILLER pic X(12) value 'InitREC1 is '.
05 OUTPUT-ENCODING pic X value 'E'.
01 VREDBV01-LREC pic 9(9) comp value 0.
01 VREDBV01-LREC-ALPHA redefines VREDBV01-LREC.
05 VREC-LEN-1 pic X(2).
05 VREC-LEN-2 pic X(2).
01 VREDBV01-LBLK pic 9(5) comp value 0.
01 VREDBV01-LBLK-ALPHA redefines VREDBV01-LBLK.
05 VBLK-LEN-1 pic X(2).
05 VBLK-LEN-2 pic X(2).
01 VBS-LOOP pic 9(9) comp value 0.
01 VBS-LOOP-ALPHA redefines VBS-LOOP.
05 VBS-LOOP-1 pic X.
05 VBS-LOOP-2 pic X.
05 VBS-LOOP-3 pic X.
05 VBS-LOOP-4 pic X.
01 OT-X1 pic 9(7) value 0.
01 RECORD-LENGTH-DISPLAY.
05 filler pic X(15) value 'Record length: '.
05 RECORD-LENGTH-VALUE pic 9(5) value 0.
01 RECORD-MIN-DISPLAY.
05 filler pic X(15) value 'Record MIN is: '.
05 RECORD-MIN-VALUE pic 9(4) value 0.
01 RECORD-MAX-DISPLAY.
05 filler pic X(15) value 'Record MAX is: '.
05 RECORD-MAX-VALUE pic 9(4) value 0.
01 BSIOREAD-TOTAL.
05 filler pic X(18) value 'BSIOREAD count is '.
05 BSIOREAD-COUNT pic 9(7) value 0.
01 BSIOBLOK-TOTAL.
05 filler pic X(18) value 'BSIOBLOK count is '.
05 BSIOBLOK-COUNT pic 9(7) value 0.
01 VREDBV01-TOTAL.
05 filler pic X(18) value 'VREDBV01 count is '.
05 VREDBV01-COUNT pic 9(7) value 0.
*****************************************************************
* The following copy file is the pass area for calling SIMOBSIO,
* the byte stream I/O routine.
*****************************************************************
*
COPY PASSBSIO.
*****************************************************************
LINKAGE SECTION.
COPY PASSVREC.
*****************************************************************
PROCEDURE DIVISION using PASSVREC-AREA.
if FIRST-TIME = 'Y'
perform GET-STARTED
* perform BSIO-OPEN
move 'N' to FIRST-TIME
move ZERO to PSIO-OFFSET
end-if
if OUTPUT-ENCODING = 'E'
move all x'40' to VREC-BUFFER
else
move all x'20' to VREC-BUFFER
end-if
if BSIO-OPEN-FLAG not = 'Y'
if VREC-REQUEST = 'GET '
or VREC-REQUEST = 'READBSIO'
perform BSIO-OPEN
end-if
end-if
evaluate VREC-REQUEST
when 'GET ' if FILE-TYPE = 'VBS'
perform BSIO-READ-VREC-MULTIPLE
else
perform BSIO-READ-VREC
end-if
when 'READBSIO' if FILE-TYPE = 'VBS'
perform BSIO-READ-VREC-MULTIPLE
else
perform BSIO-READ-VREC
end-if
when 'OPEN ' perform BSIO-OPEN
when 'OPENPUT ' perform BSIO-OPEN
when 'CLOSE ' perform BSIO-CLOSE
when 'CREATE ' perform BSIO-CREATE
when other add 16 to ZERO giving PSIO-RETURN
add 16 to ZERO giving VREC-RESPOND
end-evaluate
if PSIO-RETURN = ZERO
evaluate FILE-TYPE
when 'V ' perform ACTION-FOR-V
when 'VB ' perform ACTION-FOR-VB
when 'VBS' perform ACTION-FOR-VBS
when other add 9301 to ZERO giving VREC-RESPOND
end-evaluate
else
add PSIO-RETURN to ZERO giving VREC-RESPOND
end-if
GOBACK.
*****************************************************************
ACTION-FOR-V.
add PSIO-LENGTH to ZERO giving VREC-LENGTH
move PSIO-BUFFER(1:VREDBV01-LREC)
to VREC-BUFFER(1:VREDBV01-LREC)
add PSIO-RETURN to ZERO giving VREC-RESPOND
exit.
*****************************************************************
ACTION-FOR-VB.
add PSIO-LENGTH to ZERO giving VREC-LENGTH
move PSIO-BUFFER(1:VREDBV01-LREC)
to VREC-BUFFER(1:VREDBV01-LREC)
add PSIO-RETURN to ZERO giving VREC-RESPOND
* if FILE-TYPE = 'VB '
* move BSIOBLOK-TOTAL to MESSAGE-TEXT
* perform Z-DISPLAY-CONSOLE-MESSAGE
* end-if
exit.
*****************************************************************
ACTION-FOR-VBS.
add PSIO-RETURN to ZERO giving VREC-RESPOND
exit.
*****************************************************************
* I/O ROUTINES FOR BYTE-Stream I/O... *
*****************************************************************
BSIO-READ-VREC.
* Get the Block Descriptor Word (BDW)...
if FILE-TYPE = 'VB'
and VREDBV01-LBLK < 1
add 4 to ZERO giving PSIO-LENGTH
move 'READBSIO' to PSIO-REQUEST
call 'SIMOBSIO' using PSIO-PASS-AREA
if DW-EDIT = 'Y'
if PSIO-BUFFER(3:2) not = LOW-VALUES
move 'Invalid Block Descriptor Word'
to MESSAGE-TEXT
perform Z-ABEND-PROGRAM
end-if
end-if
move PSIO-BUFFER(1:2) to VREDBV01-LBLK-ALPHA(3:2)
subtract 4 from VREDBV01-LBLK
add 4 to PSIO-OFFSET
add 1 to BSIOBLOK-COUNT
end-if
* Get the Record Descriptor Word (RDW)...
add 4 to ZERO giving PSIO-LENGTH
move 'READBSIO' to PSIO-REQUEST
call 'SIMOBSIO' using PSIO-PASS-AREA
if PSIO-RETURN = 0
if DW-EDIT = 'Y'
if PSIO-BUFFER(3:2) not = LOW-VALUES
* For VBS this will post an error if a record
* attempts to span segments.
move 'Invalid Descriptor Word Content'
to MESSAGE-TEXT
perform Z-ABEND-PROGRAM
end-if
end-if
move PSIO-BUFFER(1:2) to VREDBV01-LREC-ALPHA(3:2)
if FILE-TYPE = 'VB'
subtract VREDBV01-LREC from VREDBV01-LBLK
end-if
subtract 4 from VREDBV01-LREC
* Read the variable-length record.
add PSIO-LENGTH to PSIO-OFFSET
add VREDBV01-LREC to ZERO giving PSIO-LENGTH
if PSIO-LENGTH > PSIO-MAX-SIZE
add PSIO-MAX-SIZE to ZERO giving VREDBV01-LREC
display 'Record read size exceeds max size '
PSIO-LENGTH ' vs ' PSIO-MAX-SIZE
' Record Number is ' BSIOREAD-COUNT
upon console
end-if
call 'SIMOBSIO' using PSIO-PASS-AREA
add 1 to BSIOREAD-COUNT
add PSIO-LENGTH to PSIO-OFFSET
end-if
exit.
*---------------------------------------------------------------*
BSIO-READ-VREC-MULTIPLE.
move x'01' to VBS-LOOP-3
move ZERO to VREC-LENGTH
add 1 to ZERO giving OT-X1
perform until VBS-LOOP-3 = LOW-VALUE
or VBS-LOOP-3 = x'02'
perform BSIO-READ-VREC-MULTIPLE-02
if PSIO-RETURN = 0
add PSIO-LENGTH to VREC-LENGTH
move PSIO-BUFFER(OT-X1:VREDBV01-LREC)
to VREC-BUFFER(OT-X1:VREDBV01-LREC)
add PSIO-LENGTH to OT-X1
end-if
end-perform
exit.
*---------------------------------------------------------------*
BSIO-READ-VREC-MULTIPLE-02.
* Get the Segment Descriptor Word (RDW)...
add 4 to ZERO giving PSIO-LENGTH
move 'READBSIO' to PSIO-REQUEST
call 'SIMOBSIO' using PSIO-PASS-AREA
if PSIO-RETURN = 0
move PSIO-BUFFER(1:4) to VBS-LOOP-ALPHA
if DW-EDIT = 'Y'
if VBS-LOOP-3 not = LOW-VALUE
and VBS-LOOP-3 not = x'01'
and VBS-LOOP-3 not = x'02'
and VBS-LOOP-3 not = x'03'
* For VBS this will post an error if a record
* attempts to span segments.
move 'Invalid Descriptor Word Content'
to MESSAGE-TEXT
perform Z-ABEND-PROGRAM
end-if
end-if
move PSIO-BUFFER(1:2) to VREDBV01-LREC-ALPHA(3:2)
subtract 4 from VREDBV01-LREC
* Read the variable-length record.
add PSIO-LENGTH to PSIO-OFFSET
add VREDBV01-LREC to ZERO giving PSIO-LENGTH
if PSIO-LENGTH > PSIO-MAX-SIZE
add PSIO-MAX-SIZE to ZERO giving VREDBV01-LREC
display 'Record read size exceeds max size '
PSIO-LENGTH ' vs ' PSIO-MAX-SIZE
' Record Number is ' BSIOREAD-COUNT
upon console
end-if
call 'SIMOBSIO' using PSIO-PASS-AREA
add 1 to BSIOREAD-COUNT
add PSIO-LENGTH to PSIO-OFFSET
else
move LOW-VALUE to VBS-LOOP-3
end-if
exit.
*---------------------------------------------------------------*
BSIO-OPEN.
move PSIO-FILENAME to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
move 'OPEN ' to PSIO-REQUEST
call 'SIMOBSIO' using PSIO-PASS-AREA
if PSIO-RETURN = 0
move 'AOK, OPEN Input File for BSIO' to MESSAGE-TEXT
move 'Y' to BSIO-OPEN-FLAG
else
move 'NOK, OPEN Input File FAILURE ' to MESSAGE-TEXT
add PSIO-RETURN to ZERO giving VREC-RESPOND
perform Z-ABEND-PROGRAM
end-if
perform Z-DISPLAY-CONSOLE-MESSAGE
move 'FILEINFO' to PSIO-REQUEST
call 'SIMOBSIO' using PSIO-PASS-AREA
if PSIO-RETURN = 0
move 'AOK, File Info Request for BSIO' to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
move PSIO-FILE-SIZE to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
else
move 'NOK, File Info Request FAILURE ' to MESSAGE-TEXT
perform Z-ABEND-PROGRAM
end-if
exit.
*---------------------------------------------------------------*
BSIO-CREATE.
move PSIO-FILENAME to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
move VREC-REQUEST to PSIO-REQUEST
call 'SIMOBSIO' using PSIO-PASS-AREA
if PSIO-RETURN = 0
move 'AOK, CREATE File for BSIO' to MESSAGE-TEXT
else
move 'NOK, CREATE File FAILURE ' to MESSAGE-TEXT
perform Z-ABEND-PROGRAM
end-if
perform Z-DISPLAY-CONSOLE-MESSAGE
exit.
*---------------------------------------------------------------*
BSIO-CLOSE.
move 'CLOSE ' to PSIO-REQUEST
call 'SIMOBSIO' using PSIO-PASS-AREA
exit.
*****************************************************************
* Get an environment variable. *
*****************************************************************
GET-ENVIRONMENT-VARIABLE.
move SPACES to ENV-VAR-VALUE
move ZERO to RETURN-CODE
accept ENV-VAR-VALUE from ENVIRONMENT ENV-VAR-NAME
on exception add 8 to ZERO giving RETURN-CODE
end-accept
if RETURN-CODE not = 0
move SPACES to ENV-VAR-VALUE
end-if
exit.
*****************************************************************
* Get started or first time logic... *
*****************************************************************
GET-STARTED.
perform Z-POST-COPYRIGHT
* Get the fully qualified File Name
move SPACES to ENV-VAR-NAME
move 'BSIODSN1' to ENV-VAR-NAME
perform GET-ENVIRONMENT-VARIABLE
if ENV-VAR-VALUE not = SPACES
move ENV-VAR-VALUE to PSIO-FILENAME
else
move 'Invalid file name for BSIO Function'
to MESSAGE-TEXT
perform Z-ABEND-PROGRAM
end-if
* Get the record initialization value
move SPACES to ENV-VAR-NAME
move 'INITREC1' to ENV-VAR-NAME
perform GET-ENVIRONMENT-VARIABLE
if ENV-VAR-VALUE not = SPACES
move ENV-VAR-VALUE to OUTPUT-ENCODING
if OUTPUT-ENCODING = 'E' or 'A'
move INITREC1-MESSAGE to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
else
move 'E' to OUTPUT-ENCODING
move 'Invalid INITREC1, not A or E, assumed EBCDIC'
to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
end-if
else
move 'E' to OUTPUT-ENCODING
move 'Invalid INITREC1, must be A or E, assumed EBCDIC'
to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
end-if
* Get a possible EXTFH value...
move SPACES to ENV-VAR-NAME
move 'EXTFH ' to ENV-VAR-NAME
perform GET-ENVIRONMENT-VARIABLE
if ENV-VAR-VALUE not = SPACES
move ENV-VAR-VALUE to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
else
move 'Info Only, EXTFH Environment variable not found.'
to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
end-if
* Get the File Format, should be V or VB
move SPACES to ENV-VAR-NAME
* move 'BSIOFMT1' to ENV-VAR-NAME
move 'BSIOFMT1' to ENV-VAR-NAME
perform GET-ENVIRONMENT-VARIABLE
inspect ENV-VAR-VALUE converting 'bov' to 'BOV'
if ENV-VAR-VALUE = 'VO '
move 'N' to DW-EDIT
move 'V ' to ENV-VAR-VALUE
end-if
if ENV-VAR-VALUE = 'VBO'
move 'N' to DW-EDIT
move 'VB ' to ENV-VAR-VALUE
end-if
if ENV-VAR-VALUE = 'V '
or ENV-VAR-VALUE = 'VB '
or ENV-VAR-VALUE = 'VBS'
move ENV-VAR-VALUE to FILE-TYPE
else
move 'V ' to FILE-TYPE
move 'File Format must be V or VB, assumed V'
to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
end-if
move 'Info Only, File Type is &&&' to MESSAGE-TEXT
inspect MESSAGE-TEXT replacing first '&&&' by FILE-TYPE
perform Z-DISPLAY-CONSOLE-MESSAGE
add 32760 to ZERO giving PSIO-MAX-SIZE
exit.
*****************************************************************
* The following Z-Routines perform administrative tasks *
* for this program. *
*****************************************************************
* ABEND the program, post a message to the console and issue *
* a STOP RUN. *
*****************************************************************
Z-ABEND-PROGRAM.
if MESSAGE-TEXT not = SPACES
perform Z-DISPLAY-CONSOLE-MESSAGE
end-if
move 'PROGRAM-IS-ABENDING...' to MESSAGE-TEXT
perform Z-DISPLAY-CONSOLE-MESSAGE
add 12 to ZERO giving RETURN-CODE
GOBACK
* STOP RUN
exit.
*****************************************************************
* Display CONSOLE messages... *
*****************************************************************
Z-DISPLAY-CONSOLE-MESSAGE.
perform Z-CALCULATE-MSG-LENGTH
display MESSAGE-BUFFER(1:MB-LSB) upon console
move all SPACES to MESSAGE-TEXT
exit.
*****************************************************************
Z-CALCULATE-MSG-LENGTH.
add 267 to ZERO giving MB-LSB
if MESSAGE-TEXT-2 = SPACES
add 79 to ZERO giving MB-LSB
else
if MESSAGE-BUFFER(122:146) = SPACES
subtract 146 from MB-LSB
end-if
end-if
perform until MB-LSB < 80
or MESSAGE-BUFFER(MB-LSB:1) not = SPACE
if MESSAGE-BUFFER(MB-LSB:1) = SPACE
subtract 1 from MB-LSB
end-if
end-perform
exit.
*****************************************************************
Z-POST-COPYRIGHT.
display SIM-TITLE upon console
display SIM-COPYRIGHT upon console
exit.
*****************************************************************
Z-THANK-YOU.
display SIM-THANKS-01 upon console
display SIM-THANKS-02 upon console
exit.
*****************************************************************
* This example is provided by SimoTime Technologies *
* Our e-mail address is: helpdesk@simotime.com *
* Also, visit our Web Site at http://www.simotime.com *
*****************************************************************
The following (PASSVREC.cpy) is the COBOL copy file used to define the pass area structure when calling the SIMOVREC program.
*****************************************************************
* PASSVREC is a COBOL Copy File *
* Data Structure or Pass Area used for calling SIMOVREC. *
* Copyright (C) 1987-2019 SimoTime Technologies *
* All Rights Reserved *
*****************************************************************
* Provided by SimoTime Technologies *
* Our e-mail address is: helpdesk@simotime.com *
* Also, visit our Web Site at http://www.simotime.com *
*****************************************************************
*
* VREC-REQUEST - This parameter must be provided by the calling
* program.
* VREC-RESPOND - A zero (0) value indicates a successful
* completion of the request. A non-zero value
* indicates the request could not be completed
* successfully.
* VREC-LENGTH - The length of the read or GET request is posted
* in this parameter by SimoVREC. This is the
* length of the record. The logical record size
* may vary from 4 to 32,760 bytes.
* VREC-BUFFER - This parameter will contain the logical record
* for a GET request.
*
01 PASSVREC-AREA.
05 VREC-REQUEST pic X(8).
05 VREC-RESPOND pic 9(4).
05 VREC-LENGTH pic 9(5).
05 VREC-BUFFER pic X(32760).
*
*** PASSVREC - End-of-Copy File - - - - - - - - - - - PASSVREC *
*****************************************************************
*
The primary purpose of the SIMOVREC program is to provide a capability for accessing a mainframe file with variable length records that has been transferred from the mainframe to a Windows platform using "BINARY" mode. This document may be used as a tutorial for new programmers or as a quick reference for experienced programmers.
In the world of programming there are many ways to solve a problem. This documentation and software were developed and tested on systems that are configured for a SIMOTIME environment based on the hardware, operating systems, user requirements and security requirements. Therefore, adjustments may be needed to execute the jobs and programs when transferred to a system of a different architecture or configuration.
SIMOTIME Services has experience in moving or sharing data or application processing across a variety of systems. For additional information about SIMOTIME Services or Technologies please contact us using the information in the Contact, Comment or Feedback section of this document.
Software Agreement and Disclaimer
Permission to use, copy, modify and distribute this software, documentation or training material for any purpose requires a fee to be paid to SimoTime Technologies. Once the fee is received by SimoTime the latest version of the software, documentation or training material will be delivered and a license will be granted for use within an enterprise, provided the SimoTime copyright notice appear on all copies of the software. The SimoTime name or Logo may not be used in any advertising or publicity pertaining to the use of the software without the written permission of SimoTime Technologies.
SimoTime Technologies makes no warranty or representations about the suitability of the software, documentation or learning material for any purpose. It is provided "AS IS" without any expressed or implied warranty, including the implied warranties of merchantability, fitness for a particular purpose and non-infringement. SimoTime Technologies shall not be liable for any direct, indirect, special or consequential damages resulting from the loss of use, data or projects, whether in an action of contract or tort, arising out of or in connection with the use or performance of this software, documentation or training material.
This section includes links to documents with additional information that are beyond the scope and purpose of this document. The first group of documents may be available from a local system or via an internet connection, the second group of documents will require an internet connection.
Note: A SimoTime License is required for the items to be made available on a local system or server.
The following links may be to the current server or to the Internet.
Note: The latest versions of the SimoTime Documents and Program Suites are available on the Internet and may be accessed using the
icon. If a user has a SimoTime Enterprise License the Documents and Program Suites may be available on a local server and accessed using the
icon.
Explore the COBOL Connection for more examples of COBOL programming techniques and sample code.
Explore a complete list of the SimoTime Callable Routines or Utility Programs. This includes the callable routines and utility programs for the Micro Focus environment.
Explore The ASCII and EBCDIC Translation Tables. These tables are provided for individuals that need to better understand the bit structures and differences of the encoding formats.
Explore The File Status Return Codes that are used to interpret the results of accessing VSAM data sets and/or QSAM files.
The following links will require an internet connect.
This suite of programs and documentation is available to download for review and evaluation purposes. Other uses will require a SimoTime Software License. Link to an Evaluation zPAK Option that includes the program members, documentation and control files.
A good place to start is The SimoTime Home Page for access to white papers, program examples and product information. This link requires an Internet Connection
Explore The Micro Focus Web Site for more information about products (including Micro Focus COBOL) and services available from Micro Focus. This link requires an Internet Connection.
Explore the Glossary of Terms for a list of terms and definitions used in this suite of documents and white papers.
This document was created and is maintained by SimoTime Technologies. If you have any questions, suggestions, comments or feedback please use the following contact information.
| 1. | Send an e-mail to our helpdesk. |
| 1.1. | helpdesk@simotime.com. |
| 2. | Our telephone numbers are as follows. |
| 2.1. | 1 415 763-9430 office-helpdesk |
| 2.2. | 1 415 827-7045 mobile |
We appreciate hearing from you.
SimoTime Technologies was founded in 1987 and is a privately owned company. We specialize in the creation and deployment of business applications using new or existing technologies and services. We have a team of individuals that understand the broad range of technologies being used in today's environments. Our customers include small businesses using Internet technologies to corporations using very large mainframe systems.
Quite often, to reach larger markets or provide a higher level of service to existing customers it requires the newer Internet technologies to work in a complementary manner with existing corporate mainframe systems. We specialize in preparing applications and the associated data that are currently residing on a single platform to be distributed across a variety of platforms.
Preparing the application programs will require the transfer of source members that will be compiled and deployed on the target platform. The data will need to be transferred between the systems and may need to be converted and validated at various stages within the process. SimoTime has the technology, services and experience to assist in the application and data management tasks involved with doing business in a multi-system environment.
Whether you want to use the Internet to expand into new market segments or as a delivery vehicle for existing business functions simply give us a call or check the web site at http://www.simotime.com
| Return-to-Top |
| Access a Variable Length File using COBOL |
| Copyright © 1987-2024 SimoTime Technologies and Services All Rights Reserved |
| When technology complements business |
| http://www.simotime.com |