免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 10860 | 回复: 20
打印 上一主题 下一主题

CHAIN&SETLL什么时候通用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-12 15:39 |只看该作者 |正序浏览
当判断一个key是否存在时,chain和setll好像都可以实现...
key   chain     file                     30(HI)
or
key   setll       file                     30(eq)
这里,chain和setll是完全等价的么?
对于chain,*in30=*off表示找到key,
对于setll呢?*in30=*on是代表找到key么?

论坛徽章:
0
21 [报告]
发表于 2011-08-24 10:24 |只看该作者
20楼你说的应该是对的  我们公司的前辈就是这么告诉我的

论坛徽章:
0
20 [报告]
发表于 2011-08-19 12:14 |只看该作者
我想说说我的看法吧:
1.当你使用chain的时候呢,首先指针会被置顶,然后查找你指定的key or Key list.若查到为*OFF,查不到为*ON
2.当你使用setll的时候呢,setll会根据你所指定的key or Key list 去查找记录,找到记录时,将指针放在该记录的上面(记录与记录之间的间隔),然后当你使用read的时候,就可以读到该记录了.
若想查找多条有相同key的record的话,可以使用reade.
以上是老衲的理解,不对之处,还请各位大侠多多指教~!

论坛徽章:
0
19 [报告]
发表于 2011-08-18 17:03 |只看该作者
--》 SETLL
记录

--》记录 CHAIN

论坛徽章:
0
18 [报告]
发表于 2011-08-12 12:01 |只看该作者
区别很简单,chain  之后,记录已经读出。
setll只负责定位,不读记录,通常配合reade使用。

论坛徽章:
0
17 [报告]
发表于 2011-08-12 10:49 |只看该作者
受教了,叁Q

论坛徽章:
0
16 [报告]
发表于 2010-08-23 16:14 |只看该作者
考虑的很不周全了,呵呵!当时想加个if   *in77 = *off的,你的dow更好.受教了....

论坛徽章:
0
15 [报告]
发表于 2010-08-23 15:34 |只看该作者
你第一部分代码好诡异啊
读不到,当ON的时候你去MOVE UPDTAE?

论坛徽章:
0
14 [报告]
发表于 2010-08-23 15:28 |只看该作者
你理解有问题,概念不清楚

如果你代码改成
doW      *in77 = *OFF
  你就不会死循环啦
DOU是先执行在判断,整个看起来逻辑有问题
第二个代码为什么不会死循环,因为你用的是%EOF
就是读到文件最后一条记录我管你读不读到,反正最后一条读完程序就退出

论坛徽章:
0
13 [报告]
发表于 2010-08-23 14:16 |只看该作者
本帖最后由 first_come 于 2010-08-23 14:22 编辑

问题真的是要遇到了,才能真正理解,#11楼的话我明白了,那样写的确不行,是否是一直读第一条记录我就不清楚了.不过好像是reade一直在等待吧....不是死循环。当用reade时,前面不可以有read等等lock记录的操作.
我写过同样的程序,我先用setll来定位:
                  key        reade         file                   77
                                                 dou       *in77 = *on
                                             move .....
                                               update       file
                            key                 reade      file             77
                                               enddo
                   这样写出错了,改成:
                              dou           *in77 = *on
                            key                reade              file          77
                                          if       %eof
                                           leave
                                            endif
                                move......
                                           update        file
                                     enddo
就成功了。这里我不怎么理解为什么?第一种一运行就卡那里不动了,死循环?不明白.....
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP