RPG

30. 曜日を算出するサブルーチン

何月何日は何曜日であると即座に言い当てるレインマンは身近にはいないので、

それを算出するサブルーチンはやはり必要だ。

0001.00      E                    DTR    12  12  2 0
0002.00      I*( WORK 日付 YYMMDD DATA 構造  )
0003.00      IDATEDS     IDS
0004.00      I                                        1   20SRY
0005.00      I                                        1   40SRYY
0006.00      I                                        1   80SRYMD
0007.00      I                                        3   80YYMMDD
0008.00      I                                        3   60YYMM
0009.00      I                                        5   80MMDD
0010.00      I                                        3   40YY
0011.00      I                                        5   60MM
0012.00      I                                        7   80DD
0013.00     +C*( DSTE    の曜日の検索 )
0014.00      C                     MOVE DATE      YYMMDD            日付 FLD
0015.00      C                     Z-ADD20        SRY               2000 年
0016.00      C                     MOVE SRYY      D\NEND  40
0017.00      C                     MOVE MM        D\TSUK  20
0018.00      C                     MOVE DD        D\DAY   20
0019.00      C                     EXSR DAYSET
0020.00      C******************************************************
0021.00      C           DAYSET    BEGSR
0022.00      C******************************************************
0023.00      C*( 曜日の算出 )
0024.00      C*   ( D\NEND = 西暦 20XX 年 ) 4,0
0025.00      C*   ( D\TSUK =  XX 月 ) 2,0
0026.00      C*                        ----> YOBI 曜日  4
0027.00      CSR         D\NEND    IFNE *ZEROS
0028.00      CSR         D\NEND    SUB  1         NENWK   40
0029.00      CSR                   ELSE
0030.00      CSR                   MOVE *ZEROS    NENWK
0031.00      CSR                   END
0032.00      C*
0033.00      CSR         NENWK     MULT 365       NISU    70
0034.00      CSR         NENWK     DIV  4         URUU    40
0035.00      CSR                   ADD  URUU      NISU
0036.00      CSR         D\TSUK    SUB  1         TUKIWK  20
0037.00      CSR                   DO   TUKIWK    I       20
0038.00      CSR                   ADD  DTR,I     NISU
0039.00      CSR                   END
0040.00      CSR         TUKIWK    IFGT 1
0041.00      CSR         D\NEND    DIV  4         URUU
0042.00      CSR                   MVR            URUU1   10
0043.00      CSR         0         IFEQ URUU1
0044.00      CSR                   ADD  1         NISU
0045.00      CSR                   END
0046.00      CSR                   END
0047.00      C**(YOBI)
0048.00      CSR         NISU      DIV  7         NISU1   70
0049.00      CSR                   MVR            YOBI#   20
0050.00      C** SUNDAY IS 7
0051.00      CSR         YOBI#     IFEQ *ZERO
0052.00      CSR                   Z-ADD7         YOBI#
0053.00      CSR                   END
0054.00      CSR                   ADD  5         YOBI#
0055.00      CSR         YOBI      IFGT 7
0056.00      CSR                   SUB  7         YOBI#
0057.00      CSR                   END
0058.00      C* YOBI# = 1    2    3    4    5    6    7 
0059.00      C*        月    火   水   木   金   土   日
0060.00      CSR         YOBI#     IFEQ 1
0061.00      CSR                   MOVE ' 月 '    YOBI    4
0062.00      CSR                   END
0063.00      CSR         YOBI#     IFEQ 2
0064.00      CSR                   MOVE ' 火 '    YOBI    4
0065.00      CSR                   END
0066.00      CSR         YOBI#     IFEQ 3
0067.00      CSR                   MOVE ' 水 '    YOBI    4
0068.00      CSR                   END
0069.00      CSR         YOBI#     IFEQ 4
0070.00      CSR                   MOVE ' 木 '    YOBI    4
0071.00      CSR                   END
0072.00      CSR         YOBI#     IFEQ 5
0073.00      CSR                   MOVE ' 金 '    YOBI    4
0074.00      CSR                   END
0075.00      CSR         YOBI#     IFEQ 6
0076.00      CSR                   MOVE ' 土 '    YOBI    4
0077.00      CSR                   END 
0078.00      CSR         YOBI#     IFEQ 7
0079.00      CSR                   MOVE ' 日 '    YOBI    4
0080.00      CSR                   END
0081.00      C*
0082.00      CSR                   ENDSR
0083.00 **  DTR    月別日数
0084.00 312831303130313130313031