Here is a simple technique for removing editing characters from a date field. Use the CHECK op code to find the delimiters, and use the EVAL op code and %SUBST built-in function to take them out.
Figures 7 and 8 contain the prototype and the subprocedure RMVDTSEP (Remove Date Separators) for this technique.
This method can be used with dates in formats MM/DD/YY, YY/MM/DD, CCYY/MM/DD, or MM/DD/CCYY, and it works with any nonblank separator character.
- Shashi K. Narasimhan Cap Gemini
Figure 7: Member RMVDTSEPPR, the prototype for the RMVDTSEP subprocedure
DRMVDTSEP PR 10
DVAR1 10 *===============================================================
* Remove date separators
*===============================================================
* To compile:
*
* CRTRPGMOD MODULE(XXX/RMVDTSEP) SRCFILE(XXX/QRPGLESRC)
*
* CRTSRVPGM SRVPGM(XXX/RMVDTSEP) SRCFILE(XXX/QRPGLESRC) +
* EXPORT(*ALL)
*
*===============================================================
HNOMAIN
Figure 8: The RMVDTSEP subprocedure
/COPY XXX/QRPGLESRC,RMVDTSEPPR
PRMVDTSEP B EXPORT
DPI10
DVAR1 10
DARR S 3 0 DIM(4)
DDGTS C '0123456789 '
DLEN S 2 0
C DGTS CHECK VAR1 ARR
C ' ' CHECKR VAR1 LEN
C
C IF ARR(2) *ZERO
C RETURN %SUBST(VAR1:1:ARR(1)-1)
C + %SUBST(VAR1:ARR(1)+1:ARR(2)-(ARR(1)+1))
C + %SUBST(VAR1:ARR(2)+1:LEN-ARR(2))
C ELSE
C RETURN VAR1
C ENDIF
PRMVDTSEP E
LATEST COMMENTS
MC Press Online