TAA Tools

 SCNRPGFLD3      SCAN RPG FIELD 3                       TAARPHE

 The  Scan RPG  Field 3  command  finds all  references  to a  specified
 field name  in a member,  generic members, or  all members in  a source
 file  that match a  list of Operation  Codes.  A  special Op code value
 exists to  search for Operation  Codes with  Year 2000  considerations.
 Only RPG source  types (including RPGLE) are searched  for.  Derivative
 fields are also considered.

 A typical command would be:

              SCNRPGFLD3  FLDNAME(DATE1) SRCMBR(ABC*) SRCFILE(QRPGSRC)
                            OPCODE(*YEAR2000)

 All  calculation  references to  DATE1 would  be  found in  the generic
 member names beginning with ABC.   The list of Op codes that have  Year
 2000 considerations  such as  IFLE, CABGT, WHGE,  etc would  be checked
 for.   Also included  are CHAIN, KFLD,  PARM, SETGT, and  SETLL.  Equal
 and non-equal Op codes such  as IFEQ and CABNE  would be bypassed.   If
 the  source is  an RPG  IV  type, the  corresponding  RPG IV  operation
 codes  would be searched  for.   Any statement  would be flagged  if it
 matches one of the specified Op codes.

 If  the DATE1  data was  used to  change another  field such as  a MOVE
 from DATE1 to YY, the YY  field would also be searched for.   The field
 that was  changed is termed  a 'derived field'.   If the YY  field were
 moved to field ZZ, the ZZ field would also be scanned for, etc.

 A  spooled  file  would  be  created  with  each  statement listed  and
 flagged (*** in positions  2 - 4) where the  specified Op code is  used
 with the  named or derived fields.   Any statements creating  a derived
 field are also listed.

 If  you are  scanning  for the  field named  BBB and  an  RPG statement
 moves the data from  field AAA to  BBB, AAA is not  considered to be  a
 derived field.   Derived fields occur only  when the data in  the field
 you named  is used to change a  result field such as with  a MOVE, CAT,
 or  ADD operation.  This excludes the  use of index fields or modifiers
 such as used on CAT operations.

 If the  field being  scanned for is  a sub  field in  an internal  data
 structure,  any overlapping  fields are  also considered  'derived' and
 will  be  scanned for  as well  as  the data  structure  name.   If the
 internal data  structure name  is the  result field  of  a scanned  for
 field,  both  the  data  structure  name  and  all  fields  within  the
 internal data structure are considered 'derived'.

 Fields   within  an  externally   described  data   structure  are  not
 considered 'derived' if the name of the data structure is changed.

 Overlapped fields  within OPM  Input specifications  are considered  as
 derived fields.

 If the  specified  source file  contains source  types  other than  RPG
 types, they  are bypassed.  The processed source  types are RPG, RPGLE,
 RPG36, RPG38, RPT, SQLRPG, SQLRPGLE, SQLRPGMOD, and RPGMOD.

 Less than perfect Year 2000 checking
 ------------------------------------

 Note  that the  *YEAR2000 default  is not  a perfect  test of  all year
 2000 considerations.   While  the majority of  typical situations  will
 be found, the following are examples that could be missed.

   **   A  calculation  that determines  an  age  by  subtracting the  2
        digit  birthyear from the  2 digit current year  would produce a
        derived field.   However, unless the derived  field was used  by
        a  comparison Op  code  (or PARM,  KFLD,  etc.), the  occurrence
        would not be considered.

   **   You will  generally scan for date fields in  your data base.  If
        a date is passed as  a parameter, you may  not know to scan  for
        the name.

   **   Program described  data files may  have different names  for the
        date fields.  You must scan for each name used.

   **   If data  is moved to  an externally described  data structure, a
        field  within  the  structure  would  not  be  recognized  as  a
        derived field.  If  the data structure contains many  fields, it
        is unlikely  that this  will cause a  problem.  However,  if the
        data  structure is  only a  date field,  the derived  sub fields
        would be missed.

 Comparison with the SCNRPGFLD2 tool
 -----------------------------------

 The SCNRPGFLD2  tool  will  also scan  for  a field  name  and  derived
 fields.   However, SCNRPGFLD2 lists every  occurrence of a  field being
 scanned for and any derived fields.

 SCNRPGFLD3 only  lists statements where the scanned  for field is being
 used  with  one  of  the  specified  Operation  codes  and  flags   the
 statements.  SCNRPGFLD3  also lists the statements that  create derived
 fields.

 Command parameters                                    *CMD
 ------------------

    FLDNAME       The  field  name  to   be  searched  for.    An  exact
                  comparison must exist (no generic support).

                  If  a field  is used in  an operation such  as MOVE to
                  change a result  field, the result  field is known  as
                  a  'derived  field'.     The  derived  field  is  also
                  searched  for and any fields  derived from the derived
                  field.

                  Overlapping   fields   in   a   data   structure   are
                  considered  derived fields.    If  the data  structure
                  name   is  changed,   all   fields  within   the  data
                  structure are considered derived fields.

    SRCMBR        The  member  to  be  searched.    Either  a   specific
                  member, a  generic member name,  or the  special value
                  *ALL may  be specified.   If a generic  member name or
                  *ALL   is  entered,  only   RPG  type  source  members
                  (including RPGLE) are searched.

    SRCFILE       The qualified file name  of the source file.   QRPGSRC
                  is  the  default.    The  library  value  defaults  to
                  *LIBL.  *CURLIB may also be used.

    OPCODE        The Operation Code to be checked for.

                  The  default is *YEAR2000  which checks for comparison
                  Op codes  involving GE,  LE, GT,  LE.   This  includes
                  IFxx,  WHxx, and  CABxx.   It also  includes COMP  and
                  LOKUP  Operations  where  a  Hi  or  Lo  indicator  is
                  specified.

                  It  excludes  Operation  Codes   where  an  equal   or
                  unequal test is  being made such as IFEQ,  CABNE, etc.

                  If RPG  IV source exists, the corresponding  RPG IV op
                  codes are checked for.

                  The  *YEAR2000 default  is not  a perfect  test of all
                  year 2000  considerations.   However,  it should  find
                  the majority of typical situations.

                  You may specify  your own list of Op Codes.   Up to 40
                  Op codes may be specified.

 Restrictions
 ------------

 Valid RPG source must exist.

 Statements copied by /COPY are not considered.

 Not all RPG IV syntactical uses are supported.

 Also see previous comments.

 The sub tool RTVRPGFLD has some restrictions.

 Prerequisites
 -------------

 The following TAA Tools must be on your system:

      CHKGENERC       Check generic
      EDTVAR          Edit variable
      EXTLST2         Extract list 2
      HLRMVMSG        HLL Remove message
      RTVDBFA         Retrieve data base file attributes
      RTVMBRLST2      Retrieve member list 2
      RTVSYSVAL3      Retrieve system value 3
      SNDCOMPMSG      Send completion message
      SNDESCMSG       Send escape message
      SNDSTSMSG       Send status message

 Implementation
 --------------

 None, the tool is ready to use.

 Objects used by the tool
 ------------------------

    Object        Type    Attribute      Src member    Src file
    ------        ----    ---------      ----------    ----------

    SCNRPGFLD3    *CMD                   TAARPHE       QATTCMD
    TAARPHEC      *PGM       CLP         TAARPHEC      QATTCL
    TAARPHEC2     *PGM       CLP         TAARPHEC2     QATTCL
    TAARPHER      *PGM       RPG         TAARPHER      QATTRPG

Added to TAA Productivity Tools May 1, 1998


Home Page

Last modified on November 19, 2014 © 1995, 2014 - TAA Tools, Inc.