SIMOLYZE, Code Scanner
Member Analysis & Categorization
  Table of Contents  v-24.01.01 - simolyze.htm 
  Introduction
  Sample Summary Report
  Source Code Repository
  System Requirements
  Installation
  Installation from Compact Disk
  Installation from Zip File
  Installation Verification Procedures
  Running SIMOLYZE
  Overview Flowchart
  Set Environment Variables
  Build a Directory Structure
  Command File to run SIMOLYZE
  The SIMOLYZE Functions
  ORGANIZE, Do Member Typing
  LIST, ASCII/Text View of Results
  HTML, Browser View of Results
  COBOL Categories, Four List Files
  The Query Function
  Repository Extract to CSV File
  Table of Statements and Keywords
  The Update Function
  Change the Status of a Record
  Change the Member Language Definition
  Change the Member Type Definition
  Create a new Source Code Repository
  Copy Repository & Drop Deleted Records
  Summary List of Update Keywords
  The Copy Function
  Query by Member Date
  Flag Reset in Repository
  Callable API
  Capabilities & Considerations
  Assembler (Mainframe) Analysis
  COBOL Analysis and Support
  JCL Analysis and Support
  BMS Analysis and Support
  MFS Analysis and Support
  DBD Analysis and Support
  PSB Analysis and Support
  Easytrieve
  Other Considerations and Limitations
  Processing Time and Log Files
  JCL with Embedded COBOL Source Code
  Duplicate Source Member Names
  The Configuration File
  Application Asset Tracking
  Non-Relational Data Structures
  Questions and Answers
  Summary
  Software Agreement and Disclaimer
  Downloads and Links
  Current Server or Internet Access
  Internet Access Required
  Glossary of Terms
  Comments or Feedback
  Company Overview
The SimoTime Home Page 

Table of Contents Previous Section Next Section Introduction

What is member typing and why is it important? Member typing is the process of storing a source member and then being able to determine its content without having to examine the member. This is typically accomplished in the following ways.

1 How the member is stored. Many of the source code management systems provide a capability of defining the type of member when it is being stored.
2 Where the member is stored. Member types are stored into specifics directories or libraries base on the type of member.
3 How the member is named. Naming conventions are used to identify a member type. For example, on a Windows System the file extension is typically used for this purpose
  Possible Techniques to Determine and Retain Source Member Type

If a process is not established to do source member typing then it will be necessary to scan the source member content and identify the type of member. SIMOLYZE is designed to scan mainframe-oriented source code and determine the member type.

Source member typing is often overlooked or receives a low priority in some programming shops. The importance of member typing is not often recognized until a change to an application is required. Attempting to estimate the skills required to implement a change and define the scope-of-effort required is difficult and time consuming when the type and quantity of members that makeup an application are not known and/or are difficult to determine.

Applications running on a mainframe are usually written in COBOL. However, mainframe applications are typically COBOL oriented but are not written entirely in COBOL. Mainframe applications are dependent on non-COBOL processes such as calls to 370 assembler subroutines, embedded calls to external sort routines and dependencies on batch processes using mainframe JCL to create and update existing data bases. If the plan is to migrate the application or distribute components of the application from a Mainframe System to a Linux, UNIX or Windows System then additional time should be allocated to handle these situations.

Some programming shops have the technology and a process to keep track of members by type but even these shops run an average error rate of five percent or higher. Other shops or programming groups do not even attempt to track member types and many shops have a variety of application source code that has not been touched in years. Knowledge about these applications is minimal or non-existent.

If the member type is not readily available or unknown it could be a significant effort to transfer programming functions from the mainframe to the PC Desktop or an application server. Revolve (see Note-1) and Mainframe Express (see Note-2) are dependent on member typing (i.e. the existence of a file extension with the file name). Many programming shops need assistance in creating and maintaining a programming environment that incorporates member typing. All programming shops could benefit from the ability to validate the accuracy of current member typing efforts.

Once a library of source members with accurate member typing has been established the time it requires to modify, deploy and maintain an application on the mainframe or PC, Micro Focus platform may be significantly reduced. Both Revolve and Mainframe Express deliver a tremendous amount of analytical and programming power for the analysis, development, testing, maintenance and deployment of business applications. However, both products are dependent on member typing. The suite of programs provided in this package will be referred to as SIMOLYZE. The primary purpose of  SIMOLYZE is to do member typing and provide an overview of the number and type of members stored in a mainframe library or source code management facility. Prior to doing the initial scanning of the source code it must be downloaded from the mainframe to the PC. The downloading of the source members is greatly simplified by using Mainframe Express (MFE) with Mainframe Access (MFA) that is provided by Micro Focus.

Note-1: Revolve is a very powerful application and source code analysis tool provided by Micro Focus

Note-2: Mainframe Express (MFE) is a product that provides for the development, maintenance and testing of mainframe applications on a Windows System. MFE also has the capability of easily downloading and uploading source members from and to the mainframe.

Note-3: The Micro Focus web site is located at: http://www.microfocus.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

Table of Contents Previous Section Next Section Sample Summary Report

In addition to determining the member language and member type a summary report is also provided. The following is an example of the summary information that is produced by SIMOLYZE.

o


o


o


o


o


o


o


o


o
* APLISTC1 SimoLYZE - List Source Data Base v04.04.22 http://www.simotime.com *
* APLISTC1 Copyright 1987-2019 SimoTime Technologies All Rights Reserved *
         
Language(Type) Members Records Comments Blanks CodeLines CICS SQL
COBOL (CBL) 82 31639 10898 2209 18532 1  
COBOL (CPY) 37 2761 908 77 1776    
370(370) 15 3462 1566 2 1894    
370(CPY) 1 23 7 0 16    
370(MAC) 6 171 111 3 57    
JCL(JCL) 110 6052 4097 1 1954    
JCL(PRC) 2 86 72 0 14    
JCL(INC) 0 0 0 0 0    
370(BMS) 1 137 9 0 128    
370(MFS) 0 0 0 0 0    
370(DBD) 0 0 0 0 0    
370(PSB) 0 0 0 0 0    
Unknown(UNK) 0 0 0 0 0    
Other(???) 0 0 0 0 0    
               
Subtotal (Known) 254 44331 17668 2292 24371    
Subtotal (UNK) 0 0 0 0 0    
TOTAL 254 44331 17668 2292 24371    
               
o


o


o


o


o


o


o


o


o

Please note that many of the items discussed in this document are based on the hardware and software technologies that were available when this document was created. This is a rapidly changing environment and functional improvements are expected.

Table of Contents Previous Section Next Section Source Code Repository

During the scanning process SIMOLYZE will create and/or maintain a Source Code Repository (APMASTER.DAT and .IDX) that contains information about the individual source members. Some of the information is the member language, member type, record count and date/time of last update. If a COBOL member contains EXEC CICS or EXEC SQL syntax it is noted in the repository. This information is very useful when determining the compiler directives to use with individual source members. The Source Code Repository is an indexed file in the Micro Focus file format.

For a detailed description of the record layout refer to The Source Code Repository (APMASTER) section of this document

Table of Contents Previous Section Next Section System Requirements

This documentation is intended for SIMOLYZE, Version 11.04.24. The following is the minimum system requirements.

1 Windows/XP, Windows/7 or Windows Server
2 1 gig of memory
3 30 gig disk space
4 Internet Explorer 70 or other browsers (used to review the documentation)
5 Micro Focus Studio 5.1 or later.
  A Minimum System Requirements for Running SIMOLYZE

The following is a typical system configuration for running SIMOLYZE with Micro Focus Mainframe Express and/or Mainframe Access.

1 Windows/XP, Windows/7 or Windows Server
2 2 gig of memory
3 100 gig disk space
4 Internet Explorer 70 or other browsers (used to review the documentation)
5 Micro Focus Mainframe Express or Micro Focus Studio (for compiling and executing mainframe applications on a Windows System).
6 Revolve, used to do further analysis after member typing is complete.
  A Typical System Configuration for Running SIMOLYZE

Note: The software and supporting members included in the SIMOLYZE package require less than 1 meg of disk space.

Note: Mainframe Express and Revolve are products provided by Micro Focus (http://www.microfocus.com).

The SIMOLYZE program, this documentation, the Installation Verification Procedures (IVP's) and examples are provided in a zipped file. Additional information about acquiring the SIMOLYZE software package may be obtained from http://www.simotime.com/purchase.htm.

Table of Contents Previous Section Next Section Installation

SIMOLYZE is currently delivered on a Compact Disk. SIMOLYZE is also available directly from SimoTime via digital delivery using e-mail or File Transfer Protocol (or FTP). Information about the latest version may be obtained from the SimoTime Web Site.

Table of Contents Previous Section Next Section Installation from Compact Disk

If you have received SIMOLYZE on a CD then simply follow the SETUP instructions from the custom install options to install SIMOLYZE. This process will install SIMOLYZE into a directory called SimoLIBR

Table of Contents Previous Section Next Section Installation from Zip File

If you have received the SIMOLYZE software package in a zipped file then the following instructions define the necessary steps for installation.

Step Description
1 Create a directory on the C-drive called SimoLIBR.
2 Make SimoLIBR the current directory.
3 Create a sub-directory LOGS under the SimoLIBR directory.
4 Unzip the SimoLYZE.ZIP file into the SimoLIBR directory.
  Steps to Create Directory and Unzip SIMOLYZE

The following is the list of command statements required using WinZip.

C:\>md SimoLIBR
C:\>cd SimoLIBR
C:\SimoLIBR>md LOGS
C:\SimoLIBR>wzunzip SimoLYZE.zip

Table of Contents Previous Section Next Section Installation Verification Procedures

Three Installation Verification Procedures (IVP's) are provided with SIMOLYZE. The IVP's may also serve as examples. A little setup and preparation is required prior to running the IVP's. First, we must set the environment variables that will map the directories used in the source member typing process.

  C:\SimoLIBR> SET4LYZ1
   or
  C:\SimoLIBR> SET4LYZ2
   or
  C:\SimoLIBR> SET4LYZ3

Next, we must create a set of directories. The following command will use the environment variables that were set in the preceding command and create the input directory (SLZINPUT) and the output directory (SLZMODEL) with its sub-directories.

  C:\SimoLIBR> DIR4LYZE

The preceding command also creates an input directory. This is the directory that needs to be populated with the source members without file extension (i.e. unknown content).

Now it is necessary to copy a few source member into the SLZINPUT directory. For the IVP approximately ten (10) source members will provide an adequate test for proper installation.

Note: Do not use file extensions. Use only the file name without a file extension. The file name should be eight characters or less.

After copying a few member into the SLZINPUT directory run the following command to execute the SimoLYZE Installation Verification Procedure.

  C:\SimoLIBR> IVP4LYZ1 SET4LYZ1

The preceding command will scan all the members (filenames without extensions) in the SLZINPUT directory and copy the typed members (filenames with extensions) to the appropriate sub-directories of SLZMODEL. A separate window should be displayed with a summary of the members by type. Use Windows Explorer to view the contents of the SLZMODEL directory and sub-directories.

The following is a second IVP that will produce a detailed list by member and the summary information.

  C:\SimoLIBR> IVP4LYZ2 SET4LYZ2

The following is a third IVP that will produce a cross reference listing in an ASCII/Text file and summary information.

  C:\SimoLIBR> IVP4LYZ3 SET4LYZ3

Table of Contents Previous Section Next Section Running SIMOLYZE

SIMOLYZE is run from a DOS command line by calling SIMOLYZE.GNT. It requires one parameter. Depending on the parameter value certain environment variables will need to be specified. The following is the command line format.

  C:\SimoLIBR> run SIMOLYZE parameter

The Installation Verification Programs (IVP's) provide a good model for running SIMOLYZE and are described in more detail in this section.

The following table is a summary of the parameters (function to be performed) and environment variables.

parameter Purpose, Environment Variable and Description
ORGANIZE  The purpose of the ORGANIZE function is to do the member typing. Refer to The Organize Function for more information.
SYSIMP1=filename  - this file contains two records. The first record provides the name of the PDS where the members are stored on the mainframe. The second record provides the name of the Windows directory where the input members are stored.
SYSIMP2=filename  - this file contains a list of the input members to be analyzed and typed. Each record in the file contains one file name. The format of the file is ASCII/Text.
SLZCONFG=filename - this is the SimoLYZE configuration file.
APMASTER=filename - this is the SimoLYZE Source Code Repository.
QUERY The purpose if the QUERY function is to provide a method for selecting certain member types from the Source Code Repository (APMASTER) and create a file of "user-specified" output. Refer to The Query Function for more information.
SYSQRY1=filename  - this file contains the specifications for selecting records from the Source Code Repository.
SYSQRY2=filename  - this file is created by the Query function and contains the results of the query.
SYSQRY3=filename  - this file is used to specify a user date. The query function can then do a select of record information from the Source Code Repository using this date.
SLZCONFG=filename - this is the SimoLYZE configuration file.
APMASTER=filename - this is the SimoLYZE Source Code Repository.
UPDATE The purpose of the UPDATE function is to provide a method for updating information in the Source Code Repository (APMASTER) without having to write a program. Refer to The Update Function for more information.
SYSUPD1=filename  - this file contains the specifications for the information to be updated.
SLZCONFG=filename - this is the SimoLYZE configuration file.
APMASTER=filename - this is the SimoLYZE Source Code Repository.
COPY The purpose of the COPY function is to copy the specified members from the untyped directory to the typed directories with proper extensions. Refer to The Copy Function for more information.
SYSCPY0=filename  - each record within the file has a from-filename and a to-filename.
SYSCPY3=filename  - each record in this file will have a "UPD" or "ADD" in positions 1-3, positions 4-nn will contain the to-filename.
SLZCONFG=filename - this is the SimoLYZE configuration file.
LIST The purpose of the LIST function is to read the Source Code Repository (APMASTER) file and create an ASCII/Text file of summary or detailed information about the source members. Refer to The List Function for more information.
SLZLIST=filename  - this is the output file that contains the listing information. The format is ASCII/Text and may be viewed with most editors.
SLZCONFG=filename - this is the SimoLYZE configuration file.
APMASTER=filename - this is the SimoLYZE Source Code Repository.
HTML The purpose of the HTML function is to read the Source Code Repository (APMASTER) file and create an HTML file of detailed and summary information about the source members. Refer to The HTML Function for more information.
APHTML01=filename - this is the output file that contains the source member information. The format is HTML and may be viewed with most browsers.
SLZCONFG=filename - this is the SimoLYZE configuration file.
APMASTER=filename - this is the SimoLYZE Source Code Repository.
APHTMHDR=filename - this is the header information for the HTML File.
APHTMINC=filename - this is the include information for the HTML File.
APHTMFTR=filename - this is the footer information for the HTML File.

Table of Contents Previous Section Next Section Overview Flowchart

The following figure shows the process flow used by the Installation Verification Procedure for SIMOLYZE.

             
IVP4LYZ1
The First Parameter is usually SET4LZY1    
   
SYSUPD1
 
 
SIMOLYZE
update
If the Source Code Repository does not exist then create one.
   
DIR
/B /A-D /ON
SYSTEMP2
SYSIMP2
   
SYSIMP1
   
   
SIMOLYZE
organize
 
 
APMASTER
The Organize Function, Update the Source Code Repository with member type.
   
   
SYSIMP2
   
   
   
   
SYSQRY1
   
   
SIMOLYZE
query
 
 
SLZMODEL
SYSQRY2
The Query Function, identify members that have been changed.
   
   
SYSQRY3
   
   
   
   
   
APMASTER
   
   
   
   
   
SLZCONFG
   
   
   
   
SLZINPUT
Un-Typed
 
 
SIMOLYZE
copy
   
   
SLZMODEL
sub-directories
The Copy Function, copy the typed members to the model directories.
   
   
   
ASM
   
   
   
ASMCPY1
   
   
   
ASMMAC1
   
   
   
COBOL
   
   
   
COBCPY1
   
   
   
etc. . .
   
APMASTER
   
   
SIMOLYZE
list
 
 
APLIST01
Read the Source Code Repository and create the APLIST01 file.
   
   
SLZCONFG
   
   
   
   
APMASTER
   
   
SIMOLYZE
html
 
 
APHTML01
Read the Source Code Repository and create the APHTML01 file.
   
   
SLZCONFG
   
   
   
   
EOJ
This is End-of-Job.
 
Overview Flowchart for SIMOLYZE

The SIMOLIBR directory is the directory where SIMOLYZE is installed. The SLZINPUT directory is the directory that contains the un-typed source members (i.e. names without file extensions).

The IVP4LYZ1 is a command file that will run the necessary programs to analyze each of the members in the SLZINPUT directory and copy each member to the proper sub-directory within SLZMODEL based on the member type.

This process will also create a Source Code Repository (APMASTER). This data base is a VSAM file with a single key composed of the member name. The actual name of the APMASTER is determined by an environment variable called APMASTER.

Table of Contents Previous Section Next Section Set Environment Variables

The environment variables must be set prior to running SIMOLYZE. The following is a description of the environment variables used in SET4LYZ1.cmd.

@echo OFF
echo **************************************************************
echo *           SET4LYZ1.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2019 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * SET4LYZ1 is Starting...
echo * SET4LYZ1 Setting the Environment Variables for SimoLYZE. This
echo * SET4LYZ1 CMD file provides a single location for defining the
echo * SET4LYZ1 location of the input directory, output directories,
echo * SET4LYZ1 the configuration file and the Source Code Data Base.
rem  *
rem  * The SIMOLIBR environment variable specifies the drive and
rem  * directory location for the SIMOLIBR directory where SIMOLYZE
rem  * is installed.
rem  *
     set SIMOLIBR=C:\SimoLIBR
rem  *
rem  * The SLZBASE environment variable is the base directtory used
rem  * by SimoLYZE. SimoLYZE will use sub-directories created under
rem  * this directory.
rem  *
     set SLZBASE=C:\SLZLIB01
rem  *
rem  * Identify the directory where the SimoLYZE work files and the
rem  * user-defined Source Code Data Base are located.
rem  *
     set SLZADMIN=%SLZBASE%\slzADMIN
rem  *
rem  * Define the location of the SimoLYZE configuration file.
rem  *
     set SLZCONFG=%SIMOLIBR%\cfg4lyz1.cfg
rem  *
rem  * Define the fully qualified name for the Source Code Repository file.
rem  * Notice the technique of using the previously defined SLZUSER
rem  * environment variable. The following could also be an explicit,
rem  * fully qualified drive, directory and filename.ext.
rem  *
     set APMASTER=%SLZADMIN%\APMASTER.DAT
rem  *
rem  * Define the Input directory. The following directory will contain the
rem  * source members that do not have file extensions.
rem  *
     set SLZINPUT=%SLZBASE%\slzINPUT
rem  *
rem  * Provide for a high-level directory definition for output members
rem  *
     set SLZMODEL=%SLZBASE%\slzMODEL
rem  *
rem  * Define the Output directories
rem  *
     set SLZ4CBL=%SLZMODEL%\cobol
     set SLZ4COBCPY1=%SLZMODEL%\cobcpy1
     set SLZ4ASM=%SLZMODEL%\asm
     set SLZ4ASMCPY1=%SLZMODEL%\asmcpy1
     set SLZ4ASMMAC1=%SLZMODEL%\asmmac1
     set SLZ4JCL=%SLZMODEL%\jcl
     set SLZ4PRC=%SLZMODEL%\prc
     set SLZ4INC=%SLZMODEL%\inc
     set SLZ4BMS=%SLZMODEL%\bms
     set SLZ4MFS=%SLZMODEL%\mfs
     set SLZ4DBD=%SLZMODEL%\dbd
     set SLZ4PSB=%SLZMODEL%\psb
     set SLZ4OTHER=%SLZMODEL%\other
rem  *
rem  * The following is provided as a method for identifying the
rem  * PDS where the original members reside.
rem  * It is only used to when writing to the Source Code Repository
rem  *
     set SLZHOST=SIMOTIME.DEMO.BASE
rem  *
rem  * **********************************************************************
rem  * The following are optional based on configuration file setting to
rem  * enable or disable a function.
rem  *
rem  * The following is for the APLIST01 file.
rem  *
     set APLIST01=%SLZADMIN%\APLIST01.TXT
rem  *
rem  * The following is for the messaging files.
rem  *
     set SimoNote=%SLZADMIN%\SIMONOTE_LYZE.LOG
     set SYSOUT=%SLZADMIN%\SYSOUT_LYZE.LOG
     set SLZMSG=%SLZADMIN%\SLZMSG_LYZE.LOG
rem  *
rem  * The following is for the cross reference file of main members to
rem  * to copyfiles.
rem  *
     set COPYXREF=%SLZADMIN%\COPYXREF.TXT
rem  *
rem  * The following is for the cross reference file of main members to
rem  * to data files.
rem  *
     set DATAXREF=%SLZADMIN%\DATAXREF.TXT
rem  *
echo * SET4LYZ1 is Finished...

Table of Contents Previous Section Next Section Build a Directory Structure

The input directory and output directories must be must exist prior to running SimoLYZE. The following is a description of a sample command file (DIR4LYZE.cmd) that may be used to create a directory structure.

Please note, prior to running the following command file the environment variables must be set as described in the Previous section of this document

@echo OFF
echo * DIR4LYZE is Starting...
echo **************************************************************
echo *           DIR4LYZE.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2019 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * This command file will create the directories used by the
echo * Installation Verification Procedures for SimoLYZE.
echo *
echo * Please note, the environment variables must be set prior
echo * to running this procedure. Refer to the SET4LYZ1.cmd file
echo * for more information.
echo *
     MD %SLZADMIN%
rem  *
     MD %SLZINPUT%
     MD %SLZMODEL%
rem  *
     MD %SLZ4CBL%
     MD %SLZ4COBCPY1%
     MD %SLZ4ASM%
     MD %SLZ4ASMCPY1%
     MD %SLZ4ASMMAC1%
     MD %SLZ4JCL%
     MD %SLZ4PRC%
     MD %SLZ4INC%
     MD %SLZ4BMS%
     MD %SLZ4MFS%
     MD %SLZ4DBD%
     MD %SLZ4PSB%
     MD %SLZ4OTHER%
echo * DIR4LYZE is Finished...

Table of Contents Previous Section Next Section Command File to run SIMOLYZE

The following is a description of a sample command file (IVP4LYZ1.cmd) that steps through the member typing process.

@ECHO OFF
echo **************************************************************
echo *           IVP4LYZ1.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2019 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * Installation Verification Program for SIMOLYZE
rem  *
     if not "%1" == "" set slzcall=%1
     if "%1" == "" set slzcall=c:\SimoLIBR\set4lyz1
     CALL %slzcall%
     call SimoNOTE "************************************************************IVP4LYZ1"
     call SimoNOTE "Starting JobName IVP4LYZ1, User is %USERNAME%"
     call SimoNOTE "SLZINPUT set to %SLZINPUT%"
rem  *
rem  ******************************************************************************
rem  *
     if   EXIST %APMASTER% GOTO :SKIPALOC
     call SimoNOTE "Create a Source Code Repository for unidentified members."
     call SimoNOTE "* Ivp4Lyz1 %SLZCONFG%"
     call SimoNOTE "* Ivp4Lyz1 %APMASTER%"
     set  SLZUPD1=UPDALOC1.UPD
     run SimoLYZE UPDATE
     if   ERRORLEVEL = 1 GOTO :ABEND01
:SKIPALOC
rem  *
rem  ******************************************************************************
     call SimoNOTE "Prepare to read the unidentified source members."
rem  *
rem  * The HOSTNAME identifies the original mainframe PDS. On the
rem  * PC this is used for documentation purposes,
rem  * The PCDIR identifies the directory where the unidentified
rem  * input source members are stored. If the source members are not
rem  * in the current directory the PCDIR must be used.
rem  *
rem  * The DIR command will create a list file of the members in the
rem  * input directory.
rem  * The /B option will list only the file name.
rem  * The /A-D option will cause directory names not to be listed.
rem  * The /ONE option will organize in name and extension sequence.
rem  *
     echo HOSTNAME %SLZHOST%           >%SLZADMIN%\SYSTEMP1.TXT
     echo PCDIR    %SLZINPUT%\        >>%SLZADMIN%\SYSTEMP1.TXT
     dir  %SLZINPUT%\*.* /B /A-D /ONE  >%SLZADMIN%\SYSTEMP2.TXT
rem  *
rem  * Load the Source Code Repository with unknown member types.
rem  *
     call SimoNOTE "Do the source code analysis and Populate the Source Code Repository "
rem  *
     set SYSIMP1=%SLZADMIN%\SYSTEMP1.TXT
     set SYSIMP2=%SLZADMIN%\SYSTEMP2.TXT
     run SimoLYZE ORGANIZE
     if   ERRORLEVEL = 1 GOTO :ABEND02
rem  *
rem  ******************************************************************************
     call SimoNOTE "Select members from the Source Code Repository to be copied."
rem  *
rem  * This command file is usually run with the CFG4LYZ1.CFG file that has
rem  * the statement ...SLZQRY01 USERDATE NO... included
rem  * Therefore, all members that meet the other criteria will be selected.
rem  *
     set SYSQRY1=QRY4CPY1.QRY
     set SYSQRY2=%SLZADMIN%\SYSTEMP3.TXT
     run SimoLYZE QUERY
rem  *
rem  ******************************************************************************
     call SimoNOTE "Copy member to SLZMODEL Directories, append the file extension."
rem  *
     set SYSCPY0=%SLZADMIN%\SYSTEMP3.TXT
     set SYSCPY3=%SLZADMIN%\SYSCPY3.LOG
     run SimoLYZE COPY
     if   ERRORLEVEL = 1 GOTO :ABEND03
     call SimoNOTE "IVP4LYZ1 Source members have been copied to specified user directories."
rem  *
rem  ******************************************************************************
     call SimoNOTE "Create an ASCII/Text SLZLIST file from the Source Code Repository."
rem  *
     set APLIST01=%SLZADMIN%\APLIST01.TXT
     run SimoLYZE LIST
     if   ERRORLEVEL = 1 GOTO :ABEND04
     call SimoNOTE "IVP4LYZ1 Notepad will display the list file in a separate window."
rem  *
     START notepad %SLZADMIN%\APLIST01.TXT
     echo * IVP4LYZ1 Thank you for using SimoLYZE by SimoTime Enterprises
     goto :EojAok
rem  *
rem  ******************************************************************************
:ABEND01
     call SimoNOTE "ABENDING Allocate function for Source Code Repository failed!"
     goto :END
rem  *
rem  ******************************************************************************
:ABEND02
     call SimoNOTE "ABENDING Organize function for Source Code Repository failed!"
     goto :END
rem  *
rem  ******************************************************************************
:ABEND03
     call SimoNOTE "ABENDING the COPY function for Source Code Repository failed!"
     goto :END
rem  *
rem  ******************************************************************************
:ABEND04
     call SimoNOTE "ABENDING the LIST function for Source Code Repository failed!"
     goto :END
rem  *
rem  ******************************************************************************
:EojAok
     call SimoNOTE "Finished JobName IVP4LYZ1 "
rem  *
:END

Table of Contents Previous Section Next Section The SIMOLYZE Functions

This section describes each of the SIMOLYZE functions. The ORGANIZE function does the actual member typing. The LIST function reads the Source Code Repository and creates a listing file in ASCII/Text format for easy viewing with most editors. The UPDATE function provides a quick method for updating records in the Source Code Repository. The QUERY function provides a quick method for accessing information in the Source Code Repository. The COPY function provides a method for quickly copying the un-typed source members from an input directory to the appropriate directories that have been defined for each member type.

Table of Contents Previous Section Next Section ORGANIZE, Do Member Typing

The organize function does the actual member typing. This function will read each of the specified source members and determine the member type. This function starts by reading an ASCII/Text file (SYSIMP2) that contains a list of members that will be used to update or add records to the Source Code Repository file (APMASTER.DAT). The configuration file is read to get additional parameters to determine the execution behavior and results. The SYSIMP1 file contains two records. The first record provides the name of the PDS where the members are stored on the mainframe. The second record provides the name of the Windows directory where the input members are stored.

             
ISYSIMP1
   
   
SIMOLYZE
organize
 
 
APMASTER
The Organize Function
   
   
SYSIMP2
   
   
   
   
   
SLZCONFG
   
   
   
   
   
APMASTER
   
   
   
   
EOJ
This is End-of-Job
 
Overview Flowchart for the ORGANIZE Function of SIMOLYZE

Table of Contents Previous Section Next Section LIST, ASCII/Text View of Results

The list function will read the Source Code Repository file (APMASTER.DAT) and produce a listing file in ASCII/Text format. Two sample command files are provided. The first command file (SLZLIST1.CMD) will produce a listing file (ASCII/Text format) with a summary of information by member type group. The second example (SLZLIST2.CMD) will produce a listing file (ASCII/Text format) with detail for each member and a summary of information by member type group.

             
SIMOLYZE
list
The mainline program
   
APMASTER
   
   
APLISTC1
 
 
APLIST01
The LIST Function
   
   
SLZCONFG
   
   
   
   
EOJ
This is End-of-Job
 
Overview Flowchart for the LIST Function of SIMOLYZE

The following is an example of a command file (APLISTE1.cmd) that will execute SIMOLYZE with the LIST option.

@echo OFF
      set CmdName=APLISTE1
echo * Starting CmdName %CmdName%, User is %USERNAME%
echo **************************************************************
echo *           APLISTE1.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * This procedure will read the Source Code Data Base and     *
echo * create a listing file that includes SUMMARY info only.     *
rem  **************************************************************
rem  * Set the required environment variables.
rem  *
     set JobStatus=0000
     call set4lyz1
rem  * Override pointers to config and list file
     set SLZCONFG=%SLZADMIN%\tmp4lyze.CFG
     set APLIST01=%SLZADMIN%\APLIST01.TXT
rem  *
rem  **************************************************************
rem  * The following two statements will create a temporary
rem  * configuration file for the SimoLYZE List function.
rem  *
     echo APLISTC1 NODETAIL      > %SLZCONFG%
     echo APLISTC1 SUMMARY      >> %SLZCONFG%
rem  *
rem  **************************************************************
rem  * Run the List function and display the results with NotePAD.
rem  *
     run SIMOLYZE LIST
     if not "%ERRORLEVEL%" == "0" set JobStatus=0010
     if not "%JobStatus%" == "0000" goto :EojNOK
rem  *
rem  **************************************************************
rem  * End of Job.
:EojAOK
     echo * %CmdName% Notepad will display the list file in a separate window.
     echo * %CmdName% DataTAKE is %APMASTER%.
     echo * %CmdName% DataMAKE is %APLIST01%.
     START notepad %APLIST01%
     echo * Finished CmdName %CmdName%, Job Status is %JobStatus%
     goto :End
:EojNOK
     echo * %CmdName% slzCONFG is %slzCONFG%.
     echo * %CmdName% DataTAKE is %APMASTER%.
     echo * ABENDING CmdName %CmdName%, Job Status is %JobStatus%
     goto :End
:End
     if not "%1" == "nopause" pause

The following statements in the configuration file (SLZCONFG.CFG) affect the program execution for the list function

SLZLST01 NODETAIL              * Include record detail
SLZLST01 SUMMARY               * Include summary information

The first statement with the DETAIL keyword will write detailed information about each source member to the listing file. The NODETAIL keyword prevents the detailed information about each source member from being written to the listing file.

The second statement with the SUMMARY keyword will provide a summary of the number of source members in each type grouping and total count of members with total lines of code. The NOSUMMARY keyword will prevent the summary information from being placed in the listing file.

Table of Contents Previous Section Next Section HTML, Browser View of Results

The HTML function will read the Source Code Repository file (APMASTER.DAT) and produce a listing file in HTML format. Two sample command files are provided. The first command file (APHTMLE1.CMD) will produce an HTML file with a summary of information by member type group. The second example (APHTMLE2.CMD) will produce an HTML file with detail for each member and a summary of information by member type group.

The following link to view a sample HTML document will provide a quick look at the information provided by the HTML function.

             
APHTMLE1
cmd
A WIndows Command File
   
SIMOLYZE
html
The mainline program
   
APMASTER
   
   
APHTMLC1
 
 
APHTML01
The HTML Function
   
   
SLZCONFG
   
   
   
   
   
APHTMHDR
   
   
   
Header for HTML
   
   
APHTMINC
   
   
   
Include for HTML
   
   
APHTMFTR
   
   
   
Footer for HTML
   
EOJ
This is End-of-Job
 
Overview Flowchart for the HTML Function of SIMOLYZE

The following is an example of a command file (APHTMLE1.cmd) that will execute SIMOLYZE with the HTML option.

@echo OFF
     set CmdName=APHTMLE1
echo **************************************************************
echo *           APHTMLE1.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * This procedure will read the Source Code Data Base and     *
echo * create an HTML file that includes DETAIL and SUMMARY info. *
rem  *
rem  * Set the required environment variables.
rem  *
     set JobStatus=0000
     call set4lyz1
     call SimoNOTE "************************************************************%CmdName%.CMD"
     call SimoNOTE "* Starting CmdName %CmdName%, Job Status is %JobStatus%"
     set APHTMHDR=%SimoLIBR%\aphtmhdr.htm
     set APHTMFTR=%SimoLIBR%\aphtmftr.htm
     set APHTMINC=%SimoLIBR%\aphtminc.htm
     set APHTML01=%slzADMIN%\aphtml01.htm
     if not exist %slzADMIN%\simologo.jpg copy %SimoLIBR%\simologo.jpg %slzADMIN%
rem  *
rem  **************************************************************
rem  * Run the HTML function and display the results with IEXPLORE.
rem  *
     run APHTMLC1
     if not "%ERRORLEVEL%" == "0" set JobStatus=0010
     if not "%JobStatus%" == "0000" goto :EojNOK
rem  *
rem  **************************************************************
rem  * End of Job.
:EojAOK
     call SimoNOTE "* DataTAKE is %APMASTER%."
     call SimoNOTE "* DataMAKE is %APHTML01%."
     call SimoNOTE "* StepInfo Internet Explorer will display the HTML file in a separate window."
     START iexplore %APHTML01%
     call SimoNOTE "* Finished CmdName %CmdName%, Job Status is %JobStatus%"
     goto :End
:EojNOK
     call SimoNOTE "* DataTAKE is %APMASTER%."
     call SimoNOTE "* ABENDING CmdName %CmdName%, Job Status is %JobStatus% "
     goto :End
:End
     if not "%1" == "nopause" pause


Table of Contents Previous Section Next Section COBOL Categories, Four List Files

The COBOL Category function will read the Source Code Repository file (APMASTER.DAT) and produce four (4) listing files in ASCII/Text format. A sample command file is provided. This command file (APLISTE4.CMD) will produce four (4) ASCII/Text files containing the following information.

File Name Description
CBLBATL1 A list of the source members for BATCH programs that do not contain SQL statements.
CBLBSQL1 A list of the source members for BATCH programs that contains SQL statements.
CBLONLL1 A list of the source members for CICS programs that do not contain SQL statements.
CBLOSQL1 A list of the source members for CICS programs that contain SQL statements.
  Four Listing Files with Member Names by COBOL Category

Table of Contents Previous Section Next Section The Query Function

The query function will read the Source Code Repository file (APMASTER.DAT) and produce an ASCII/Text file using the control specifications contained in the SYSQRY1 file.

             
SYSQRY1
Selection Criteria
   
   
SIMOLYZE
query
 
 
SYSQRY2
The Query Function
   
   
SYSQRY3
userdate
usertime
   
   
   
User Date/Time for Selection Criteria (Optional)
   
   
SLZCONFG
   
   
   
Configuration File
   
   
APMASTER
   
   
   
Source Code Repository
   
EOJ
This is End-of-Job
 
Overview Flowchart for the QUERY Function of SIMOLYZE

Table of Contents Previous Section Next Section Repository Extract to CSV File

This example will read the Source Code Repository and produce a CSV file that may be imported into an Excel Spreadsheet or other data bases. The following (QRYGET02.qry) is an example of a control file for the QUERY function.

* ***************************************************************
*            QRYGET02.qry - a SIMOLYZE Query Script             *
*        This script is provided by SimoTime Technologies       *
*          (C) Copyright 1987-2018 All Rights Reserved          *
*            Web Site URL:   http://www.simotime.com            *
*                  e-mail:   helpdesk@simotime.com              *
* ***************************************************************
* This Query will select active member records from the
* Source Code Data Base and create a CSV file that may
* be imported into an Excel Spreadsheet.
*
//PutPrefix Member Name,Language,Type,Records,Comments,Blanks,Lines of Code
*
//IF STATUS EQ A
//PUT &<MemberName<&,&<Language<&,&<Type<&,&<Records<&,&<Comments<&,&<BlankLines<&,&<LinesOfCode<&
//END-IF
*

The following is the command file (SLZQRYE2.cmd) that will execute the query function using the preceding query control file information.

@echo OFF
echo * SLZQRYE2 is Starting, User is %USERNAME%
echo **************************************************************
echo *           SLZQRYE2.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * Read the Source Code Data Base and create a CSV file       *
echo * that may be imported into an Excel Spreadsheet.            *
rem  **************************************************************
rem  * Set the required environment variables.
rem  *
     call set4lyz1
     set SLZSYS1F=%SLZADMIN%\QryCfg02.CFG
     set SYSQRY1=%SIMOLIBR%\QryGet02.QRY
     set SYSQRY2=%SLZADMIN%\QryPut02.CSV
rem  *
rem  **************************************************************
rem  * The following statements will create a temporary
rem  * configuration file for the SimoLYZE Query function.
rem  * Note: The SLZSYS1F could be set to the CFG4LYZ1.CFG file
rem  * that is included with SimoLYZE. The purpose of using the
rem  * following is to show the minimum requirements.
rem  *
     echo SLZQRY01 MSGLEVEL 0             > %SLZSYS1F%
     echo SLZQRY01 WILDCARD *            >> %SLZSYS1F%
     echo SLZQRY01 DOENVARS              >> %SLZSYS1F%
     echo SLZQRY01 USERDATE NO           >> %SLZSYS1F%
rem  *
rem  **************************************************************
rem  * Run the Query function and display the results with NotePAD.
rem  *
     run SIMOLYZE QUERY
     echo * SLZQRYE2 Query File is %SYSQRY2%
     echo * SLZQRYE2 Display the QUERY file in a separate window.
     START notepad %SYSQRY2%
rem  *
rem  **************************************************************
rem  * End of Job.
echo * SLZQRYE2 Thank you for using SimoLYZE by SimoTime Technologie
echo * SLZQRYE2 is Finished...
     if not "%1" == "nopause" pause

The following (QryPUT02.CSV) is the CSV file created as a result of running the preceding query function.

CBLBITC1,CBL,CBL,00000452
CBLDAYC1,CBL,CBL,00000438
CBLDAYC2,CBL,CBL,00000272
CBLHBXC2,CBL,CBL,00000400
CBLHBXC3,CBL,CBL,00000280
CBLNUXC1,CBL,CBL,00000296
CBLNUXC2,CBL,CBL,00000288
CBLPARC3,CBL,CBL,00000218
CBLPARC4,CBL,CBL,00000220
PASSBITS,CBL,CPY,00000025

Table of Contents Previous Section Next Section Table of Statements and Keywords

The following table describes the various control statements that may be used to select the input and determine the output for the QUERY function.

Keyword Description
//IF The //IF statement will cause the QUERY function to test various items within the Source Code Repository for the specified condition.
The parameters are as follows:

variable   condition   value
CICS   Note: 1   "Y" or "N"
FLAG01   Note: 1   "Y" or "N"
FLAG02   Note: 1   "Y" or "N"
FLAG03   Note: 1   "Y" or "N"
FLAG04   Note: 1   "Y" or "N"
FLAG05   Note: 1   "Y" or "N"
FLAG06   Note: 1   "Y" or "N"
FLAG07   Note: 1   "Y" or "N"
FLAG08   Note: 1   "Y" or "N"
LANGUAGE   Note: 1   Note:2
MEMBERDATE   Note: 1   SYSTEMDATE or
USERDATE or
yyyymmdd
Note: 4
RECORDS   Note: 1   nnnnnnnn
SQL   Note: 1   "Y" or "N"
STATUS   Note: 1   "A", "D" or "S"
TYPE   Note: 1   Note: 3
     
Note 1:   Relational Conditions are EQ, NE, GT, GE, LT, LE
Note 2:   Language Values are CBL, 370, JCL
Note 3:   Member Types are CBL, 370, MAC, CPY, PRC, BMS, MFS, DBD, PCB
Note 4:   USERDATE and USERTIME are specified in the SYSQRY3 file.
//END-IF Closes the processing for the previously defined //IF statement(s).
//PUT The //PUT statement will cause the QUERY function to write a record to the output file (SYSQRY2). The parameters are as follows (the variable values are not case sensitive):
variable description
&<BlankLines>& An 8 character, numeric field. The number of blank lines in a source member.
&<Comments>& An 8 character, numeric field. The number of comments in a source member.
&<Date>& A ten character field in the following format ccyy/mm/dd.
&<Language>& An eight character field with trailing spaces.
&<LinesOfCode>& An 8 character, numeric field. The number of records that contain source code.
&<MemberName>&   A sixteen character field with trailing spaces.
&<MemberDate>& An eight character date with yyyymmdd format
&<MemberTime>& An eight character time with hhmmsshh format
&<PCNAME>& A 256 character field with trailing spaces.
&<Records>& An 8 character, numeric field. The number of records in a source member.
&<Status>& A 1 character field with trailing spaces.
&<SystemDate>& An eight character date with yyyymmdd format
&<SystemTime>& An eight character time with hhmmsshh format
&<Time>& An eleven character field with trailing spaces.
&<Type>& An eight character field with trailing spaces.
&<UserDate>& An eight character date with yyyymmdd format (Specified in the SYSQRY3 file).
&<UserTime>& An eight character time with hhmmsshh format (Specified in the SYSQRY3 file).

//PUTPREFIX The //PUTPREFIX statement will cause records to be written at the beginning of the output file (SYSQRY2). This is useful when inserting comments at the top of the file. The only parameter is a text string.
//PUTSUFFIX The //PUTSUFFIX statement will cause records to be written at the end of the output file (SYSQRY2). The only parameter is a text string.

Table of Contents Previous Section Next Section The Update Function

The update function will read an ASCII/Text file of control records and update the Source Code Repository file (APMASTER.dat).

             
SIMOLYZE
update
The mainline program
   
APMASTER
   
   
SLZUPDC1
 
 
APMASTER
The Update Function
   
   
SLZUPD1
   
   
   
   
EOJ
This is End-of-Job
 
Overview Flowchart for the UPDATE Function of SIMOLYZE

The following statements will run the update function. The first statement will point to the configuration file. The second statement will point to the input file that contains the update functions to be performed. The third statement will point to the Source Code Repository. The fourth statement will run SIMOLYZE and perform the update function.

File/Function Command
CFG4LYZ1 C:\SIMOLIBR\>set SLZCONFG=configuration-file
UPDSPEC1 C:\SIMOLIBR\>set SLZUPD1=specifications-file
APMASTER C:\SIMOLIBR\>set APMASTER=Source Code Repository
execute C:\SIMOLIBR\>run SIMOLYZE UPDATE
  Sequence of Events for the SIMOLYZE Update function

The format of the records in the SLZUPD1 file is as follows.

member-name keyword value-or-action

The member-name is also the key to the Source Code Repository records. A list of the keyword items and associated value-or-action may be found at the end of this section at the Summary List of Update Keywords.

Table of Contents Previous Section Next Section Change the Status of a Record

The following example (SLZUPDE1.cmd and UPDSPEC1.upd) shows how to change the member status definition within the Source-Code-Data-Base file (APMASTER.dat).

@echo OFF
echo * SLZUPDE1 is Starting, v04.04.14...
echo **************************************************************
echo *           SLZUPDE1.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * This procedure will read a file of update statements for   *
echo * the Source Code Data Base and update the Data Base.        *
rem  **************************************************************
rem  *
     call set4lyz1
     set %SIMOLIBR%\SLZUPD1=UPDSPEC1.UPD
     echo Configuration file:    %SLZSYS1F%
     echo Specification file:    %SLZUPD1%
     echo Source Code Data Base: %APMASTER%
     run SIMOLYZE UPDATE
rem  *
echo * SLZUPDE1 is Finished...

In the preceding command file the second "set" statement points to the specification file that defines the update function that needs to be performed. The following is an example of a specifications file with one statement (the asterisk in position one (1) indicates a comment). The "CBLDAYC2" is the member name, the "STATUS" indicates the Status Field in the record and the "D" is the value to place into the field. Once the following statement is processed the "CBLDAYC2" record will be flagged for deletion.

* ***************************************************************
*            UPDSPEC1.upd - a SIMOLYZE Update Script            *
*        This script is provided by SimoTime Technologies       *
*          (C) Copyright 1987-2018 All Rights Reserved          *
*            Web Site URL:   http://www.simotime.com            *
*                  e-mail:   helpdesk@simotime.com              *
* ***************************************************************
* This specification will change the Record Status field in
* the Source Code Data Base to a "D". The status is as follows:
*  A = Active
*  D = Delete
*  S = Suspend
*
CBLDAYC2 STATUS D

The members (SLZUPDE1.cmd and UPDSPEC1.upd) from the preceding example are included in the z-Pack (zipped file) for SIMOLYZE.

Table of Contents Previous Section Next Section Change the Member Language Definition

The following example (SLZUPDE2.cmd and UPDSPEC2.upd) shows how to override or explicitly define the member language definition within the Source-Code-Data-Base file (APMASTER.dat).

@echo OFF
echo * SLZUPDE2 is Starting, v04.04.14...
echo **************************************************************
echo *           SLZUPDE2.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * This procedure will read a file of update statements for   *
echo * the Source Code Data Base and update the Data Base.        *
rem  **************************************************************
rem  *
     call set4lyz1
     set SLZUPD1=%SIMOLIBR%\UPDSPEC2.UPD
     echo Configuration file:    %SLZSYS1F%
     echo Specification file:    %SLZUPD1%
     echo Source Code Data Base: %APMASTER%
     run SIMOLYZE UPDATE
rem  *
echo * SLZUPDE2 is Finished...

In the preceding command file the second "set" statement points to the specification file that defines the update function that needs to be performed. The following is an example of a specifications file with one statement (the asterisk in position one (1) indicates a comment). The "CBLDAYC2" is the member name, the "LANGUAGE" indicates the Language Field in the record and the "CBL" is the value to place into the field. Once the following statement is processed the "CBLDAYC2" record will be identified as containing COBOL source code.

* ***************************************************************
*            UPDSPEC2.upd - a SIMOLYZE Update Script            *
*        This script is provided by SimoTime Technologies       *
*          (C) Copyright 1987-2018 All Rights Reserved          *
*            Web Site URL:   http://www.simotime.com            *
*                  e-mail:   helpdesk@simotime.com              *
* ***************************************************************
* This specification will change the Language Definition in
* the Source Code Data Base. The Language is as follows:
*  CBL = COBOL
*  JCL = Job Control Language
*  370 = Assembler
*
CBLDAYC2 LANGUAGE CBL

Attention: The ability to override or explicitly define the language is intended for exception conditions. If SIMOLYZE fails to identify a member Language please notify the helpdesk@simotime.com .

The source members (SLZUPDE2.CMD and UPDSPEC2.UPD) from the preceding example are included in the z-Pack (zipped file) for SIMOLYZE.

Table of Contents Previous Section Next Section Change the Member Type Definition

The following example (SLZUPDE3.cmd and UPDSPEC3.upd) shows how to override or explicitly define the member type definition within the Source-Code-Data-Base file (APMASTER.dat).

@echo OFF
echo * SLZUPDE3 is Starting, v04.04.14...
echo **************************************************************
echo *           SLZUPDE3.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * This procedure will read a file of update statements for   *
echo * the Source Code Data Base and update the Data Base.        *
rem  **************************************************************
rem  *
     call set4lyz1
     set SLZUPD1=%SIMOLIBR%\UPDSPEC3.UPD
     echo Configuration file:    %SLZSYS1F%
     echo Specification file:    %SLZUPD1%
     echo Source Code Data Base: %APMASTER%
     run SIMOLYZE UPDATE
rem  *
echo * SLZUPDE3 is Finished...

In the preceding command file the second "set" statement points to the specification file that defines the update function that needs to be performed. The following is an example of a specifications file with one statement (the asterisk in position one (1) indicates a comment). The "CBLDAYC2" is the member name, the "TYPE" indicates the member TYPE Field in the record and the "CBL" is the value to place into the field. Once the following statement is processed the "CBLDAYC2" record will be identified as a COBOL program.

* ***************************************************************
*            UPDSPEC3.upd - a SIMOLYZE Update Script            *
*        This script is provided by SimoTime Technologies       *
*          (C) Copyright 1987-2018 All Rights Reserved          *
*            Web Site URL:   http://www.simotime.com            *
*                  e-mail:   helpdesk@simotime.com              *
* ***************************************************************
* This specification will change the Type Definition in
* the Source Code Data Base. The Type is as follows:
*  CBL = COBOL
*  JCL = Job Control Language
*  370 = Assembler
*  CPY = Copy File
*  INC = Include
*  MAC = Macro
*  MFS = Message Format Services for IMS
*  BMS = Basic Mapping Support for CICS
*  DBD = Data Base Description for IMS
*  PRC = Procedure for JCL
*  PSB = Program Specification Block for IMS
*  UNKNOWN
*
CBLDAYC2 TYPE CBL

Attention: The ability to override or explicitly define the language is intended for exception conditions. If SIMOLYZE fails to identify a member Language please notify the helpdesk@simotime.com .

The source members (SLZUPDE3.CMD and UPDSPEC3.UPD) from the preceding example are included in the z-Pack (zipped file) for SIMOLYZE.

Table of Contents Previous Section Next Section Create a new Source Code Repository

A special feature of the update function is to create an empty Source Code Repository. The following example (SLZALOC1.cmd and UPDALOC1.upd) shows how to create a new Source-Code-Data-Base file (APMASTER.dat).

@echo OFF
echo * SLZALOC1 is Starting, v04.04.14...
echo **************************************************************
echo *           SLZALOC1.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * This procedure will read a file of update statements for
echo * the Source Code Data Base and create a new Data Base.
echo * The allocate action is defined in the SLZUPD1 file.
rem  *
     set SLZCONFG=cfg4lyz1.cfg
     set SLZUPD1=UPDALOC1.UPD
     set APMASTER=%SLZADMIN%\APMASTER.DAT
     run SIMOLYZE UPDATE
rem  *
echo * SLZALOC1 is Finished...

For the preceding example the SYSUPD1 file contains one record as follows.

* ***************************************************************
*            UPDALOC1.upd - a SIMOLYZE Update Script            *
*        This script is provided by SimoTime Technologies       *
*          (C) Copyright 1987-2019 All Rights Reserved          *
*            Web Site URL:   http://www.simotime.com            *
*                  e-mail:   helpdesk@simotime.com              *
* ***************************************************************
* The following statement will cause a new Source Code Data Base
* file to be allocated.
*
//ACTION ALLOCATE

Note: If a Source Code Repository already exist it will not be replaced by this function. An error message will be posted and the function will terminate. The existing data base file must be deleted prior to running this function.

The source members (SLZALOC1.CMD and UPDALOC1.UPD) from the preceding example are included in the z-Pack (zipped file) for SIMOLYZE.

Table of Contents Previous Section Next Section Copy Repository & Drop Deleted Records

A special feature of the update function is to copy the Source Code Repository and drop records that have been flagged for deletion. The following example (SLZCOPY2.cmd and UPDCOPY2.upd) shows how to copy the Source-Code-Data-Base file (APMASTER.DAT) to a new Source-Code-Data-Base file (SLZSCDB2.dat).

@echo OFF
echo * SLZCOPY2 is Starting, v04.04.14...
echo **************************************************************
echo *           SLZCOPY2.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo *
echo * This procedure will read the Source Code Data Base and
echo * create a new Source Code Data Base without deleted records.
echo *
     set SLZCONFG=c:\SimoLIBR\cfg4lyz1.cfg
     set APMASTER=c:\slzLIB01\SLZADMIN\APMASTER.DAT
     set SLZSCDB2=c:\slzLIB01\SLZADMIN\SLZSCDB2.DAT
     set SLZUPD1=c:\SimoLIBR\UpdCopy2.UPD
     run SIMOLYZE UPDATE
echo * SLZCOPY2 is Finished...

For the preceding example the SYSUPD1 file contains one record as follows.

* ***************************************************************
*            UPDCOPY2.upd - a SIMOLYZE Update Script            *
*        This script is provided by SimoTime Technologies       *
*          (C) Copyright 1987-2018 All Rights Reserved          *
*            Web Site URL:   http://www.simotime.com            *
*                  e-mail:   helpdesk@simotime.com              *
* ***************************************************************
* This specification will copy the Source Code Data Base
* and drop records flagged for deletion.
*
//ACTION DROPDELETE

The source members (SLZCOPY2.CMD and UPDCOPY2.UPD) from the preceding example are included in the z-Pack (zipped file) for SIMOLYZE.

Table of Contents Previous Section Next Section Summary List of Update Keywords

The following is a list of the keywords used by the Update function for SIMOLYZE.

Keyword Value or Action
STATUS Valid Status codes are A=Active, D=Deleted and S=Suspend
LANGUAGE  Valid languages are CBL, JCL, 370, UNKNOWN, and the VALUE may be omitted.
TYPE Valid types are CBL, JCL, 370, CPY, INC, MAC, MFS, BMS, DBD, PRC, PSB, UNKNOWN, and the VALUE may be omitted.
FLAG01 Flag value must be "Y" or "N".
FLAG02 Flag value must be "Y" or "N".
FLAG03 Flag value must be "Y" or "N".
FLAG04 Flag value must be "Y" or "N".
FLAG05 Flag value must be "Y" or "N".
FLAG06 Flag value must be "Y" or "N".
FLAG07 Flag value must be "Y" or "N".
FLAG08 Flag value must be "Y" or "N".
FLAGnn(x) The value or action should be blank, the keyword value of nn is a flag number 01-08 and x is a Y or N.

The following example (SLZUPDE4.cmd and UPDSPEC4.upd) shows how to do multiple updates to the Source-Code-Data-Base file (APMASTER.dat) in a single pass of the SIMOLYZE Update Function.

@echo OFF
echo * SLZUPDE4 is Starting, v04.04.14...
echo **************************************************************
echo *           SLZUPDE4.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * This procedure will read a file of update statements for   *
echo * the Source Code Data Base and update the Data Base.        *
rem  **************************************************************
rem  *
     call set4lyz1
     set SLZUPD1=%SIMOLIBR%\UPDSPEC4.UPD
     echo Configuration file:    %SLZSYS1F%
     echo Specification file:    %SLZUPD1%
     echo Source Code Data Base: %APMASTER%
     run SIMOLYZE UPDATE
rem  *
echo * SLZUPDE4 is Finished...

For the preceding example the SYSUPD1 file contains one record as follows.

* ***************************************************************
*            UPDSPEC4.upd - a SIMOLYZE Update Script            *
*        This script is provided by SimoTime Technologies       *
*          (C) Copyright 1987-2018 All Rights Reserved          *
*            Web Site URL:   http://www.simotime.com            *
*                  e-mail:   helpdesk@simotime.com              *
* ***************************************************************
* This specification is an example of multiple updates
* in a single pass of the update function of SimoLYZE.
*
CBLDAYC1 LANGUAGE CBL
CBLDAYC1 TYPE CBL
CBLDAYC1 STATUS S
CBLDAYC1 FLAG02 Y
CBLDAYC1 FLAG04 Y
CBLDAYC1 FLAG06 Y
CBLDAYC1 FLAG08 Y

The source members (SLZUPDE4.CMD and UPDSPEC4.UPD) from the preceding example are included in the z-Pack (zipped file) for SIMOLYZE.

Table of Contents Previous Section Next Section The Copy Function

The copy function will read an ASCII/Text file of control records that contain the from-file and to-file names. The un-typed source members (from-file) will be copied to the specified directory (to-file).

WIP - Flow Chart

The following statements in the configuration file (SLZCONFG) affect the program execution for the copy function.

SLZCPY01 REPLACE               * Replace existing members
SLZCPY01 DOLOG                 * Create a ADD/UPD log file

The first statement with the REPLACE keyword provides for the replacement of existing members. The NOREPLACE keyword is the default and existing source members will not be replaced. If the logging function is enabled the UPD status in the first three bytes of the log record will be ERR instead of UPD.

The second statement with the DOLOG keyword will provide a log file as the source members are copied. The NOLOG keyword will prevent logging as members are copied.

Table of Contents Previous Section Next Section Query by Member Date

When SimoLYZE performs the source code analysis and determines the member type the information along with the date and time for the source member is recorded. This information is stored in the Source Code Repository file (APMASTER). The field (MEMBERDATE) may be accessed by the query function.

The following (SLZDATE1.cmd) is a sample command file that sets the environment and calls the QUERY function of SIMOLYZE.

@ECHO OFF
echo **************************************************************
echo *           SLZDATE1.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * SLZDATE1 is Starting, v04.04.14...
rem  *
echo * SLZDATE1 set Specific Base Directory's variables
rem  *
     if "%1" == "" GOTO :ABEND01
     CALL %1
     echo * SLZDATE1 SLZINPUT set to %SLZINPUT%
rem  *
rem  ******************************************************************************
echo * slzDate1 Set environment variables for files. Do a Query to identify records
echo * slzDate1 with a member date greater than or equal to 20000101.
rem  *
     set APMASTER=%SLZADMIN%\APMASTER.DAT
     set SYSQRY1=c:\SimoLIBR\QRYDATE1.QRY
     set SYSQRY2=%SLZADMIN%\SLZDATE1.CSV
     run SimoLYZE QUERY
     if   ERRORLEVEL = 1 GOTO :ABEND02
rem  *
rem  ******************************************************************************
echo * SLZDATE1 NotePAD will be used to display the results in a separate window.
rem  *
     START NotePAD %SYSQRY2%
     goto :EojAok
rem  *
rem  ******************************************************************************
:ABEND01
     echo * SLZDATE1 Parameter 1 is usually SET4LYZ1 for this IVP.
     echo * SLZDATE1 This is ABEND01 for slzDate1 processing...
     goto :END
:ABEND02
     echo * SLZDATE1 This is ABEND02 for slzDate1 processing...
     goto :END
:EojAok
     echo * SLZDATE1 Thank you for using SimoLYZE by SimoTime Enterprises
     echo * SLZDATE1 is Finished...
:END

The following (QRYDATE1.qry) is a sample SYSQRY1 file with the control specifications for selecting and outputting a list of file names that meet the date selection criteria.

* ***************************************************************
*            QRYDATE1.qry - a SIMOLYZE Query Script             *
*        This script is provided by SimoTime Technologies       *
*          (C) Copyright 1987-2018 All Rights Reserved          *
*            Web Site URL:   http://www.simotime.com            *
*                  e-mail:   helpdesk@simotime.com              *
* ***************************************************************
*
//PUTPREFIX *
//PUTPREFIX * This Query will identify source members with a
//PUTPREFIX * member date greater than or equal to 20000101
//PUTPREFIX * the Source Code Data Base file (SLZSCDB1).
//PUTPREFIX *
*
//IF TYPE NE UNKNOWN
//IF MEMBERDATE GE 20000101
//PUT &<MEMBERNAME<&.&<TYPE<&,&<MEMBERDATE>&,&<MEMBERTIME>&
//END-IF
*
//PUTSUFFIX * A test for Member Date

The contents of the output file (SYSQRY2) is determined by the //PUT statement. The preceding query will create a comma separated value or CSV file that may be easily imported into an Excel spreadsheet.

Table of Contents Previous Section Next Section Flag Reset in Repository

When SIMOLYZE performs the source code analysis and determines the member type a flag is set to the "Y" condition. This flag is a field in the Source Code Repository file (APMASTER). This flag is not automatically reset by SIMOLYZE.

The following command file (SLZFLAG1.cmd) is provided as an example for determining which members have been flagged and how to reset the flag. There are eight flags available and SIMOLYZE only uses the first flag.

@ECHO OFF
echo **************************************************************
echo *           SLZFLAG1.cmd - a Windows Command File            *
echo *     This program is provided by SimoTime Technologies      *
echo *        (C) Copyright 1987-2018 All Rights Reserved         *
echo *          Web Site URL:   http://www.simotime.com           *
echo *                e-mail:   helpdesk@simotime.com             *
echo **************************************************************
echo * slzFlag1 is Starting, v04.04.14...
rem  *
echo * slzFlag1 set Specific Base Directory's variables
rem  *
     if "%1" == "" GOTO :ABEND01
     CALL %1
     echo * slzFlag1 SLZINPUT set to %SLZINPUT%
rem  *
rem  ******************************************************************************
echo * slzFlag1 Set environment variables for files. Do a Query to identify records
echo * slzFlag1 with Flag-01 ON. Create a specification file for the subsequent
echo * slzFlag1 updating process.
rem  *
     set APMASTER=%SLZADMIN%\APMASTER.DAT
     set SYSQRY1=c:\SimoLIBR\QRYFLAG1.QRY
     set SYSQRY2=%SLZADMIN%\SYSTEMP4.TXT
     run SimoLYZE QUERY
     if   ERRORLEVEL = 1 GOTO :ABEND02
rem  *
rem  ******************************************************************************
echo * slzFlag1 Reset FLAG-01, this step uses the SYSTEMP4.TXT file
echo * slzFlag1 created in the previous step.
rem  *
     set SLZUPD1=%SLZADMIN%\SYSTEMP4.TXT
     run SimoLYZE UPDATE
     if   ERRORLEVEL = 1 GOTO :ABEND03
     goto :EojAok
rem  *
rem  ******************************************************************************
:ABEND01
     echo * slzFlag1 Parameter 1 is usually SET4LYZ1 for this IVP.
     echo * slzFlag1 This is ABEND01 for slzFlag1 processing...
     goto :END
:ABEND02
     echo * slzFlag1 This is ABEND02 for slzFlag1 processing...
     goto :END
:ABEND03
     echo * slzFlag1 This is ABEND03 for slzFlag1 processing...
     goto :END
:EojAok
     echo * slzFlag1 Thank you for using SimoLYZE by SimoTime Enterprises
     echo * slzFlag1 is Finished...
:END

The following is the SYSQRY1 file referenced in the preceding command file.

* ***************************************************************
*            QRYFLAG1.qry - a SIMOLYZE Query Script             *
*        This script is provided by SimoTime Technologies       *
*          (C) Copyright 1987-2018 All Rights Reserved          *
*            Web Site URL:   http://www.simotime.com            *
*                  e-mail:   helpdesk@simotime.com              *
* ***************************************************************
*
//PUTPREFIX *
//PUTPREFIX * This Query will create a file that may be used by
//PUTPREFIX * the SimoLYZE UPDATE facility to reset Flag-01 in
//PUTPREFIX * the Source Code Data Base file (SLZSCDB1).
//PUTPREFIX *
*
//IF FLAG01 EQ Y
//PUT &<MEMBERNAME<& FLAG01(N)
//END-IF
*

Table of Contents Previous Section Next Section Callable API

The callable Application Programming Interface (API) is provided to determine the member type of a single member and may be called from a Micro Focus COBOL program using Mainframe Express (MFE) or Net Express. The following is an example of how a COBOL program (SLZ4TYPE.cbl) using a copy file (SLZSCAB1.cpy) would call the API for SIMOLYZE.

       IDENTIFICATION DIVISION.
       PROGRAM-ID.    SLZ4TYPE.
      *AUTHOR.        SIMOTIME TECHNOLOGIES
      *****************************************************************
      * Copyright (C) 1987-2023 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 MODULE SLZ4TYPE.CBL
      *
      *****************************************************************
      *
      * SLZ4TYPE - Call Source Code Analysis to do member typing.
      *
      * CALLING PROTOCOL
      * ----------------
      * Use standard Micro Focus procedure to RUN or ANIMATE.
      *
      * DESCRIPTION
      * -----------
      * This program will call the SLZSCA02 member to identify the
      * specified source member.
      *
      *****************************************************************
      *
      * MAINTENANCE
      * -----------
      * 1997/02/27 Simmons, Created program.
      * 1999/08/13 Simmons, Added SA-Return code checking.
      * 1999/08/13 Simmons, Updated Copyright and release information.
      *
      *****************************************************************
      *
       ENVIRONMENT DIVISION.
       DATA DIVISION.

       WORKING-STORAGE SECTION.
      *****************************************************************
      *    Data-structure for Title and Copyright...
      *    ------------------------------------------------------------
       01  SIM-TITLE.
           05  T1 pic X(11) value '* SLZ4TYPE '.
           05  T2 pic X(34) value 'Sample Program, Callable API      '.
           05  T3 pic X(10) value ' v23.01.01'.
           05  T4 pic X(24) value ' http://www.simotime.com'.
       01  SIM-COPYRIGHT.
           05  C1 pic X(11) value '* SLZ4TYPE '.
           05  C2 pic X(20) value 'Copyright 1987-2023 '.
           05  C3 pic X(28) value '   SimoTime Technologies    '.
           05  C4 pic X(20) value ' All Rights Reserved'.

      *****************************************************************

       COPY SLZSCAB1.

      *****************************************************************
       PROCEDURE DIVISION.

           perform Z-POST-COPYRIGHT.

           move  8                               to SA-RETURN
           move '1'                              to SA-REQUEST
           move 'SLZ4TYPE        '               to SA-MEMBER
           move 'C:\SLZLIB01\SLZINPUT\OBFDATR1'  to SA-FILE-NAME
           call 'SLZSCAC2' using SA-PASS-AREA

           perform DISPLAY-RESULTS

           display '* SLZ4TYPE, EOJ of SLZ4TYPE...' upon console.

           GOBACK.

      *****************************************************************
      *    The following routines are in alphabetic sequence...       *
      *****************************************************************
       DISPLAY-RESULTS.
           display '  Member Name:  ' SA-MEMBER    upon console
           display '  Language:     ' SA-LANGUAGE  upon console
           display '  Member Type:  ' SA-TYPE      upon console
           display '  Record Count: ' SA-RECORDS   upon console
           display '  EXEC CICS:    ' SA-EXEC-CICS upon console
           display '  EXEC SQL:     ' SA-EXEC-CICS upon console

           if  SA-RETURN not = 0
               display '  Return Status:' SA-RETURN    upon console
           end-if

           exit.

      *****************************************************************
      * The following Z-Routines perform administrative tasks         *
      * for this program.                                             *
      *****************************************************************

      *****************************************************************
       Z-POST-COPYRIGHT.
           display SIM-TITLE     upon console
           display SIM-COPYRIGHT upon console
           exit.

The copy file (SLZSCAB1.CPY) used in the preceding example contains the following statements.

      *****************************************************************
      *                SLZSCAB1 is a COBOL Copy File                  *
      *     Data Structure or Pass Area used for calling SLZSCA02.    *
      *         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       *
      *****************************************************************
      *
       01  SA-PASS-AREA.
           05  SA-REQUEST          PIC X.
           05  SA-RETURN           PIC 9(9)    COMP  VALUE 0.
           05  SA-MEMBER           PIC X(16).
           05  SA-FILE-NAME        PIC X(256).
           05  SA-LANGUAGE         PIC X(8).
           05  SA-TYPE             PIC X(8).
           05  SA-RECORDS          PIC 9(8)    VALUE 0.
           05  SA-BLANK-LINES      PIC 9(8)    VALUE 0.
           05  SA-COMMENTS         PIC 9(8)    VALUE 0.
           05  SA-LINES-OF-CODE    PIC 9(8)    VALUE 0.
           05  SA-EXEC-CICS        PIC 9(5)    VALUE 0.
           05  SA-EXEC-SQL         PIC 9(5)    VALUE 0.
           05  SA-EXEC-JCL         PIC 9(5)    VALUE 0.
           05  SA-DEPENDENCY-CODE  PIC 9(5)    VALUE 0.
           05  SA-DEPENDENCY-EXEC  PIC 9(5)    VALUE 0.
           05  SA-EMBEDDED-DATA    PIC 9(7)    VALUE 0.
           05  SA-ACCUMULATOR-01   PIC 9(7)    VALUE 0.
           05  SA-ACCUMULATOR-02   PIC 9(7)    VALUE 0.
           05  SA-ACCUMULATOR-03   PIC 9(7)    VALUE 0.
           05  SA-ACCUMULATOR-04   PIC 9(7)    VALUE 0.
           05  SA-ACCUMULATOR-05   PIC 9(7)    VALUE 0.
           05  SA-ACCUMULATOR-06   PIC 9(7)    VALUE 0.
           05  SA-ACCUMULATOR-07   PIC 9(7)    VALUE 0.
           05  SA-ACCUMULATOR-08   PIC 9(7)    VALUE 0.
           05  SA-APMASTER-HOSTNAME            PIC X(256).
      *
      ***  SLZSCAB1 - End-of-Copy File - - - - - - - - - - - SLZSCAB1 *
      *****************************************************************
      *

The source code for the preceding example is included with SIMOLYZE. The following shows the processing logic for the callable on demand member typing function.

                     
SLZ4TYPE
cobol
Callable API Example
   
SLZCONFG
 
 
SLZSCAC2
 
 
SLZSCAC3
   
   
SLZSYSC1
Determine member type
   
   
   
   
   
SLZPBUC1
   
   
EOJ
   
   
SLZMSGC1
 
 
SYSMSG1
This is End-of-Job
 
Overview Flowchart for the Callable API for SIMOLYZE

Note: The SLZCONFG file is required. The analysis programs use the name SLZCONFG without a file extension. To use a file with a different name an environment variable must be used or a file error message (0035) will occur with the return code set to 12. The following set statement would map the SLZCONFG file to a MYFILE.CFG.

set SLZCONFG=MYFILE.CFG

Table of Contents Previous Section Next Section Capabilities & Considerations

SIMOLYZE incorporates a concept known as "Judgmental Programming" or "Fuzzy Logic". In other words, SIMOLYZE makes a best effort to determine the source member language and type. For example, a member that contains syntax for the COBOL language may be a COBOL program or a COBOL copy file (i.e. member type).

If SIMOLYZE cannot determine a member type it will categorize the member as unknown. SIMOLYZE provides a very high level of accuracy when analyzing the following source members and with little or no changes to the configuration file parameters a 100% accuracy can be obtained.

1 COBOL and Copy Files
2 Assembler (Mainframe), Copy Files and Macro Files
3 JCL, Procedures and Includes
4 BMS
5 MFS
6 DBD
7 PSB
  Source Member Types Identified by SIMOLYZE

The following sections will describe the capabilities and limitations in more detail.

Table of Contents Previous Section Next Section Assembler (Mainframe) Analysis

SIMOLYZE provides support for scanning and identifying source member content as being the 370 Assembler language. Once the language is determined the member is then typed as a program, a copy file or a macro file. The un-typed member (a filename without extension) is copied to a predefined directory with the extension MLC for programs, CPY for copy files and MAC for macro files. In a few cases where unique macro files are heavily used it may be necessary to pre-identify these macro files in the configuration file to obtain the desired results.

Table of Contents Previous Section Next Section COBOL Analysis and Support

SIMOLYZE provides support for scanning and identifying source member content as being the COBOL language. Once the language is determined the member is then typed as a program or a copy file. The un-typed member (a filename without extension) is copied to a predefined directory with the extension CBL for programs and CPY for copy files. In a few cases where unique copy files are heavily used it may be necessary to pre-identify these copy files in the configuration file to obtain the desired results.

Table of Contents Previous Section Next Section JCL Analysis and Support

SIMOLYZE provides support for scanning and identifying source member content as being the JCL language. Once the language is determined the member is then typed as a mainframe job, a procedure file or an include file. The un-typed member (a filename without extension) is copied to a predefined directory with the extension JCL for jobs, PRC for procedure files and INC for include files. The default parameters in the configuration file usually provide the desired results without modifications.

Table of Contents Previous Section Next Section BMS Analysis and Support

SIMOLYZE provides support for scanning and identifying source members as being 370 Assembler language and BMS (Basic Mapping Support for CICS) source member types. The un-typed member (a filename without extension) is copied to a predefined directory with the extension BMS. The default parameters in the configuration file usually provide the desired results without modifications.

Table of Contents Previous Section Next Section MFS Analysis and Support

SIMOLYZE provides support for scanning and identifying source members as being 370 Assembler language and MFS (Message Format Services for IMS) source member types. The un-typed member (a filename without extension) is copied to a predefined directory with the extension MFS. The default parameters in the configuration file usually provide the desired results without modifications.

Table of Contents Previous Section Next Section DBD Analysis and Support

SIMOLYZE provides support for scanning and identifying source members as being 370 Assembler language and MFS (Message Format Services for IMS)(a filename without extension) is copied to a predefined directory with the extension MFS. The default parameters in the configuration file usually provide the desired results without modifications.

Table of Contents Previous Section Next Section PSB Analysis and Support

SIMOLYZE provides support for scanning and identifying source members as being 370 Assembler language and PSB (Program Specification Block for IMS) source member types. The un-typed member (a filename without extension) is copied to a predefined directory with the extension PSB. The default parameters in the configuration file usually provide the desired results without modifications.

Table of Contents Previous Section Next Section Easytrieve

SIMOLYZE provides support for scanning and identifying source members as being Easytrieve Programs or Macro Files. The un-typed members (a filename without an extension) are copied to a predefined directory. After the analysis the Easytrieve Members are copied to a predefined directory with the extensions EZP or EZM. The default parameters in the configuration file will not enable this capability. This capability is provided as a Controlled Release Option.

Table of Contents Previous Section Next Section Other Considerations and Limitations

This section describes additional items that need to be considered and/or anticipated.

Table of Contents Previous Section Next Section Processing Time and Log Files

WIP

Table of Contents Previous Section Next Section JCL with Embedded COBOL Source Code

The technique of placing JCL at the beginning and ending of a source member is a technique sometimes used by mainframe programmers. This is not a wide spread technique especially when a source code management system is used. This technique can cause additional problems when downloaded to a Windows System since the technique for compiling a program on a Windows System is different than the mainframe.

Table of Contents Previous Section Next Section Duplicate Source Member Names

The situation exists for duplicate names if members are downloaded from more than one Partitioned Data Set (PDS). For example, the filename.BMS and the generated filename.CPY need to be kept separate. Another situation where duplicate names may occur is if the JCL has the same name as the program name. These members would be in separate PDS's on the mainframe and would need to be kept in separate directories on the Windows System.

Table of Contents Previous Section Next Section The Configuration File

The configuration file is used to set parameters that determine the way functions are performed when running SIMOLYZE.

The following statements will be used by the SLZMON01 monitoring program.
SLZMONC1 ENABLE   Enable SimoLYZE
SLZMONC1 MSGLEVEL 0 Display minimum information
SLZMONC1 ANALYZE    
SLZMONC1 VSAMKEY TYPE1 USE PC FILE NAME AND EXTENSION
    TYPE2 USE MEMBER NAME AND MEMBER TYPE
    TYPE3 USE MEMBER NAME
SLZMONC1 MISMATCH YES  
SLZMONC1 FILEDATE YES Store member date in data base
The following statements will be used by the SLZCPY01 copy program.
SLZCPYC1 DOLOG   Write the LOG file of ADDs and UPDates
SLZCPYC1 NOLOG   Do not write the LOG file of ADDs and UPDates
SLZCPYC1 MSGLEVEL 0 Display minimum information
The following statements will be used by the SLZIMP01 import program.
SLZIMPC1 MSGLEVEL 0 Display minimum information
The following statements will be used by the SLZSYS01 program which performs the system function which actually reads the configuration file.
SLZSYSC1 MSGLEVEL 0 Display minimum information
The following statements will be used by the APHTMLC1 program which performs the HTML function.
APHTMLC1 DETAIL
NODETAIL
  Include record detail or
Do not include the record detail information
APHTMLC1 SUMMARY
NOSUMMARY
  Include summary information or
Do not include the summary information
The following statements will be used by the APLCSVC1 program which performs the CSV File function.
APLCSVC1 DETAIL
NODETAIL
  Include record detail or
Do not include the record detail information
APLCSVC1 SUMMARY
NOSUMMARY
  Include summary information or
Do not include the summary information
The following statements will be used by the APLISTC1 program which performs the Listing function.
APLISTC1 DETAIL
NODETAIL
  Include record detail or
Do not include the record detail information
APLISTC1 SUMMARY
NOSUMMARY
  Include summary information or
Do not include the summary information
APLISTC1 EZTRIEVE Y Y/N, Y will enable the EZTRIEVE list function.
Note: this function is provided as a Controlled Release Option.
The following statements will be used by the SLZMSG01 program which is called by other programs to display and/or log a message.
SLZMSGC1 TRUNCATE
NOTRUNCATE
  Only display 1st 80 characters or
Display multiple lines if greater than 80 characters
The following statements will be used by the SLZQRY01 program which performs the QUERY function.
SLZQRYC1 MSGLEVEL 0 Display minimum information
SLZQRYC1 WILDCARD * Allow wild carding, use asterisk
SLZQRYC1 DOENVARS   Do paired percent substitution
SLZQRYC1 USERDATE YES Read SYSQRY3 for USERDATE/USERTIME
The following statements will be used by the SLZSCA01, 02 and 03 programs which do the Source Code Analysis.
SLZSCAC1 MSGLEVEL 0 Display minimum information. Note: a MSGLEVEL that is greater than 1 will enable the logging function.
SLZSCAC2 COPYFILE //ON
//ON  Enable the COPYFILE function, write to COPYXREF file.
//OFF  Disable the COPYFILE function, do not write to COPYXREF file.
SLZSCAC2 COPYXREF EXTEND
EXTEND  Extend an existing COPYXREF file.
REPLACE  Create new or replace existing COPYXREF file.
SLZSCAC2 MSGLEVEL 0 Display minimum information. Note: a MSGLEVEL that is greater than 1 will enable the logging function.
SLZSCAC2 MINRECS 4 Minimum number of records for analysis
SLZSCAC2 MACRO filename Define a filename as a 370 Macro. A maximum of twenty-five (25) statements is allowed.
SLZSCAC2 CBLCOPY1 filename Define a filename as a COBOL copy file. A maximum of twenty-five (25) statements is allowed.
SLZSCAC2 MIN4ALL 5 Minimum percentage required for language typing
SLZSCAC2 MIN4ASM 10 Minimum percentage required for language typing
SLZSCAC2 MIN4CBL 10 Minimum percentage required for language typing
SLZSCAC2 MIN4JCL 5 Minimum percentage required for language typing
SLZSCAC2 JCLTYPE PROCPEND PROCPEND is the default, a PEND statement is required for PRC,
PROCONLY requires a PROC statement without a JOB Card.
SLZSCAC2 SQLLANG UNK Member Language override if member contains SQL Systax. Should be CBL for the COBOL environment.
SLZSCAC2 SQLTYPE UNK Reserved for future use.
SLZSCAC2 EZTRIEVE Y Y/N, Y will enable the EZTRIEVE analysis.
Note: this function is provided as a Controlled Release Option.
The following statements will be used by the SLZUPD01 program which is perform which performs the mainline functions.
SLZUPDC1 MSGLEVEL 0 Display minimum information during the UPDATE function. Values may be from 0-6. More information will be displayed for the higher values.
SLZUPDC1 COPYRIGHT OFF Do not display Copyright Information

Table of Contents Previous Section Next Section Application Asset Tracking

The Source Code Repository (APMASTB1.cpy) file contains information about the source members. For each member there is a record in APMASTER.

      *****************************************************************
      *                APMASTB1 is a COBOL Copy File                  *
      *    Copy File for SIMOLYZE Application Properties Repository   *
      *      This is a VSAM Keyed Sequence Data Structure (KSDS)      *
      *              or a Micro Focus Keyed-Index File.               *
      *         Copyright (C) 1987-2023 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       *
      *****************************************************************
      *
       01  APMASTER-RECORD.
           05  APMASTER-KEY.
               10  APMASTER-KEY-16             PIC X(16).
               10  APMASTER-RECORD-ID          PIC 9(2).
           05  APMASTER-DATA.
               10  APMASTER-RECORD-STATUS      PIC X.
               10  APMASTER-LAST-ACTIVITY-DATE PIC X(8).
               10  APMASTER-LAST-ACTIVITY-TIME PIC X(8).
               10  APMASTER-MEMBER-DATE        PIC X(8).
               10  APMASTER-MEMBER-TIME        PIC X(8).
               10  APMASTER-LANGUAGE           PIC X(8).
               10  APMASTER-LANGUAGE-USER      PIC X(8).
               10  APMASTER-LANGUAGE-MFA       PIC X(8).
               10  APMASTER-TYPE               PIC X(8).
               10  APMASTER-TYPE-USER          PIC X(8).
               10  APMASTER-TYPE-MFA           PIC X(8).
               10  APMASTER-CICS               PIC X.
               10  APMASTER-CICS-USER          PIC X.
               10  APMASTER-CICS-MFA           PIC X.
               10  APMASTER-SQL                PIC X.
               10  APMASTER-SQL-USER           PIC X.
               10  APMASTER-SQL-MFA            PIC X.
               10  APMASTER-FLAGS.
                   15  APMASTER-FLAG-01        PIC X.
                   15  APMASTER-FLAG-02        PIC X.
                   15  APMASTER-FLAG-03        PIC X.
                   15  APMASTER-FLAG-04        PIC X.
                   15  APMASTER-FLAG-05        PIC X.
                   15  APMASTER-FLAG-06        PIC X.
                   15  APMASTER-FLAG-07        PIC X.
                   15  APMASTER-FLAG-08        PIC X.
               10  APMASTER-FLAGS-USER.
                   15  APMASTER-FLAG-U1        PIC X.
                   15  APMASTER-FLAG-U2        PIC X.
                   15  APMASTER-FLAG-U3        PIC X.
                   15  APMASTER-FLAG-U4        PIC X.
                   15  APMASTER-FLAG-U5        PIC X.
                   15  APMASTER-FLAG-U6        PIC X.
                   15  APMASTER-FLAG-U7        PIC X.
                   15  APMASTER-FLAG-U8        PIC X.
               10  APMASTER-RECORDS            PIC 9(8).
               10  APMASTER-BLANK-LINES        PIC 9(8).
               10  APMASTER-COMMENTS           PIC 9(8).
               10  APMASTER-LINES-OF-CODE      PIC 9(8).
               10  APMASTER-LA-DATE            PIC X(8).
               10  APMASTER-LA-TIME            PIC X(8).
               10  APMASTER-LA-TOKEN           PIC 9(3).
               10  APMASTER-DEPENDENCY-CODE    PIC 9(5).
               10  APMASTER-DEPENDENCY-EXEC    PIC 9(5).
               10  APMASTER-FILLER-00          PIC X(090).
               10  APMASTER-MVS-MEMBER-NAME    PIC X(016).
               10  APMASTER-PCNAME             PIC X(256).
               10  APMASTER-MAKEACTION         PIC X(224).
               10  APMASTER-HOSTNAME           PIC X(256).
      *
      ***  APMASTB1 - End-of-Copy File - - - - - - - - - - - APMASTB1 *
      *****************************************************************
      *

The following link provides additional information about the record structure.

Link to Internet   Link to Server   Explore additional information about the record structure for the Application Repository (APMASTER.DAT).

Table of Contents Previous Section Next Section Non-Relational Data Structures

A subset of moving, migrating and managing the application assets (i.e. source code and program control specification) is the data file management involved when moving, sharing and possibly converting and comparing data files. The data file management is beyond the scope of this document.

For information about data file management in a diverse or mixed systems environment refer to the  Series of White Papers  for non-relational data files.

Table of Contents Previous Section Next Section Questions and Answers

This section is always a Work-in-Progress effort.

Date Question/Answer
2001/01/15 I have an assembler program that creates a table and it is not being identified as an assembler program. It does not have assembler instruction code and uses a user written macro (TABLEX) a number of times to expand into table entries. Is it possible for SimoLYZE to correctly identifiy this member?
Yes, it is possible. Refer to "The Configuration File" section and notice the SLZSCAC2 group. The MACRO keyword is specifically provided to allow for the definition of a maximum of 25 user macro files. If TABLEX is defined as a user macro then SIMOLYZE will interpret TABLEX as a 370 macro and this would result in the member being identified as an assembler member.
2001/03/17 I want to extract information from the Source Code Repository into a CSV file that will be used to import data into an Excel spreadsheet or a relational data base. How can I do this?
It is possible to have the SIMOLYZE Query function create a CSV file. This is described in the Source Code Repository Extract to CSV File section of the documentation.
2001/03/17 I want to identify source members that have been updated based a date value. How can I do this?
The IVP4LYZ3.CMD that is included as part of the Installation Verification Procedures has an example of how to do this using the SIMOLYZE query function.
Questions and Answers for SIMOLYZE

Table of Contents Previous Section Next Section Summary

The purpose of SIMOLYZE is to do member typing and provide an overview of the number of members by member type. It is not intended to do application analysis or modification. Both Mainframe Express and Revolve (from Micro Focus) deliver a tremendous amount of analytical and programming power for the analysis, development, maintenance and deployment of business applications.

This document may be used to assist 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.

Table of Contents Previous Section Next Section 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.

Table of Contents Previous Section Next Section Downloads and Links

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.

Table of Contents Previous Section Next Section Current Server or Internet Access

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 Link to Internet 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 Link to Server icon.

Link to Internet   Link to Server   Explore An Enterprise System Model that describes and demonstrates how Applications that were running on a Mainframe System and non-relational data that was located on the Mainframe System were copied and deployed in a Microsoft Windows environment with Micro Focus Enterprise Server.

Link to Internet   Link to Server   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.

Link to Internet   Link to Server   Explore The File Status Return Codes that are used to interpret the results of accessing VSAM data sets and/or QSAM files.

Table of Contents Previous Section Next Section Internet Access Required

The following links will require an internet connection.

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

Additional information about acquiring this softare may be obtained from the  Product Availability and Pricing  document.

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.

Note: You must be attached to the Internet to download a Z-Pack or view the list.

Table of Contents Previous Section Next Section Glossary of Terms

Link to Internet   Link to Server   Explore the Glossary of Terms for a list of terms and definitions used in this suite of documents and white papers.

Table of Contents Previous Section Next Section Comments or Feedback

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.

Table of Contents Previous Section Next Section Company Overview

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
Scan Source Code, Member Analysis and Categorization
Copyright © 1987-2024
SimoTime Technologies and Services
All Rights Reserved
When technology complements business
http://www.simotime.com