MFUPP Directives

The MFUPP preprocessor is invoked using the PREPROCESS Compiler directive.

The following directives can be used with the MFUPP preprocessor:

CICS
Changes behavior of how EXEC CICS statements are processed during a test run. You can remove the EXEC CICS statements from a test run, to allow easier access to the business logic under test.
Permissible values:
  • CICS - all EXEC CICS statements are ignored, but the dfheiblk copybook is included, and DFH macros are expanded.
  • CICS"IGNORE" - as above.
  • CICS"NO-DFHEIBLK" - all EXEC CICS statements are ignored and the dfheiblk copybook is not included, but DFH macros are expanded.
  • CICS"NO-DFH-MACRO" - all EXEC CICS statements are ignored and DFH macros are not expanded, but the dfheiblk copybook is included.
Default: not set, and so all EXEC CICS statements and macros are processed, and the dfheiblk copybook is included.
CONFIRM, C
Specifies whether directives are to be shown on the screen, if accepted.
Permissible values: CONFIRM | NOCONFIRM, C | NOC
Default: NOCONFIRM
EXEC-REPORT-FILE, ERF
Creates a catalog file of the the EXEC statements that can be mocked. This file is generated with an mfupp-et extension, and can be used with the test runner command to create a sample mock source file; see generate-exec-mock-snippet in Test Runner Syntax Options for more information.
By default, an entry is created for each EXEC statement. If you have identical EXEC statements within the source file, they will be cataloged multiple times, and when you use the catalog file to generate the snippets (using the generate-exec-mock-snippet directive), you may receive a COBCH0304 Procedure proc-name name not unique error message. If you receive such an error, generate the catalog file with the EXEC-REPORT-FILE directive instead, which includes a sequence number for all catalog entries, and uses this number when creating the snippets, ensuring each snippet is unique.[1]
Permissible values: EXEC-REPORT-FILE, ERF | EXEC-REPORT-FILE"NOINCLUDE-SEQ-ID", ERF"NOINCLUDE-SEQ-ID", EXEC-REPORT-FILE"NOISI", ERF"NOISI"
Default: EXEC-REPORT-FILE"NOINCLUDE-SEQ-ID"
IGNORE-PRG-PREFIX, IPP
Changes program-ids that the preprocessor will ignore (that is, will not pass execution to the controller entry point when the program is called).
Permissible values: IGNORE-PRG-PREFIX"file-prefix" | NOIGNORE-PRG-PREFIX, IPP"file-prefix" | NOIPP
Default: IGNORE-PRG-PREFIX"MFUT,MFUM,Test"
INSERT-LS, IL
Inserts a local-storage section if the source under test is not enabled for recursion. (This avoids a COBRT166 Recursive COBOL CALL is illegal error, as the preprocessor requires source to be compiled for recursion).
Permissible values: INSERT-LS, IL | NOINSERT-LS NOIL
Default: INSERT-LS
LK-PREFIX, LKP
Changes the "linkage section" copybook filename insertion prefix; see Inserting Test Code into Source Code. NOLK-PREFIX and NOLKP reset the prefix back to its default.
Permissible values: LK-PREFIX"file-prefix" | NOLK-PREFIX, LKP "file-prefix" | NOLKP
Default: LK-PREFIX"MFULK_"
MOCK, M
Turns on or off the instrumentation of the program under test. When the CICS parameter is specified, code is generated to support the mocking of EXEC CICS statements, and an additional field (MFU-MD-EXEC-CONTROLLER) is required in the metadata entry point within your test case; see Mocking and Stubbing Source Code for more information. Use the MOCK"CICS" directive in conjunction with the CICS directive when mocking programs containing EXEC CICS statements.
Permissible values: MOCK["CICS|SQL|PROGRAM"] | NOMOCK
Default: NOMOCK
PD-PREFIX, PDP
Changes the "procedure division" copybook filename insertion prefix; see Inserting Test Code into Source Code. NOPD-PREFIX and NOPDP reset the prefix back to its default.
Permissible values: PD-PREFIX"file-prefix" | NOPD-PREFIX, PDP"file-prefix"| NOPDP
Default: PDS-PREFIX"MFUPD_"
PDS-PREFIX, PDSP
Changes the "procedure division (start)" copybook filename insertion prefix; see Inserting Test Code into Source Code. NOPDS-PREFIX and NOPDSP reset the prefix back to its default.
Permissible values: PDS-PREFIX"file-prefix" | NOPDS-PREFIX, PDPS"file-prefix"| NOPDPS
Default: PDS-PREFIX"MFUPDS_"
SQL
Changes behavior of how EXEC SQL statements are processed during a test run. You can remove the EXEC SQL statements from a test run, to allow easier access to the business logic under test.
Restriction: The unit testing framework does not currently process EXEC SQL statements, even when SQL"IGNORE" is not set.
Permissible values: SQL"IGNORE"
Default: not set.
VERBOSE, V
Specifies whether verbose messages are to be shown on the screen.
Permissbile values: VERBOSE | NOVERBOSE
Default: NOVERBOSE
WS-PREFIX, WSP
Changes the "working-storage section" copybook filename insertion prefix; see Inserting Test Code into Source Code.NOWS-PREFIX and NOWSP reset the prefix back to its default.
Permissible values: WS-PREFIX"file-prefix" | NOWS-PREFIX, WSP"file-prefix" | NOWSP
Default: WS-PREFIX"MFUWS_"

Example

cobol myprog.cbl preprocess"mfupp" MOCK PD-PREFIX"MFUPRO_" endp;
Tip: You can store the directives to be used with the preprocessor in a directives file, named mfupp.dir. In this file, specify only the directives shown above, and only one per line. When using the file, ensure it is in your working directory, and then specify the preprocessor without any directives; for example:
cobol myprog.cbl preprocess"mfupp" endp;