Microsoft KB Archive/36810

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Three Ways to Format and Display System Date in COBOL 3.0

PSS ID Number: Q36810 Article last modified on 04-20-1993

3.00 | 3.00 MS-DOS | OS/2

The information in this article applies to:
- Microsoft COBOL for MS-DOS and OS/2, version 3.0

Summary: Formatting of the system date can be handled in three ways by COBOL Version 3.0: 1. Move CURRENT-DATE to an eight-character field. 2. Break down system date and move the pieces out to reordered fields that are deliminated by fields containing a literal (i.e. ‘/’). 3. Redefine the date field accepted from the system as Alphanumeric, reorder it as needed and move it to an alphanumeric edited field.

More Information: The Cobol Version 3.0 special registers are listed on Page 2-15 of the “Microsoft COBOL Compiler Version 3.0: Language Reference Manual.” The CURRENT-DATE special register is an eight-character field formatted as follows: MM/DD/YY To use the CURRENT-DATE, move CURRENT-DATE to an eight-character field. Because CURRENT-DATE is a special register, it is not defined by the program. The ACCEPT ws-program-defined-date FROM DATE receives the date as a six digit numeric field in yymmdd format. The stroke character (i.e., ‘/’) is an alphanumeric editing character, not a numeric editing character. In the output to the code example below it is shown that if you move the numeric date field to the numeric edited field 99/99/99, the stroke characters are written over. To use the stroke character you have to either break down the date into subfields with a subfield deliminating them filled with the stroke value, or redefine the numeric field as alphanumeric then move the redefined field to an alphanumeric edited field with a PIC XX/XX/XX. The following is a code example: Here is the contents of the OUTPUT.DAT text file created by the program further below: from system pic 99/99/99 current-date broken down character edited 881005 100588 10/05/88 10/05/88 88/10/05 The COBOL Version 3.0 program is as follows:

  $set vsc2
  $set osvs
   Identification division.
   Environment division.
   Special-names.
   console is CRT.
   Input-output section.
   File-control.
   SELECT output-file assign to EXTERNAL DISK
   organization is LINE SEQUENTIAL
   ACCESS MODE IS sequential.
   Data Division.
   File section.
   FD  output-file
   value of file-id is "output.dat"
   data record is output-rec.
   01  output-rec              pic x(72).
   working-storage section.
   01  dl-output-rec.
     05  filler       pic x(3) value spaces.
     05  dl-date-from-system      pic 9(6).
     05  filler       pic x(8) value spaces.
     05  dl-mm-dd-yy-ed          pic 99/99/99.
     05  filler       pic x(4)  value spaces.
     05  dl-current-date         pic x(8).
     05  filler       pic x(4) value spaces.
     05  dl-date-broken-down.
       10 dl-mm-broken-down      pic 99.
       10 filler      pic x value '/'.
       10 dl-dd-broken-down      pic 99.
       10 filler      pic x value '/'.
       10 dl-yy-broken-down      pic 99.
     05 filler        pic x(4) value spaces.
     05 dl-char-date          pic xx/xx/xx.
   01  hd-heading-line.
     05  filler       pic x(12)   value 'from system'.
     05  filler       pic x(15) value 'pic 99/99/99'.
     05  filler       pic x(13) value 'current-date'.
     05  filler       pic x(12) value "broken down".
     05  filler       pic x(15) value 'charater edited'.
   01  ws-yy-mm-dd-sys.
     05 ws-yy-sys     pic 9(2).
     05 ws-mm-sys     pic 9(2).
     05 ws-dd-sys     pic 9(2).
   01  ws-char-date  redefines ws-yy-mm-dd-sys
                  pic x(8).
   01  ws-mm-dd-sys.
     05  ws-mm        pic 99.
     05  ws-dd        pic 99.
     05  ws-yy        pic 99.
     01  ws-mm-dd-yy-ed    pic 99/99/99.
   78  clear-screen value x"e4".
   Screen section.
   01  screen-date line 10 column 30 using ws-mm-dd-sys
                      pic 99/99/99.
   procedure division.
   Main-line.
    open output output-file.
    accept ws-yy-mm-dd-sys from DATE.
    move ws-yy-mm-dd-sys to dl-date-from-system.
    move current-date to dl-current-date.
    move ws-dd-sys to dl-dd-broken-down
              ws-dd.
    move ws-mm-sys to dl-mm-broken-down
              ws-mm.
    move ws-yy-sys to dl-yy-broken-down
              ws-yy.
    move ws-mm-dd-sys to dl-mm-dd-yy-ed.
    move ws-char-date to dl-char-date.
    write output-rec from hd-heading-line.
    write output-rec from dl-output-rec.
    close output-file.
   stop run.

Additional reference words: 3.00 Copyright Microsoft Corporation 1993.