一个比较简单的RPGLE程序---HR017R

这是一个关于HR系统中员工状态自动检查程序的源代码分析。该程序旨在根据当前日期更新员工的工作状态,并记录相应的日志。通过比较员工的入职及试用期结束日期,系统将自动标记员工的状态为离职、在职或试用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

H*=============================================================================================
H*  Program ID.: HR017R
H*  Author.....: David Zhao
H*  Function...: HR Automatic Check Status in HREMPLYP
H*  Input......: --
H*  Output.....: --
H*  Remark.....: --
H*  Updated....: 07-Oct-2008
H*=============================================================================================
H*  Indicator..:     0  1  2  3  4  5  6  7  8  9
H*                0    ** ** ** ** ** ** ** ** **
H*                1 ** ** ** ** ** ** ** ** ** **
H*                2 ** ** ** ** ** ** ** ** ** **
H*                3 ** ** ** ** ** ** ** ** ** **
H*                4 ** ** ** ** ** ** ** ** ** **
H*                5 ** ** ** ** ** ** ** ** ** **
H*                6 ** ** ** ** ** ** ** ** ** **
H*                7 ** ** ** ** ** ** ** ** ** **
H*                8 ** ** ** ** ** ** ** ** ** **
H*                9 ** ** ** ** ** ** ** ** 98 99
H*                  LR
H*=============================================================================================
H*  Usage......:
H*               9x : Dummy
H*=============================================================================================
H/COPY H_DFT
H*=============================================================================================
FHREMPLYP  UF A E           K DISK
D*=============================================================================================
D*
D Working         DS                  INZ                                  *Working variables
D  xxSD                           D   INZ(D'2006-01-01')                   *Start date
D  xxED                           D   INZ(D'2006-01-01')                   *End   date
D  xxSTS                         1A   INZ(' ')                             *Status
D  xxSDP                         8P 0 INZ(0)                               *Start date P
D  xxTIMESTAMP                    Z                                        *Dummy timestamp
C*=============================================================================================
C*    *INZSR = Program initialization.
C*=============================================================================================
CSR   *INZSR        BEGSR
C*
C                   MOVEA     *OFF          *IN
C*
C                   EXSR      /MAIN                                        *Main step
C*
C                   EVAL      *INLR = *ON                                  *End of program
C                   RETURN
C*
CSR                 ENDSR
C*=============================================================================================
C*    /MAIN = Main routine.
C*=============================================================================================
CSR   /MAIN         BEGSR
C*
C                   TIME                    xxTIMESTAMP
C                   EVAL      xxSD    = %date(xxTIMESTAMP)
C                   MOVEL     xxSD          xxSDP
C*
C     *LOVAL        SETLL(E)  HREMPLYP
C                   READ      HREMPLYP                             9999
C*
C                   DOW       (not *IN99)
C*
C                   CLEAR                   xxSTS
C*
C                   SELECT
C                   WHEN      (EMPLVD > 0) AND (EMPLVD <= xxSDP)
C                   EVAL      xxSTS  = 'L'
C*
C                   WHEN      EMPTRD = 0
C                   EVAL      xxSTS  = 'A'
C*
C                   WHEN      EMPTRD > 0
C                   MOVE      EMPIND        xxED
C                   IF        EMPTRD < %diff(xxSD:xxED:*D)
C                   EVAL      xxSTS  = 'A'
C                   ELSE
C                   EVAL      xxSTS  = 'P'
C                   ENDIF
C*
C                   OTHER
C                   EVAL      xxSTS  = 'A'
C                   ENDSL
C*
C                   IF        xxSTS  <> EMPSTS
C*
C                   EVAL      EMPSTS = xxSTS
C*
C                   IF        EMPSTS = 'L'
C                   EVAL      EMPIC  = *BLANK
C                   ENDIF
C*
C                   UPDATE    HREMPLYR
C                   EXSR      /LOGR
C*
C                   ENDIF
C*
C                   READ      HREMPLYP                             9999
C*
C                   ENDDO
C*
CSR                 ENDSR
C*=============================================================================================
C*    /LOGR = Add a log record
C*=============================================================================================
CSR   /LOGR         BEGSR
C*
C*
CSR                 ENDSR
                     * * * *  E N D  O F  S O U R C E  * * * *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值