HP3000-L Archives

January 2000, Week 3

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Gilles Schipper <[log in to unmask]>
Reply To:
Gilles Schipper <[log in to unmask]>
Date:
Wed, 19 Jan 2000 16:35:25 -0500
Content-Type:
text/plain
Parts/Attachments:
text/plain (180 lines)
Attached is sample COBOL source program that illustrates the use of some of
the various date routines that are Y2K-compliant.

Please note that the $CONTROL POST85 is required to enable use of some of
the features used in the sample program.

001000$CONTROL POST85
001100 IDENTIFICATION DIVISION.
001200 PROGRAM-ID. y2ktst.
001300 REMARKS. Test date routines (MPE/iX only).
001400 AUTHOR. Gilles Schipper.
001500 DATE-WRITTEN. August 1998, Updated November 1998.
001600 DATE-COMPILED.
001700 ENVIRONMENT DIVISION.
001800 CONFIGURATION SECTION.
001900 SOURCE-COMPUTER. HP3000.
002000 OBJECT-COMPUTER. HP3000.
002100 SPECIAL-NAMES.
002200     CONDITION-CODE IS cond-code
002300     TOP            IS new-page.
002400 INPUT-OUTPUT SECTION.
002500 DATA DIVISION.
002600 WORKING-STORAGE SECTION.
002700 01  flags-and-counters  COMP.
002800     05  eoj-flag                PIC 9(04)        VALUE ZERO.
002900         88  eoj                                  VALUE    1 THRU
003000                                                        9999.
003100         88  normal-eoj                           VALUE 9999.
003200 01  full-date                   PIC X(21).
003300 01  FILLER REDEFINES full-date.
003400     05  yyyy                    PIC 9(04).
003500     05  mm                      PIC 9(02).
003600     05  dd                      PIC 9(02).
003700     05  hh                      PIC 9(02).
003800     05  min                     PIC 9(02).
003900     05  ss                      PIC 9(02).
004000     05  centiss                 PIC 9(02).
004100     05  gmt                     PIC X.
004200         88  gmt-minus           VALUE "-".
004300         88  gmt-plus            VALUE "+".
004400     05  gmt-hh                  PIC 9(02).
004500     05  gmt-min                 PIC 9(02).
004600 01  intrinsic-parms.
004700     05  hpdateconv-parms.
004800         10  inputcode           PIC S9(09) COMP.
004900         10  inputdate           PIC X(08).
005000         10  outputcode          PIC S9(09) COMP.
005100         10  outputdate          PIC X(08).
005200         10  parmstatus.
005300             15  parmstatus1     PIC S9(04) COMP.
005400             15  parmstatus2     PIC S9(04) COMP.
005500         10  cutoff              PIC S9(09) COMP.
005600     05  hpdatediff-parms.
005700         10  datecode            PIC S9(09) COMP.
005800         10  firstdate           PIC X(08).
005900         10  seconddate          PIC X(08).
006000         10  diffdays            PIC S9(09) COMP.
006100         10  parmstatus.
006200             15  parmstatus1     PIC S9(04) COMP.
006300             15  parmstatus2     PIC S9(04) COMP.
006400         10  cutoff              PIC S9(09) COMP.
006500     05  hpdateoffset-parms.
006600         10  datecode            PIC S9(09) COMP.
006700         10  inputdate           PIC X(08).
006800         10  offset              PIC S9(09) COMP.
006900         10  outputdate          PIC X(08).
007000         10  parmstatus.
007100             15  parmstatus1     PIC S9(04) COMP.
007200             15  parmstatus2     PIC S9(04) COMP.
007300         10  cutoff              PIC S9(09) COMP.
007400 01  misc-items.
007500     05  display-diffdays        PIC ----,---,--9.
007600     05  display-date            PIC X(20).
007700     05  accept-data             PIC X(08).
007800     05  accept-days             PIC 9(05)-.
007900 PROCEDURE DIVISION.
008000 a-control.
008100     DISPLAY "Y2KTST Date Intrinsics Test".
008200     MOVE FUNCTION CURRENT-DATE TO full-date.
008300     DISPLAY "FUNCTION CURRENT-DATE (YYYYMMDDHHMMSSCC-HHMM): "
008400            full-date.
008500     MOVE 0 TO eoj-flag.
008600     PERFORM b0-dateconv UNTIL eoj.
008700     MOVE 0 TO eoj-flag.
008800     PERFORM b1-datediff UNTIL eoj.
008900     MOVE 0 TO eoj-flag.
009000     PERFORM b2-dateoffset UNTIL eoj.
009100     DISPLAY "Y2KTST Program End".
009200     GOBACK.
009300 b0-dateconv.
009400     MOVE -1 TO cutoff OF hpdateconv-parms.
009500     MOVE 38 TO inputcode  OF hpdateconv-parms
009600                outputcode OF hpdateconv-parms.
009700     DISPLAY "Enter the date in YYYYMMDD format (// to exit)".
009800     MOVE SPACE TO accept-data.
009900     ACCEPT accept-data.
010000     IF accept-data = "//"
010100         MOVE 9999 TO eoj-flag
010200     ELSE
010300         MOVE accept-data TO inputdate OF hpdateconv-parms
010400         CALL INTRINSIC "HPDATECONVERT" USING
010500                 \inputcode OF hpdateconv-parms\
010600                  inputdate OF hpdateconv-parms
010700                 \outputcode OF hpdateconv-parms\
010800                  outputdate OF hpdateconv-parms
010900                  parmstatus OF hpdateconv-parms
011000                 \cutoff OF hpdateconv-parms\
011100         IF parmstatus1 OF hpdateconv-parms = 0
011200             DISPLAY "Converted date is: "
011300                     outputdate OF hpdateconv-parms
011400         ELSE
011500             DISPLAY "Invalid YYYYMMDD Format - Please try again".
011600 b1-datediff.
011700     MOVE -1 TO cutoff OF hpdateconv-parms.
011800     MOVE 38 TO datecode OF hpdatediff-parms.
011900     MOVE SPACE TO accept-data.
012000     DISPLAY "Enter First Date in YYYYMMDD Format (// to quit)".
012100     ACCEPT accept-data.
012200     IF accept-data = "//"
012300         MOVE 9999 TO eoj-flag
012400     ELSE
012500         MOVE accept-data TO firstdate OF hpdatediff-parms
012600         MOVE SPACE TO accept-data
012700         DISPLAY "Enter Second Date in YYYYMMDD Format"
012800         ACCEPT accept-data
012900         MOVE accept-data TO seconddate OF hpdatediff-parms
013000         CALL INTRINSIC "HPDATEDIFF" USING
013100                \datecode OF hpdatediff-parms\
013200                 firstdate OF hpdatediff-parms
013300                 seconddate OF hpdatediff-parms
013400                 diffdays OF hpdatediff-parms
013500                 parmstatus OF hpdatediff-parms
013600                \cutoff OF hpdatediff-parms\
013700         IF parmstatus1 OF hpdatediff-parms = 0
013800             MOVE diffdays OF hpdatediff-parms TO display-diffdays
013900             DISPLAY "Days Difference is: "
014000                     display-diffdays
014100         ELSE
014200             DISPLAY "Invalid date(s) - Please try again".
014300 b2-dateoffset.
014400     MOVE -1 TO cutoff OF hpdateoffset-parms.
014500     MOVE 38 TO datecode OF hpdateoffset-parms.
014600     MOVE SPACE TO accept-data.
014700     DISPLAY "Enter Date in YYYYMMDD Format (// to quit)".
014800     ACCEPT accept-data.
014900     IF accept-data = "//"
015000         MOVE 9999 TO eoj-flag
015100     ELSE
015200         MOVE accept-data TO inputdate OF hpdateoffset-parms
015300         MOVE 0 TO accept-days
015400         DISPLAY "Enter offset-days (up to 5 digits)"
015500         ACCEPT accept-days FREE
015600         MOVE accept-days TO offset OF hpdateoffset-parms
015700         CALL INTRINSIC "hpdateoffset" USING
015800                \datecode OF hpdateoffset-parms\
015900                 inputdate OF hpdateoffset-parms
016000                \offset OF hpdateoffset-parms\
016100                 outputdate OF hpdateoffset-parms
016200                 parmstatus OF hpdateoffset-parms
016300                \cutoff OF hpdateoffset-parms\
016400         IF parmstatus1 OF hpdateoffset-parms = 0
016500             MOVE outputdate OF hpdateoffset-parms TO display-date
016600             MOVE accept-days TO display-diffdays
016700             DISPLAY "Offset date is: "
016800                     display-date
016900             DISPLAY "Days difference is:"
017000                     display-diffdays
017100         ELSE
017200             DISPLAY "Invalid date - Please try again".


---------------------------------------------------------------------------
Gilles Schipper
GSA Inc.
HP3000 & HP9000 System Administration Specialists
300 John Street, Box 87651   Thornhill, ON Canada L3T 7R4
Voice: 905.889.3000     Fax: 905.889.3001
Internet:  [log in to unmask]
---------------------------------------------------------------------------

ATOM RSS1 RSS2