帮助理解《RPGIV编程问题百解(5)》与网友的QQ对话
厦门★passthru(448081936) 23:36:03
云宝贝,第五个编程解答,你看明白了吗?就我写的程序而言
大连☆云宝贝<> 23:46:52
引用外部ds不可以用dim来重新定义。
大连☆云宝贝<> 23:47:31
程序没觉得有什么啊?
厦门★passthru(448081936) 00:00:04
这只是第一个问答。第二个回答呢?程序你看懂了吗?
大连☆云宝贝<> 00:02:04
嗯。大致看得懂
大连☆云宝贝<> 00:02:25
我以前没做过rpg4, 但是外部ds常用。
厦门★passthru(448081936) 00:02:36
说说看,哪处是关键点?
大连☆云宝贝<> 00:03:11
关键是想使用外部ds的数据结构
厦门★passthru(448081936) 00:03:06
我表达的是什么意思?
大连☆云宝贝<> 00:03:19
要更新外部数据结构
大连☆云宝贝<> 00:03:42
如果只是要当输入参数的话,用input就可以了
厦门★passthru(448081936) 00:03:40
你的回答太一般了,没有理解。
大连☆云宝贝<> 00:04:00
如果要输入输出,qualified
厦门★passthru(448081936) 00:04:14
qualified的应用你明白了吗?
大连☆云宝贝<> 00:05:04
我的理解就是以何种方式引用外部ds。
厦门★passthru(448081936) 00:05:31
为什我第一个回答,不能用DIM;而在第二个回答中又用到DIM?
大连☆云宝贝<> 00:06:50
qualified 指定引用外部ds。
大连☆云宝贝<> 00:07:09
DNonBill_jobsIn likeds(ds_NonBill_jobs_in) dim(100)
DNonBill_jobsOut likeds(ds_NonBill_jobs_Out) dim(100)
厦门★passthru(448081936) 00:07:30
为什么呢?
大连☆云宝贝<> 00:07:39
重定义两个跟NonBill_Jobs 结构一样的
厦门★passthru(448081936) 00:08:12
‘重定义两个跟NonBill_Jobs 结构一样的’?
大连☆云宝贝<> 00:08:45
dim(100)是数组吧。
厦门★passthru(448081936) 00:08:45
对,
大连☆云宝贝<> 00:09:13
我的理解就是这样的了,不知道对不对。
厦门★passthru(448081936) 00:09:18
为什我第一个回答,不能用DIM;而在第二个回答中又用到DIM?
大连☆云宝贝<> 00:10:08
因为没有在同一个地址空间?
厦门★passthru(448081936) 00:10:16
不对,
厦门★passthru(448081936) 00:11:53
我指出不能用dim的ds位置与可以用dim的ds位置有何区别?
大连☆云宝贝<> 00:12:21
Qualified
厦门★passthru(448081936) 00:12:49
没有表达清楚
大连☆云宝贝<> 00:13:12
ds用Qualified定义,不受dim限制。
厦门★passthru(448081936) 00:13:23
错误的概念
大连☆云宝贝<> 00:13:32
所以程序不好用。
大连☆云宝贝<> 00:13:53
总之,就是先头的程序不好用。
厦门★passthru(448081936) 00:13:49
我第一个回答已经否定了
大连☆云宝贝<> 00:14:15
第一个dim是无效的,对吧?
厦门★passthru(448081936) 00:14:33
qualified是引用外部已经定义好的ds结构。(第一个dim)是行不通,编译就报错的ds。
大连☆云宝贝<> 00:16:02
哦。
大连☆云宝贝<> 00:16:19
如果要实现程序要做的操作,只能先引用到程序中来。变成内部的ds。然后再用likeds,定义成数组。然后对新定义的数组操作就可以了。
厦门★passthru(448081936) 00:17:44
要点:
1)qualified是引用外部已经定义好的ds结构;
2)在qualified ds中要使用dim,只能放到这个被引用的ds的次级以下项中定义;
大连☆云宝贝<> 00:18:25
哦。
大连☆云宝贝<> 00:18:32
就跟table似的。
厦门★passthru(448081936) 00:18:37
不能这么说
大连☆云宝贝<> 00:19:03
原来这样。
厦门★passthru(448081936) 00:19:00
ds可以嵌套ds
大连☆云宝贝<> 00:19:19
嗯,是的。
厦门★passthru(448081936) 00:19:35
所以,我的程序中,在次级的ds中,可以定义dim。就是这个qualified的ds下包含两个含dim的ds结构。
大连☆云宝贝<> 00:20:43
NonBill_jobsIn是次级ds么?
厦门★passthru(448081936) 00:20:42
对
大连☆云宝贝<> 00:21:31
哦,我还以为跟NonBill_Jobs 没有任何关系。
厦门★passthru(448081936) 00:21:30
(这类次级ds)定义的语法,与单独定定义ds的语法不一样。
大连☆云宝贝<> 00:21:43
只是参照数据结构。
厦门★passthru(448081936) 00:22:48
这个不一样的地方,决定了这两个带dim的ds归属于上面的ds。
大连☆云宝贝<> 00:24:01
哦。
大连☆云宝贝<> 00:24:25
dIndex s 4 0
dJob#In s 5
d hoursin s 9P 2
d namein s 23
大连☆云宝贝<> 00:24:32
这几个是单独的变量没有从属关系吧?
大连☆云宝贝<> 00:25:08
DNonBill_Jobs ds qualified
D NB_Job# 5A overlay(NonBill_Jobs)
D NB_JNme 23A overlay(NonBill_Jobs:*next)
D NB_JobHrs 9P 2 overlay(NonBill_Jobs:*next)
厦门★passthru(448081936) 00:25:07
如果,我这段的解释你能够理解的话,才是真正理解了《RPGIV编程问题百解(5)》。
大连☆云宝贝<> 00:25:38
这个是重新定义了NonBill_Jobs的数据结构。
厦门★passthru(448081936) 00:25:39
这样定义是错误的。
大连☆云宝贝<> 00:26:15
DNonBill_Jobs ds input
D NB_Job# 5A overlay(NonBill_Jobs)
D NB_JNme 23A overlay(NonBill_Jobs:*next)
D NB_JobHrs 9P 2 overlay(NonBill_Jobs:*next)
这样子可以的?
厦门★passthru(448081936) 00:26:23
qualified的意思你还没有明白。
大连☆云宝贝<> 00:26:41
嗯。
厦门★passthru(448081936) 00:27:05
最后一个定义可以这样使用。前一个qualified定义是错误的。
只要定义俩qualified的ds,下面除非定义likeds,都不能再定义任何的字段元素。因为这些元素是在外部已经定义好的,这里只是引用这些元素或次级ds。
大连☆云宝贝<> 00:31:11
明白了。
大连☆云宝贝<> 00:31:40
这个是专门用来比较两个数组的不同的吗?
厦门★passthru(448081936) 00:31:40
我相信,说到这个份上应该也明?
阅读(863) | 评论(0) | 转发(0) |