• 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

    iSecurity Multi Factor Authentication (MFA) helps organizations meet compliance standards and improve the existing security environment on IBM i. It requires a user to verify his identity with two or more credentials.

    Key Features:

    • iSecurity provides Multi Factor Authentication as part of the user’s initial program
    • Works with every Authenticator App available in the Market.

    Contact us at https://www.razlee.com/isecurity-multi-factor-authentication/

    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

  • Unattended IBM i Operations Continue Upward Climb
  • VS Code Is The Full Stack IDE For IBM i
  • Domino Runs on IBM i 7.5, But HCL Still Working on Power10
  • Four Hundred Monitor, March 6
  • IBM i PTF Guide, Volume 25, Number 11
  • You Ought To Be Committed
  • Thoroughly Modern: What You Need to Know About IBM i Security
  • Spring Brings Events To IBM i Community, And More
  • As I See It: AI-AI-O
  • IBM i PTF Guide, Volume 25, Number 10

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 © 2023 IT Jungle