Previous Topic: 7.3.2 Define the Input Format Routine (DYfdaFMT)

Next Topic: 7.3.2.1.1 - Define Non-database Files (USRFMT1)

7.3.2.1 Define a non-MSI Input Format Routine (DYfdafmt)


It is generated during the GEN GENSHELL process executed in
conjunction with testing fdaGENIN.

There are several methods used by CA MICS standard components
for structuring input data format routines.  A sample input
format routine shell generated from the UNPGENIN module
follows.  Details about each coding task follow.


/*-------------------------------------------------------------------*/
/* Copyright (C) 2010 CA.  All rights reserved.                      */
/*-------------------------------------------------------------------*/
/* CHANGE | PROBLEM|MMYY|VENDOR CHANGE DESCRIPTION                   */
/*--------+--------+----+--------------------------------------------*/
/*-------------------------------------------------------------------*/
/* CHANGE |MMYY|USER CHANGE DESCRIPTION                              */
/*--------+----+-----------------------------------------------------*/
/*-------------------------------------------------------------------*/

/* *******************************************************************
* COMPONENT:    UNP USER COMPONENT                                   *
* MODULE GENERATED = DYUNPFMT                                        *
* DATE GENERATED Thu, Apr 23, YYYY      TIME GENERATED  6:29:59      *
* CA MICS COMPONENT GENERATOR - BAS6000                              *
*********************************************************************/
/* *******************************************************************
* THIS MEMBER PROCESSES THE RAW INPUT DATA USED                      *
* TO UPDATE THE CA MICS DATABASE. THE INPUT                          *
* DATA IS READ, VERIFIED, INTERPRETED, AND                           *
* ORGANIZED TO BUILD THE RECORDS USED TO UPDATE                      *
* THE CA MICS DATABASE DETAIL (OR DAYS) TIMESPAN.                    *
*                                                                    *
* ADDITIONALLY, THIS MEMBER ENSURES THAT THE NECESSARY               *
* AUDIT TRAILS ARE BUILT, DUPLICATE DATA ELIMINATION                 *
* IS PERFORMED, AND COMPONENT CHECKPOINT UPDATING                    *
* IS ACCOMPLISHED.                                                   *
*********************************************************************/
TITLE "CA MICS UNP COMPONENT INPUT FORMAT ROUTINE";
DATA

     WORK.UNPUNA00   (KEEP=%UNAKEEP(TS=DETAIL ))
     &ADMX..CKPTDATA (LABEL='INPUT STATISTICS FOR CURRENT DATA'
                      KEEP=%WHLKEEP(TS=DETAIL))
     %USRFMT1
     ;;;;
  /*EXIT RETURN INDICATOR SET                                       */
  %EXITCK;

  /* COMMON LENGTH/FORMAT AND LABELS DEFINITION                     */
  %UNPCLEN(TS=DETAIL);

  /* FIELD LENGTH/FORMAT/INFORMAT DEFS BY FILE                      */

  /* USER NCP ACTIVITY FILE                   */
  %UNALEN(TS=DETAIL );
  %UNAFMT(TS=DETAIL );
  %UNALBL;

  LENGTH BLANKS $200.;
  %LET BLANKS = 1;
  LENGTH ORGSYSID $4 COMPT $8;
  RETAIN  BLANKS ' ' ZERO 0 ONE 1 HUN 100
  COMPT 'UNP     ' ROUTINE 'DYUNPFMT' MICSVER '60' LINKSW 0 ;
  /*INVOKE CHECKPOINT RETRIEVAL ROUTINE                             */
  %CKRTN1;

  /* INPUT FILE DEFINITION                                          */
  INFILE INPUTUNP STOPOVER EOF=EOF_1ST LENGTH=RECLEN COLUMN=COL ;
  INPUT @;
  INSMF+1;
  COMPT='UNP';

  /* USER INPUT STATEMENT DEFINITION EXIT                           */
  /* INPUT ORGSYSID AND ENDTS, FOR THE PROPER OPERATION */
  /* OF CKRTN2 - DATA RANGE CHECKING OF INPUT.          */
  %USRFMT2;

/* COMMON RECORD PROCESS ROUTINE                                    */
COMPROC: ;
  _USRSEL ;  /* INVOKE USER SELECT EXIT ROUTINE IF CODED */

  /***  PROCESS THE RECORD  ***/
  /***  PROCESS THE RECORD  ***/
    ENDTS=TODAY();
    UNAAGTCT=8;
    OUTPUT UNPUNA00;
  /***  PROCESS THE RECORD  ***/
  /***  PROCESS THE RECORD  ***/


  /*INVOKE CHECKPOINT ROUTINE TO VERIFY THAT DATA                   */
  /*  (ENDTS) IS ONE OF FOLLOWING CONDITIONS:                       */
  /*                                                                */
  /*  ENDTS WITHIN CHECKPOINT RANGE - DROP DUP                      */
  /*  ENDTS BELOW CHECKPOINT RANGE  - DROP LOW IPL                  */
  /*  ENDTS ABOVE TODAYS DATE - DROP HIGH IPL                       */

  %CKRTN2;

  /*INVOKE COMMON FIELDS DERIVATION ROUTINE                         */
  /*  YEAR, MONTH, WEEK, ZONE, DAY, DAYNAME,                        */
  /*  AND HOUR ARE BUILT FROM THE ENDTS FIELD.                      */

  %CMNFLDS;

  /*INVOKE SYSID LOOKUP ROUTINE TO BUILD LOGICAL                    */
  /*  SYSID, MIPS RATE, CPUMODEL, SCP LEVEL,                        */
  /*  AND RMF CPU CONVERSION FACTOR.                                */

  %SYSID;

  /* INPUT STATEMENTS ARE DEFINED FOR EACH RECORD TO BE */
  /* USED IN THE UPDATE PROCEDURE ALONG WITH ANY OTHER  */
  /* EDIT OR MANIPULATIVE TESTING OF THE DATA.          */
  /* THE RETURN STATEMENT MUST NOT BE USED.             */

  %USRFMT3;

RETURN;

/* *******************************************************************
* AN OUTPUT ROUTINE IS ESTABLISHED FOR EACH DETAIL                   *
* OR DAYS FILE TO BE PROCESSED.                                      *
*********************************************************************/

/* OUTPUT ROUTINE FOR USER NCP ACTIVITY FILE                        */
OUTUNA:
  /* USER OUTPUT LOGIC FOR USER NPC ACTIVITY FILE                   */
  /* PERFORM SFD TEST AND OUTPUT FILE                               */
  IF &UNASFD THEN DO;
    %UNADERV;
    /* USER COSTING AND MANIPULATION EXIT */
    %FXIT(NAME=USRSUNA);
    OUTPUT WORK.UNPUNA00;
  END;
RETURN;

/* OPTION DELETE ROUTINE PROVIDES METHOD TO                         */
/* ADJUST RECORD COUNTS FOR USER DELETED                            */
/* ACTION                                                           */
OPTN_DEL:
  RECKPT=RECKPT-1;
  RECODLT+1;
RETURN;
/* USER END OF FILE ROUTINE EOF_1ST                                 */
/* USRFMT4 IS FOR USER END OF FILE CODE                             */
EOF_1ST:;
  %USRFMT4;
  GOTO EOF_RTN;
  /* EOF_RTN IS DEFINED IN CKRTN3.                                  */
  %CKRTN3;
RUN;

/* INVOKE CHECKPOINT ROUTINE TO UPDATE THE                          */
/* CHECKPOINT TIME-RANGES FOR THE SYSIDS AND                        */
/* COMPONENT UPDATED, AND RECORD THE DATA                           */
/* REQUIRED FOR UPDATING THE INPUT HISTORY                          */
/* LOG ON THIS COMPONENT'S UPDATE ACTIVITY.                         */
%CKRTN4;
RUN;

/* USER POST-FORMAT AND PRE-SORT EXIT                               */
%USRFMT5;

/* *******************************************************************
* EACH OF THE FILES ARE SORTED TO ORDER THE DATA FOR                 *
* ITS NEXT USE IN THE UPDATE PROCESS AND                             *
* TO AUTOMATICALLY ELIMINATE DUPLICATE DATA                          *
* AS DEFINED BY THE SEQUENCE MACROS.  FINALLY, THE                   *
* IN-PROCESS FILE IN THE DETAIL TIMESPAN                             *
* IS BUILT AND THE TEMPORARY WORK FILE IS                            *
* DELETED IF DETAIL IS ACTIVE.                                       *
*********************************************************************/

/* USER NCP ACTIVITY FILE                                           */
PROC SORT NODUP DATA=WORK.UNPUNA00
  OUT=&UNPX..UNPUNA00(%UNAFILE(TS=DETAIL,OP=FILEOPTS));
  BY %UNASEQ(TS=DETAIL ); RUN;
PROC DATASETS DDNAME=WORK NOLIST NOWARN;
  DELETE UNPUNA00;
RUN;
QUIT;

/*USER END OF FORMAT ROUTINE EXIT                                   */
%USRFMT6;

RUN;



The points where your FDA's input format code executes are
defined by SAS macro references.  The macros, named USRFMTnn
and residing in sharedprefix.MICS.SOURCE($fdaEXIT), perform
the following tasks:

    USRFMT1 - work file definition code
    USRFMT2 - input statement definition code
    USRFMT3 - output branch logic
    USRFMT4 - input end-of-file code
    USRFMT5 - post-format, pre-sort code
    USRFMT6 - end-of-format routine code

The first four macros are referenced in the main SAS data
step.  The input format routine begins with a DATA step that
inputs source data and outputs observations to work file
versions of DETAIL timespan files you defined in
sharedprefix.MICS.GENLIB(fdaGENIN).

After the main DATA step, the USRFMT5 macro is referenced.
It is followed by code that sorts the work file versions of
your FDA's DETAIL timespan files into the order needed and
writes the DETAIL database.  After the sort completes, the
USRFMT6 macro is referenced.

For more information about what should be coded in each
macro, see the following sections:

    1 - Define Input Record Code (USRFMT1 and USRFMT2)
    2 - Define Input Record Validation (USRFMT2)
    3 - Define Input/Output Processing (USRFMT3)
    4 - Define Additional Process Code (USRFMT4-6)
    5 - Validate Your Code