javnat



Question #1

JavNat Architecture

How would you describe the architecture of a converted JavNat applications?

Answer:
A converted JavNat application can be described as a stateful model->view->controller application.
  • The model is a set of J2SE (POJO) class derived from the original Natural application with 1 class to 1 Natural object.
  • The view is a set of JSPs derived from the screens in the original Natural application.
  • The controller is a servlet that manages the interaction between the model and view.

  • Question #2

    Super/Sub Descriptors

    How are super/sub descriptors handled in a JavNat conversion?

    Answer:
    As part of the normalization step, physical columns are created on the new tables for each of the super and sub descriptors. Also, a database trigger is created for that table that does the following:
  • Ensures that the column is set directly.
  • Set the value in that column based on its components in ADABAS.

  • Question #3

    Predict Verification Rules

    How do you deal with Predict Verification Rules on Maps?

    Answer:
    We request the Natural application source in SAGs SYSTRANs format and there is an option when extracting a SYSTRANs that allows the predict rules to in incorporated into the map source.
    S/C Type ....................... S
    From Library ................... resour__
    Map Name ....................... smm*____
    Incorporate all Predict Rules .. Y  (Y/N)
    Unload Associated Free Rules ... N  (Y/N)
    To Library ..................... ________
    
    The results is source of the predict rule imbedded in the map source:
    ...
    *S**RULEVAR F01#STARTING_DT
    *S**INCDIC                                 ;
    *S***
    *S***    PROCESSING RULE: DATEVR  WAS GENERATED BY PREDICT
    *S***    VERIFICATION-TYPE: EQUAL   ON: 92-05-27   AT: 10:46
    *S***
    *S**IF & NE ' '
    *S**  IF & NE MASK(YYYY'-'MM'-'DD) OR & <= '1900-00-00'
    *S**    REINPUT 'Invalid Date' MARK *& ALARM
    *S**  END-IF
    *S**END-IF
    ...
    

    Question #4

    Batch: JCXML

    What is JCXML?

    Answer:
    JCXML is an XML based design that mimics features of JCL. Those steps in a JCL job stream that execute a Natural program are easily converted to JCXML steps.

    It has features which replicate the concepts of JCL, for example:
  • a job can have multiple steps
  • steplibs can be incorporated
  • files associations ("DDName" -> filename)
  • DISP parameters

    Most JCL steps contain more than just Natural based steps. These steps may include simple steps such as IEBGENERS, IEFBR14 and SORTS. It may also include more complex steps that execute complex COBOL, PL/1 or Assembler code.

    In order to allow for these steps to be included in that JCXML stream just as they were in the original JCL stream, JavNat contains a Java interface that allows for a class to be written that can accept any number of parameters in the JCXML step. Within a class any process can be written to replace the mainframe function or some other application can be called to handle the work.

  • Question #5

    IDE requirement

    What IDE is required to maintain the application?

    Answer:
    Any IDE that supports Java language can be used to maintain a JavNat application. Support for J2EE development and debugging is an asset.

    Currently, Oracle JDeveloper, Apache Eclipse and IBM's Rational Application Developer are being used to maintain JavNat applications.

    Question #6

    Hosting the converted application

    What is required to host a JavNat application?

    Answer:
    A JavNat application is designed to be delpoyable on any J2EE application server that supports J2EE 1.4 or higher.

    It has currently been deployed in production to:
  • Oracle 9ais/OC4J
  • Apache Tomcat V4/V5
  • IBM Websphere Application Server (WAS)

    It has also been tested under:
  • BEA WebLogic Server
  • SUN's Glassfish

  • Question #7

    Batch

    How is batch handled?

    Answer:
    The JavNat batch environment is designed to act the same as the Natural batch environment. That is, the JavNat modules that execute in the online environment are no different from the modules execute in batch.

    A batch job is triggered using a JCL-like specification XML file that we call JCXML. When the JCXML file is passed to the JavNat base class NatSubmit (fbda.javnat.NatSubmit), it will start a JavNat session and execute the steps specified in the JCXML file.

    The batch implementation has no dependencies on the J2EE environment that is used in online JavNat applications. It is typically triggered using a Windows Batch file or a UNIX script.

    Question #8

    Security considerations

    How is security implemented in a JavNat application?

    Answer:
    There are 2 layers of security in Natural applicaitons.
    1. Authentication

      In the original application this would typically be handled by RACF. Each JavNat application has a custom java class which is responsible for authenticating the username and password. This authentication can be any method the customer requires. Some of the solutions implemented in previous projects are as follows:
      • Using a LDAP server
      • Using a database username and password as authentication
      • Using a table within the target RDBMS which holds the username and password

    2. Security built into the application

      All security that is built in to the application is automatically maintained in conversion. No intervention is required at this level.

    Question #9

    Report handling: formatting

    How will reports, including those that are 132 columns wide on the original system, maintain the same format in the new system?

    Answer:
    A number of approaches are available depending on the printing environment and requirements.
        
  • For example we can generate pdfs for printing to a local printer, with the scaling handled automatically through use of the FOP libraries (an open source Java printing/report formatting technology).
        
  • An alternative strategy that has been employed is to use the appropriate PCL (Printer Command Language) code to change the orientation of the output to landscape and adjust the font.

  • Question #10

    Report handling: General

    How are reports handled in JavNat?

    Answer:
    The Natural statements that are used to produce reports in a Natural system are converted to Java and function exactly as they did in Natural.

    The output of these statements is controlled by one of many specialized classes (JavNat printer based java classes) designed to take the report produced by JavNat and either send it to a printer, save it as a PDF or e-mail it to a recipient.

    New specialized classes can be created as needed and are easily specified within a JCXML step or within the J2EE JavNat configuration file for online report generation.

    Question #11

    EDCDIC to ASCII sorting and collation issues

    How does the JavNat converted application handle the differences bewteen the 2?

    Answer:
    In the converted Java (JavNat) code all comparisons between alphanumeric variables use EBCIDIC encoding to ensure that it works the same on an ASCII platform as it did on an EBCDIC platform.

    In the dml there are two potential issues:
  • Sorts of alphanumeric data
  • Comparisons of alphanumeric data

    All situations where DML is accessing the relational database using alphanumeric values and either sorting or doing comparisons (GT, LT, GE, LE, THRU etc) are identified before conversion in the NatMiner DNA Reports. As part of the conversion each of these potential problems is analyzed in conjunction with the customer and resolved on an individual basis using one of the following strategies:
  • Use the NLS_SORT parameter to specify a new sort order in the database.
  • Change the DML itself.

  • Question #12

    Use of HTML / CSS / javaScript / AJAX on JavNat screens.

    Can other web 2.0 technologies be used in a JavNat application?

    Answer:
    Yes! JavNat applications are designed to run under a J2EE server and use JSPs as the presentation layor so the following technologies:
  • HTML
  • CSS
  • javaScript
  • AJAX
  • Tag libraries