Assembler to MOD File Create a Non-Executable Load Member |
The SimoTime Home Page |
In the CICS environment on the mainframe it was a common practice to use the EXEC CICS LOAD function to load a data table into memory. These data tables were typically created as mainframe assembler source members. The mainframe assembler source members were then compiled and linked as non-executable load members using the Mainframe Assembler Compiler (Assembler/H or HLASM).
This example will describe how to create a non-executable load member for the Micro Focus Studio and Server environments by reading an Assembler source member and creating a .MOD file. The .MOD file (or non-executable load member) can be created with an EBCDIC or ASCII encoded format and will use the SimoTime Utility program called ASMOGENR.
The technique of using Mainframe Assembler (or HLASM, High-Level Assembler) to create a data table or non-executable load member would typically use a subset of the mainframe assembler operation codes (or OPCODES) that focused on the creation of data.
When moving a mainframe CICS application from the mainframe to a non-mainframe platform (such as Windows, UNIX or Linux) using Micro Focus technology this technique of creating and loading tables will require extra consideration.
Micro Focus Mainframe Express (MFE) includes mainframe assembler capability. The assembler source code for the tables may be transferred from the mainframe to the MFE environment without changes to the source code. The source code may then be compiled using the Mainframe Assembler Option of MFE. Once the members are compiled (as non-executable load members or filename.MOD) the tables may be loaded under control of the MFE CICS Option using the EXEC CICS LOAD function.
At this point it is important to emphasize the encoding format for the mainframe and MFE is EBCDIC. In addition, the Mainframe Assembler and the Assembler Option in MFE are EBCDIC-centric and may function at the bit level.
Therefore, we are faced with two (2) challenges if the target platform is Enterprise Server running in an ASCII-encoded environment.
1. | Net Express and Enterprise Server do not include the mainframe assembler technology. We could be limited to running in an EBCDIC-encoded environment and using the .MOD files created by MFE. |
2. | How do we provide on-going support for Net Express and/or Enterprise Server for Mainframe Migration in either an EBCDIC or ASCII encoded environment? |
The good news is the table data that is maintained in the form of mainframe assembler source code typically uses a very small subset of the capabilities of mainframe assembler. A program (ASMOGENR) is available that provides the capability of processing an assembler source member that uses the mainframe assembler "Define Constant" (DC) or "Define Storage" DS statements to define the structure of the data in the table. For table items that are defined as "character" the ASMOGENR program has the ability to produce a load member for an EBCDIC or ASCII encoded environment.
In the world of programming there are many ways to solve a problem. This suite of programs is provided as a programming example of one of the possible solutions to the problem of creating non-executable load members from mainframe assembler source members in a Micro Focus environment. This example may serve as a tutorial for new programmers and as a reference for experienced programmers.
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-2023
SimoTime Technologies and Services
All Rights Reserved
The suite of programs uses Micro Focus COBOL and Windows Command files. The programs are unit tested with Micro Focus Net Express, version 5.1. The program or system testing is done on a Windows/7 system using Micro Focus Studio, Enterprise Edition.
If you have installed other SimoTime Technologies then verify that c:\SimoLIBR exist and contains the load members and three sub-directories, HTML, LOGS and DataWrk1. If not then create the c:\SimoLIBR with the three sub-directories.
Open a Command Prompt Window and enter the following commands.
C:> md SIMOLIBR C:> cd SIMOLIBR C:\SIMOLIBR> md DATAWRK1 C:\SIMOLIBR> md HTML C:\SIMOLIBR> md LOGS
Unzip the content of the ASMOGENR.ZIP file into the SIMOLIBR directory. Add the SIMOLIBR directory to your system path. You should now be ready to use the ASMOGENR Technology.
Note: ASMOGENR leverages functions that are available in other SimoTime technologies. It is recommended that ASMOGENR be installed as part of the SimoTime Enterprise Package that is available for mainframe application migrations.
The following flow chart shows the processing flow for the ASMOGENR program and the Installation Verification Programs (IVP's).
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Note-1: The ASMOFORM is an environment variable that determines the FORMat (i.e. the encoding schema for ASCII or EBCDIC) for the Non-Executable Load Member | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Note-2: The SIMOPARS program is part of the SIMOMODS package that is available from SimoTime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Note-3: The SIMOBSIO program is part of the SIMOMODS package that is available from SimoTime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Generate a Non-Executable Load Member from Assembler Source Code |
This section provides a minimum level of understanding to begin using the ASMOGENR program. Running the ASMOGENR program is a three step process.
| ||||||||
Quick Start for Creating ASCII or EBCDIC Encoded Non-Executable Load Members |
The file defined by the ASMOTAKE environment variable will be read. Informational and error messages will be written to the SYSOUT file and placed in the listing file. A source listing will be produced if a valid file name is provided by the ASMOLIST environment variable. If the source input is correct a loadable, non-executable member will be created based on the file name specified by the ASMOMAKE environment variable.
The ASMOFORM environment variable is used to determine the encoding schema for the output member that is defined by the ASMOMAKE environment variable. The following show the setting for and ASCII-encoded or EBCDIC-encoded environment.
For an ASCII-encoded environment use the following.
SET ASMOFORM=ASC
For an EBCDIC-encoded environment use the following.
SET ASMOFORM=EBC
This section provides basic detail about the structure, function and use of the ASMOGENR program.
The following (TABLE001.mlc) is a sample assembler source member that defines a table with ten (10) elements.
*********************************************************************** * TABLE001.MLC - Test Table for ASMOGENR * * Provided by SimoTime Technologies * * (C) Copyright 1987-2016 All Rights Reserved * * Web Site URL: http://www.simotime.com * * e-mail: helpdesk@simotime.com * *********************************************************************** * * ..:....1....:....2....:....3....:....4....:....5....:....6....:... * TABLE001 CSECT DC CL16'00001One ' DC CL16'00002Two ' DC CL16'00003Three ' DC CL16'00004Four ' DC CL16'00005Five ' DC CL16'00006Six ' DC CL16'00007Seven ' DC CL16'00008Eight ' DC CL16'00009Nine ' DC CL16'00010Ten ' END
The following (TABLE001.lst) is a sample assembler listing for TABLE001. This listing is produced by the generation process.
* ******************************************************************************* * * ASMOGENR Create .MOD from Assembler Source v14.11.26 A Controlled Release * * ASMOGENR Copyright 1987-2015 SimoTime Technologies All Rights Reserved * * ASMOGENR Compilation Date: 2014/12/02 Compilation Time: 09:51:33:30 * ******************************************************************************* * Line Location Data Label OpCode Operands 0000001 *********************************************************************** 0000002 * TABLE001.MLC - Test Table for ASMOGENR * 0000003 * Provided by SimoTime Technologies * 0000004 * (C) Copyright 1987-2015 All Rights Reserved * 0000005 * Web Site URL: http://www.simotime.com * 0000006 * e-mail: helpdesk@simotime.com * 0000007 *********************************************************************** 0000008 * 0000009 * ..:....1....:....2....:....3....:....4....:....5....:....6....:... 0000010 * 0000011 00000000 TABLE001 CSECT 0000012 00000000 30303030314F6E65 DC CL16'00001One ' 0000013 00000010 303030303254776F DC CL16'00002Two ' 0000014 00000020 3030303033546872 DC CL16'00003Three ' 0000015 00000030 3030303034466F75 DC CL16'00004Four ' 0000016 00000040 3030303035466976 DC CL16'00005Five ' 0000017 00000050 3030303036536978 DC CL16'00006Six ' 0000018 00000060 3030303037536576 DC CL16'00007Seven ' 0000019 00000070 3030303038456967 DC CL16'00008Eight ' 0000020 00000080 30303030394E696E DC CL16'00009Nine ' 0000021 00000090 303030313054656E DC CL16'00010Ten ' 0000022 000000A0 END * ******************************************************************************* * * Labels used by the Data Definition Member. * Statement Location Name Type Status Hexadecimal Decimal * 0000011 00000000 TABLE001 CST Assigned
The following (TABLE001.dmp) is a hexadecimal dump of the non-executable load member for TABLE001. To produce the dump of the non-executable member the SIMOZAPS utility program is used. This utility program is part of the enterprise package provided by SimoTime Enterprises.
* Hexcess2 c:\DevoTek1\UTIL\DEVL\DATA\Wrk1\TABLE001.MOD start=1 stop=9999999 * Hexcess2 by SimoTime Date: 2014-12-02 Time: 09:51:33:36 * Hexcess2 Starting at 000000000001 * Hexcess2 Stopping at 000009999999 * Hexcess2 File size 000000000160 Position Hex..... ........ ........ ........ ebcdic.......... ascii........... 000000001 30303030 314F6E65 20202020 20202020 .....|>......... 00001One 000000017 30303030 3254776F 20202020 20202020 .......?........ 00002Two 000000033 30303030 33546872 65652020 20202020 ................ 00003Three 000000049 30303030 34466F75 72202020 20202020 ......?......... 00004Four 000000065 30303030 35466976 65202020 20202020 ................ 00005Five 000000081 30303030 36536978 20202020 20202020 ................ 00006Six 000000097 30303030 37536576 656E2020 20202020 .........>...... 00007Seven 000000113 30303030 38456967 68742020 20202020 ................ 00008Eight 000000129 30303030 394E696E 65202020 20202020 .....+.>........ 00009Nine 000000145 30303031 3054656E 20202020 20202020 .......>........ 00010Ten * Hexcess2 by SimoTime, Program-is-ENDING...
This section provides additional or extended information about the structure, function and use of the ASMOGENR program.
The following (TABLE002.mlc) is a sample assembler source member that represents a typical coding technique.
*********************************************************************** * TABLE002.MLC - Test Table for ASMOGENR * * Provided by SimoTime Technologies * * (C) Copyright 1987-2016 All Rights Reserved * * Web Site URL: http://www.simotime.com * * e-mail: helpdesk@simotime.com * *********************************************************************** * * ..:....1....:....2....:....3....:....4....:....5....:....6....:... * TABLE002 CSECT 0 PARM003 DC S(ESIZE) PARM011 DC S(ECOUNT) DC CL1' ' ARRAY003 DS 0H DC CL3'060' TAG001 EQU * ESIZE003 EQU 3 ESIZE EQU *-ARRAY003 DC CL3'010' DC CL3'011' DC CL3'01A' DC CL3'020' DC CL3'021' DC CL3'02A' DC CL3'02B' DC CL3'900' DC CL3'999' DC CL3'99A' ECOUNT11 EQU 11 ECOUNT EQU (*-ARRAY003)/ESIZE TEST0003 DC S(ESIZE) TEST0011 DC S(ECOUNT) END
The following (TABLE002.lst) is a sample assembler listing for TABLE002. This listing is produced by the generation process.
* ******************************************************************************* * * ASMOGENR Create .MOD from Assembler Source v14.11.26 A Controlled Release * * ASMOGENR Copyright 1987-2015 SimoTime Technologies All Rights Reserved * * ASMOGENR Compilation Date: 2014/12/02 Compilation Time: 09:51:33:50 * ******************************************************************************* * Line Location Data Label OpCode Operands 0000001 *********************************************************************** 0000002 * TABLE002.MLC - Test Table for ASMOGENR * 0000003 * Provided by SimoTime Technologies * 0000004 * (C) Copyright 1987-2015 All Rights Reserved * 0000005 * Web Site URL: http://www.simotime.com * 0000006 * e-mail: helpdesk@simotime.com * 0000007 *********************************************************************** 0000008 * 0000009 * ..:....1....:....2....:....3....:....4....:....5....:....6....:... 0000010 * 0000011 00000000 TABLE002 CSECT 0 0000012 00000000 0003 PARM003 DC S(ESIZE) 0000013 00000002 000B PARM011 DC S(ECOUNT) 0000014 00000004 20 DC CL1' ' 0000015 00000005 0000015 00000006 ARRAY003 DS 0H 0000016 00000006 303630 DC CL3'060' 0000017 00000009 TAG001 EQU * 0000018 00000009 ESIZE003 EQU 3 0000019 00000009 ESIZE EQU *-ARRAY003 0000020 00000009 303130 DC CL3'010' 0000021 0000000C 303131 DC CL3'011' 0000022 0000000F 303141 DC CL3'01A' 0000023 00000012 303230 DC CL3'020' 0000024 00000015 303231 DC CL3'021' 0000025 00000018 303241 DC CL3'02A' 0000026 0000001B 303242 DC CL3'02B' 0000027 0000001E 393030 DC CL3'900' 0000028 00000021 393939 DC CL3'999' 0000029 00000024 393941 DC CL3'99A' 0000030 00000027 ECOUNT11 EQU 11 0000031 00000027 ECOUNT EQU (*-ARRAY003)/ESIZE 0000032 00000027 0000032 00000028 0003 TEST0003 DC S(ESIZE) 0000033 0000002A 000B TEST0011 DC S(ECOUNT) 0000034 0000002C END * ******************************************************************************* * * Labels used by the Data Definition Member. * Statement Location Name Type Status Hexadecimal Decimal * 0000011 00000000 TABLE002 CST Assigned * 0000012 00000000 PARM003 REL Assigned * 0000013 00000002 PARM011 REL Assigned * 0000015 00000006 ARRAY003 REL Assigned * 0000017 00000009 TAG001 ABS Assigned 9 * 0000018 00000009 ESIZE003 ABS Assigned 3 * 0000019 00000009 ESIZE ABS Assigned 3 * 0000030 00000027 ECOUNT11 ABS Assigned 11 * 0000031 00000027 ECOUNT ABS Assigned 11 * 0000032 00000028 TEST0003 REL Assigned * 0000033 0000002A TEST0011 REL Assigned
The following (TABLE002.dmp) is a hexadecimal dump of the non-executable load member for TABLE002. To produce the dump of the non-executable member the SIMOZAPS utility program is used. This utility program is part of the enterprise package provided by SimoTime Enterprises.
* Hexcess2 c:\DevoTek1\UTIL\DEVL\DATA\Wrk1\TABLE002.MOD start=1 stop=9999999 * Hexcess2 by SimoTime Date: 2014-12-02 Time: 09:51:33:55 * Hexcess2 Starting at 000000000001 * Hexcess2 Stopping at 000009999999 * Hexcess2 File size 000000000044 Position Hex..... ........ ........ ........ ebcdic.......... ascii........... 000000001 0003000B 20003036 30303130 30313130 ................ .... .0600100110 000000017 31413032 30303231 30324130 32423930 ................ 1A02002102A02B90 000000033 30393939 39394100 0003000B xxxxxxxx ................ 099999A......... * Hexcess2 by SimoTime, Program-is-ENDING...
This section provides advanced information about the structure, function and esoteric use of the ASMOGENR program.
The following (TABLE003.mlc) is the assembler source member that will create a 256 byte table of one byte entries from x'00' to x'FF'. This is rather clever with a minimum amount of code. However, it is not intuitive and does require a closer look to understand how it really works.
*********************************************************************** * TABLE003.MLC - Test Table for ASMOGENR * * Provided by SimoTime Technologies * * (C) Copyright 1987-2016 All Rights Reserved * * Web Site URL: http://www.simotime.com * * e-mail: helpdesk@simotime.com * *********************************************************************** * * Create a 256 byte table of one byte entries from x'00' to x'FF'. * This is rather clever with a minimum amount of code. However, it * is not intuitive and does require a closer look to understand * how it really works. * * ..:....1....:....2....:....3....:....4....:....5....:....6....:... * TABLE003 CSECT BINTAB01 DC 256AL1(*-BINTAB01) BINEND EQU * END
The following (TABLE003.lst) is a assembler listing for TABLE003. This listing is produced by the generation process.
* ******************************************************************************* * * ASMOGENR Create .MOD from Assembler Source v14.11.26 A Controlled Release * * ASMOGENR Copyright 1987-2015 SimoTime Technologies All Rights Reserved * * ASMOGENR Compilation Date: 2014/12/02 Compilation Time: 09:51:33:69 * ******************************************************************************* * Line Location Data Label OpCode Operands 0000001 *********************************************************************** 0000002 * TABLE003.MLC - Test Table for ASMOGENR * 0000003 * Provided by SimoTime Technologies * 0000004 * (C) Copyright 1987-2015 All Rights Reserved * 0000005 * Web Site URL: http://www.simotime.com * 0000006 * e-mail: helpdesk@simotime.com * 0000007 *********************************************************************** 0000008 * 0000009 * Create a 256 byte table of one byte entries from x'00' to x'FF'. 0000010 * This is rather clever with a minimum amount of code. However, it 0000011 * is not intuitive and does require a closer look to understand 0000012 * how it really works. 0000013 * 0000014 * ..:....1....:....2....:....3....:....4....:....5....:....6....:... 0000015 * 0000016 00000000 TABLE003 CSECT 0000017 00000000 00 BINTAB01 DC 256AL1(*-BINTAB01) 0000018 00000100 BINEND EQU * 0000019 00000100 END * ******************************************************************************* * * Labels used by the Data Definition Member. * Statement Location Name Type Status Hexadecimal Decimal * 0000016 00000000 TABLE003 CST Assigned * 0000017 00000000 BINTAB01 REL Assigned * 0000018 00000100 BINEND ABS Assigned 256
The following (TABLE003.dmp) is a hexadecimal dump of the non-executable load member for TABLE003. To produce the dump of the non-executable member the SIMOZAPS utility program is used. This utility program is part of the enterprise package provided by SimoTime Enterprises.
* Hexcess2 c:\DevoTek1\UTIL\DEVL\DATA\Wrk1\TABLE003.MOD start=1 stop=9999999 * Hexcess2 by SimoTime Date: 2014-12-02 Time: 09:51:33:73 * Hexcess2 Starting at 000000000001 * Hexcess2 Stopping at 000009999999 * Hexcess2 File size 000000000256 Position Hex..... ........ ........ ........ ebcdic.......... ascii........... 000000001 00010203 04050607 08090A0B 0C0D0E0F ................ ................ 000000017 10111213 14151617 18191A1B 1C1D1E1F ................ ................ 000000033 20212223 24252627 28292A2B 2C2D2E2F ................ !"#$%&.()*+,-./ 000000049 30313233 34353637 38393A3B 3C3D3E3F ................ 0123456789:;<=>? 000000065 40414243 44454647 48494A4B 4C4D4E4F ...........<(+| @ABCDEFGHIJKLMNO 000000081 50515253 54555657 58595A5B 5C5D5E5F &.........!$*);. PQRSTUVWXYZ[\]^_ 000000097 60616263 64656667 68696A6B 6C6D6E6F -/........|.%_>? `abcdefghijklmno 000000113 70717273 74757677 78797A7B 7C7D7E7F .........`:#@.=" pqrstuvwxyz{.}~. 000000129 80818283 84858687 88898A8B 8C8D8E8F .abcdefghi.{...+ ................ 000000145 90919293 94959697 98999A9B 9C9D9E9F .jklmnopqr.}.... ................ 000000161 A0A1A2A3 A4A5A6A7 A8A9AAAB ACADAEAF ..stuvwxyz...... ................ 000000177 B0B1B2B3 B4B5B6B7 B8B9BABB BCBDBEBF ..........[].... ................ 000000193 C0C1C2C3 C4C5C6C7 C8C9CACB CCCDCECF {ABCDEFGHI...... ................ 000000209 D0D1D2D3 D4D5D6D7 D8D9DADB DCDDDEDF }JKLMNOPQR...... ................ 000000225 E0E1E2E3 E4E5E6E7 E8E9EAEB ECEDEEEF ..STUVWXYZ...... ................ 000000241 F0F1F2F3 F4F5F6F7 F8F9FAFB FCFDFEFF 0123456789...... ................ * Hexcess2 by SimoTime, Program-is-ENDING...
This section describes functions that are common with other programs and performs standard administrative or utilitarian tasks. Some of these items may require the downloading of additional technology from the SimoTime Web Site.
The following sections describe how to generate and review the non-executable load members.
The following CMD file (ASMOTEST.cmd) provides a method for generating multiple non-executable load members.
@echo OFF rem * ************************************************************************ rem * ASMOTEST.cmd - a Windows Command File * rem * This job is provided by SimoTime Technologies * rem * (C) Copyright 1987-2021 All Rights Reserved * rem * Web Site URL: http://www.simotime.com * rem * e-mail: helpdesk@simotime.com * rem * ************************************************************************ rem * rem * Text - Execute the three (3) Installation Verification Programs rem * Author - SimoTime Technologies rem * Date - January 24, 1996 rem * call SimoNOTE "*******************************************************ASMOTEST" call SimoNOTE "Starting CmdName ASMOTEST, V11.11.02, User is %USERNAME%" call SimoNOTE "Generate a non-Executable Load Member for TABLE001" call ASMOIVPS TABLE001 nopause call SimoNOTE "Generate a non-Executable Load Member for TABLE002" call ASMOIVPS TABLE002 nopause call SimoNOTE "Generate a non-Executable Load Member for TABLE003" call ASMOIVPS TABLE003 nopause call SimoNOTE "Finished CmdName ASMOTEST, V11.11.02, User is %USERNAME%" pause
Note: This CMD file will call the ASMOIVPS.cmd file to generate the individual members.
The following callable CMD file (ASMOIVPS.cmd) provides a method for generating a single non-executable load member.
@echo OFF rem * ************************************************************************ rem * ASMOIVPS.cmd - a Windows Command File * rem * This job is provided by SimoTime Technologies * rem * (C) Copyright 1987-2021 All Rights Reserved * rem * Web Site URL: http://www.simotime.com * rem * e-mail: helpdesk@simotime.com * rem * ************************************************************************ rem * rem * Text - An Installation Verification Program (IVP) for ASMOGENR rem * Author - SimoTime Technologies rem * Date - January 24, 1996 rem * rem * This job describes the basic functionality of ASMOGENR. It creates a rem * non-executable load member using an assembler member containing DC rem * statements. The input member is passed via the first Parameter. rem * rem * The job will read one (1) file and create two (2) Files. rem * 1. The 1st file that will be read is a line sequential (LSEQ) rem * file containing mainframe assembler source code that defines rem * table or data structures using the Define Constant (or DC) rem * opcode of the assembler language. rem * 2. The 2nd file will be created using Byte-Stream I/O. This file rem * will be a non-executable member that may be loaded in the rem * online environment using an EXEC CICS LOAD. rem * 3. The 3rd file is a listing file produced as a result of the rem * generation process. rem * rem * This suite of programs will execute on a Personal Computer with rem * Windows and Micro Focus Net Express 5.0 or later. rem * rem * ************ rem * * ASMOIVPS * rem * ********cmd* rem * * rem * ************ rem * * ASMOSET1 * rem * ********cmd* rem * * rem * ************ ************ ************ rem * * ASMOTAKE *-----* ASMOGENR *-----* SYSOUT * rem * *******lseq* ************ * ************ rem * * * rem * * * ************ rem * * *--* ASMOMAKE * rem * * * *******bsio* rem * * * rem * * * ************ rem * * *--* ASMOLIST * rem * * *******lseq* rem * * rem * ************ rem * * EOJ * rem * ********cbl* rem * rem * ******************************************************************* rem * Step 1, Delete any previously created file... rem * set CmdName=ASMOIVPS set JobStatus=0000 call ASMOSET1 %CmdName% if "%SYSLOG%" == "" set syslog=c:\SimoLIBR\LOGS\SimoTime.LOG rem * call SimoNOTE "*******************************************************%CmdName%" call SimoNOTE "Starting CmdName %CmdName%, V09.03.25, User is %USERNAME%" if "%1" == "" set JobStatus=0010 if not %JobStatus% == 0000 goto :EojNok call SimoNOTE "StepInfo Delete previously created files" set MemName=%1 set ASMOFORM=ASC set ASMOLIST=%BaseLib1%\DataWrk1\%MemName%.LST set ASMOMAKE=%BaseLib1%\DataWrk1\%MemName%.MOD set ASMOTAKE=%BaseLib1%\%MemName%.MLC if exist %ASMOMAKE% del %ASMOMAKE% rem * rem * ******************************************************************* rem * Step 2, Read Assembler Source Member, create a new .MOD file... rem * call SimoNOTE "StepInfo Create the non-executable member" call SimoNOTE "ASMOMAKE is %ASMOMAKE%" run ASMOGENR rem * goto Jump01 if not ERRORLEVEL = 0 set JobStatus=0020 if not %JobStatus% == 0000 goto :EojNok rem * if exist %ASMOMAKE% goto :Jump01 set JobStatus=0030 goto :EojNok :Jump01 call SimoNOTE "DataTake %ASMOTAKE%" call SimoNOTE "DataMake %ASMOMAKE%" call SimoNOTE "DataLIST %ASMOLIST%" :EojAok call SimoNOTE "Finished CmdName %CmdName%, Job Status is %JobStatus% " goto :End :EojNok if %JobStatus% == 0010 call SimoNOTE "Parameter 1 must be a source member name" call SimoNOTE "ABENDING CmdName %CmdName%, Job Status is %JobStatus% " :End if not "%2" == "nopause" pause
Note: This CMD file will be called by the ASMOTEST.cmd file to generate the individual members.
The environment variables are divided into two groups or categories. The first group is a set of environment variables used to set system or global variables used by a number of applications or processing tasks. The second group is a set of environment variables used by a specific job or task. The following two sub-sections describe these two groups of environment variables.
A following command file (ENV1BASE.cmd) is called from other command files to set commonly used environment variables. This provides a single point of definition.
rem * ******************************************************************* rem * ENV1BASE.cmd - a Windows Command File * rem * This program is provided by SimoTime Technologies * rem * (C) Copyright 1987-2016 All Rights Reserved * rem * Web Site URL: http://www.simotime.com * rem * e-mail: helpdesk@simotime.com * rem * ******************************************************************* rem * rem * Text - Provide a single point to set commonly used environment variables. rem * Author - SimoTime Technologies rem * Date - January 24, 1996 rem * rem * Set the commonly used environment variables. This is used to provide rem * a single point for managing the commonly used environment variables. rem * set BASETEK1=C:\DEVOTEK1 set BASELIB8=C:\SIMOSAM8 set BASEWEB1=C:\SIMOWEB1 set BaseLIBR=%BASETEK1%\UTIL set BaseLib1=%BaseLIBR%\DEVL set SIMOCORE=%BASETEK1%\CORE set BASEAPP=%BaseLib1% set BASESYS=%BaseLib1%\SYS1 set BasePRD1=%BaseLIBR%\PROD set SYSLOG=%BaseLib1%\LOGS\SYSLOG_USER.TXT set SYSOUT=%BaseLib1%\LOGS\SYSOUT_USER.TXT set SimoNOTE=%BaseLib1%\LOGS\SimoNOTE_USER.TXT set SimoLIBR=c:\SimoLIBR set MIFOEDEV="C:\Program Files (x86)\Micro Focus\Enterprise Developer\bin" set MIFOBASE="C:\Program Files (x86)\Micro Focus\Studio Enterprise Edition 6.0\Base" set MIFOBIN=%MIFOBASE%\bin call SimoNOTE "* Starting JobName ENV1BASE.cmd" rem * set COBPATH=.;c:\SimoLIBR set COBIDY=%BASELIB1%\COBIDY rem * if "%MIFOSYS1%" == "ESTU" set CobCpy=%BASEAPP%\CobCpy1;%SIMOCORE%\CBLCOPY;%MIFOBASE%\SOURCE if "%MIFOSYS1%" == "EDEV" set CobCpy=%BASEAPP%\CobCpy1;%SIMOCORE%\CBLCOPY;%MIFOEDEV%\CPYLIB rem * if "%SIMOPATH%" == "Y" goto JUMPPATH if "%MIFOSYS1%" == "ESTU" set path=%BASESYS%\LOADLIB;%MIFOBASE%;%MIFOBIN%;%PATH%; if "%MIFOSYS1%" == "EDEV" set path=%BASESYS%\LOADLIB;%MIFOEDEV%;%PATH%; :JUMPPATH set SIMOPATH=Y set JobStatus=0000 call SimoNOTE "* Settings CmdName ENV1BASE.cmd, Version 14.03.28, %MIFOSYS1%" call SimoNOTE "* MIFOSYS1 .... %MIFOSYS1%" call SimoNOTE "* BaseAPP ..... %BASEAPP%" call SimoNOTE "* Conclude MIFOSYS1 is %MIFOSYS1% JobName ENV1BASE.cmd" call SimoNOTE "* Finished JobName ENV1BASE.cmd"
The ASMOGENR program uses five (5) environment variables to identify the encoding schema (i.e. ASCII or EBCDIC) and map the ASMOGENR program file names to physical PC file names.
| ||||||||||||||||
Environment Variables supported by ASMOGENR |
Note: The ASMOVARY Behavior and diagnostic flags are reserved for use by SimoTime Technologies.
The following callable CMD file (SIMONOTE.cmd) provides a consistent method to display job information to the console and write the information to a log file with a date and time stamp.
@echo OFF rem * ******************************************************************* rem * SIMONOTE.cmd - a Windows Command File * rem * This program is provided by SimoTime Technologies * rem * (C) Copyright 1987-2019 All Rights Reserved * rem * Web Site URL: http://www.simotime.com * rem * e-mail: helpdesk@simotime.com * rem * ******************************************************************* rem * rem * Text - Display message on screen and write to a log file. rem * Author - SimoTime Technologies rem * rem * This script may be called from other scripts and expects a single rem * parameter enclosed in double quotes. The double quotes will be rem * removed. Before writing to the log file a date and time stamp rem * will be inserted in front of the message text. rem * rem * Note: The tilde (~) removes leading/trailing double-quotes. rem * if "%SimoNOTE%" == "" set SimoNOTE=c:\SimoLIBR\LOGS\SimoTime.LOG echo %date% %time% %~1>> %SimoNOTE% echo %~1
To produce the dump of the non-executable member the SIMOZAPS utility program is used. This utility program is part of the enterprise package provided by SimoTime Enterprises. The following two (2) CMD files describe how to used the SIMOZAPS utility program.
The following callable CMD file (ASMOPEEK.cmd) provides a method for dumping the contents of multiple non-executable load members to multiple text files in hexadecimal format.
@echo OFF rem * ************************************************************************ rem * ASMOPEEK.cmd - a Windows Command File * rem * This job is provided by SimoTime Technologies * rem * (C) Copyright 1987-2021 All Rights Reserved * rem * Web Site URL: http://www.simotime.com * rem * e-mail: helpdesk@simotime.com * rem * ************************************************************************ rem * rem * Text - Dump the contents of the three (3) Non-Executable Load members. rem * Author - SimoTime Technologies rem * Date - January 24, 1996 rem * call SimoNOTE "*******************************************************ASMOTEST" call SimoNOTE "Starting CmdName ASMOPEEK, V11.11.02, User is %USERNAME%" call SimoNOTE "Generate Hexadecimal DUMP of TABLE001.MOD" call ASMODUMP TABLE001 nopause call SimoNOTE "Generate Hexadecimal DUMP of TABLE002.MOD" call ASMODUMP TABLE002 nopause call SimoNOTE "Generate Hexadecimal DUMP of TABLE003.MOD" call ASMODUMP TABLE003 nopause pause
Note: This CMD file will call the ASMODUMP.cmd file to dump the individual members.
The following callable CMD file (ASMODUMP.cmd) provides a method for dumping the contents of a single non-executable load member to a single text file in hexadecimal format.
@echo OFF rem * ************************************************************************ rem * ASMODUMP.cmd - a Windows Command File * rem * This job is provided by SimoTime Technologies * rem * (C) Copyright 1987-2021 All Rights Reserved * rem * Web Site URL: http://www.simotime.com * rem * e-mail: helpdesk@simotime.com * rem * ************************************************************************ rem * rem * Text - Read a .MOD File and create a Hexadecimal Dump File rem * Author - SimoTime Technologies rem * Date - January 24, 1996 rem * rem * The job will read one (1) file and create two (2) Files. rem * 1. The 1st file that will be read is a line sequential (LSEQ) rem * file containing mainframe assembler source code that defines rem * table or data structures using the Define Constant (or DC) rem * opcode of the assembler language. rem * 2. The 2nd file will be created using Byte-Stream I/) (BSIO) rem * will be a non-executable member that may be loaded in the rem * online environment using an EXEC CICS LOAD. rem * 3. The 3rd file is a listing file produced as a result of the rem * generation process. rem * rem * This suite of programs will execute on a Personal Computer with rem * Windows and Micro Focus Net Express 5.1 or later. rem * rem * ************ rem * * ASMODUMP * rem * ********cmd* rem * * rem * * rem * ************ ************ ************ rem * * MODSFILE *-----* ASMOGENR *-----* SYSOUT * rem * *******bsio* ************ * ************ rem * * * rem * * * ************ rem * * *--* DUMPFILE * rem * * *******lseq* rem * * rem * ************ rem * * EOJ * rem * ********cbl* rem * rem * Note: The DUMPFILE is the SYSLOG file. rem * rem * ******************************************************************* rem * Step 1, Delete any previously created file... rem * set TskName=ASMODUMP set JobStatus=0000 call ASMOSET1 %TskName% if "%SYSLOG%" == "" set syslog=c:\SimoLIBR\LOGS\SimoTime.LOG rem * call SimoNOTE "*******************************************************%TskName%" call SimoNOTE "Starting TskName %TskName%, V09.03.25, User is %USERNAME%" if "%1" == "" set JobStatus=0010 if not %JobStatus% == 0000 goto :EojNok call SimoNOTE "StepInfo Delete previously created files" set MemName=%1 set MODSFILE=%BaseLib1%\Data\Wrk1\%MemName%.MOD rem * rem * ******************************************************************* rem * Step 1, Read .MOD File, write Line Sequential Hex-Dump File. rem * call SimoNOTE "StepInfo Create Hex Dump File of .MOD file" set SYSLOG=%BaseLib1%\Data\Wrk1\%MemName%.DMP if exist %SYSLOG% del %SYSLOG% run SimoZAPS Hexcess %MODSFILE% start=1 stop=9999999 if not ERRORLEVEL = 0 set JobStatus=0040 if not %JobStatus% == 0000 goto :EojNok call SimoNOTE "MODSFILE %MODSFILE%" call SimoNOTE "DUMPFILE %SYSLOG%" :EojAok call SimoNOTE "Finished JobName %TskName%, Job Status is %JobStatus% " goto :End :EojNok if %JobStatus% == 0010 call SimoNOTE "Parameter 1 must be a source member name" call SimoNOTE "ABENDING JobName %TskName%, Job Status is %JobStatus% " :End if not "%2" == "nopause" pause
Note: This CMD file is called by ASMOPEEK.cmd
The ASMOGENR program provides a subset of functionality for processing Mainframe Assembler source members that contain the following statements and operation codes (or OPCODES) or Assembler Instructions.
| ||||||||||||||
Statements and Operation Codes (or OPCODES) supported by ASMOGENR |
The intent of the ASMOGENR program is to provide a capability of creating loadable, non-executable members from mainframe assembler source code that uses the preceding assembler operation codes to define data. The program is not intended to process other OPCODES or be a replacement for a full-function assembler compiler.
ASMOGENR does not support Relocatable Loader Definition (RLD's).
An online application may be heavily dependent on the loading of in-core tables. These tables are sometimes maintained using the data definitions capability of Mainframe Assembler. To change this approach is quite often a major change to the application.
Initially, the non-executable assembler source members were compiled using Micro Focus Mainframe Express (MFE) with the Mainframe Assembler Option. This worked quite well for the EBCDIC-encoded environment. It also required MFE for the ongoing maintenance of the tables.
The tougher challenge is how to create an ASCII-encoded, non-executable member that may be loaded as an in-core table in an ASCII-encoded environment without changing the application source code or recoding the assembler source code for the tables.
A program is available (ASMOGENR) that will read the existing source code and create a non-executable member (or filename.MOD file). The program will have an option to create an EBCDIC or ASCII encoded output member. The program will provide a subset of the functionality provided by the "Define Constant" (or DC statement) of mainframe assembler. This approach has been initially tested in the early stages of the proof-of-concept.
A Windows Command script was created to do the compilation or generation of the non-executable source members to create the ASCII-encoded loadable but not executable members (or in-core tables).
A Windows Command script was created to do the BMS Generations. The name of the script file is "GenerateMODascForSam1Online.CMD".
For the ZOS environment a mainframe assembler (HLASM) source member is a record sequential file of 80-byte, fixed-length records that are EBCDIC-encoded.
For the Micro Focus environment a mainframe assembler (HLASM) source member is a line sequential file of 80-byte, variable-length records that are ASCII-encoded.
Each record in a file containing assembler source code may be referred to as an assembler statement. The guideline for coding assembler statements is as follows.
| ||||||||||||
Format Guidelines for Assembler Source Statements |
This program was initially developed to address the needs of a few mainframe applications that were being moved from a Mainframe System to a Windows System with Micro Focus. It has been enhanced as new requirements are defined and enhancements are requested. This program (ASMOGENR) provides a subset of capability for processing the DC statements used in mainframe assembler source members.
For the Micro Focus Mainframe Express environment the Mainframe Assembler Option should be used. This has the capability to read mainframe assembler source code and produce a loadable, non-executable member in an EBCDIC-encoded format.
The real value of the ASMOGENR program is its capability to produce a loadable, non-executable member in an ASCII-encoded format for the Net Express and Enterprise Server environments.
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 Assembler Alternatives for a COBOL-Oriented Application Migration with some assembler programs. The target platform may be Linux, UNIX or Windows with Micro Focus Enterprise Server.
Explore the Assembler Connection for more examples of mainframe Assembler programming techniques and sample code.
Explore the COBOL Connection for more examples of COBOL programming techniques and sample code.
Explore an Extended List of Software Technologies that are available for review and evaluation. The software technologies (or 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.
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 to interpret the results of accessing VSAM data sets and/or QSAM files.
The following links will require an internet connect.
Additional information about acquiring this softare may be obtained from the Product Availability and Pricing document.
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 GnuCOBOL Technologies available from SourceForge. SourceForge is an Open Source community resource dedicated to helping open source projects be as successful as possible. GnuCOBOL (formerly OpenCOBOL) is a COBOL compiler with run time support. The compiler (cobc) translates COBOL source to executable using intermediate C, designated C compiler and linker. This link will require 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 |
Assembler to MOD File, Non-Executable Load Member for Micro Focus |
Copyright © 1987-2023 SimoTime Technologies and Services All Rights Reserved |
When technology complements business |
http://www.simotime.com |