AS400开发入门-By adan 联系客服

发布时间 : 星期二 文章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 页