Chapter 16: Migrating from MF/370 Assembler

The equivalent in Mainframe Express of the Micro Focus MF/370 Assembler (MF/370) add-on for Workbench is called Assembler Option. It is an option that adds Assembler support to the IDE, and is based on MF/370. This chapter describes differences between MF/370 and Assembler Option that might require you to make alterations in existing applications that you are migrating, or to change familiar methods of working.

To use this feature, you need to have installed Assembler Option when you ran Setup to install Mainframe Express.

16.1 Overview

Assembler run-time support is provided as part of the IDE for execution of Assembler subroutines, but the full development and debugging tools are provided in Assembler Option.

The main differences between MF/370 and Assembler Option are:

16.2 Details

This section advises on what to use where an MF/370 feature is not in Mainframe Express or has changed. Where we believe you can continue using a feature without change, it is not mentioned. This book does not cover enhancements.

16.2.1 Configuration

In MF/370, you configure Assembler via the configuration file mf370ctl.cfg. This file also exists in Assembler Option for Mainframe Express - it is installed in folder mfuser\config. However, many aspects of the behavior of Assembler Option are now controlled by various components of the IDE; these include the locations of files, which are controlled by Workgroup View settings. You should not need to edit the configuration file.

See also the chapter AMODE

16.2.2 Linker Options

There are three options to link Assembler modules.

Autolink, which is on by default, automatically links Assembler programs into a 390 load module and assumes no user-specified linker commands are needed to control the inclusion of specific object modules or to define optional entry points. To turn this option off, uncheck the Automatically link module check box on the General page of the Assembler page on the Build Settings dialog box.

There is also a Resolve external calls at link time check box for which the default is off. With this off, the linker option NCAL is enabled, so the linker leaves external references unresolved and issues a warning message about each one. If you check this check box, the linker tries to resolve any external reference calls by searching the loadlib folder within the project folder for object modules with matching names.

If you uncheck Automatically link module, the compilation just creates an object file and does not invoke the linker. You should then provide linker input commands to link the object module explicitly with other included modules. You must put them in a file with suffix .lin (not .jcl as in MF/370), which you must add to the project as a source file.To see all the .lin files in the project, click the Assembler Link entry in the Files View of the project view. You can edit each .lin file and compile it to create a 390 load module.

16.2.3 Link File Commands

You no longer need the // CBL-TRIGGER syntax in the link file to create triggers for entry points. Instead, you need to edit the mfentmap.dat file to add entries for each entry point. For further information see the chapter Compatibility with the Mainframe Environment in your User's Guide

In Assembler Option linker file commands are now compatible with IBM linker file commands. This means that commands no longer start with // and the word SYSLIB should follow INCLUDE in an INCLUDE command. However, the old syntax is still accepted.

16.2.4 Copybooks

Assembler copybooks must have the extension .mac so they will be added to the project as Assembler copybooks, not COBOL copybooks.

16.2.5 Macro Assembler

The Assembler compiler now runs as one process, whereas MF/370 has a separate macro processor and assembler. As a result, the macro processor is much more powerful and has access to the complete assembler symbol table for attribute processing. If you want to use the macro processor separately, specify the NOASM compiler directive to generate a source code file with all macros expanded and all conditional assembly statements processed. Undefined opcodes are passed through without error.

16.2.6 Macros and MF/370 Extensions

The macros included with Mainframe Express are mainframe compatible and do not use any of those extensions available in MF/370 that are not mainframe compatible - for example, expressions in F and H type data constants, and continuation statements without spaces in positions 1 to 15.

You can use MF/370 extensions in your own macro if you specify the Assembler compiler directive ALLOW; you specify this in Additional Directives on the General page of the Assembler page in the Build Settings for Project dialog. Details of what is allowed are in the on-line help; click Help Topics on the Mainframe Express Help menu, then on the Contents tab click Reference, Assembler Option, Compiler Directives, then click ALLOW.

16.2.7 Floating Point

In Mainframe Express, precision is limited to IEEE double precision. Extended L type floating point constants and instructions are supported but the extended mantissa bits are zero.

16.2.8 OMF Load Format

By default, Mainframe Express produces .390 load format. Unlike the .gnt load format used by MF/370, this supports multiple entry points and variable numbers of parameters in calling COBOL programs. It also loads faster and supports extended functions such as the IDENTIFY macro. It also supports passing up to 2000 parameters between COBOL and Assembler 390 modules.

16.2.9 EBCDIC Characters

You should not use EBCDIC characters in quoted character strings.

Mainframe Express source code uses the ANSI character set. Although most download packages, including the Mainframe Access package you may be using with Mainframe Express, convert from EBCDIC automatically, they will not convert EBCDIC characters in quoted strings.

If you have used them, for example in macros or Assembler DC statements, recode them using hex constants or ANSI characters.

16.2.10 EPILOG and PROLOG

For any Assembler files that have non-standard EPILOG and PROLOG options, click the Assembler tab on the Build Settings dialog box, then the Preprocessor subtab. The EPILOG and PROLOG check boxes are under CICS Preprocessor Options, marked Insert standard prolog macros and Insert standard epilog macro. If "EXEC CICS" is found in the source, the standard prolog and epilog macros will be inserted. If you have written your own prolog and epilog code and do not wish to have the standard macros inserted, uncheck these boxes.

16.2.11 SYSPARM

For any Assembler programs that need SYSPARM settings, click the Assembler tab, then the Advanced subtab. The SYSPARM check box is marked &SYSPARM substitution value. Enter the value that you wish to be substituted for occurrences of &SYSPARM in user macros.

16.2.12 Calling IMS from Assembler

You no longer need to use an ASMTDLI glue module to call IMS from Assembler, because the INCLUDE and SYSLINK link file commands can include a TYPE=IMS parameter that enables the necessary linking. The mf370lnk.cfg file that is installed with Mainframe Express (in folder mfuser\config) contains SYSLINK commands for standard IMS entry points. If your program only calls standard IMS entries you may not need a link file.

Copyright © 2001 Micro Focus International Limited. All rights reserved.
This document and the proprietary marks and names used herein are protected by international law.