• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • A Super Way to Display a Date

    February 18, 2004 Hey, Ted

    Here’s a subprocedure I wrote that you might want to publish in your newsletter. My routine uses the ILE CEE APIs to format a date as day of week, month name, day, and year, like this:

    Wednesday, February 18, 2004
    

    I use the CEEDAYS API to convert a date to Lilian date format, which is the number of days elapsed since October 14, 1582. Then I use the CEEDATE API to format the Lilian date into a character string. In the case of an error (for example, a date before October 14, 1582), I return the ISO character representation of the date.

    –Tim

    Thanks for the code, Tim. For publication, I have implemented your routine as an RPG module. Any reader who wants to use this procedure would probably do well to make it part of a service program.

    First, here’s the prototype, which I stored in member FULLDATE, in source physical file PROTOTYPES, in one of my libraries on the Netshare400 machine.

    D FullDate        PR            32A         
    D   Date                          D   Value 
    

    And here’s the module source, which I put in member FULLDATE, in QRPGLESRC.

    H NoMain                                                       
                                                                   
     /Copy Prototypes,FullDate                                     
                                                                   
    P FullDate        B                   Export                   
    D                 PI            32A                            
    D   dIn                           D   Value                    
                                                                   
     * prototypes to date routines                                 
    D CEEDAYS         PR                  ExtProc('CEEDAYS') OpDesc
    D   DateString                  32A   Const                    
    D   FormatString                32A   Const                    
    D   LilianDate                  10I 0                          
    D   Error                       12A   Options(*Omit)           
    D                                                              
    D CEEDATE         PR                  ExtProc('CEEDATE') OpDesc
    D   LilianDate                  10I 0 Const                    
    D   FormatString                32A   Const                    
    D   DateString                  32A                            
    D   Error                       12A   Options(*Omit)           
    D                                                              
    D* local                                                       
    D sWorkDate       S              8A                            
    D sDateInWords    S             32A                          
    D nLil            S             10I 0                        
    D sFormat         S             32A                          
                                                                 
     /free                                                       
         sFormat = 'Wwwwwwwwwz, Mmmmmmmmmz ZD, YYYY';            
         sWorkDate = %char(dIn: *iso0);                          
         Callp(e) CEEDAYS (sWorkDate: 'YYYYMMDD': nLil: *Omit);  
         If %error;                                              
            Return %char(dIn: *iso);                             
         Endif;                                                  
         Callp(e) CEEDATE (nLil: sFormat:                        
                            sDateInWords: *Omit);                
         If %Error;                                              
            Return %char(dIn: *iso);                             
         Endif;                                                  
         Return sDateInWords;                                    
     /end-free                                                   
    P                 e                                          
    

    Here’s a snippet of code from a calling program, showing how to invoke the subprocedure.

    D dDate           s               d
    D dFmt            s             32a
    
    C                   eval      dFmt = FullDate(dDate)
    

    I like the CEE APIs, especially CEEDATE, which can display a date in any of a wide variety of formats. See the Date and Time APIs page, at the iSeries Information Center, for more details.

    COBOL programmers who are interested in using these APIs can find some information on MIDRANGE dot COM.

    –Ted

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags:

    Sponsored by
    Computer Keyes

    Fax Directly from your IBM i

    KeyesFax is a full function automated IBM i fax system. Spooled files are burst by fax number and auto transmitted with overlays.  It combines both a send and receive facsimile processing system with a complete image package.

    The fax software will edit, send, receive, display, print, and track fax documents or images using any standard IBM i without additional expensive hardware, software or subscriptions.

    Computer Keyes has been developing Software Solutions since 1978!

    www.computerkeyes.com

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Lean, Mean Green Machines Lean, Mean Green Machines

    Leave a Reply Cancel reply

Volume 4, Number 5 -- February 18, 2004
THIS ISSUE
SPONSORED BY:

Guild Companies
Client Server Development
COMMON
iTera
Damon Technologies

Table of Contents

  • iSeries Navigator: A World of Wizards
  • A Super Way to Display a Date
  • Short Circuit Evaluation
  • OS/400 Alert: Creating a Private Subsystem
  • OS/400 Alert: Virus Targets AIM

Content archive

  • The Four Hundred
  • Four Hundred Stuff
  • Four Hundred Guru

Recent Posts

  • AI Is Coming for ERP. How Will IBM i Respond?
  • The Power And Storage Price Wiggling Continues – Again
  • LaserVault Adds Multi-Path Support To ViTL
  • As I See It: Spacing Out
  • IBM i PTF Guide, Volume 27, Numbers 34, 35, And 36
  • The Power11 Transistor Count Discrepancies Explained – Sort Of
  • Is Your IBM i HA/DR Actually Tested – Or Just Installed?
  • Big Blue Delivers IBM i Customer Requests In ACS Update
  • New DbToo SDK Hooks RPG And Db2 For i To External Services
  • IBM i PTF Guide, Volume 27, Number 33

Subscribe

To get news from IT Jungle sent to your inbox every week, subscribe to our newsletter.

Pages

  • About Us
  • Contact
  • Contributors
  • Four Hundred Monitor
  • IBM i PTF Guide
  • Media Kit
  • Subscribe

Search

Copyright © 2025 IT Jungle