- 论坛徽章:
- 0
|
其实以下内容早就记录下来了,但是一直没有时间来张贴。
建议修改地方1
2.5
2.5.1 内容说明
File Designation:
P:
S:
以上两个只有在用到RPG Logic(RPG逻辑)的时候才这样定义,即流程由RGP逻辑控制(也就是RPG编译器控制流程进行)
F:翻译应该是“全过程文件”吧。即由程序控制流程。
建议修改地方2
2.5
2.51
File Format
E: 声明的文件,是外部描述的文件(即文件在程序运行之前就已存在?)
说明:为E说明你引入的这个对象(object)已经存在,必须存在,否则会编译报错
F: 声明的文件,是一个程序描述文件?(不知道什么意思,没用过)
说明:为F说明你引入的这个文件是在内部定义的,你必须在程序中进行定义才行
实例:
建议修改地方3
2.6
2.6.1
E:所谓结构,可以理解为一个“由多个变量组合而成的大变量”。
所谓结构,就是数据结构。类似于C语言中的结构体
建议修改地方4
2.6
2.6.1
From:
这里仅可以用于定义DS后的字段/子项中,它与后面to/length中的to连用,构成from to结构
表示从该数据结构的某个位置到某个位置
例如:
DMYDS DS
D DSFLD01 1 2 //表示从MYDS的第1个位置开始到第2个位置,长度为2
D DSFLD02 3 4 //表示从MYDS的第3个位置开始到第4个位置,长度为2
建议修改地方5
2.6.2 常用例子
定义一个10 位长,其中含2 位小数的字符型变量,并使其初始值为1
D MYFLD S 10 2 INZ(1)
上面的例子有问题,先不说别的,就“2 位小数的字符型变量”这句话就有问题。其次你在Internal Data Type说到:“空:变量定义为字符型、压缩型数字”,所以我觉得应该是“2 位小数的压缩十进制变量”(推测)
建议修改地方6
2.8 C 行说明
2.8.1 写在前面
RPG中cycle 牵扯的是RPG Logic相关的知识,是在RPG程序设计(指发明)之初,由RPG编译器控制程序流程,此时在C表最后就不能添加SETON LR 和RETURN退出程序。
建议修改地方7
3 和程序相关的数据库知识
3.1 LF(逻辑文件)
3.1.1 逻辑文件概念
LF文件可以设置数据的各种约束条件(唯一性、主外键、自定义约束),通过LF对象间接操作PF对象可以实现像SQL数据库一样的约束条件。就是将将定义和约束分开实现,所以不能说LF仅仅是个视图,只能说他同时也拥有视图的功能(理由:可以屏蔽PF中的某些项,也可以实现多个表的连接)。
--------------------------------------------------------------------------------------------------
疑问地方1
2.5
2.51
File Format
当这里声明为F时,后面的Device必须为Printer?不能为DISK?
疑问地方2
2.5
2.51
Record Address Type
有疑问,只能对设置键值的LF文件使用么?
疑问地方3
不管是F表抑或是D表 按F4后有个Prompt type 这个里面有很多中不同的格式,有什么区别比如说:D和DX C和CX等
疑问地方4
RPGLE和RPG的区别?CL和CLD和CLP的区别
疑问地方5
2.6
2.6.1
Internal Data Type:
定义变量的类型,允许的值有:
空:变量定义为字符型、压缩型数字
通过学习,我了解空的时候为字符型,那什么时候空代表压缩十进制?当在Decimal Positions进行设置以后表示压缩十进制?
Leave the field blank for a character field, or a packed decimal standalone field, or a zoned cimal field data structure subfield.
还有就是,按照这个说明,应该还包括区位十进制吧?
那这三种又是怎么区分的~!
疑问地方6
2.6.3 补充说明
变量的定义,除了在D 行定义之外,还可以在C 行通过赋值语句直接定义
如
D FLD01 S 2 INZ(‘01’)
与
C MOVE ‘01’ FLD01 2 //2 在length 处,右对齐是等价的
疑问:RPG里面有没有全局变量和局部变量一说?如果有,那D表定义的应该算全局变量吧,C表定义的仅仅是临时的局部变量,这两者能等价么?
疑问地方6
2.6.3 补充说明
D MYDS DS
D MYFLD01 1 8
D MYFLD02 1 8 0
这种用法算不算变成技巧呢?还是仅仅像你说的一样在作弊?
并且有这么一种定义方式
D MYDS DS
D MYFLD00 1 8
D MYFLD01 1 2
D MYFLD02 3 8
D MYFLD10 9 12
有上面这种用法,当你输入的一个长度为8的MYFLD00,有时仅仅需要其字段的一部分,就可以用上面的方式实现,这也算作弊?
疑问地方7
逻辑文件中的K值实现排序,但是在strsql下select逻辑文件,但是得到的不是排好序的数据,还是你原来插入数据的顺序。那么逻辑文件中的K值排序功能在哪里实现,怎么实现?
疑问地方8
当游标指向某条记录时,也就意味着系统对于该条记录进行了定位读取,此时可以取出当前记录的值,可以修改当前记录的值;
当游标指向某条记录之前,或之后,意味着系统仅仅对该条记录进行了定位,但并未进行读取,此时不知道该条记录的值,也无法对该条记录进行修改。
疑问:不甚理解,请详细说明。
--------------------------------------------
以上内容是个人愚见,希望得到高人指教。 |
|