• 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
    Raz-Lee Security

    Start your Road to Zero Trust!

    Firewall Network security, controlling Exit Points, Open DB’s and SSH. Rule Wizards and graphical BI.

    Request Demo

    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

  • Learning And Laughing With Scott Forstie And Tim Rowe
  • IBM’s CEO Says GenAI Is Great For Enterprise, But It Will Not Be AGI
  • Guru: A First Look at Bob, The IBM i Assistant That’s Closer Than You Think
  • Happy Holidays To All Of You From All Of Us
  • IBM i PTF Guide, Volume 27, Number 48
  • Bob More Than Just A Code Assistant, IBM i Chief Architect Will Says
  • Stacking Up Entry IBM i-Power11 Systems Against Windows X86 Platforms
  • IBM Brings AI-Enhanced OpenShift Container Platform To Power Systems
  • As I See It: Artificial Integrity
  • IBM i PTF Guide, Volume 27, Number 47

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