Chinaunix首页 | 论坛 | 博客
  • 博客访问: 354553
  • 博文数量: 90
  • 博客积分: 847
  • 博客等级: 准尉
  • 技术积分: 1373
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-02 10:54
个人简介

跌打滚爬中的小菜鸟...

文章分类

全部博文(90)

文章存档

2015年(5)

2013年(47)

2012年(38)

我的朋友

分类: 其他UNIX

2013-09-18 15:56:44

FMT D  DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++
        *************** Beginning of data ***************
0001.00 D n1              S              7p 0            
0002.00 D d1              S               D              
0003.00  *                                               
0004.00  /free                                           
0005.00   Eval n1=1130709;                               
0006.00   Eval d1=%date((n1-1000000):*YMD);              
0007.00   Dsply %char(d1);                               
0008.00   Eval *inlr=*on;                                
0009.00   Return;                                        
0010.00  /end-free                                       
        ****************** End of data ******************


display结果: 2013-07-09
2013-07-09
导出到excel后不知道是什么样子... 试试(2013-7-17 10:53:29 )
DDS定义:
 FMT PF .....A..........T.Name++++++RLen++TDpB....
        *************** Beginning of data ********
0001.00      A          R REC1                    
0002.00      A            FLDN1          7S 0     
0003.00      A            FLDD1           L       
0004.00      A            FLDT1           T       
0005.00      A            FLDST           Z       
        ****************** End of data ***********
runqry看到的
 Line   ....+....1....+....2....+....3....+....4....+....5....+....6  
            FLDN1   FLDD1       FLDT1     FLDST                       
 000001 1,120,304   2013-01-02  09.12.33  2013-03-07-00.00.00.000000  
 ****** ********  End of report  ********                             
                                                                      
导出到excel看到的
FLDN1 FLDD1 FLDT1 FLDST
1120304 01/02/13 09:12:33 2013-03-07-00.00.00.000000


-----------------------------------------------------------------------------------------
日期类型在定义时格式如下
 FMT D  DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords++++
        *************** Beginning of data ****************
0001.00 DD1               S               D   datfmt(*YMD)
0002.00 DD2               S               D   datfmt(*MDY)
年份用2位表示:
*MDY(mm/dd/yy)
*DMY(dd/mm/yy)
*YMD(yy/mm/dd)
年份用4位表示:
*ISO(yyyy-mm-dd)
*EUR(dd.mm.yyyy)
*USA(mm/dd/yyyy)
其他:
*JUL(yy/ddd)
*JIS(yyyy-mm-dd)
在这个固定格式后面加上数字0 (例如*MDY0) 则表示表达式中不包含分隔符 (.或者/).
A zero(0) specified at the end of a format (for example *MDY0) indicates that the character field does not contain separators.



下面再看日期转换函数 %date
%date(expression {:date-format})
这里的expression不能是数字, 可以是用单引号引起的字符串.  date-format不加0时表达式必须含有分隔符, date-formate含0时表达式不能含分隔符.

上面是字符串转换为date类型的方法.

如果是数字型变量想直接转换为date类型, 在%date的第一个参数处用%char(数字)来代替即可.


RPG code 如下:
 FMT D  DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords++++
        *************** Beginning of data ****************
0001.00 DD1               S               D   datfmt(*YMD)
0002.00 DD2               S               D   datfmt(*MDY)
0003.00                                                   
0004.00  /free                                            
0005.00                                                   
0006.00   Eval D1=%date(%CHAR(130911):*YMD0);             
0007.00   Dsply ('D1='+%char(D1));                        
0008.00                                                   
0009.00   Eval D2=%date('11/03/13':*DMY);                 
0010.00   Dsply ('D2='+%char(D2));                        
0011.00                                                   
0012.00   Eval D2=D1;                                     
0013.00   Dsply ('D2=D1='+%char(D2));                     
0014.00                                                   
0015.00   Eval *inlr=*on;                                 
0016.00   Return;                                         
0017.00  /end-free                                        
        ****************** End of data *******************

结果如下:
                           Display Program Messages                          
                                                                             
 Job 027915/CUSERJ/QPADEV008B started on 09/11/13 at 16:30:40 in subsystem QI
 DSPLY  D1=13/09/11                                                          
 DSPLY  D2=03/11/13                                                          
 DSPLY  D2=D1=09/11/13                              

阅读(1078) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~