000010**************************************************************************
000020* Tvp JI-BEGINTIMEJI-ENDTIMEԕɕԊ҂֐
000030*            (CONVDATE)
000040*
000050* (C)NEC Corporation/NEC Soft, Ltd. 1995,2008
000060*
000070*       1997.02.13 Created by NEC Soft, Ltd.
000080*
000090*  {\[X́uEXPRESS5800 COBOL85(WindowsNT(TM))vgp
000100*    쐬Ă܂
000110**************************************************************************
000120 IDENTIFICATION DIVISION.
000130 PROGRAM-ID.    CONVDATE.
000130 AUTHOR.        NEC Soft, Ltd.
000140 INSTALLATION.  NEC Soft, Ltd.
000160 DATE-WRITTEN.  96-06-28.
000170 DATE-COMPILED.
000180*
000190 ENVIRONMENT DIVISION.
000200 CONFIGURATION SECTION.
000210 SOURCE-COMPUTER.  EXPRESS5800.
000220 OBJECT-COMPUTER.  EXPRESS5800.
000230*
000240 DATA DIVISION.
000250 WORKING-STORAGE SECTION.
000260 77  WK-DATE              PIC  9(06).
000270 77  WK-DAY-OF-MONTH      PIC  9(02).
000280 77  WK-TIME              PIC  9(06).
000290 01  WK-DATETIME.
000300     02  WK-YEAR          PIC  9(04).
000310     02  FILLER           PIC  X(01)  VALUE "/".
000320     02  WK-MONTH         PIC  9(02).
000330     02  FILLER           PIC  X(01)  VALUE "/".
000340     02  WK-DAY           PIC  9(02).
000350     02  FILLER           PIC  X(01)  VALUE " ".
000360     02  WK-HOUR          PIC  9(02).
000370     02  FILLER           PIC  X(01)  VALUE ":".
000380     02  WK-MINUTE        PIC  9(02).
000390     02  FILLER           PIC  X(01)  VALUE ":".
000400     02  WK-SECOND        PIC  9(02).
000410 77  WK-LEAPYEAR          PIC  9(01).
000420 77  WK-SYOU              PIC  9(06).
000430 77  WK-AMARI             PIC  9(06).
000440*
000450 LINKAGE SECTION.
000460 77  PM-TIME-NUM          USAGE IS COMP-2.
000470 77  PM-TIME-STR          PIC  X(20).
000480*
000490 PROCEDURE DIVISION  USING  PM-TIME-NUM  PM-TIME-STR.
000500 START-PROC.
000510*    Ȍꍇ̏
000520     IF  PM-TIME-NUM = 0
000530         THEN  MOVE  "----/--/-- --:--:--"  TO  WK-DATETIME
000540               GO TO  END-PROC
000550     END-IF.
000560*
000570*    ̕btƎԂɕ
000580     DIVIDE  86400  INTO  PM-TIME-NUM
000590                    GIVING  WK-DATE
000600                    REMAINDER  WK-TIME.
000610*
000620*********************************
000630*    ɂ̌vZ               *
000640*********************************
000650* N̎Zo
000660 CALC-YEAR.
000670     MOVE  1970  TO  WK-YEAR.
000680     PERFORM  TEST  BEFORE  UNTIL  WK-DATE < 365
000690*        [N̔ (WK-LEAPYEAR = 1 : [N)
000700         DIVIDE  4  INTO  WK-YEAR
000710                    GIVING  WK-SYOU
000720                    REMAINDER  WK-AMARI
000730         IF  WK-AMARI = 0
000740             THEN  DIVIDE  100  INTO  WK-YEAR
000750                                GIVING  WK-SYOU
000760                                REMAINDER  WK-AMARI
000770                   IF  WK-AMARI = 0
000780                       THEN  DIVIDE  400  INTO  WK-YEAR
000790                                     GIVING  WK-SYOU
000800                                     REMAINDER  WK-AMARI
000810                             IF  WK-AMARI = 0
000820                                 THEN  MOVE  1  TO  WK-LEAPYEAR
000830                                 ELSE  MOVE  0  TO  WK-LEAPYEAR
000840                       ELSE  MOVE  1  TO  WK-LEAPYEAR
000850                   END-IF
000860             ELSE  MOVE  0  TO  WK-LEAPYEAR
000870         END-IF
000880*        PN̓ĔNPグ
000890         IF  WK-LEAPYEAR = 1
000900             THEN  COMPUTE  WK-DATE  =  WK-DATE  -  366
000910             ELSE  COMPUTE  WK-DATE  =  WK-DATE  -  365
000920         END-IF
000930         COMPUTE  WK-YEAR  =  WK-YEAR  +  1
000940     END-PERFORM.
000950*
000960* ̎Zo
000970 CALC-MONTH.
000980     MOVE  1  TO  WK-MONTH.
000990     PERFORM  TEST  BEFORE  UNTIL  WK-MONTH > 13
001000         EVALUATE  WK-MONTH
001010             WHEN   1  MOVE  31  TO  WK-DAY-OF-MONTH
001020             WHEN   2  MOVE  28  TO  WK-DAY-OF-MONTH
001030             WHEN   3  MOVE  31  TO  WK-DAY-OF-MONTH
001040             WHEN   4  MOVE  30  TO  WK-DAY-OF-MONTH
001050             WHEN   5  MOVE  31  TO  WK-DAY-OF-MONTH
001060             WHEN   6  MOVE  30  TO  WK-DAY-OF-MONTH
001070             WHEN   7  MOVE  31  TO  WK-DAY-OF-MONTH
001080             WHEN   8  MOVE  31  TO  WK-DAY-OF-MONTH
001090             WHEN   9  MOVE  30  TO  WK-DAY-OF-MONTH
001100             WHEN  10  MOVE  31  TO  WK-DAY-OF-MONTH
001110             WHEN  11  MOVE  30  TO  WK-DAY-OF-MONTH
001120         END-EVALUATE
001130*        [N̏ꍇAQQXɂ
001140         IF  WK-MONTH = 2
001150             THEN  IF  WK-LEAPYEAR = 1
001160                       THEN  MOVE  29  TO  WK-DATE
001170                   END-IF
001180         END-IF
001190*
001200         IF  WK-DATE < WK-DAY-OF-MONTH
001210             THEN  GO TO  CALC-DAY
001220             ELSE  COMPUTE  WK-DATE   =  WK-DATE   -  WK-DAY-OF-MONTH
001230                   COMPUTE  WK-MONTH  =  WK-MONTH  +  1
001240         END-IF
001250     END-PERFORM.
001260*
001270* ɂ̑
001280 CALC-DAY.
001290*     MOVE  WK-DATE  TO  WK-DAY.
            COMPUTE  WK-DAY   =  WK-DATE.
001300*
001310*********************************
001320*    Ԃ̌vZ                 *
001330*********************************
001340* b̌vZ
001350 CALC-SECOND.
001360     DIVIDE  60  INTO  WK-TIME
001370                 GIVING  WK-TIME
001380                 REMAINDER  WK-SECOND.
001390* ĚvZ
001400 CALC-MINUTE.
001410     DIVIDE  60  INTO  WK-TIME
001420                 GIVING  WK-HOUR
001430                 REMAINDER  WK-MINUTE.
001440* ԑ(GMT+09:00)
001450     COMPUTE  WK-HOUR  =  WK-HOUR  +  9.
001460*
001470 END-PROC.
001480     MOVE  WK-DATETIME  TO  PM-TIME-STR.
001490     EXIT PROGRAM.
