• 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

Content archive

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

Recent Posts

  • Power Systems Grows Nicely In Q3, Looks To Grow For All 2025, Too
  • Beta Of MCP Server Opens Up IBM i For Agentic AI
  • Sundry IBM i And Power Stack Announcements For Your Consideration
  • Please Take The IBM i Marketplace Survey
  • IBM i PTF Guide, Volume 27, Number 43
  • IBM Pulls The Curtain Back A Smidge On Project Bob
  • IBM Just Killed Merlin. Here’s Why
  • Guru: Playing Sounds From An RPG Program
  • A Bit More Insight Into IBM’s “Spyre” AI Accelerator For Power
  • IBM i PTF Guide, Volume 27, Number 42

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