Table 1 ARTIMS Utilities Figure 1shows the MFSGEN workflow.Figure 1 Mfsgen WorkflowGenerate a listing (.lst) file for each input file.Specify an existing directory as the target directory to store all output files, including binary control blocks files (*.MSG and *.FMT)and listing files.It is <current directory>/format by default.To convert the source file file.mfs, use the following command:
Note: the input file .mfs suffix is not mandatory.chgcobol.sh - shell script used to switch between MicroFocus and COBOL-IT for ARTIMS.You can have both MicroFocus and COBOL-IT installed at the same host, and may have requirement for switching from one to the other or back. chgcobol.sh is used to switch between MicroFocus and COBOL-IT. To switch COBOL runtime, ARTIMS application must be firstly shutdown.chgcobol.sh takes the following options:./chgcobol.sh
Output: Current COBOL Runtime is COBOL-ITDFSRRC00 - Utility used to activate the ARTIBMP serverDFSRRC00 is used to activate the ARTIBMP server which is always waiting for the input from DFSRRC00. The parameter of DFSRRC00 is a string, which should be passed from the script converted by workbench from JCL. Currently, only the first 3 sub-parameters contained in the string is supported, i.e. “BMP, $(PROG), $(PSB),…”, in which “BMP” is a hard-coded string, $(PROG) represents the batch program to be called, $(PSB) represents the PSB name to be used for the program, the remaining sub-parameters in the string are simply ignored.
Alternate PCB, destination transaction code
GU/GHU - Retrieve (and Hold) the first segment that satisfies the criteria (if any) from the current position (if any) or the beginning of the database.GN/GHN - Retrieve (and Hold) the next segment that satisfies the criteria (if any) from current position.A pointer to DB PCB structure is passed from ARTIMS servers to COBOL programs, and finally to db_entry() of plug-in for IMS/DB. To enable the plug-in work properly, the DB PCB structure should be filled in correctly before calling COBOL program each. This section defines the detailed requirement regarding how to fill in DB PCB.Listing 1 DB PCB Structure
• dbname: If the PCB statement in PSB contains a PROCSEQ=<name>, populate dbname with <name>. Otherwise, populate dbname with the name in NAME=<name> from PSB.
• seglevel: Populate with NULL
• stat_code: Populate with spaces
• opt: Populate with value set to PROCOPT option from the PCB statement in PSB
• res: Do not populate with anything
• segname: Populate with NULL
• keylen: Do not populate with anything
• segnum:Do not populate with anything
• keyfa: Populate with NULLFunctionality: Initialization for configuration or others required by an implementationArguments: parameter list passed from CLOPT of the serversReturn Value: 0 - success, -1 -- failureWhere to use: This API is called while an ARTIMS server starts. If a specific implementation of IMS/DB doesn't need any initialization work, just provide an empty function and make it return 0.
2. Functionality: Cleanup for configuration or others required by an implementationArguments: None, because the servers can't provide input for Plug-inReturn Value: 0 - success, -1 -- failureWhere to use: This API is called while an ARTIMS server shuts down. If a specific implementation of IMS/DB doesn't need any initialization work, just provide an empty function and make it return 0.Functionality: Pre-Action required by an implementation before invoking a COBOL program which may access IMS/DB implementationArguments: None, because the servers can't provide input for Plug-inReturn Value: 0 - success, -1 -- failureWhere to use: This API is called before ARTIMS servers invokes a COBOL program that may access IMS/DB implementation. If a specific implementation of IMS/DB doesn't need any initialization work, just provide an empty function and make it return 0.Functionality: Post-Action required by an implementation after invoking a COBOL program which may access IMS/DB implementationArguments: None, because the servers can't provide input for Plug-inReturn Value: 0 - success, -1 -- failureWhere to use: This API is called after ARTIMS servers invokes a COBOL program that may access IMS/DB implementation. If a specific implementation of IMS/DB doesn't need any initialization work, just provide an empty function and make it return 0.Return Value: 0 - success; -1 - failureWhere to use: DL/I DB call issued by COBOL program
In ARTIMS, the simulated CHKP is used to commit the changes already made by using tpcommit(). The messages that have been marked by complete are sent out. The messages that have not been marked by explicit PURG call are sent out too. Since there is only one message being processed, so no next message is retrieved.In ARTIMS, the simulated ROLB call is used to roll back all the changes made by the application program by using tpabort(), and empty the message buffers that have not been sent out.
The syntax is MAXWSCLIENTS=number.The minimum number of handler processes that will be started by ARTICTL, minh is a number from 1 to 255, its default value is 1. The actual number of handler processes will always be between minh and maxh based on system load.
Note: Although minh is a number from 1 to 255, but it still should be equal to or smaller than (FD_SETSIZE - 24) according to the system resources limits. FD_SETSIZE means the maximum number of files that a process can have open at any time. The value can be acquired via system command ulimit -n.The maximum number of handler processes started by ARTICTL, maxh is a number from 1 to the 1000; the default value is 1000. The actual number of handler processes is always between minh and maxh based on system load.
Note: Although maxh is a number from 1 to 1000, it should be equal to or smaller than (FD_SETSIZE - 24) according to the system resources limits. FD_SETSIZE means the maximum number of files that a process can have open at any time. The value can be acquired via system command ulimit -n.Specifies a list of transaction class, e.g. “1,3,5”; or a class range, e.g.“1-3”; or all classes, i.e *. The services whose class is specified in the class_list are advertised by ARTIMPP.Enables debug mode, trace is located at $APPDIR/logARTIMPP_ORA has all the functionalities of ARTIMPP. It can also support an Oracle database used as an external resource manager (RM). It uses on some libraries provided by Oracle database. In order to use this environment variable it with an Oracle database, the RM section must be configured correctly in the UBBCONFIG file.enables debug mode, trace is located at $APPDIR/log.ARTIBMP_ORA has all the functionalities of ARTIBMP. It can also support an Oracle database used as an external resource manager (RM). It uses on some libraries provided by Oracle database. In order to use this environment variable it with an Oracle database, the RM section must be configured correctly in the UBBCONFIG file.When starting up, the administration server running on the master node reads in all the configuration files located in directory ${ART_IMS_CONFIG}. When each administration server running on a slave node starts up, it communicates with the administration server on the master node and fetches the contents of the configuration files.The administration server on the slave node then writes to the corresponding configuration files in directory ${ART_IMS_CONFIG} on the slave node. New configuration files are created if none exist.The definition of message formats and device formats is accomplished with separate hierarchic sets of definition statements. Table 5 shows all the definition statements and their descriptions.
Note: system-literals include: TIME, DATE1, DATE2, DATE3, DATE4, DATE1Y4, DATE2Y4, DATE3Y4, DATE4Y4, YYDDD, MMDDYY, DDMMYY, YYMMDD, YYYYDDD, MMDDYYYY, DDMMYYYY, YYYYMMDD, DATEJUL, DATEUSA, DATEEUR, DATEISO, LTSEQ, LTNAME.For LTMSG and LPAGENO, user will get a warning message and they will not take any effect. For other strings not in above list, user will get a syntax error.
Table 11 Bit Settings for DSCA Field Support
• IMSDIR
An environment variable containing the root path (absolute path) of the installed ARTIMS subsystem.
• ART_IMS_DB
is the container path where GSAM files are located.
• ART_IMS_CONFIG
An environment variable required by ART IMS to specify the absolute path where the configuration files are located, such as *.desc and *.psb.
• ART_IMS_FMT
An environment variable required by ARTICTL to specify the absolute path where the control block files which generated via MFSGEN are located. It is a series of paths similar to PATH environment variable, the separator is : .If this variable is not specified, the PATH APPDIR will be used.
• COBPATH
An environment variable required by Microfocus COBOL environment. It defines one or more directories to search COBOL programs to be loaded dynamically. Its usage is similar to Unix PATH.
• COB_LIBRARY_PATH
If you are using COBOL-IT, COB_LIBRARY_PATH is required by COBOL-IT to define the search order for COBOL programs. It defines one or more directories to search COBOL programs to be loaded dynamically. Its usage is similar to Unix PATH.
Table 13 Command Table 14 Shortening Table 15 Parameter All the configuration files in this section are case insensitive for key and non-literal values, for example bool (yes|no) and enum. Literal values and their cases are kept. Comment line should be prefixed with “*”.Listing 2 General Configuration File Format
Table 16 Section Name: [imstran]
Table 17 Section Name: [imsapp] imsdbs.desc is located under $ART_IMS_CONFIG.
Table 18 Section Name: [imsdb] GSAM means GSAM DB $appname is the name of a COBOL application program with type of TP defined in imsapps.desc, $appname.psb is the PSB definition file corresponding to it. For application program with type of BATCH, $appname.psb is not used and the PSB must be provided by the script that calls DFSRRC00.
Table 19 Section Name: [imspcb] If the type is TP, this field represents a Transaction Code, only transaction code is supported for alternate PCB It is mandatory if modify = no, and optional if modify = yes.If the type is DB, this field represents the DB name. This field must be configured for a GSAM PCB, but optional for a DB PCB, please refer to PROCSEQ field for details. Following fields are only applicable to TYPE=GSAM|DB, i.e. GSAM PCB, will be ignored if configured but TP!=GSAM|DB If this field is configured, it should be filled in the first 8 bytes of DB PCB; otherwise, the value specified by NAME= should be filled in the first 8 bytes of DB PCB. At least one of NAM= and PROCSEQ= must be configured for a DB PCB. This field defines the access permission for the associated database. This field is only valid when TYPE=GSAM|DB, and is ignored if configured but TYPE=TP.GSAM: G|GS - Get Only; L|LS - Get and Append