描述物理文件和逻辑文件
AS/400数据库结构
三级存储结构
库(LIBRARY) —— 数据库文件(FILE) —— 成员(MEMBER) 一级目录 —— 二级目录 —— 三级目录
1.字段及字段定义
字段是用来描述某一属性的一组值;字段定义是对字段属性的说明
2.记录及记录格式
记录是把一组字段放在一起命名,用来说明某一事物;记录格式是对记录中所有字段的简单说明以及对各字段排序的说明
3.数据库文件及文件说明
文件是已命名的一组记录,文件说明是对文件所有的记录格式和存取路径的说明,数据库文件分为数据文件和源文件,数据文件就是程序中使用的物理文件和逻辑文件。 A.物理文件(*FILE,PF-DTA):在SQL中称做表(TABLE),含有系统实际存储的数据,每个物理文件只有一个固定长度的记录格式。物理文件可以指定键值来规定其顺序存取路径,而不按记录写入时的物理顺序操作。 B.逻辑文件(*FILE,LF):在SQL中称做表(VIEW),它不含有实际数据,依附于物理文件,可以描述一个或多个物理文件的记录(JOIN逻辑文件)。 逻辑文件功能有: 改变物理文件中定义的字段属性(如字段名和字段排列顺序) 提供记录的逻辑顺序 可以只选择物理文件中部分字段进行显示或修改 对字段值进行选择记录进行操作 从物理文件的字段基础上演绎新字段 联合多个物理文件 C.源文件(*FILE,PF-SRC):是系统用来建立源程序(RPGLE、CLLE、C)或源物理文件(PF)等目标的源说明
4.成员
分为数据文件成员和源文件成员。
61676237.doc – 第 6 页 共 39 页
A.数据文件成员,数据文件中的记录可以按某一规则分为多组,每个成员可以存储其中的一组记录,成员就是数据文件的子集,如一家省级银行将各地区分行的存款记录按多个成员存储。一个文件至少有一个成员,建立数据文件时,系统自动产生一个初始成员(名字和数据文件一样),高级版本OS对文件成员个数不加限制(*NOMAX)。 B.源文件成员,就是源程序、源物理文件、源逻辑文件等集合,可以将大型应用系统的一个模块的相关源文件成员存放在一个源文件里。
建立物理文件
1.建立一个库SGMSRC、两个源文件RPGMSCF和RDTASCF,主要用于存放应用系统的源,再建一个库SGMOBJ,用于存放目标
系统集成标准:
1.库:系统名+库属性,假如有学生成绩管理系统名为SGM,存放该应用系统的源程序库就命名为SGMSRC,存放该应用系统目标的库可命名为SGMOBJ。
2.源文件名:一般情况可按模块名(定义为2位)来区分,而我们要举的例子比较小,直接按存放成员的类型来区分,比如,存放程序的源文件叫R+PGM+SCF,存放物理文件和逻辑文件定义的源文件叫R+DTA+SCF
3.物理文件/逻辑文件名:物理文件一般是按该物理文件的用途来命名的,比如:学生成绩表命名为STGD+A,‘A’含义是主文件(或数据文件),逻辑文件是依附于物理文件,一般通过将A改为L,再加序号以区分哪个逻辑文件,逻辑文件不宜太多,否则,会影响数据操作效率,如针对学生成绩表,其中一个逻辑名为STGDL1
4.程序名:一般情况下,是模块名(两位)+交易码(4位)+程序类型标识(一位,‘R’:RPGLE,‘C’:C,C或CL,‘R’:报表等)组成,比如一个应用系统的一个模块的所有程序存放在源文件RCDSCF下,其中一个交易程序名字可命名为CD0400R,‘CD’为模块名,‘0400’为交易码,‘R’代表RPGLE程序
CRTLIB LIB(SGMSRC) TYPE(*PROD) CRTSRCPF FILE(SGMSRC/RPGMSCF) IGCDTA(*YES) TEXT(‘PROGRAM SRCF FOR STUDENT’) CRTSRCPF FILE(SGMSRC/RDTASCF) IGCDTA(*YES) TEXT(‘DATABASE SRCF FOR STUDENT’)
CRTLIB LIB(SGMOBJ) TYPE(*PROD)
2.通过SEU开发工具进行交互式定义源物理文件
DDS使用一种位置相关的格式。在一个DDS行中对物理文件有效的位置是: 6:FORM的类型(A=DDS) 17:NAME的类型(R=RECORD NAME ,K=KEY FIELD NAME,BLANK=FIELD NAME)
61676237.doc – 第 7 页 共 39 页
19-28:NAME(类型由17列决定的名称,如记录名、字段名、键字段名) 29:参照定义(R表示只有当17列为空,19-28非空时有效,表示当前字段是一个参照字段,BLANK=当前字段非参照字段) 30-34:字段长度 35:数据类型 36-37:小数点位置定义(0-31有效),当19-28列定义为非数字型字段时,本拦应为空 45-80:功能定义,用于定义各种关键字 关键字的使用大大丰富了DDS的文件定义。分为
文件级,位于记录名之前,主要包括
REF:指定被参考文件 UNIQUE:键值唯一
FIFO,FCFO,LIFO:相同键值记录的排列规则,有UNIQUE时,就不能用 记录级,位于记录名和第一个字段名之间,主要有
FORMAT:共享其他文件的记录格式 TEXT:记录格式说明
字段级,关键字位于一个字段名和其下一个字段名或第一个关键字段名之间,包括
COLHDG:为数据库文件中字段显示和打印用
REFFLD:参考一个已定义的字段,允许字段长度和参考的字段不同,可用+N或-N来改变字段长度 关键字段级,关键字位于第一关键字段名和其下一个关键字段名或成员尾之间,主要包括
DESCEND:按降序排列,可用于字符或数值型键字字段 ABSVAL:按绝对值顺序排序
3.建立物理文件
定义好源物理文件后,可以建立物理文件,来对数据进行承载。 CRTPF SGMOBJ/DBREF SGMSRC/RDTASCF DBREF CRTPF SGMOBJ/STGDA SGMSRC/RDTASCF STGDA 如果建立物理文件时,要求有多成员,则要修改MAXMBRS参数值,可以指定为无限定(*NOMAX) 若要增加新成员,可以通过命令ADDPFM 命令完成,也可通过GO CMDMBR命令,再选4来完成。
4.数据输入
通过交互式SQL的INSERT 命令 用工具DFU的UPDDTA功能 通过程序输入
通过CPYF命令从其它数据文件中拷贝数据
61676237.doc – 第 8 页 共 39 页
5.字段参考文件
相当于数据字典,一般字段参考文件是没有成员和关键字定义的。
建立逻辑文件
1.逻辑文件的结构可以很简单,也可很复杂。主要有四类:
A.简单逻辑文件,把单个物理文件或表映射到逻辑记录定义 B.多重格式逻辑文件,允许对几个物理文件存取,每个物理文件都有自己的记录格式定义。这种逻辑文件只能通过DDS创建,不能用SQL创建。 C.联接逻辑文件,从多个物理文件或表、逻辑文件或视图中组合字段,给出单个记录定义 D.SQL视图类似于联接逻辑文件,和联接逻辑文件的区别主要是实现方法不一样,联接文件对每次联接进行维护或共享存取路径,而SQL视图在运行时通过查询定义模板找到需要的存取路径
2.简单逻辑文件定义
简单逻辑文件定义和物理文件定义类似,只是逻辑文件在DDS的关键字中增加一些与关系操作有关的内容:
记录级
PFILE:定义包含逻辑文件处理数据的物理文件 字段级
RENAME:更改一个字段的名称(其他属性不变)
CONCAT:可以将物理文件的多个字段合并成逻辑文件的一个字段,例通过CONCAT(STRYR STRMO STRDA)可以将三个字段合并成一个新的字段SEQDAT。 SELECT(选择)/OMIT(跳过)级关键字 当DDS表格中的第17列为S或O时,就说明该行第19-28位置是SELECT/OMIT字段名,该行的关键字就是SELECT/OMIT级关键字,该关键字具备筛选记录功能
ALL:选择或排除不满足以上任何S/O条件的记录 COMP:字段与字段或某值比较 VALUE:字段是否存在于一值列表中 RANGE:字段是否在一个指定范围内
3.建立逻辑文件,可通过CRTLF命令来建立逻辑文件(编译)
CRTLF SGMOBJ/STGDL1 SGMSRC/RDTASCF STGDL1
61676237.doc – 第 9 页 共 39 页
1.3 RPG 语言
OPM (原始程序模型)RPG语言是一种定格式、面向过程、结构化开发语言,它的优点主要体现在可以很方便的对数据库文件进行操作,而且效率非常的高,它是AS/400上一种最主要的开发语言之一。
ILE(集成语言环境) RPG/400,集成化语言环境下的RPG具有更强功能、编程变得更简便,ILE一组新的工具和相关的系统支持,是为在AS/400系统上增强程序开发而设计的,只能由通过新ILE系列的编译器产生的程序开发这种新模型的能力,该系列包括ILE RPG/400、ILE COBOL/400、ILE C/400、ILE CL。把OPM RPG 转换成ILE RPG可以通过命令CVTRPGSRC来实现。
结构化程序语言
RPG程序可以用工具SEU来编辑,它的格式固定,大致可以分为
条件指示器 操作数1 操作码 操作数2 结果 结果指示器
RPG里的三种程序结构
1.顺序操作:流水作业,没有程序语句转移 2.条件转移操作 A.IF ELSE ENDIF结构 OPM RPG A IFXX B A ANDXX C 。。。 ELSE 。。。 ENDIF XX:EQ、HT、NE等 B.SELECT WHEN OTHER ENDSL结构 ILE RPG SELECT WHEN AXB 。。。 OTHER 。。。 ENDSL ‘X’:=、>、<、<>等 61676237.doc – 第 10 页 共 39 页
ILE RPG IF A X B AND AXC 。。。 ELSE 。。。 ENDIF ‘X’:=、>、<、<>等 OPM RPG SELEC A WHXX B( 。。。 OTHER 。。。 ENDSL XX:EQ、GT、LT、NE等