Newsletters   Subscriptions  Forums  Store  Media Kit  About Us  Contact  Search   Home 
fhg
Volume 4, Number 5 -- February 18, 2004

A Super Way to Display a Date


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

Sponsored By
CLIENT SERVER DEVELOPMENT

Never Worry About Time Again

The Atomic Time Manager 400 is an easy-to-use utility developed by Client Server Development. It resides on your iSeries and automatically adjusts your hardware and software clocks to:
· Regulate daylight savings time
· Synchronize with a network time device or other servers
· Participate in HIPAA or EDI transactions

Click here to learn more about the Atomic Time Manager 400 and order yours for just $499 through Guild Companies now!


Editors: Howard Arner, Joe Hertvik, Ted Holt,
Shannon O'Donnell, Kevin Vandever
Managing Editor: Shannon Pastore
Contributing Editors: Raymond Everhart, G. Wayne Hawks,
Marc Logemann, David Morris
Publisher and Advertising Director: Jenny Thomas
Advertising Sales Representative: Kim Reed
Contact the Editors: To contact anyone on the IT Jungle Team
Go to our contacts page and send us a message.

THIS ISSUE
SPONSORED BY:

Guild Companies
Client Server Development
COMMON
iTera
Damon Technologies


BACK ISSUES

TABLE OF
CONTENTS
iSeries Navigator: A World of Wizards

A Super Way to Display a Date

Short Circuit Evaluation

Admin Alert: Creating a Private Subsystem

OS/400 Alert: Virus Targets AIM



Copyright © 1996-2008 Guild Companies, Inc. All Rights Reserved.
Guild Companies, 50 Park Terrace East, Suite 8F, New York, NY 10034
Privacy Statement