ISREDIT MACRO       /* CARM0062 EDIT MACRO */
 
SET RETURN_CODE = 0   /* SET RETURN CODE TO 0 */
 
/* 04/13/2018 CL.FENTON CORRECTED ISSUE WITH A SINGLE AMPERSAND
/*            WHEN SETTING THE UZID FIELD, STS-019759.
 
 
/* *************************************** */
/* VARIABLES ARE PASSED TO THIS MACRO      */
/* CONSLIST                                */
/* COMLIST                                 */
/* TERMPRO                                 */
/* TERMMSGS                                */
/* *************************************** */
 
                    /* GET VARIABLES FROM POOL */
 
ISPEXEC  VGET ( +
  TABLE1       +
  SENSITVE     +
  APREFIX      +
  ALPHA        +
  XTITLE       +
  CONSLIST     +
  COMLIST      +
  SYMLIST      +
  TERMMSGS     +
  ) ASIS
 
SET RETURN_CODE = &LASTCC
 
IF &RETURN_CODE NE 0 THEN                                             -
  SET CM62VGE = &RETURN_CODE
ELSE                                                                  -
  SET CM62VGE = 0
 
/* *************************************** */
/* TURN ON MESSAGES                        */
/* *************************************** */
 
CHAPRM6_MESSAGE_HOUSEKEEPING:                                         -
                                                                      -
SET SYSSYMLIST = &SYMLIST          /* CONTROL SYMLIST/NOSYMLIST */
SET SYSCONLIST = &CONSLIST         /* CONTROL CONLIST/NOCONLIST */
SET SYSLIST    = &COMLIST          /* CONTROL LIST/NOLIST       */
SET SYSMSG     = &TERMMSGS         /* CONTROL MSG/NOMSG         */
 
 
CHAPRM6_HOUSEKEEPING:                                                 -
                                                                      -
ISREDIT (MEMBER) = MEMBER
 
SET OMEMBER = &MEMBER
 
SET BLANK = &STR( )
 
SET LAST_LOOP = NO
 
SET LOOP_CNT = 0
 
 
/* *************************************** */
/* PUT HEADINGS OUT                        */
/* *************************************** */
 
  SET HEADLINE = &NRSTR(              &MEMBER                   )
  SET AC = &STR(&HEADLINE)
  ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)             -
      DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
  SET HEADLINE = &STR( =======================================)
  SET HEADLINE = &STR(&HEADLINE===============================)
  SET HEADLINE = &STR(&HEADLINE===============================)
  SET HEADLINE = &STR(&HEADLINE===============================)
  SET AC = &STR(&HEADLINE)
  ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)             -
      DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
  SET AC = &STR( )
  ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)             -
      DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
 
ISREDIT (ENDER) = LINENUM .ZLAST
 
ISREDIT CURSOR = 1 1
 
ISREDIT (CURLINE) = LINENUM .ZCSR
 
/* *************************************** */
/* MAIN LOOP                               */
/* *************************************** */
 
LOOP:                                                                 -
                                                                      -
IF &LAST_LOOP = YES THEN GOTO END_EDIT
 
IF &CURLINE = &ENDER THEN SET &LAST_LOOP = YES
 
ISREDIT (DATA) = LINE &CURLINE
 
/* *************************************** */
/* CHECK 1 POSITION                        */
/* *************************************** */
 
SET DATA_INDICATE = &SUBSTR(1:1,&NRSTR(&DATA))
 
IF &DATA_INDICATE = &STR(L) THEN GOTO LINED
 
IF &DATA_INDICATE = &STR(D) THEN GOTO STRIPD
 
IF &DATA_INDICATE = &STR( ) THEN GOTO STRIPU
 
/*IF &DATA_INDICATE = &STR( ) THEN                                    -
/*  DO
/*  SET AC = &NRSTR(&DATA)
/*  ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)           -
/*  DATALEN(&LENGTH(&NRSTR(&AC))) MEMBER(&OMEMBER)
/*  SET CURLINE = &CURLINE + 1
  GOTO LOOP
/*  END
 
 
/* *************************************** */
/* STRIP DATA                              */
/* *************************************** */
 
STRIPD:                                                               -
                                                                      -
SET LOOP_CNT = &LOOP_CNT + 1
 
IF &LOOP_CNT = 1 THEN                                                 -
DO
  SET DSNAME1 = &SUBSTR(2:9,&NRSTR(&DATA))
  SET DSNAME2 = &SUBSTR(11:37,&NRSTR(&DATA))
  SET DSNAMEO = &NRSTR(&DSNAME2)
  SET DSNAME3 = &SUBSTR(46:53,&NRSTR(&DATA))
  SET UZID = &SUBSTR(62:70,&NRSTR(&DATA))
  SET GROUP = &SUBSTR(81:81,&NRSTR(&DATA))
  SET ACC1 = &SUBSTR(71:79,&NRSTR(&DATA))
  SET WARN1 = &SUBSTR(84:84,&NRSTR(&DATA))
  SET UACC1 = &SUBSTR(87:94,&NRSTR(&DATA))
  SET AUDIT1 = &SUBSTR(96:133,&NRSTR(&DATA))
  SET AC = &STR(&DSNAME2        &DSNAME3                  )
  SET AC = &STR(&AC                                                 )
  SET AC = &STR(&AC                                                )
  SET AC = &SUBSTR(1:67,&AC)
  IF &WARN1 = N THEN                                                  -
  DO
  SET AC = &STR(     &AC UACC(&UACC1) WARN(N) &AUDIT1)
  ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)             -
  DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
  END
  IF &WARN1 = Y THEN                                                  -
  DO
  SET AC = &STR(     &AC UACC(&UACC1) WARN(Y) &AUDIT1)
  ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)             -
  DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
  END
/*SET AC = &STR(          &UZID  &ACC1 &GROUP )
  IF &GROUP EQ G THEN SET UZID1 = &STR(GROUPID(&UZID))
  ELSE +
    IF &GROUP EQ U THEN SET UZID1 = &STR( USERID(&UZID))
    ELSE SET UZID1 = &STR(  UNDEF(&UZID))
  SET AC = &STR(          &UZID1 ACCESS(&ACC1) )
  IF &STR(&UZID) NE &STR( ) THEN +
    ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)          -
    DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
END
 
IF &LOOP_CNT NE 1 THEN                                               -
DO
  SET DSNAME1 = &SUBSTR(2:9,&NRSTR(&DATA))
  SET DSNAME2 = &SUBSTR(11:37,&NRSTR(&DATA))
  SET DSNAME3 = &SUBSTR(46:53,&NRSTR(&DATA))
  SET UZID = &SUBSTR(62:70,&NRSTR(&DATA))
  SET GROUP = &SUBSTR(81:81,&NRSTR(&DATA))
  SET ACC1 = &SUBSTR(71:79,&NRSTR(&DATA))
  SET WARN1 = &SUBSTR(84:84,&NRSTR(&DATA))
  SET UACC1 = &SUBSTR(87:94,&NRSTR(&DATA))
  SET AUDIT1 = &SUBSTR(96:133,&NRSTR(&DATA))
 
  IF &NRSTR(&DSNAME2) EQ &NRSTR(&DSNAMEO) THEN                       -
  DO
/*SET AC = &STR(               &UZID                               )
/*SET AC = &SUBSTR(1:24,&AC)
/*SET AC = &STR(&AC  &ACC1                                          )
/*SET AC = &SUBSTR(1:33,&AC)
/*SET AC = &STR(          &UZID  &ACC1 &GROUP )
  IF &GROUP EQ G THEN SET UZID1 = &STR(GROUPID(&UZID))
  ELSE +
    IF &GROUP EQ U THEN SET UZID1 = &STR( USERID(&UZID))
    ELSE SET UZID1 = &STR(  UNDEF(&UZID))
  SET AC = &STR(          &UZID1 ACCESS(&ACC1) )
  IF &STR(&UZID) NE &STR( ) THEN +
    ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)          -
    DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
  END
  ELSE                                                               -
  DO
  SET DSNAME1 = &SUBSTR(2:9,&NRSTR(&DATA))
  SET DSNAME2 = &SUBSTR(11:37,&NRSTR(&DATA))
  SET DSNAMEO = &NRSTR(&DSNAME2)
  SET DSNAME3 = &SUBSTR(46:53,&NRSTR(&DATA))
  SET UZID = &SUBSTR(62:70,&NRSTR(&DATA))
  SET GROUP = &SUBSTR(81:81,&NRSTR(&DATA))
  SET ACC1 = &SUBSTR(71:79,&NRSTR(&DATA))
  SET WARN1 = &SUBSTR(84:84,&NRSTR(&DATA))
  SET UACC1 = &SUBSTR(87:94,&NRSTR(&DATA))
  SET AUDIT1 = &SUBSTR(96:133,&NRSTR(&DATA))
  SET AC = &STR(&DSNAME2        &DSNAME3                  )
  SET AC = &STR(&AC                                                 )
  SET AC = &STR(&AC                                                )
  SET AC = &SUBSTR(1:67,&AC)
/*SET AC = &STR( &DSNAME1 &DSNAME2        &DSNAME3                  )
/*SET AC = &STR(&AC                                                 )
/*SET AC = &SUBSTR(1:62,&AC)
/*SET AC = &STR(&AC                                                )
/*SET AC = &SUBSTR(1:67,&AC)
  IF &WARN1 = N THEN                                                  -
  DO
  SET AC = &STR(     &AC UACC(&UACC1) WARN(N) &AUDIT1)
  ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)             -
  DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
  END
  IF &WARN1 = Y THEN                                                  -
  DO
  SET AC = &STR(     &AC UACC(&UACC1) WARN(Y) &AUDIT1)
  IF &STR(&UZID) NE &STR( ) THEN +
    ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)          -
    DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
  END
  IF &GROUP EQ G THEN SET UZID1 = &STR(GROUPID(&UZID))
  ELSE +
    IF &GROUP EQ U THEN SET UZID1 = &STR( USERID(&UZID))
    ELSE SET UZID1 = &STR(  UNDEF(&UZID))
  SET AC = &STR(          &UZID1 ACCESS(&ACC1) )
  ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)            -
  DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
  END
END
 
 
SET CURLINE = &CURLINE + 1
 
GOTO LOOP
 
STRIPU:                                                               -
                                                                      -
SET &UZID = &SUBSTR(40:79,&NRSTR(&DATA))
 
SET &AC = &STR(               &NRSTR(&UZID))
ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)               -
  DATALEN(&LENGTH(&NRSTR(&AC))) MEMBER(&OMEMBER)
 
SET CURLINE = &CURLINE + 1
 
GOTO LOOP
 
LINED:                                                                -
                                                                      -
SET LINE1 = &STR(&SUBSTR(2:133,&DATA))
 
SET AC = &STR( )
 
ISPEXEC LMPUT DATAID(&SENSITVE) MODE(INVAR) DATALOC(AC)               -
  DATALEN(&LENGTH(&STR(&AC))) MEMBER(&OMEMBER)
 
SET LOOP_CNT = 0
 
SET CURLINE = &CURLINE + 1
 
GOTO LOOP
 
END_EDIT:                                                             -
                                                                      -
ISPEXEC  VPUT  (                                                      -
  CM62VGE                                                             -
  ) ASIS
 
   ISPEXEC LMMREP DATAID(&SENSITVE) MEMBER(&OMEMBER)
/* *************************************** */
/* SAVE OUTPUT                             */
/* *************************************** */
 
ISREDIT END
 
EXIT
