• 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
    OCEAN User Group

    OCEAN TechCon25 Online

    It’s an Exciting Time for IBM i !

    July 16 & 17, 2025 – ONLINE

    Two virtual days of learning, presented by an outstanding group of IBM’ers and IBM Champions, featuring leading-edge topics.

    FREE for OCEAN members!

    Register NOW!

    Annual (12-month) Individual OCEAN Memberships are $80 and a Corporate Membership is $250. A Corporate Membership would allow your entire company to have full access to the OCEAN website & video library and to attend OCEAN events at member rates. Act now because rates are increasing on August 1, 2025.

    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

  • With Power11, Power Systems “Go To Eleven”
  • With Subscription Price, IBM i P20 And P30 Tiers Get Bigger Bundles
  • Izzi Buys CNX, Eyes Valence Port To System Z
  • IBM i Shops “Attacking” Security Concerns, Study Shows
  • IBM i PTF Guide, Volume 27, Number 26
  • Liam Allan Shares What’s Coming Next With Code For IBM i
  • From Stable To Scalable: Visual LANSA 16 Powers IBM i Growth – Launching July 8
  • VS Code Will Be The Heart Of The Modern IBM i Platform
  • The AS/400: A 37-Year-Old Dog That Loves To Learn New Tricks
  • IBM i PTF Guide, Volume 27, Number 25

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