RPG Ⅳ基础
D A 10 DIM(5) D B 5 OVERLAY(A) D C 5 OVERLAY(A:6)
------------------------------------------------------- D DataStruct DS
D A 5
D B 1 OVERLAY(A) DIM(4) A
B(1) B(2) B(3) B(4)
-------------------------------------------------------
PREFIX (前缀名 {: 被置换的字段符数 } ) 输入应用于外部描述文件的所有记录中定义的所有字段名的前缀。 例如PREFIX(YE:3) 的结果为 'YTDTOTAL' —》 'YETOTAL'
如果{: 被置换的字段符数 }没有被指定,则前缀名被加到字段名前。 例如PREFIX(YE_) 的结果为 'TOTAL' —》 'YE_TOTAL'
如果子字段明确指定EXTFLD关键字,则按EXTFLD关键字指定. D extds1 E DS EXTNAME (CUSTDATA) D PREFIX (CU_)
D Name E INZ ('Joe's Garage') D Custnum E EXTFLD (NUMBER) 子字段为CU_NAME, NUMBER. INZ(自变量)
D FIELD1 S 8 INZ D FIELD2 S 8 INZ(‘BATCH ID ’)
OCCURS (数字常数) 定义多重数据结构的出现次数。
EXTFLD (外部字段名) 指定在外部描述数据结构中要重新命名的字段。
EXTNAME (文件名 {: 格式名 } ) 指定外部描述文件名和任选地用于描述外部描述数据结构的格式名。 DITEMNO 1 8 DCUSTNO 9 16 DQTY 17 20 DCUSTNO DS
D AREA 2 0 D CUSTTYPE 1 D NUMBER 5 0
ALIGN 若要求对带正负号和无符号的整数子字段对齐,则输入此关键字。 ALT (数组名) 指示编译时间或运行时间之前数组或表用替代格式。
RPG Ⅳ基础
ALTSEQ(*NONE) 即使指定替代整理顺序,也可指定正常整理顺序将用于字符比较。此关键字对 字符定义有效。 ASCEND 或 DESCEND ASCEND 指示该数组或表用升序顺序。 DESCEND 指示该数组或表用降序顺序。 BASED(ptr) 指示数据结构、运行时间数组或表或字段定义是以该指针为基础。 CONST (自变量) 指定命名常数的值。 CTDATA 指定数组是编译时间数组。数据要在程序结尾指定,用** 或 **CTDATA(array/table
name)。
D AM S 78 DIM(3) CTDATA PERRCD(1) Ask Message
数据有三个元素,每个元素一条记录。 在程序结尾: ** ASK MESSAGE
Are you sure to save XXX account? Are you sure to post XXX account? Are you sure to exit without save?
----------------------------------------
D TABA S 2 0 DIM(7) CTDATA PERRCD(7) D TAB1 S 4 DIM(7) ALT(TABA)
C DD LOOKUP TABA TAB1 80 在程序结尾: ** TABA - TAB1
01 1st02 2nd03 3rd2121st2222nd2323rd3131st ----------------------------------------
D TABB S 1 DIM(2) CTDATA PERRCD(1) D TAB2 S 6 DIM(2) ALT(TABB)
C RAO@ LOOKUP TABB TAB2 41 ** TABB - TAB2 Retro A/C Type AT-A/C CT-Cash
DATFMT (格式 { 分隔符 } ) 指定日期类型字段的数据格式。 从下列日期格式中选择一个: *MDY (mm/dd/yy) *DMY (dd/mm/yy)
*YMD (yy/mm/dd) *JUL (yy/ddd) *ISO (yyyy-mm-dd) *USA (mm/dd/yyyy)
RPG Ⅳ基础
*EUR (dd.mm.yyyy) *JIS (yyyy-mm-dd) 分隔符是任选的。若指定 & 作为 分隔符 ,则使用空白作为分隔符字符。 DLOANDATE S D DATFMT(*EUR) INZ(D'12 31 92') DDUEDATE S D DATFMT(*ISO)
如果日期类型字段没有指定DATFMT关键字,那么日期类型字段将按H表中DATFMT
关键字所指定的格式和分隔符,如果H表中DATFMT没有被指定,默认为*ISO格式。 DIM (数字常数) 指定数组或表的元素的数目。 DTAARA{( 数据区名 )} 指定与字段、数据结构、数据结构子字段或数据区数据结构相关的外部数据区 的名称。 EXPORT{( 外部名 )}
指示在此模块中分配用于字段的存储量,同时任选地指定调出变量的外部名称。 EXTFMT (数据类型) 选择下列其中一个外部数据类型值: B 二进制 F 浮点 I 整数 L 数字符号在左边 P 压缩的十进制 R 数字符号在右边 S 区位数字 U 无符号 EXTPGM (名称) 在原型定义上输入此关键字,以指示动态约束程序的外部名称。 EXTPROC (名称) 在原型定义上输入此关键字,以指示静态约束过程的外部名称。 FROMFILE (文件名) 指定要从中读取运行时间之前数组或表的文件名。 IMPORT{( 外部名 )}
指示在另一模块中分配用于字段的存储量,同时任选地指定调入变量的外部名称。 LIKE ( like 名称) 指定项目的属性是由 'like_name' 派生的。 D Name S 20
D Long_name S LIKE(Name) D Name1 S 20 D Long_name1 S +5 LIKE(Name1)
D Name2 S 10 0 INZ D Long_name2 S -5 LIKE(Name2)
Long_name为20位, Long_name1为25位, Long_name3为5位,
NOOPT 使用此关键字,以确保字段或结构的内容包含最新指定的值。 OPDESC
RPG Ⅳ基础
在原型定义上输入此关键字,以指示与参数一起传送的运算描述符。 OPTIONS(*NOPASS *OMIT *VARSIZE *STRING) 在参数定义上输入此关键字。 *NOPASS 指示不必传送该参数。 *OMIT 意指可传送特殊值 *OMIT 。可对同一参数指定 *OMIT 和 *NOPASS 。 *VARSIZE 指示程序可通过引用接收传送的字符、图形或数组参数,它们小于 对参数定义的长度。 *STRING 意指您可在期待基指针的地方传送字符串。当指针参数是具有 OPTIONS(*STRING) 的原型时,则指针或字符表达式可指定为传送的参数。若 指定字符表达式,则编译器将表达式的值复制成临时指针,并且在结尾处添加 空结束符。然后它将传送此临时指针的地址到调用的过程。 PACKEVEN 输入此关键字以指示压缩字段或压缩数组的元素有偶数个数字。 PACKEVEN 关键字只对程序描述数据结构子字段有效,其中 FROM/TO 位置用于定义该 字段。 PERRCD (数字常数) 为编译时间或运行时间之前数组或表指定每个记录的元素数目。 PROCPTR 定义指针为过程指针。 STATIC 在子过程的 D 说明中输入此关键字,以指示有独立字段或数据结构存储在静 态存储器中。 TIMFMT (格式 { 分隔符 } ) 为时间类型字段指定时间格式。 从下列时间格式中选择一个: *HMS (hh:mm:ss) *ISO (hh.mm.ss) *USA (hh:mm AM 或 hh:mm PM) *EUR (hh.mm.ss) *JIS (hh:mm:ss)
分隔符是任选的。若指定 & 作为 分隔符 ,则使用空白作为分隔符字符。 VALUE 在参数定义上输入此关键字,以指示参数由值传送。 TOFILE (文件名) 为向其写入数据的运行时间之前或编译时间数组或表指定文件。 VARYING 在任何字符或图形字段定义上指定此关键字,指示该字段可同时具有最大长度 和当前长度。
例:
D*Local data area
D LDAREA UDS 1024 D LDFRM1 1 10 D LDFRM2 11 20
RPG Ⅳ基础
D LDTO 21 30 D LDEND 31 31 D LDKEY 32 32 D LDDEP 33 34 D LRTTYNO 45 54 C*Initialize
C *DTAARA DEFINE *LDA LDAREA C IN *DTAARA
C MOVEL LDDEP DEPNO C :
C MOVEL '0' LDEND C OUT *DTAARA
---------------------------------------------------------------------- D SDS SDS
D PGM *PROC
D MSGTXT 91 170 D USER 254 263
---------------------------------------------------------------------- D WKDATE DS 10 D WKDAY 1 2 0 D WKMON 4 5 0 D WKYEAR 7 10 0
基本数据结构
******数据结构定义时用真实的位置和长度****** 真实的位置标号: D FRED DS
D Field1 1 700 DIM(70) D Field2 701 730 D Field3 701 715 D Field5 701 704 2 D Field4 716 730 长度标号:
D FRED DS
D Field1 10 DIM(70) D Field2 30
D Field3 15 OVERLAY(Field2) D Field5 4 2 OVERLAY(Field3) D Field4 15 OVERLAY(Field2:16) 功能相同,后者可读性好。
------------------------------------------------------- ******重命名和初始化外部描述数据结构******
D Fred E DS EXTNAME(EXTDS)
D CUSTNAME E EXTFLD(CUST) INZ('GEORGE')