[Beechglen]
Beechglen Development
Communicator 3000 MPE/iX Release 7.5 Patch Revision 2028
> Chapter 2 Announcements

Introducing 2028 Patches

MPE documents

Complete PDF
Table of Contents

By Mike Hornsby
CTO, Beechglen Development, Inc.

Technical Overview

Many MPE/iX operating system procedures and intrinsic functions rely on the CALENDAR Intrinsic and the internal binary format of the CALENDAR date argument return. The CALENDAR intrinsic returns a 16 bit value, allowing 9 bits for day of year and 7 bits for the year. The base year is presumed to be 1900, limiting the maximum year to 2027 since the largest number represented by 7 bits is 127.

Several different MPE/iX Intrinsic functions (such as but not limited to: FMTCALENDAR, HPFMTCALENDAR, ALMANAC, and DATELINE) extract the CALENDAR returned value and subsequently format the year based on 1900.


  CALENDAR
  
  NM and CM callable.

  Returns the calendar date, including the day of year and the year
  since 1900.

  Syntax
  
  U16
  date := CALENDAR;

  Functional Return
  
  date
      16-bit unsigned integer (assigned functional return)
      Returns the calendar date in the following format:

        Bits Value/Meaning
        7:9  Day of year
        0:7  Year since 1900

  Binary 9 bits: 111111111 = 511 Maximum value.
    Enough for up to 366 days in a year
  Binary 7 bits: 1111111 = 127 Maximum value.
    Allows for year 1900 + 127 = 2027

Solution

Patches developed by Beechglen address this issue by altering the base year to 2028 for CALENDAR year return values < 10. This effectively extends the CALENDAR range to 12/31/2037. Beyond 1/13/2038 would require more extensive patching as the internal hardware and software time is kept as the number of seconds since 00:00:00 1/1/1970.

Application Considerations

Each system applying these patches should be evaluated for customer and third party code that calls the CALENDAR intrinsic directly. For example, MANMAN calls CALENDAR to calculate an internal date. This instance was easily patched and integrated into the MANMAN application. In other applications, the object and source code that calls CALENDAR will need simple modifications.

Native Mode Programs (NMPRG) can be examined for NM CALENDAR CALLS using the LINKEDIT LISTPROG command. Compatibility Mode programs (PROG) can be examined using the LISTPROG utility. At the time of this publication Beechglen is in the process of evaluating third party applications on a case-by case basis. A vendor compatibility matrix can be found in Chapter 3 of this document. Thus far, Adager has been certified to function normally to 12/31/2037.

Who Should Consider Applying 2028 Patches?

  • Anyone who plans to run their HP3000 system beyond 12/31/2027

  • Anyone using future dates in applications. Examples include shop floor calendars and patient scheduling.

  • Expiration dates for labeled tapes are kept in CALENDAR format and already are already exhibiting problems for customers with 10 year retention dates on tapes.


NOTE: The Year >2027 patches have been developed as enhancements under the Beechglen Development Inc. MPE/iX Source Code Agreement with Hewlett-Packard. As provided in this agreement, these patches can only be provided as enhancements to MPE/iX systems covered under a support agreement from Beechglen Development Inc.

Illustration of a Beechglen patched MPE System

System START


  ISL> start norecovery
  MPE/iX launch facility
  ...
  DATE (M/D/Y)? 12/13/2028
  TIME (H:M:S)? 13:37
  *******************************
  Year > 2027 Patches Copyright
  Beechglen Development Inc. 2017
  All Rights Reserved
  WWW.BEECHGLEN.COM
  *******************************
  WED, DEC 13, 2028, 1:37:00 PM (y/n)? y

:SETCLOCK/:SHOWCLOCK


  :setclock date=12/31/2037;time=23:30;now
  Year>2027 Patches Copyright
  Beechglen Development Inc. 2017
  All Rights Reserved www.Beechglen.com

  :showclock
  SYSTEM TIME: THU, DEC 31, 2037, 11:30:12 PM
  CURRENT TIME CORRECTION: 0 SECONDS
  TIME ZONE: 5 HOURS 0 MINUTES WESTERN HEMISPHERE

:LISTF,3


  :listf purgeme,3
  FILE: PURGEME.Y2028.SYS

  FILE CODE : 0            FOPTIONS: BINARY,FIXED,NOCCTL,STD
  BLK FACTOR: 1            CREATOR : **
  REC SIZE: 256(BYTES)     LOCKWORD: **
  BLK SIZE: 256(BYTES)     SECURITY--READ    : ANY
  EXT SIZE: 0(SECT)                  WRITE   : ANY
  NUM REC: 0                         APPEND  : ANY
  NUM SEC: 0                         LOCK    : ANY
  NUM EXT: 0                         EXECUTE : ANY
  MAX REC: 1023                    **SECURITY IS ON
                           FLAGS   : NO ACCESSORS
  NUM LABELS: 0            CREATED : WED, DEC 13, 2028, 1:53 PM
  MAX LABELS: 0            MODIFIED: WED, DEC 13, 2028, 1:53 PM
  DISC DEV #: 2            ACCESSED: WED, DEC 13, 2028, 1:53 PM
  SEC OFFSET: 0            LABEL ADDR: **
  VOLCLASS  : MPEXL_SYSTEM_VOLUME_SET:DISC

:STREAM AT/IN & :SHOWJOB


  :STREAM JOB1;IN=2
   #J4
  :STREAM JOB2;DATE=12/18/28;AT=23:00
   #J5
  :SHOWJOB
  JOBNUM  STATE IPRI JIN  JLIST    INTRODUCED  JOB NAME

  #S1     EXEC        20  20       WED 1:37P   MANAGER.SYS
  #J3     EXEC        10S LP       WED 1:37P   JINETD,MANAGER.SYS
  2 JOBS:
      0 INTRO
      0 WAIT; INCL 0 DEFERRED
      2 EXEC; INCL 1 SESSIONS
      0 SUSP
  JOBFENCE= 0; JLIMIT= 60; SLIMIT= 60
  CURRENT: 12/13/28 13:56
  JOBNUM  STATE IPRI JIN  JLIST    SCHEDULED-INTRO  JOB NAME

  #J4     SCHED    8  10S LP       12/15/28 13:56   JOB1,MANAGER.SYS
  #J5     SCHED    8  10S LP       12/18/28 23:00   JOB2,MANAGER.SYS
  1 SCHEDULED JOB(S)




HP3000 Cloud Services


Chapter 3 Certified Vendors / Applications