900000****************************************************************** 900100* COPY/UTIL/DATE/PROCEDURE. *020503PK 900110* PROCEDURE DIVISION COPY MODULE FOR THE DATE ROUTINES. *021123PK 900180******************************************************************980601PK 900181* *980601PK 900182* Copyright (C) 1989-2002: *021123PK 900183* Paradigm Corporation *021123PK 900184* 9625 Black Mountain Road, Suite 218 *021123PK 900185* San Diego, California 92126-4598 USA *021123PK 900186* voice +1-858-536-5533; fax 858-536-5545 *021123PK 900187* http://www.digm.com *021123PK 900188* *021123PK 900189* This material may be copied and used for any purpose *021101PK 900190* providing this copyright notice is preserved and that *021101PK 900191* appropriate credit is given. *021101PK 900192* *021101PK 900193* This material is offered AS-IS WITH NO WARRANTY. *021101PK 900194* Paradigm hereby disclaims all warranties respecting this *021101PK 900195* material, expressed or implied, including without limita- *021101PK 900196* tion warranty of design, merchantability, fitness for a *021101PK 900197* particular purpose and against infringement. *021101PK 900198* *980601PK 900200******************************************************************980601PK 900205* *021123PK 900210* Q100-KDAY. *900122PK 900215* Q102-KDATE. *900122PK 900220* Q110-READ-SYSTEM-DATE. *900122PK 900222* Q112-READ-SYSTEM-TIME. *951213PK 900224* Q114-READ-SYSTEM-TIMESTAMP. *951213PK 900226* Q116-READ-SYSTEM-TIMER. *011206PK 900230* Q120-INCREMENT-DATE. *900122PK 900235* Q122-DELTA-DATE. *900122PK 900240* Q124-WEEK-DAY. *900122PK 900250* Q130-YYMMDD-MMDDYY. *900122PK 900255* Q132-MMDDYY-YYMMDD. *900122PK 900260* Q134-VALIDATE-DATE. *900122PK 900265* Q136-NORMALIZE-DATE. *900122PK 900266* Q137-NORMALIZE-MONDAY. *930824PK 900270* Q140-DEDUCE-CENTURY. *900122PK 900275* Q142-DEDUCE-YEAR. *900122PK 900290* Q150-FORMAT-MMDDYYYY. *900124PK 900291* Q151-FORMAT-YYYYMMDD. *980601PK 900292* Q152-FORMAT-DDMMMYYYY. *980601PK 900295* Q160-TIME-6-TIMESTAMP. *951213PK 900297* Q162-DATETIME-TIMESTAMP. *970815PK 900298* Q163-TIMESTAMP-DATETIME. *970815PK 900300* Q170-INCREMENT-MINUTES. *020610PK 900302* Q172-DELTA-MINUTES. *020610PK 900490* *021123PK 900500******************************************************************020610PK 900502* 2002-05-03 P.KIMPEL 020610PK 900504* ORIGINAL VERSION, CLONED FROM SCPD CPY/LIB/DATE/PROCEDURE. 020610PK 900510* 2002-06-10 P.KIMPEL 020610PK 900511* ADD Q170-INCREMENT-MINUTES, Q172-DELTA-MINUTES. 020610PK 900520* 2002-07-08 P.KIMPEL 020708PK 900521* IMPLEMENT MORE EFFICIENT DATE VALIDATION ALGORITHM; REPLACE 020708PK 900522* W-TRUE AND W-FALSE BY 1 AND ZERO, RESPECTIVELY. 020708PK 900530* 2002-11-23 P.KIMPEL 021123PK 900531* REMOVE OBSOLETE FISCAL YEAR ROUTINES. 021123PK 910000******************************************************************900122PK 910040 Q100-KDAY. 891220PK 910060* CONVERTS THE GREGORIAN DATE (YYYYMMDD) IN WDA-IN-DATE TO 910080* A JULIAN DAY NUMBER, LEAVING THE RESULT IN WDA-JULIAN. 910100* ADAPTED FROM CACM ALGORITHM 199, R.G. TANTZEN, COMM. ACM., 910120* VOL.8, AUG.1963, P.444. 910140* NOTE THAT THE DIVISIONS MUST BE DONE IN SEPARATE STATEMENTS 910160* TO GET INTEGER TRUNCATION. 910180 910200 IF WDA-IN-YY < 100 980601PK 910220 PERFORM Q140-DEDUCE-CENTURY THRU Q140-EXIT 980601PK 910230 COMPUTE WDA-WORK-YY = WDA-OUT-YY - WDA-YEAR-BASIS 980601PK 910240 ELSE 910260 COMPUTE WDA-WORK-YY = WDA-IN-YY - WDA-YEAR-BASIS. 900727PK 910270 980601PK 910280 IF WDA-IN-MM > 2 910300 COMPUTE WDA-WORK-MM = WDA-IN-MM - 3 910320 ELSE 910340 COMPUTE WDA-WORK-MM = WDA-IN-MM + 9 910360 SUBTRACT 1 FROM WDA-WORK-YY. 910370 980601PK 910380 COMPUTE WDA-JULIAN = (1461 * WDA-WORK-YY) / 4. 910400 COMPUTE WDA-JULIAN = 910420 WDA-JULIAN + (153 * WDA-WORK-MM + 2) / 5. 951219PK 910440 ADD WDA-IN-DD TO WDA-JULIAN. 910460 891220PK 910480 Q100-EXIT. 891220PK 910500 EXIT. 910520 910540****************************************************************** 910560 Q102-KDATE. 891220PK 910580* CONVERTS THE JULIAN DAY NUMBER IN WDA-JULIAN TO A GREGORIAN 910600* DATE (YYYYMMDD), LEAVING THE RESULT IN WDA-OUT-DATE. 910620* ADAPTED FROM CACM ALGORITHM 199, R.G. TANTZEN, COMM. ACM., 910640* VOL.8, AUG.1963, P.444. 910660 910680 COMPUTE WDA-WORK-YY = (4 * WDA-JULIAN - 1) / 1461. 910700 COMPUTE WDA-WORK-DAY = 910720 (4 * WDA-JULIAN - 1 - 1461 * WDA-WORK-YY + 4) / 4. 910740 COMPUTE WDA-WORK-MM = (5 * WDA-WORK-DAY - 3) / 153. 910760 COMPUTE WDA-OUT-DD = 910780 (5 * WDA-WORK-DAY - 3 - 153 * WDA-WORK-MM + 5) / 5. 910800 IF WDA-WORK-MM < 10 910820 COMPUTE WDA-OUT-MM = WDA-WORK-MM + 3 910840 COMPUTE WDA-OUT-YY = WDA-WORK-YY + WDA-YEAR-BASIS 910860 ELSE 910880 COMPUTE WDA-OUT-MM = WDA-WORK-MM - 9 910900 COMPUTE WDA-OUT-YY = WDA-WORK-YY + WDA-YEAR-BASIS + 1. 910920 891220PK 910940 Q102-EXIT. 891220PK 910960 EXIT. 915000 891220PK 915020******************************************************************891220PK 915040 Q110-READ-SYSTEM-DATE. 891220PK 915060* READS THE SYSTEM DATE INTO WDA-SYS-DATE. 891220PK 915080 891220PK 915100 ACCEPT WDA-SYS-DATE FROM DATE. 980601PK 915140 ADD WDA-YEAR-BASIS TO WDA-SYS-YY. 900112PK 915160 IF WDA-SYS-YY < 1998 980601PK 915180 ADD 100 TO WDA-SYS-YY. 891220PK 915200 891220PK 915220 Q110-EXIT. 891220PK 915240 EXIT. 891220PK 915260 891220PK 915280******************************************************************891220PK 915300 Q112-READ-SYSTEM-TIME. 891220PK 915320* READS THE SYSTEM TIME INTO WDA-SYS-TIME. 891220PK 915340 891220PK 915360 ACCEPT WDA-SYS-TIME FROM TIME. 891220PK 915380 891220PK 915400 Q112-EXIT. 891220PK 915420 EXIT. 891220PK 915440 951213PK 915460******************************************************************951213PK 915480 Q114-READ-SYSTEM-TIMESTAMP. 951213PK 915500* READS THE SYSTEM DATE AND TIME, FORMATTING A TIMESTAMP IN 951213PK 915520* SECONDS SINCE 00:00:00 ON 1970-01-01 IN WDA-TIMESTAMP-OUT. 951213PK 915540 951213PK 915560 PERFORM Q110-READ-SYSTEM-DATE THRU Q110-EXIT. 951213PK 915580 PERFORM Q112-READ-SYSTEM-TIME THRU Q112-EXIT. 951213PK 915600 MOVE WDA-SYS-TIME TO WDA-TIME-IN. 970815PK 915620 MOVE WDA-SYS-DATE TO WDA-IN-DATE. 970815PK 915640 PERFORM Q162-DATETIME-TIMESTAMP THRU Q162-EXIT. 970815PK 915720 951213PK 915740 Q114-EXIT. 951213PK 915760 EXIT. 951213PK 915780 011206PK 915800******************************************************************011206PK 915820 Q116-READ-SYSTEM-TIMER. 011206PK 915840* READS THE SYSTEM TIMER (2.4 MICROSEC CLOCK) AND COMPUTES 011206PK 915860* WDA-SYS-TIME-OF-DAY (IN SECONDS) AND WDA-SYS-TIMESTAMP 011206PK 915880* (SECONDS SINCE 1970-01-01). ASSUMES TIMESTAMP OF THE PRIOR 011206PK 915900* MIDNIGHT HAS BEEN SET UP IN WDA-BOD-TIMESTAMP. THIS IS MUCH 011206PK 915920* FASTER AND MORE PRECISE THAN CALLING Q114. 011206PK 915940 011206PK 915960 ACCEPT WDA-SYS-TIMER FROM TIMER. 011206PK 915980 COMPUTE WDA-SYS-TOD = WDA-SYS-TIMER * WDA-SEC-PER-TICK. 011206PK 916020 COMPUTE WDA-SYS-TIMESTAMP = WDA-SYS-TOD + WDA-BOD-TIMESTAMP. 011206PK 916060 011206PK 916080 Q116-EXIT. 011206PK 916100 EXIT. 011206PK 920000 920020****************************************************************** 920040 Q120-INCREMENT-DATE. 920060* ADDS WDA-INCREMENT DAYS TO THE GREGORIAN DATE (YYMMDD) IN 920080* WDA-IN-DATE, LEAVING THE RESULTANT GREGORIAN DATE IN 920100* WDA-OUT-DATE. 920120 920140 PERFORM Q100-KDAY THRU Q100-EXIT. 891220PK 920160 ADD WDA-INCREMENT TO WDA-JULIAN. 920180 PERFORM Q102-KDATE THRU Q102-EXIT. 891220PK 920200 891220PK 920220 Q120-EXIT. 920240 EXIT. 920260 920280****************************************************************** 920300 Q122-DELTA-DATE. 891220PK 920320* COMPUTES THE NUMBER OF DAYS BETWEEN TWO GREGORIAN DATES. 920340* ON ENTRY, ONE DATE IS IN WDA-IN-DATE AND THE OTHER IS IN 920360* WDA-OUT-DATE. ON EXIT, THE NUMBER OF DAYS BETWEEN THE 920380* TWO DATES IS STORED IN WDA-INCREMENT. IF WDA-IN-DATE IS 920400* LATER THAN WDA-OUT-DATE, WDA-INCREMENT WILL BE NEGATIVE. 920420 920440 MOVE WDA-IN-DATE TO WDA-SAVE-DATE. 920460 MOVE WDA-OUT-DATE TO WDA-IN-DATE. 920480 PERFORM Q100-KDAY THRU Q100-EXIT. 891220PK 920500 MOVE WDA-JULIAN TO WDA-INCREMENT. 920520 MOVE WDA-SAVE-DATE TO WDA-IN-DATE. 920540 PERFORM Q100-KDAY THRU Q100-EXIT. 891220PK 920560 SUBTRACT WDA-JULIAN FROM WDA-INCREMENT. 920580 891220PK 920600 Q122-EXIT. 891220PK 920620 EXIT. 920640 920660****************************************************************** 920680 Q124-WEEK-DAY. 891220PK 920700* COMPUTES THE DAY-OF-WEEK (DOW) FROM WDA-DATE-IN (YYMMDD) 920720* AND PLACES THE RESULT IN WDA-WEEK-DAY (1=SUN, 7=SAT). 920740 920760 PERFORM Q100-KDAY THRU Q100-EXIT. 891220PK 920780 COMPUTE WDA-WORK-DAY = WDA-JULIAN + 3. 920800 DIVIDE WDA-WORK-DAY BY 7 GIVING WDA-WORK-DAY 980601PK 920820 REMAINDER WDA-WEEK-DAY. 920840 ADD 1 TO WDA-WEEK-DAY. 920860 891220PK 920880 Q124-EXIT. 891220PK 920900 EXIT. 930000 930020****************************************************************** 930040 Q130-YYMMDD-MMDDYY. 891220PK 930060* CONVERTS THE GREGORIAN DATE IN WDA-IN-DATE FROM YYYYMMDD TO 891220PK 930080* MMDDYY FORMAT, LEAVING THE RESULT IN WDA-OUT-DATE. 930100 930120 MOVE WDA-IN-YY TO WDA-OUT-DD. 900727PK 930140 MOVE WDA-IN-MM TO WDA-OUT-YY. 930160 MOVE WDA-IN-DD TO WDA-OUT-MM. 930180 891220PK 930200 Q130-EXIT. 891220PK 930220 EXIT. 930240 930260****************************************************************** 930280 Q132-MMDDYY-YYMMDD. 891220PK 930300* CONVERTS THE GREGORIAN DATE IN WDA-IN-DATE FROM MMDDYY TO 930320* YYYYMMDD FORMAT, LEAVING THE RESULT IN WDA-OUT-DATE. 891220PK 930322 900727PK 930324 IF WDA-IN-DATE = ZERO 900727PK 930326 MOVE ZERO TO WDA-OUT-DATE 900727PK 930328 GO TO Q132-EXIT. 900727PK 930340 930360 MOVE WDA-IN-DATE TO WDA-SAVE-DATE. 891220PK 930380 MOVE WDA-SAVE-YY TO WDA-IN-MM. 891220PK 930400 MOVE WDA-SAVE-MM TO WDA-IN-DD. 891220PK 930420 MOVE WDA-SAVE-DD TO WDA-IN-YY. 900727PK 930440 PERFORM Q140-DEDUCE-CENTURY THRU Q140-EXIT. 891220PK 930460 MOVE WDA-SAVE-DATE TO WDA-IN-DATE. 891220PK 930480 891220PK 930500 Q132-EXIT. 891220PK 930520 EXIT. 930540 930560****************************************************************** 930580 Q134-VALIDATE-DATE. 891220PK 930600* EDITS THE DATE IN WDA-IN-DATE FOR VALID MONTH AND DAY 930620* VALUES. IF THE DATE IS VALID, WDA-VALID-DATE WILL HAVE A 930640* VALUE OF 1, OTHERWISE IT WILL HAVE A VALUE OF ZERO. 930660* AN INPUT VALUE OF ZERO IS CONSIDERED TO BE A VALID DATE. 891220PK 930680 930700 IF WDA-IN-DATE = ZERO 930710 MOVE 1 TO WDA-VALID-DATE 020708PK 930720 GO TO Q134-EXIT 020708PK 930730 ELSE 020708PK 930740 IF WDA-IN-DATE NOT < WDA-MIN-DATE AND 020708PK 930750 WDA-IN-DATE NOT > WDA-MAX-DATE 020708PK 930760 IF WDA-IN-MM > ZERO 020708PK 930770 IF WDA-IN-MM NOT > 12 020708PK 930780 IF WDA-IN-DD > ZERO 020708PK 930790 IF WDA-IN-DD NOT > 28 020708PK 930800 MOVE 1 TO WDA-VALID-DATE 020708PK 930810 GO TO Q134-EXIT 020708PK 930820 ELSE 020708PK 930830 PERFORM Q100-KDAY THRU Q100-EXIT 020708PK 930840 PERFORM Q102-KDATE THRU Q102-EXIT 020708PK 930850 IF WDA-IN-DATE = WDA-OUT-DATE 020708PK 930860 MOVE 1 TO WDA-VALID-DATE 020708PK 930870 GO TO Q134-EXIT. 020708PK 930980 020708PK 930990 MOVE ZERO TO WDA-VALID-DATE. 020708PK 931000 931020 Q134-EXIT. 891220PK 931040 EXIT. 931092 980601PK 931094******************************************************************980601PK 931100 Q136-NORMALIZE-DATE. 891220PK 931120* NORMALIZES THE DATE IN WDA-IN-DATE TO WDA-OUT-DATE BY 931140* ASSURING THAT THE DAY AND MONTH FIELDS HAVE REASONABLE 931160* VALUES. 931180 931182 IF WDA-IN-YYMMDD = ZERO 900727PK 931184 MOVE ZERO TO WDA-OUT-DATE 900719PK 931186 GO TO Q136-EXIT. 900719PK 931188 900719PK 931200 MOVE WDA-IN-DATE TO WDA-OUT-DATE. 931220 IF WDA-OUT-DD < 1 931240 MOVE 1 TO WDA-OUT-DD 931260 ELSE 931280 IF WDA-OUT-DD > 31 931300 MOVE 1 TO WDA-OUT-DD 931320 ADD 1 TO WDA-OUT-MM. 931340 931360 IF WDA-OUT-MM > 12 931380 MOVE 1 TO WDA-OUT-MM 931400 MOVE 1 TO WDA-OUT-DD 931420 ADD 1 TO WDA-OUT-YY 931440 GO TO Q136-EXIT 891220PK 931460 ELSE 931480 IF WDA-OUT-MM < 1 931500 MOVE 1 TO WDA-OUT-MM. 931520 931540 MOVE WDA-IN-DATE TO WDA-SAVE-DATE. 931560 MOVE WDA-OUT-DATE TO WDA-IN-DATE. 931580 PERFORM Q100-KDAY THRU Q100-EXIT. 891220PK 931600 PERFORM Q102-KDATE THRU Q102-EXIT. 891220PK 931620 MOVE WDA-SAVE-DATE TO WDA-IN-DATE. 931640 931660 Q136-EXIT. 891220PK 931680 EXIT. 931700 930824PK 931800******************************************************************930824PK 931900 Q137-NORMALIZE-MONDAY. 930824PK 932000* NORMALIZES THE DATE IN WDA-IN-DATE TO A MONDAY DATE, LEAVING 930824PK 932100* THE RESULT IN WDA-OUT-DATE. IF THE INPUT DATE IS MONDAY, 930824PK 932200* THEN THAT DATE IS RETURNED. OTHERWISE, THE PRIOR MONDAY 930824PK 932300* DATE IS RETURNED. NOTE THAT THIS ROUTINE CONSIDERS A 930824PK 932400* SUNDAY TO END A WEEK, NOT BEGIN ONE, WHICH IS DIFFERENT THAN 930824PK 932500* THE CONVENTION USED WITH STANDARD CALENDARS. 930824PK 932600 930824PK 932700 PERFORM Q124-WEEK-DAY THRU Q124-EXIT. 930824PK 932800 IF WDA-WEEK-DAY = WDA-MONDAY 930824PK 932900 MOVE WDA-IN-DATE TO WDA-OUT-DATE 930824PK 933000 GO TO Q137-EXIT. 930824PK 933100 930824PK 933200 IF WDA-WEEK-DAY = WDA-SUNDAY 930824PK 933300 MOVE -6 TO WDA-INCREMENT 930824PK 933400 ELSE 930824PK 933500 COMPUTE WDA-INCREMENT = WDA-MONDAY - WDA-WEEK-DAY. 930824PK 933600 930824PK 933700 PERFORM Q120-INCREMENT-DATE THRU Q120-EXIT. 930824PK 933800 930824PK 933900 Q137-EXIT. 930824PK 934000 EXIT. 930824PK 940000 891220PK 940020****************************************************************** 940040 Q140-DEDUCE-CENTURY. 891220PK 940060* DETERMINES THE CENTURY FOR THE YYMMDD DATE IN WDA-IN-DATE, 891220PK 940080* LEAVING THE RESULT IN WDA-OUT-DATE. 980601PK 940120 891220PK 940140 MOVE WDA-IN-DATE TO WDA-OUT-DATE. 891220PK 940160 IF WDA-IN-YY < 100 900727PK 940180 ADD WDA-YEAR-BASIS TO WDA-OUT-YY 900112PK 940190 PERFORM Q110-READ-SYSTEM-DATE THRU Q110-EXIT 980601PK 940200 COMPUTE WDA-INCREMENT = WDA-SYS-YY - WDA-OUT-YY 891220PK 940220 IF WDA-INCREMENT > WDA-CENTURY-BIAS 900727PK 940240 ADD 100 TO WDA-OUT-YY. 891220PK 940260 891220PK 940280 Q140-EXIT. 891220PK 940300 EXIT. 891220PK 940320 891220PK 940340******************************************************************891220PK 940360 Q142-DEDUCE-YEAR. 891220PK 940380* GIVEN A 4-DIGIT DATE IN 0000MMDD FORMAT IN WDA-IN-DATE, THIS 891220PK 940400* PROCEDURE DETERMINES THE YEAR, AND RETURNS A FULL YYYYMMDD 891220PK 940420* DATE IN WDA-OUT-DATE. 980601PK 940440 980601PK 940460 PERFORM Q110-READ-SYSTEM-DATE THRU Q110-EXIT. 980601PK 940480 MOVE WDA-IN-DATE TO WDA-OUT-DATE. 891220PK 940500 IF WDA-SYS-MM > WDA-IN-MM 900706PK 940520 IF WDA-SYS-MM - WDA-IN-MM < 7 900706PK 940540 MOVE WDA-SYS-YY TO WDA-OUT-YY 891220PK 940560 ELSE 891220PK 940580 COMPUTE WDA-OUT-YY = WDA-SYS-YY + 1 900706PK 940600 ELSE 891220PK 940620 IF WDA-IN-MM - WDA-SYS-MM < 7 900706PK 940640 MOVE WDA-SYS-YY TO WDA-OUT-YY 900706PK 940660 ELSE 891220PK 940680 COMPUTE WDA-OUT-YY = WDA-SYS-YY - 1. 940700 891220PK 940720 Q142-EXIT. 891220PK 940740 EXIT. 950000 900124PK 950100******************************************************************900124PK 950200 Q150-FORMAT-MMDDYYYY. 900124PK 950300* FORMATS THE DATE IN WDA-IN-DATE TO WDA-MM-DD-YYYY IN THE 900124PK 950400* FORMAT MM/DD/YYYY. 900124PK 950500 900124PK 950600 MOVE WDA-IN-MM TO WDA-MDY-MM. 900124PK 950700 MOVE WDA-IN-DD TO WDA-MDY-DD. 900124PK 950800 MOVE WDA-IN-YY TO WDA-MDY-YYYY. 900727PK 950900 MOVE "/" TO WDA-MDY-D1, WDA-MDY-D2. 900124PK 951000 900124PK 951100 Q150-EXIT. 900124PK 951200 EXIT. 900124PK 951300 980601PK 951400******************************************************************980601PK 951500 Q151-FORMAT-YYYYMMDD. 980601PK 951600* FORMATS THE DATE IN WDA-IN-DATE TO WDA-YYYY-MM-DD IN THE 980601PK 951700* FORMAT YYYY-MM-DD (ISO 8601:1998 FORMAT). 980601PK 951800 980601PK 951900 MOVE WDA-IN-YY TO WDA-YMD-YYYY. 980601PK 952000 MOVE WDA-IN-MM TO WDA-YMD-MM. 980601PK 952100 MOVE WDA-IN-DD TO WDA-YMD-DD. 980601PK 952200 MOVE "-" TO WDA-YMD-D1, WDA-YMD-D2. 980601PK 952300 980601PK 952400 Q151-EXIT. 980601PK 952500 EXIT. 980601PK 952600 980601PK 952700******************************************************************980601PK 952800 Q152-FORMAT-DDMMMYYYY. 980601PK 952900* FORMATS THE DATE IN WDA-IN-DATE TO WDA-DD-MMM-YYYY IN THE 980601PK 953000* FORMAT DD MMM YYYY. 980601PK 953100 980601PK 953200 MOVE WDA-IN-DD TO WDA-DMY-DD. 980601PK 953300 MOVE WDA-IN-YY TO WDA-DMY-YYYY. 980601PK 953400 MOVE SPACE TO WDA-DMY-D1, WDA-DMY-D2. 980601PK 953500 IF WDA-IN-MM < 1 980601PK 953600 MOVE "*0*" TO WDA-DMY-MMM 980601PK 953700 ELSE IF WDA-IN-MM > 12 980601PK 953800 MOVE WDA-IN-MM TO WDA-DMY-MMM 980601PK 953900 ELSE 980601PK 954000 MOVE WDA-MONTH-NAME-3 (WDA-IN-MM) TO WDA-DMY-MMM. 980601PK 954100 980601PK 954200 Q152-EXIT. 980601PK 954300 EXIT. 980601PK 960000 951213PK 960100******************************************************************951213PK 960200 Q160-TIME-6-TIMESTAMP. 951213PK 960300* CONVERTS WDA-TIME-6-IN TO A TIMESTAMP IN SECONDS SINCE 951213PK 960400* 00:00:00 ON 1970-01-01, LEAVING RESULT IN WDA-TIMESTAMP-OUT. 951213PK 960500 951213PK 960600 MOVE ZERO TO WDA-TIME-6-DATE, WDA-TIME-6-TIME. 951213PK 960700 MOVE WDA-TIME-6-IN TO WDA-TIME-6-DATE [47:15:16]. 951213PK 960800 MOVE WDA-TIME-6-IN TO WDA-TIME-6-TIME [31:31:32]. 951213PK 960900 DIVIDE WDA-TIME-6-DATE BY 1000 GIVING WDA-TIME-6-YEAR 951213PK 961000 REMAINDER WDA-TIME-6-DAY. 951213PK 961100 MOVE 19691231 TO WDA-IN-DATE. 951213PK 961200 ADD WDA-TIME-6-YEAR TO WDA-IN-YY. 951213PK 961300 PERFORM Q100-KDAY THRU Q100-EXIT. 951213PK 961400 ADD WDA-JULIAN TO WDA-TIME-6-DAY. 951213PK 961500 MOVE 19700101 TO WDA-IN-DATE. 951213PK 961600 PERFORM Q100-KDAY THRU Q100-EXIT. 951213PK 961700 SUBTRACT WDA-JULIAN FROM WDA-TIME-6-DAY. 951219PK 961800 951219PK 961900 COMPUTE WDA-TIMESTAMP-OUT = 951219PK 962000 (WDA-TIME-6-DAY * WDA-SEC-PER-DAY) + 011206PK 962100 (WDA-TIME-6-TIME * WDA-TIME-6-FACTOR). 951219PK 962200 951213PK 962300 Q160-EXIT. 951219PK 962400 EXIT. 951213PK 963000 970815PK 963100******************************************************************970815PK 963200 Q162-DATETIME-TIMESTAMP. 970815PK 963300* CONVERTS WDA-IN-DATE AND WDA-TIME-IN TO A TIMESTAMP IN 970815PK 963400* SECONDS SINCE 00:00:00 ON 1970-01-01 IN WDA-TIMESTAMP-OUT. 970815PK 963500 970815PK 963600 MOVE 19700101 TO WDA-OUT-DATE. 970815PK 963700 PERFORM Q122-DELTA-DATE THRU Q122-EXIT. 970815PK 963800 COMPUTE WDA-TIMESTAMP-OUT = 970815PK 963900 ((WDA-TIME-IN-HOUR - (WDA-INCREMENT * 24)) * 60 + 970815PK 964000 WDA-TIME-IN-MINUTE) * 60 + WDA-TIME-IN-SECOND. 970815PK 964100 970815PK 964200 Q162-EXIT. 970815PK 964300 EXIT. 970815PK 964400 970815PK 964500******************************************************************970815PK 964600 Q163-TIMESTAMP-DATETIME. 970815PK 964700* CONVERTS THE TIMESTAMP (SINCE 00:00:00 ON 1970-01-01) IN 970815PK 964800* WDA-TIMESTAMP-IN TO WDA-OUT-DATE AND WDA-TIME-OUT. 970815PK 964900 970815PK 965000 DIVIDE WDA-TIMESTAMP-IN BY 60 GIVING WDA-TIME-6-DATE 970815PK 965100 REMAINDER WDA-TIME-OUT-SECOND. 970815PK 965200 DIVIDE WDA-TIME-6-DATE BY 60 GIVING WDA-TIME-6-DATE 970815PK 965300 REMAINDER WDA-TIME-OUT-MINUTE. 970815PK 965400 DIVIDE WDA-TIME-6-DATE BY 24 GIVING WDA-INCREMENT 970815PK 965500 REMAINDER WDA-TIME-OUT-HOUR. 970815PK 965600 MOVE 19700101 TO WDA-IN-DATE. 970815PK 965700 PERFORM Q120-INCREMENT-DATE THRU Q120-EXIT. 970815PK 965800 970815PK 965900 Q163-EXIT. 970815PK 966000 EXIT. 970815PK 970000 020610PK 970100******************************************************************020610PK 970200 Q170-INCREMENT-MINUTES. 020610PK 970300* ADDS WDA-INCREMENT TO WDA-TIME-IN RETURNING A NEW TIME IN 020610PK 970400* WDA-TIME-OUT. WDA-INCREMENT MAY BE NEGATIVE, BUT THE CHANGE 020610PK 970500* MUST BE WITHIN THE SAME 24-HOUR DAY (NO DAY-TO-DAY OVERLAP). 020610PK 970600 020610PK 970700 MOVE WDA-TIME-IN TO WDA-TIME-OUT. 020610PK 970800 COMPUTE WDA-WORK-DAY = WDA-TIME-IN-HOUR * 60 + 020610PK 970900 WDA-TIME-IN-MINUTE + WDA-INCREMENT. 020610PK 971000 DIVIDE WDA-WORK-DAY BY 60 GIVING WDA-TIME-IN-HOUR 020610PK 971100 REMAINDER WDA-TIME-IN-MINUTE. 020610PK 971200 020610PK 971300 Q170-EXIT. 020610PK 971400 EXIT. 020610PK 972000 020610PK 972100******************************************************************020610PK 972200 Q172-DELTA-MINUTES. 020610PK 972300* COMPUTES THE NUMBER OF MINUTES BETWEEN WDA-TIME-IN AND 020610PK 972400* WDA-TIME-OUT, RETURNING THE RESULT IN WDA-INCREMENT. IF 020610PK 972500* WDA-TIME-IN IS LATER THAN WDA-TIME-OUT, WDA-INCREMENT WILL 020610PK 972600* BE NEGATIVE. 020610PK 972700 020610PK 972800 COMPUTE WDA-INCREMENT = 020610PK 972900 WDA-TIME-OUT-HOUR * 60 + WDA-TIME-OUT-MINUTE - 020610PK 973000 WDA-TIME-IN-HOUR * 60 - WDA-TIME-IN-MINUTE. 020610PK 973100 020610PK 973200 Q172-EXIT. 020610PK 973300 EXIT. 020610PK