IDENTIFICATIONDIVISION. * PROGRAM-ID. DATET. * DATE-WRITTEN. 04/10/89. * * MODIFIED 12/26/95. * 07/31/97. * 10/18/97. * * ******************************* * * * * * Judson D. McClendon * * * Sun Valley Systems * * * 329 37th Court N.E. * * * Birmingham, AL 35215 * * * 205-853-8440 * * * * * ******************************* * ENVIRONMENTDIVISION. * CONFIGURATIONSECTION. * INPUT-OUTPUTSECTION. * FILE-CONTROL. * I-O-CONTROL. * DATADIVISION. * FILESECTION. * WORKING-STORAGESECTION. * ****************************************************************** * * * 7 7 ' S * * * ****************************************************************** * 77 WS-ANSWER PIC X(01) VALUESPACE. 77 WS-ESCAPE-FLAG PIC9(01) VALUE0. * ****************************************************************** * * * S C R E E N H O L D A R E A * * * ****************************************************************** * 01 SCREEN-HOLD-AREA. 03 SH-EDIT-DATE PIC X(08) VALUESPACES. * 03 SH-WORK-MMDDYYYY PIC9(08) VALUE0. 03 SH-WORK-MMDDYYYY-ALPHA REDEFINES SH-WORK-MMDDYYYY. 05 SH-WORK-MONTH PIC9(02). 05 SH-WORK-DAY PIC9(02). 05 SH-WORK-YEAR PIC9(04). * 03 SH-WORK-YYYYMMDD PIC9(08) VALUE0. 03 SH-WORK-YYYYMMDD-ALPHA REDEFINES SH-WORK-YYYYMMDD. 05 SH-WORK-YYYY PIC9(04). 05 SH-WORK-MM PIC9(02). 05 SH-WORK-DD PIC9(02). * 03 SH-JUL-DATE PIC9(07) VALUE0. 03 SH-JUL-DATE-ALPHA REDEFINES SH-JUL-DATE. 05 SH-JUL-YYYY PIC9(04). 05 SH-JUL-DDD PIC9(03). * 03 SH-BEG-YYYYMMDD PIC9(08) VALUE0. 03 SH-BEG-YYYYMMDD-ALPHA REDEFINES SH-BEG-YYYYMMDD. 05 SH-BEG-YYYY PIC9(04). 05 SH-BEG-MM PIC9(02). 05 SH-BEG-DD PIC9(02). * 03 SH-END-YYYYMMDD PIC9(08) VALUE0. 03 SH-END-YYYYMMDD-ALPHA REDEFINES SH-END-YYYYMMDD. 05 SH-END-YYYY PIC9(04). 05 SH-END-MM PIC9(02). 05 SH-END-DD PIC9(02). * 03 SH-OFFSET PIC S9(08) VALUE0. 03 SH-AGE-YEARS PIC9(04) VALUE0. 03 SH-AGE-MONTHS PIC9(02) VALUE0. 03 SH-AGE-DAYS PIC9(02) VALUE0. 03 SH-AGE-TOTDAYS PIC9(08) VALUE0. * 03 SH-YEARS PIC S9(07) VALUE0. 03 SH-MONTHS PIC S9(07) VALUE0. 03 SH-DAYS PIC S9(07) VALUE0. * 03 SH-RESULT PIC X(20) VALUESPACES. *
COPY DATEW.COB. * * * ** WEEKDAY NAMES ** * 03 DW-DAY-NAMES VALUE"SUNMONTUEWEDTHUFRISAT". 05 DW-DAY-NAME OCCURS7 TIMES PIC X(03). *
SCREEN SECTION. * * * M E N U S C R E E N * 01 MENU-SCREEN. 03BLANK SCREEN. 03LINE01COLUMN21VALUE "D A T E R O U T I N E T E S T". * 03LINE03COLUMN10VALUE"Press: A = Date Edit". 03LINE04COLUMN17VALUE"B = Date days". 03LINE05COLUMN17VALUE"C = Weekday". 03LINE06COLUMN17VALUE"D = Add Days". 03LINE07COLUMN17VALUE"E = Sub Days". 03LINE08COLUMN17VALUE"F = Add Months". 03LINE09COLUMN17VALUE"G = Sub Months". 03LINE10COLUMN17VALUE"H = Add Years". 03LINE11COLUMN17VALUE"I = Sub Years". 03LINE03COLUMN37VALUE"J = Calc Offset". 03LINE04COLUMN37VALUE"K = Compute Age". 03LINE05COLUMN37VALUE"L = Greg to Jul". 03LINE06COLUMN37VALUE"M = Jul to Greg". 03LINE07COLUMN37VALUE"N = Add Days, Business". 03LINE12COLUMN25VALUE"Esc = Exit: ". 03PIC X TO WS-ANSWER AUTO. * * * I N P U T S C R E E N S * * * G E T E D I T D A T E * 01 GET-EDIT-DATE-SCREEN. 03LINE14COLUMN10VALUE"Date (MMDDYYYY): ". 03PIC X(08) USING SH-EDIT-DATE. * * * G E T W O R K M M D D Y Y Y Y * 01 GET-WORK-MMDDYYYY-SCREEN. 03LINE14COLUMN10VALUE"Date (MM/DD/YYYY): ". 03PIC99/99/9999USING SH-WORK-MMDDYYYY. * * * G E T W O R K Y Y Y Y M M D D * 01 GET-WORK-YYYYMMDD-SCREEN. 03LINE14COLUMN10VALUE"Date (YYYY/MM/DD): ". 03PIC9999/99/99USING SH-WORK-YYYYMMDD. * * * G E T J U L Y Y Y Y D D D * 01 GET-JUL-YYYYDDD-SCREEN. 03LINE14COLUMN10VALUE"Julian Date (YYYY/DDD): ". 03PIC9999/999USING SH-JUL-DATE. * * * G E T D A T E D A Y S * 01 GET-DATE-DAYS-SCREEN. 03LINE14COLUMN10VALUE"Date (YYYY/MM/DD): ". 03PIC9999/99/99USING SH-WORK-YYYYMMDD. 03LINE16COLUMN10VALUE"Days: ". 03PIC ZZZZZZ USING SH-DAYS. * * * G E T D A T E M O N T H S * 01 GET-DATE-MONTHS-SCREEN. 03LINE14COLUMN10VALUE"Date (YYYY/MM/DD): ". 03PIC9999/99/99USING SH-WORK-YYYYMMDD. 03LINE16COLUMN10VALUE"Months: ". 03PIC ZZZZZZ USING SH-MONTHS. * * * G E T D A T E Y E A R S * 01 GET-DATE-YEARS-SCREEN. 03LINE14COLUMN10VALUE"Date (YYYY/MM/DD): ". 03PIC9999/99/99USING SH-WORK-YYYYMMDD. 03LINE16COLUMN10VALUE"Years: ". 03PIC ZZZZ USING SH-YEARS. * * * G E T D A T E O F F S E T * 01 GET-DATE-OFFSET-SCREEN. 03LINE14COLUMN10VALUE"Date (YYYY/MM/DD): ". 03PIC9999/99/99USING SH-WORK-YYYYMMDD. 03LINE16COLUMN10VALUE"Offset (ñYYYY/MM/DD): ". 03PIC -9999/99/99USING SH-OFFSET. * * * G E T B E G / E N D D A T E S * 01 GET-BEG-END-YYYYMMDD-SCREEN. 03LINE14COLUMN10VALUE"Begin Date (YYYY/MM/DD): ". 03PIC9999/99/99USING SH-BEG-YYYYMMDD. 03LINE16COLUMN10VALUE"End Date (YYYY/MM/DD): ". 03PIC9999/99/99USING SH-END-YYYYMMDD. * * * O U T P U T S C R E E N S * * * S H O W R E S U L T * 01 SHOW-RESULT-SCREEN. 03LINE18COLUMN20 PIC X(20) FROM SH-RESULT. * * * S H O W D A T E D A Y S * 01 SHOW-DATE-DAYS-SCREEN. 03LINE18COLUMN20VALUE"Date Day: ". 03PIC Z,ZZZ,ZZ9 FROM SH-DAYS. * * * S H O W N E W D A T E * 01 SHOW-NEW-DATE-SCREEN. 03LINE18COLUMN20VALUE"New Date: ". 03PIC9999/99/99FROM SH-WORK-YYYYMMDD. * * * S H O W A G E * 01 SHOW-AGE-SCREEN. 03LINE18COLUMN20VALUE"Years: ". 03PIC Z,ZZZ,ZZZ FROM SH-AGE-YEARS. 03LINE19COLUMN20VALUE"Months: ". 03PIC Z,ZZZ,ZZZ FROM SH-AGE-MONTHS. 03LINE20COLUMN20VALUE"Days: ". 03PIC Z,ZZZ,ZZZ FROM SH-AGE-DAYS. 03LINE22COLUMN20VALUE"Days Only: ". 03PIC ZZ,ZZZ,ZZZ FROM SH-AGE-TOTDAYS. * * * S H O W J U L Y Y Y Y D D D * 01 SHOW-JUL-YYYYDDD-SCREEN. 03LINE18COLUMN10VALUE"Julian Date: ". 03PIC9999/999FROM SH-JUL-DATE. * * * S H O W Y Y Y Y M M D D * 01 SHOW-YYYYMMDD-SCREEN. 03LINE18COLUMN10VALUE"Date (YYYY/MM/DD): ". 03PIC9999/99/99FROM SH-WORK-YYYYMMDD. * * * S H O W M M D D Y Y Y Y * 01 SHOW-MMDDYYYY-SCREEN. 03LINE18COLUMN10VALUE"Date (MM/DD/YYYY): ". 03PIC99/99/9999FROM SH-WORK-MMDDYYYY. * PROCEDUREDIVISION. * * * C O N T R O L * 000000-CONTROL. * PERFORM000100-PROCESS
THRU 000100-EXIT UNTIL (WS-ESCAPE-FLAG = 1). * 000000-EXIT. STOPRUN. * * * P R O C E S S * 000100-PROCESS. * MOVESPACETO WS-ANSWER. DISPLAY MENU-SCREEN. ACCEPT MENU-SCREEN ON ESCAPE MOVE1TO WS-ESCAPE-FLAG GOTO000100-EXIT. INSPECT WS-ANSWER CONVERTING"abcdefghijklmnopqrstuvwxyz" TO"ABCDEFGHIJKLMNOPQRSTUVWXYZ". * INITIALIZE SCREEN-HOLD-AREA. * IF (WS-ANSWER = "A") PERFORM010000-DATE-EDIT
THRU 010000-EXIT ELSE IF (WS-ANSWER = "B") PERFORM020000-DATE-DAYS
THRU 020000-EXIT ELSE IF (WS-ANSWER = "C") PERFORM030000-WEEKDAY
THRU 030000-EXIT ELSE IF (WS-ANSWER = "D") PERFORM040000-ADD-DAYS
THRU 040000-EXIT ELSE IF (WS-ANSWER = "E") PERFORM050000-SUBTRACT-DAYS
THRU 050000-EXIT ELSE IF (WS-ANSWER = "F") PERFORM060000-ADD-MONTHS
THRU 060000-EXIT ELSE IF (WS-ANSWER = "G") PERFORM070000-SUBTRACT-MONTHS
THRU 070000-EXIT ELSE IF (WS-ANSWER = "H") PERFORM080000-ADD-YEARS
THRU 080000-EXIT ELSE IF (WS-ANSWER = "I") PERFORM090000-SUBTRACT-YEARS
THRU 090000-EXIT ELSE IF (WS-ANSWER = "J") PERFORM100000-CALC-OFFSET
THRU 100000-EXIT ELSE IF (WS-ANSWER = "K") PERFORM110000-COMPUTE-AGE
THRU 110000-EXIT ELSE IF (WS-ANSWER = "L") PERFORM120000-GREG-JUL
THRU 120000-EXIT ELSE IF (WS-ANSWER = "M") PERFORM130000-JUL-GREG
THRU 130000-EXIT ELSE IF (WS-ANSWER = "N") PERFORM140000-ADD-DAYS-BUSINESS
THRU 140000-EXIT. * MOVE0TO WS-ESCAPE-FLAG. * 000100-EXIT. EXIT. *
COPY DATEP.COB. * * * T E S T D A T E E D I T * 010000-DATE-EDIT. * DISPLAY GET-EDIT-DATE-SCREEN. ACCEPT GET-EDIT-DATE-SCREEN ON ESCAPE GOTO010000-EXIT. * MOVE SH-EDIT-DATE TO DW-WORK-DATE-ALPHA. * PERFORM001000-DATE-EDIT
THRU 001000-EXIT. * IF (DW-DATE-ERROR-FLAG = 0) MOVE"DATE VALID"TO SH-RESULT ELSE MOVE"DATE INVALID"TO SH-RESULT. DISPLAY SHOW-RESULT-SCREEN. * GOTO010000-DATE-EDIT. * 010000-EXIT. EXIT. * * * T E S T D A T E D A Y S * 020000-DATE-DAYS. * DISPLAY GET-WORK-YYYYMMDD-SCREEN. ACCEPT GET-WORK-YYYYMMDD-SCREEN ON ESCAPE GOTO020000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. * PERFORM001100-DATE-DAYS
THRU 001100-EXIT. * MOVE DW-DAYS TO SH-DAYS. DISPLAY SHOW-DATE-DAYS-SCREEN. * GOTO020000-DATE-DAYS. * 020000-EXIT. EXIT. * * * T E S T W E E K D A Y * 030000-WEEKDAY. * DISPLAY GET-WORK-YYYYMMDD-SCREEN. ACCEPT GET-WORK-YYYYMMDD-SCREEN ON ESCAPE GOTO030000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. * PERFORM001200-WEEKDAY
THRU 001200-EXIT. * MOVE DW-DAY-NAME(DW-WEEKDAY) TO SH-RESULT. DISPLAY SHOW-RESULT-SCREEN. * GOTO030000-WEEKDAY. * 030000-EXIT. EXIT. * * * T E S T A D D D A Y S * 040000-ADD-DAYS. * DISPLAY GET-DATE-DAYS-SCREEN. ACCEPT GET-DATE-DAYS-SCREEN ON ESCAPE GOTO040000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. MOVE SH-DAYS TO DW-DAYS. * PERFORM001300-ADD-DAYS
THRU 001300-EXIT. * MOVE DW-WORK-YYYY TO SH-WORK-YYYY. MOVE DW-WORK-MM TO SH-WORK-MM. MOVE DW-WORK-DD TO SH-WORK-DD. DISPLAY SHOW-NEW-DATE-SCREEN. * GOTO040000-ADD-DAYS. * 040000-EXIT. EXIT. * * * T E S T S U B T R A C T D A Y S * 050000-SUBTRACT-DAYS. * MOVE0TO DW-DAYS. DISPLAY GET-DATE-DAYS-SCREEN. ACCEPT GET-DATE-DAYS-SCREEN ON ESCAPE GOTO050000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. MOVE SH-DAYS TO DW-DAYS. * PERFORM001400-SUBTRACT-DAYS
THRU 001400-EXIT. * MOVE DW-WORK-YYYY TO SH-WORK-YYYY. MOVE DW-WORK-MM TO SH-WORK-MM. MOVE DW-WORK-DD TO SH-WORK-DD. DISPLAY SHOW-NEW-DATE-SCREEN. * GOTO050000-SUBTRACT-DAYS. * 050000-EXIT. EXIT. * * * T E S T A D D M O N T H S * 060000-ADD-MONTHS. * DISPLAY GET-DATE-MONTHS-SCREEN. ACCEPT GET-DATE-MONTHS-SCREEN ON ESCAPE GOTO060000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. MOVE SH-MONTHS TO DW-MONTHS. * PERFORM001500-ADD-MONTHS
THRU 001500-EXIT. * MOVE DW-WORK-YYYY TO SH-WORK-YYYY. MOVE DW-WORK-MM TO SH-WORK-MM. MOVE DW-WORK-DD TO SH-WORK-DD. DISPLAY SHOW-NEW-DATE-SCREEN. * GOTO060000-ADD-MONTHS. * 060000-EXIT. EXIT. * * * T E S T S U B T R A C T M O N T H S * 070000-SUBTRACT-MONTHS. * MOVE0TO DW-MONTHS. DISPLAY GET-DATE-MONTHS-SCREEN. ACCEPT GET-DATE-MONTHS-SCREEN ON ESCAPE GOTO070000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. MOVE SH-MONTHS TO DW-MONTHS. * PERFORM001600-SUBTRACT-MONTHS
THRU 001600-EXIT. * MOVE DW-WORK-YYYY TO SH-WORK-YYYY. MOVE DW-WORK-MM TO SH-WORK-MM. MOVE DW-WORK-DD TO SH-WORK-DD. DISPLAY SHOW-NEW-DATE-SCREEN. * GOTO070000-SUBTRACT-MONTHS. * 070000-EXIT. EXIT. * * * T E S T A D D Y E A R S * 080000-ADD-YEARS. * DISPLAY GET-DATE-YEARS-SCREEN. ACCEPT GET-DATE-YEARS-SCREEN ON ESCAPE GOTO080000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. MOVE SH-YEARS TO DW-YEARS. * PERFORM001700-ADD-YEARS
THRU 001700-EXIT. * MOVE DW-WORK-YYYY TO SH-WORK-YYYY. MOVE DW-WORK-MM TO SH-WORK-MM. MOVE DW-WORK-DD TO SH-WORK-DD. DISPLAY SHOW-NEW-DATE-SCREEN. * GOTO080000-ADD-YEARS. * 080000-EXIT. EXIT. * * * T E S T S U B T R A C T Y E A R S * 090000-SUBTRACT-YEARS. * MOVE0TO DW-YEARS. DISPLAY GET-DATE-YEARS-SCREEN. ACCEPT GET-DATE-YEARS-SCREEN ON ESCAPE GOTO090000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. MOVE SH-YEARS TO DW-YEARS. * PERFORM001800-SUBTRACT-YEARS
THRU 001800-EXIT. * MOVE DW-WORK-YYYY TO SH-WORK-YYYY. MOVE DW-WORK-MM TO SH-WORK-MM. MOVE DW-WORK-DD TO SH-WORK-DD. DISPLAY SHOW-NEW-DATE-SCREEN. * GOTO090000-SUBTRACT-YEARS. * 090000-EXIT. EXIT. * * * C A L C O F F S E T * 100000-CALC-OFFSET. * DISPLAY GET-DATE-OFFSET-SCREEN. ACCEPT GET-DATE-OFFSET-SCREEN ON ESCAPE GOTO100000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. MOVE SH-OFFSET TO DW-OFFSET. * PERFORM001900-CALC-OFFSET
THRU 001900-EXIT. * MOVE DW-WORK-YYYY TO SH-WORK-YYYY. MOVE DW-WORK-MM TO SH-WORK-MM. MOVE DW-WORK-DD TO SH-WORK-DD. DISPLAY SHOW-NEW-DATE-SCREEN. * GOTO100000-CALC-OFFSET. * 100000-EXIT. EXIT. * * * T E S T C O M P U T E A G E * 110000-COMPUTE-AGE. * DISPLAY GET-BEG-END-YYYYMMDD-SCREEN. ACCEPT GET-BEG-END-YYYYMMDD-SCREEN ON ESCAPE GOTO110000-EXIT. * MOVE SH-BEG-YYYY TO DW-BEG-YYYY. MOVE SH-BEG-MM TO DW-BEG-MM. MOVE SH-BEG-DD TO DW-BEG-DD. * MOVE SH-END-YYYY TO DW-END-YYYY. MOVE SH-END-MM TO DW-END-MM. MOVE SH-END-DD TO DW-END-DD. * PERFORM002000-COMPUTE-AGE
THRU 002000-EXIT. * MOVE DW-AGE-YEARS TO SH-AGE-YEARS. MOVE DW-AGE-MONTHS TO SH-AGE-MONTHS. MOVE DW-AGE-DAYS TO SH-AGE-DAYS. MOVE DW-AGE-TOTDAYS TO SH-AGE-TOTDAYS. DISPLAY SHOW-AGE-SCREEN. * GOTO110000-COMPUTE-AGE. * 110000-EXIT. EXIT. * * * G R E G T O J U L * 120000-GREG-JUL. * DISPLAY GET-WORK-YYYYMMDD-SCREEN. ACCEPT GET-WORK-YYYYMMDD-SCREEN ON ESCAPE GOTO120000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. * PERFORM002100-GREG-JUL
THRU 002100-EXIT. * MOVE DW-JUL-DATE TO SH-JUL-DATE. DISPLAY SHOW-JUL-YYYYDDD-SCREEN. * GOTO120000-GREG-JUL. * 120000-EXIT. EXIT. * * * J U L T O G R E G * 130000-JUL-GREG. * DISPLAY GET-JUL-YYYYDDD-SCREEN. ACCEPT GET-JUL-YYYYDDD-SCREEN ON ESCAPE GOTO130000-EXIT. * MOVE SH-JUL-DATE TO DW-JUL-DATE. * PERFORM002200-JUL-GREG
THRU 002200-EXIT. * MOVE DW-WORK-YYYY TO SH-WORK-YYYY. MOVE DW-WORK-MM TO SH-WORK-MM. MOVE DW-WORK-DD TO SH-WORK-DD. DISPLAY SHOW-YYYYMMDD-SCREEN. * GOTO130000-JUL-GREG. * 130000-EXIT. EXIT. * * * T E S T A D D D A Y S B U S I N E S S * 140000-ADD-DAYS-BUSINESS. * DISPLAY GET-DATE-DAYS-SCREEN. ACCEPT GET-DATE-DAYS-SCREEN ON ESCAPE GOTO140000-EXIT. * MOVE SH-WORK-YYYY TO DW-WORK-YYYY. MOVE SH-WORK-MM TO DW-WORK-MM. MOVE SH-WORK-DD TO DW-WORK-DD. MOVE SH-DAYS TO DW-DAYS. * PERFORM002300-ADD-DAYS-BUSINESS
THRU 002300-EXIT. * MOVE DW-WORK-YYYY TO SH-WORK-YYYY. MOVE DW-WORK-MM TO SH-WORK-MM. MOVE DW-WORK-DD TO SH-WORK-DD. DISPLAY SHOW-NEW-DATE-SCREEN. * GOTO140000-ADD-DAYS-BUSINESS. * 140000-EXIT. EXIT.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.