Working With Java
Packages containing Java components in zFS files must follow the standard ChangeMan ZMF package life cycle. However, some of the processes in that life cycle are different for Java components.
Java Build Processing
ChangeMan ZMF build processing requires a like-source library type for input and a likeload library type for output. When you are working with Java applications in ZMF, the likesource component may not actually be program source code, and the like-load output is an executable that is not a load module.
All files, including build listings, are zFS files.
Compile Java Source
This build process transforms Java source into a class file.
Components
| Input / Output | Description | Like-Type | Extension | Library Type Example | 
|---|---|---|---|---|
| Input | Java source | S | .java | JAV | 
| Output | Java class file | L | .class | JCF | 
| Output | zFS build listing | P | .list | LSH | 
Process
- 
Language: JAVA 
- 
Procedure: CMNJAVA 
Stage and recompile panels allow mixed case data in the COMPILE PARMS field when the LANGUAGE field is JAVA. Skeletons pass COMPILE PARMS options to the javac compiler, and COMPILE PARMS options are stored in component history for use in subsequent builds for the component.
Caution
The ChangeMan ZMF Java build process requires option -verbose, which is hard coded in build skeletons (delivered CMN$$JVA). If this option is nullified by an entry in the COMPILER OPTION field, the component build will fail.
Build Java Archive
This build process follows instructions in a file of JAR control statements to create a JAR file.
Components
| Input / Output | Description | Like-Type | Extension | Library Type Example | 
|---|---|---|---|---|
| Input | JAR control statements | S | JCT | |
| Output | Java archive (JAR) | L | .jar | JAR | 
| Output | zFS build listing | P | .list | LSH | 
Process
- 
Language: JAVA 
- 
Procedure: CMNJAR 
JAR Control Statements
This table describes JAR control statements.
| Keyword | Description | 
|---|---|
| * | Comment Syntax: *in position 1Comment records are read and printed in the CMNPRINT data set, but content is ignored by JAR build processing. | 
| jarname | Specifies the file name of the output JAR file that is written to the package staging library for the target JAR library type. Syntax: jarname=filename | 
| - filename: The output JAR name with extension. The JAR name may include a fragment of a path name. | |
| The filename string cannot exceed the maximum for the file system in use (255 characters in the current file systems). | |
| jarpath | Specifies a ZMF library type to be included in the JAR file. Files are copied from application baseline libraries and package staging libraries for the library type. Files in subdirectories are copied. Syntax: jarpath=libtyp,qualifier libtype: Three character library type. (Required, upper case.) qualifier: Fragment of a path name that acts as a filter to limit the scope of the copy to a subset of the files in the library type. (Optional, case sensitive.) | 
| jardir | Specifies a ZMF library type to be included in the JAR file. Files are copied from application baseline libraries and package staging libraries for the library type. Files in subdirectories are NOT copied. Syntax: jardir =libtyp,qualifier (Note the space before =.) libtype: Three character library type. (Required, upper case.) qualfier: Fragment of a path name that acts as a filter to limit the scope of the copy to a subset of the files in the library type. (Optional, case sensitive.) | 
| jarfile | Specifies a ZMF library type and the name of a file to be included in the JAR file. The file is copied from application baseline libraries and package staging libraries for the library type. Syntax: jarfile=libtype,filename libtype: Three character library type. (Required, upper case.) filename: File name with extension, including full path name after baseline or staging library name. (Required, case sensitive.) If filename is omitted, no file is copied and no error is reported. | 
JAR Control Examples
In the examples that follow, these are the contents of application baseline and package staging libraries for library type HTH.
...
Baseline library:
/hthbaseline/
/hthbaseline/dir_1/adapter/file_x.html
/hthbaseline/dir_1/adapter/dir_2/file_x.html
/hthbaseline/dir_1/filter/file_x.html
/hthbaseline/dir_1/input/file_x.html
Staging library:
/stagingmodel/HTH
/stagingmodel/HTH/dir_1/adapter/file_x.html
/stagingmodel/HTH/dir_1/adapter/dir_2/file_x.html
Example 1:
jarpath=HTH
Included files:
/stagingmodel/HTH/dir_1/adapter/file_x.html
/stagingmodel/HTH/dir_1/adapter/dir_2/file_x.html
/hthbaseline/dir_1/filter/file_x.html
/hthbaseline/dir_1/input/file_x.html
Example 2:
jarpath=HTH,dir_1/adapter
Included files:
/stagingmodel/HTH/dir_1/adapter/file_x.html
/stagingmodel/HTH/dir_1/adapter/dir_2/file_x.html
Example 3:
jardir =HTH
Included files:
/hthbaseline/dir_1/adapter/file_x.html
/hthbaseline/dir_1/adapter/dir_2/file_x.html
/hthbaseline/dir_1/filter/file_x.html
/hthbaseline/dir_1/input/file_x.html
Example 4:
jardir =HTH,dir_1/adapter
Included files:
/stagingmodel/HTH/dir_1/adapter/file_x.html
Note
When a qualifier is specified for keyword jardir, files in subdirectories are excluded.
Build Web Archive
This build process follows instructions in a file of WAR control statements to create a WAR file.
Components
| Input / Output | Description | Like-Type | Extension | Library Type Example | 
|---|---|---|---|---|
| Input | WAR control statements | S | WCT | |
| Output | Java Web archive (WAR) | L | .war | WAR | 
| Output | zFS build listing | P | .list | LSH | 
Process
- 
Language: JAVA 
- 
Procedure: CMNJAR 
WAR Control Statements
The control statements used to build a WAR file are the same as those used to build a JAR file. See "JAR Control Statements" on page 41.
Impact Analysis for Java
The only Impact Analysis relationships recorded for Java are for components included in JAR files, like static subroutines in composite executables.
Use the SUBROUTINE relationship on the Impact Analysis Of Subordinate Components panel and the Component Bill Of Materials panel.
Package Audit for Java
Package audit detects source-to-load inconsistencies and out-of-date issues in Java components like it does for non-Java components. There is no source-to-copy relationship in Java, and the only subroutine-to-composite relationship is between a Java archive (JAR) and its elements. Unlike MVS subroutines in composite loads, JAR elements may be any like-type.
Long names for Java components require a different package audit report format than is used for non-Java components. However, the conditions checked are similar to the conditions checked for PDS components, and the report contents are similar.
Package Out-of-Sync Conditions for Java
The following table lists the out-of-sync conditions that are analyzed for Java components. For more information, see Chapter 11 "Auditing a Package" in the ChangeMan ZMF User’s Guide.
| Out-of-Sync Condition* | Description | RC | 
|---|---|---|
| SYNCH0! | Package Master contains no record of this component. | 0 | 
| SYNCH1! | Audit is unable to extract component statistics from the file system to perform one or more of the other SYNCH checks. | 0 | 
| SYNCH2! | Like-source component was compiled without using the designated compile procedure and options. | 12 | 
| SYNCH6! | Component in a staging library has no corresponding Component Activity File member in the package. | 12 | 
| SYNCH7! | Element in a Java archive in a staging library was changed more recently than the Java archive in a staging library in the same package. | 12 | 
| SYNCH8! | Element in a Java archive in a staging library was changed more recently than the Java archive in the baseline library. | 8 | 
| SYNCH9! | Like-load component in a staging library does not match the corresponding like-source component in the package. | 12 | 
| SYNCH10! | Component in the baseline library has changed since the component was checked out to a package staging library. | 12 | 
| SYNCH11! | Component in a staging library was changed without using ChangeMan ZMF. | 12 | 
| SYNCH12! | Component was copied into a staging library without using ChangeMan ZMF, or it is left over from a stage job that abended. | 12 | 
| SYNCH14! | Package component is not in Active status. | 12 | 
| SYNCH19! | A package master record points to a package component that is not in the staging library. | 12 | 
| SYNCH20! | Element in a Java archive in a staging library has a SETSSI that does not match the SETSSI of the version of the element that audit expects would be obtained by the Java archive build from your package staging libraries (or eligible participating package) or from baselines (first found location). | 8 | 
Package Audit Report for Java Components
The package audit report for Java components has divisions similar to the package audit report for MVS components:
- 
Stand alone errors reported against package contents 
- 
Relationship errors between header files and source 
- 
Relationship errors between subroutines and composite executables 
- 
Relationship errors between archives and included components 
Each division is divided into sections relating to a common BUN. Heading information is similar to that provided in the non-zFS audit report.
The sample package audit report below validates package ACTP000062 that contains the following components.
CMNSTG01              STAGE: ACTP000062 Components            Row 1 to 4 of 4
Command ===>                                                 Scroll ===> CSR
  Name            + Type  Status  Changed          Procname   User     Request
  java040.java      JVS   ACTIVE  20150324 190145  CMNJAVA    USER015
  java050.java      JVS   ACTIVE  20150324 190230  CMNJAVA    USER015
  java060.java      JVS   ACTIVE  20150324 190306  CMNJAVA    USER015
  java070.java      JVS   ACTIVE  20150324 190345  CMNJAVA    USER015
******************************* Bottom of data ********************************
This is how each component was processed to produce the out-of-sync conditions shown in the sample audit report:
| Component | Processing | 
|---|---|
| java40.java | Checkout, edit, and stage. | 
| java50.java | Checkout and stage without changes. | 
| java60.java | Checkout, stage without changes, then baseline from another package. | 
| java70.java | Stage from development. | 
This is the audit report for the package.
...
ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY MARCH 24, 2015 (2015/083) 20:44:26        Page 1
        *************************************************************************************************
        *Simple Change Package     ===> ACTP000062 Created 2015/03/24 at 18:53:15 by USER015            *
        *Package Installation Date ===> 2015/06/30        Package Status: DEV                           *
        *Component Analysis Type   ===> zFS component list including non-relational errors.             *
        *Library Appl:Libtype      ===> ACTP:LSH ACTR:LSH                                               *
        *************************************************************************************************
        Component Name                      Error     From     Timestamp            Package      User
        ________________________________    ________  _____    ___________________  __________   ________
        java040.JVS.list                              Stage    2015/03/24 19:01:47  ACTP000062   USER015
                                                      Base                          ACTP000061   USER015
        java050.JVS.list                              Stage    2015/03/24 19:02:32  ACTP000062   USER015
                                                      Base                          ACTP000061   USER015
        java060.JVS.list                              Stage    2015/03/24 19:03:07  ACTP000062   USER015
                                                      Base                          ACTP000063   USER015
        java070.JVS.list                              Stage    2015/03/24 19:03:47  ACTP000062   USER015
                                                      Base                          ACTP000061   USER015
 ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY MARCH 24, 2015 (2015/083) 20:44:26 Page 2
        *************************************************************************************************
        *Simple Change Package     ===> ACTP000062 Created 2015/03/24 at 18:53:15 by USER015            *
        *Package Installation Date ===> 2015/06/30 Package Status: DEV                                  *
        *Component Analysis Type   ===> zFS component list including non-relational errors.             *
        *Library Appl:Libtype      ===> ACTP:JVL ACTR:JVL                                               *
        *************************************************************************************************
         Component Name                   Error    From  Timestamp           Package    User
         ________________________________ ________ _____ ___________________ __________ ________
         java040.class                             Stage 2015/03/24 19:01:44 ACTP000062 USER015
                                                   Base                      ACTP000061 USER015
         java050.class                             Stage 2015/03/24 19:02:29 ACTP000062 USER015
                                                   Base                      ACTP000061 USER015
         java060.class                             Stage 2015/03/24 19:03:04 ACTP000062 USER015
                                                   Base                      ACTP000063 USER015
         java070.class                             Stage 2015/03/24 19:03:44 ACTP000062 USER015
                                                   Base                      ACTP000061 USER015
 ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY MARCH 24, 2015 (2015/083) 20:44:26 Page 3
        *************************************************************************************************
        *Simple Change Package     ===> ACTP000062 Created 2015/03/24 at 18:53:15 by USER015            *
        *Package Installation Date ===> 2015/06/30 Package Status: DEV                                  *
        *Component Analysis Type   ===> zFS component list including non-relational errors.             *
        *Library Appl:Libtype      ===> ACTP:JVS ACTR:JVS                                               *
        ************************************************************************************************* 
...
         Component Name                   Error    From  Timestamp           Package    User
         ________________________________ ________ _____ ___________________ __________ ________
         java040.java                              Stage 2015/03/24 19:00:15 ACTP000062 USER015
                                                   Base  2015/03/24 18:07:24 ACTP000061 USER015
         java050.java                     DUPLIC!  Stage 2015/03/24 18:58:11 ACTP000062 USER015
                                                   Base  2015/03/24 18:07:24 ACTP000061 USER015
         java060.java                     SYNCH10! Stage 2015/03/24 18:58:15 ACTP000062 USER015
                                                   Base  2015/03/24 20:43:06 ACTP000063 USER015
         java070.java                              Stage 2015/03/24 19:02:25 ACTP000062 USER015
                                                   Base  2015/03/24 18:07:24 ACTP000061 USER015
 ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY MARCH 24, 2015 (2015/083) 20:44:26 Page 4
                                    Legend and Summary Report
The local level of audit chosen at this point; 4
  4 - Audit is required and the return code must not exceed 4 which implies
      that there are no "out-of-synch" situations within the staging libraries
      nor the baseline libraries but at least one module of a staging library
      is a "duplicate" of its baseline counterpart
Out-of-synch messages (hint - search for "!" marks)
 DUPLIC! (Staging duplicates baseline)        ===> 1
 SYNCH0! (Not in scope of audit or unknown)   ===> 0
 SYNCH1! (Cmpnt statistics not available)     ===> 0
 SYNCH2! (Compile/designated proc differ)     ===> 0
 SYNCH3! (Unparsable load module)             ===> 0
 SYNCH4! (cpy/hdr staging problem)            ===> 0
 SYNCH5! (cpy/hdr baseline problem)           ===> 0
 SYNCH6! (Activity file not checked out)      ===> 0
 SYNCH7! (Static subcomponent stage problem)   ==> 0
 SYNCH8! (Static subcomponent base problem)   ===> 0
 SYNCH9! (Source and load discrepancy)        ===> 0
 SYNCH10! (Version regression problem)        ===> 1
 SYNCH11! (Component hash discrepancy)        ===> 0
 SYNCH12! (Orphan module in staging)          ===> 0
 SYNCH13! (Baseline/staging discrepancy)      ===> 0
 SYNCH14! (Components not in active status)   ===> 0
 SYNCH15! (Source to relationship problem)    ===> 0
 SYNCH16! (CPY low-date problem in baseline)  ===> 0
 SYNCH17! (CPY deleted problem in staging)    ===> 0
 SYNCH18! (LOD deleted problem in staging)    ===> 0
 SYNCH19! (Missing module in staging)         ===> 0
 SYNCH20! (Inconsistent subroutine)           ===> 0
 SYNCH21! (Scr/rename pkg component)          ===> 0
 SYNCH22! (Scratch subcmpnt is in use)        ===> 0
 SYNCH23! (Rename subcmpnt is in use)         ===> 0
Highest return code encountered               ===> 12
CMN3060A - This package has failed the audit.
CMN2696I - PACKAGE ACTP000062 FAILED THE AUDIT WITH A RETURN CODE OF 12.
                            Recommendation Summary Report
 Listed below are some solutions to resolving out of synch situations
  that can be flagged within this audit report.
    DUPLIC! (Staging duplicates baseline)
      Delete component from staging or change contents of staging component.
      For package in BAS status, indicates no changes in baseline since pkg installed - no action required.
    SYNCH10! (Version regression problem)
      Copy staging member to development library.
      Checkout member again from the baseline library.
      Resolve version regression.
      Stage member.
CMN7540I - End of job; RC = 12
******************************** BOTTOM OF DATA ***************************************************************************                                                  
ERO Audit for Java
Like package audit, ERO release audit detects source-to-load inconsistencies and out-ofdate issues in Java components like it does for non-Java components. There is no sourceto-copybook relationship in Java, and the only subroutine-to-composite relationship is between a Java archive (JAR) and its elements. Unlike MVS subroutines in composite loads, JAR elements may be any like-type.
ERO audit analyzes components across release areas and prior releases.
Release Audit Error Numbers for Java
These ERO audit error codes are applicable to JAR components and can be detected by the current ERO release audit.
| Error Numbers | Description | 
|---|---|
| 100 | Identical components | 
| 312 | Eligible baseline archive element not used by archive | 
| 315 | Baseline archive element has a more recent date than archive | 
| 318 | Archive element has a more recent date than archive in baseline | 
| 332 | Baseline source is later than archive | 
| 382 | Archive element is not included by baseline archive | 
| 401 | Archive element has more recent date than archive | 
| 404 | Source has a more recent date than archive | 
| 411 | Designated compile procedure not used | 
| 413 | Archive element deleted | 
| 416 | Activity file not checked out | 
| 417 | Version regression | 
| 421 | Archive element not included in composite archive | 
For more information, see topic "Release Audit Error Numbers" Chapter 10 "Auditing Release Areas" in the ChangeMan ZMF ERO Getting Started Guide.
Known Exception in JAR Relationships
Build procedure CMNJAR includes SYSLIB-type processing to make Java components available for inclusion in a JAR file. However, JAR elements drawn from dependent release areas are not currently being registered in package master subroutine-to-composite relationship records.
Therefore, these audit errors are applicable to JAR components but are not currently detected for and JAR files and JAR elements in dependent release areas.
| Error Numbers | Description | 
|---|---|
| 310 | Eligible dependent area archive element not used by archive | 
| 311 | Eligible prior release archive element not used by archive | 
| 313 | Dependent area archive element has a more recent date than archive | 
| 314 | Prior release archive element has a more recent date than archive | 
| 316 | Archive element has a more recent date than archive in dependent area | 
| 317 | Archive element has a more recent date than archive in prior rls | 
| 330 | Dependent area source is later than archive | 
| 331 | Prior release source is later than executable | 
| 380 | Archive element is not included by dependent area archive | 
| 381 | Archive element is not included by prior release archive | 
...
ERO Audit Report for Java Components
This section shows an example of an ERO audit report displaying Java components and relationships.
- 
Long component names extend across the page, on two lines if necessary. 
- 
Component statistics are shows below the long name line(s). 
- 
JAR files (composite components) are identified by >> in the left margin. 
- 
JAR elements (with no >> ) are listed below the JAR name and statistics. 
...
Change Man Release Audit Report        Wednesday May       04,2011       (2011/124) 09:53:49                PAGE: 13
           ***************************(Release Area Processing - zFS Components)***************************
           *Release Identifier ===> SDZFS001 Created: 20100528 Release Install Date ===> 20100528         *
           *Area Identifier ===> UNIT Area Status ===> UNBLOCKED                                          *
           *Subcomponent relationships to libtype-(JAR)                                                   *
           *****************************************************************************************************************************
...
 *-------------- P r e v i o u s V e r s i o n --------------* *---------------- A r e a L i b r a r y ------------
 ************************************************************** ******************************************************
 >>Component Name -> Subordinate Name
          Timestamp       Size     Area   Release             Libtype Appl/Pkg#      Timestamp         Size
    ___________________ _________ _______ _______             _______ __________ ___________________ _________
 >>org/jdom/xpath/enh177473jarnew01.jar
                                                                JAR    STEV000138  2010-05-28 03.22.02  7364
     org/jdom/adapters/package.html
      2010-03-30 07.22.00   193                        ERR0312! HTH
     org/jdom/adapters/AbstractDOMAdapter.class
      2010-03-26 04.02.22   434                        ERR0312! JCF
     org/jdom/filter/package.html
      2010-03-30 07.22.13   365                        ERR0312! HTH
     org/jdom/input/package.html
      2010-03-30 07.22.23   432                        ERR0312! HTH
     org/jdom/output/package.html
      2010-03-30 07.22.31   610                        ERR0312! HTH
     org/jdom/package.html
      2010-03-30 07.22.41   524                        ERR0312! HTH
     org/jdom/transform/package.html
      2010-03-30 07.22.49   282                        ERR0312! HTH
     org/jdom/xpath/enh177473hthnew01.hth
                                                       ERR0413! HTH
     org/jdom/xpath/enh177473hth01.hth
      2010-05-28 02.48.54   90                         ERR0401! HTH   STEV000138  2010-05-28 05.41.22  137
     org/jdom/xpath/enh177473hth02.hth
      2010-05-28 05.18.33   90                         ERR0315! HTH
     org/jdom/xpath/enh177473jcfnew01.class
                                                       ERR0413! JCF
     org/jdom/xpath/enh177473jcf01.class
      2010-05-26 01.36.50   423                                 JCF   STEV000138  2010-05-28 02.44.07  423
     org/jdom/xpath/enh177473jcf02.class
      2010-05-28 05.19.06   422                        ERR0315! JCF
     org/jdom/xpath/package.html
      2010-03-30 07.22.58   170                        ERR0312! HTH
     org/jdom/xpath/HelloWorld1.class
      2011-04-15 08.45.00   417                        ERR0315! JCF
     org/jdom/xpath/HelloWorld3.class
      2010-04-28 07.21.21   417                        ERR0312! JCF
 >>org/jdom/xpath/enh177473jar01.jar
      2010-05-26 03.20.44   6619                                JAR   STEV000138  2010-05-28 03.12.47  6659
     org/jdom/adapters/package.html
      2010-03-30 07.22.00   193                        ERR0312! HTH
     org/jdom/adapters/AbstractDOMAdapter.class
      2010-03-26 04.02.22   434                        ERR0312! JCF
     org/jdom/filter/package.html
      2010-03-30 07.22.13   365                        ERR0312! HTH
     org/jdom/input/package.html
      2010-03-30 07.22.23   432                        ERR0312! HTH
     org/jdom/output/package.html
      2010-03-30 07.22.31   610                        ERR0312! HTH