当前位置:首页 > AS400开发入门-By adan
* that is used as an index into a character array containing * the names of the months. Then extract the day from the * timestamp to a 2-byte character field which can be used in * an EVAL concatenation expression to form a string. * For example, if LOGONDATE is March 17, 1996, LOGMONTH will * contain 03, LOGDAY will contain 17, and DATE_STR will contain * 'March 17'. C EXTRCT LOGONDATE:*M LOGMONTH 2 0 C EXTRCT LOGONDATE:*D LOGDAY 2 C EVAL DATE_STR = %TRIMR(MONTHS(LOGMONTH)) C + ' ' + LOGDAY C SETON LR ** CTDATA MONTHS January February March April May June July August September October November
December
SUBDUR:计算两个时间之间的间隔时间或者是某一时间之前一段时间。
C
OR C
DATE/TIME/TIMESTAMP SUBDUR DURATION:DURATION_CODE
DATE/TIME/TIMESTAMP
错误判断方法与ADDDUR同
例:
* Determine a LOANDATE which is xx years, yy months, zz days prior to * the DUEDATE. C DUEDATE SUBDUR XX:*YEARS LOANDATE C SUBDUR YY:*MONTHS LOANDATE C SUBDUR ZZ:*DAYS LOANDATE * Add 30 days to a loan due date
C SUBDUR -30:*D LOANDUE * Calculate the number or days between a LOANDATE and a DUEDATE. C LOANDATE SUBDUR DUEDATE NUM_DAYS:*D 5 0 * Determine the number of seconds between LOANDATE and DUEDATE.
C LOANDATE SUBDUR DUEDATE NUM_SECS:*S 5 0 例:
DATE/TIME/TIMESTAMP SUBDUR DATE/TIME/TIMESTAMP DURATION:DURATION_CODE
61676237.doc – 第 33 页 共 39 页
D CURDATE S D DATFMT(*ISO) C C*ADDDUR C TIME CURDATE C CURDATE DSPLY C ADDDUR 1:*Y CURDATE C CURDATE DSPLY C ADDDUR 1:*M CURDATE C CURDATE DSPLY C ADDDUR 1:*D CURDATE C CURDATE DSPLY C*EXTRCT C TIME CURDATE C EXTRCT CURDATE:*Y YEAR 4 0 C YEAR DSPLY C EXTRCT CURDATE:*M MONTH 2 0 C MONTH DSPLY C EXTRCT CURDATE:*D DAY 2 0 C DAY DSPLY C*SUBDUR C TIME CURDATE C CURDATE DSPLY C SUBDUR 1:*Y CURDATE C CURDATE DSPLY C SUBDUR 1:*M CURDATE C CURDATE DSPLY C SUBDUR 1:*D CURDATE C CURDATE DSPLY C C C ENDPGM TAG C EVAL *INLR = '1' C RETURN
TEST
检查一个DATE/TIME/TIMESTAMP变量是否搬含有效的值。
如果我们要检查的一个变量是DATE/TIME/TIMESTAMP类型的变量,那么: C DATE/TIME/TIMESTAMP FORMATE TEST(E) C DATE FORMATE C TIME FORMATE 例:
TEST(DE) TEST(ET) TEST(EZ)
DATE/TIME/TIMESTAMP
如果我们要检查的是一个Char/Num类型的变量,那么:
DATE TIME
C TIMESTAMPE FORMATE TIMESTAMP
61676237.doc – 第 34 页 共 39 页
* Indicator 18 will not be set on, since the character field is a * valid *ISO timestamp field, without separators. C *ISO0 TEST (Z) Char_TSGMp 18 * Indicator 19 will not be set on, since the character field is a * valid *MDY date, without separators.
C *MDY0 TEST (D) Char_Date 19 * %ERROR will return '1', since Num_Date is not *DMY. C *DMY TEST (DE) Num_Date * No Factor 1 since result is a D data type field * %ERROR will return '0', since the field * contains a valid date C TEST (E) Datefield * In the following test, %ERROR will return '1' since the * Timefield does not contain a valid USA time. C *USA TEST (ET) Char_Time * In the following test, indicator 20 will be set on since the * character field is a valid *CMDY, but there are separators. C *CMDY0 TEST (D) char_date2 20 * In the following test, %ERROR will return '0' since * the character field is a valid *LONGJUL date. C *LONGJUL TEST (DE) char_date3
时间类型关键字:
*YEARS for the year (*Y)
*MONTHS for the month (*M)
*DAYS for the day of the month (*D)
*HOURS for the hours (*H)
*MINUTES for the minutes (*MN)
*SECONDS for the seconds (*S)
61676237.doc – 第 35 页 共 39 页
改变了一些操作码的写法
RETRN?RETURN UPDAT?UPDATE LOKUP?LOOKUP COMIT->COMMIT DEFN->DEFINE DELET->DELETE EXCPT->EXCEPT REDPE->READPE SELEC->SELECT SETOF->SETOFF UNLCK->UNLOCK
附:RPG III 与 RPG IV 的实体名称长度区别
Description Field/Array Name DS Name Record Name File Name Max Number of Files Character Field Size Named Constant DS Size No of Decimal Places No of Array Elements No of Subroutine
RPG III 6 6 8 8 50 256 256 9999 9 9999 256
RPG IV 10 10 10 10 None 32767 1024 32767 30 32767 None
4.可视化调试(源级调试)
ILE 提供允许源级调试的调试程序,可随列表文件一起使用调试程序,并且允许设置中断点、显示变量或进入或跨过一条指令。执行这些操作不一定要通过命令行输入命令。可以通过热键实现。
预备工作:在使用CRTRPGMOD或者CRTBNDRPG编译程序的时候,将参数DBGVIEW设置为*SOURCE。
开始调试程序:
STRDBG PGM(MYLIB/MYPGM) UPDPROD(*YES)
61676237.doc – 第 36 页 共 39 页
共分享92篇相关文档