Temp File 的疑问!! 望轻舟大哥给个详解!!
我们这有个程序用CL 创建了一个FILE
这个FILE就相当于一个TEMP FILE
但这FILE 没指定在那个LIB,,
程序运行时就会写记录到FILE里面去,,程序运行在界面上得到数据,, 说明FILE 里面是有数据的,,
我用WRKOBJ 查看了FILE所在的LIB
在用STRSQL 去查看FILE的数据,,
结果发现,,FILE里面没有记录,,
我查看了一下代码,,
程序每次运行都会 CALL CL(创建这个FILE)
再OPEN FILE
接受在进行写操作,,
我搞不懂的是,,对于多用户,,它这样写为什么不出错?
是不是 创建的这个FILE 是内存中的FILE,,
还是DISK FILE 没有COMMIT ??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
在我們的版本中
CRTTMPPF是非法的
每一個用戶登陸時都會有分配一個QTEMP,登出時清空
创建trmp file 的CL 程序:
CRTTMPPF FILE(LCCTMPA) DUPLF(*YES)
程序每次运行都会调用这个CL程序,,
按楼上所说,,LCCTMPA FILE 在QTEMP库里,,可是用STRSQL 也看不到啊,,
是不是在QTEMP库里的FILE在SQL都是看不到数据的,,还是其他的原因,,
我运行程序,,程序没结果,,FILE里应该是有数据的..
是不是CRTTMPPF 就相当于在内存中创建了一个FILE..
因为我们这里都是对多用户,,而这个程序一直没有出错过..
回复 1# 325242
1) 运行哪个程序。
2) shift + Esc , 底部出现一行,输入 '3', 就会跳至 Display Job 。
3) 再输入 '14' ,就可以查看这个file在哪个Library。
给出创建PF的CL来看看,这个命令应该不是创建PF的(这个PF是多member的)
而是创建了一个PF的member,应该还有一个重定向的命令,不然你后面的程序写入的数据应该是在这个PF的默认第一个member里,一般是同名的member,在SQL里是可以看到的
要在SQL里看这个cl创建的member里的数据,也要在命令行里重定向一下
本帖最后由 franliu 于 2010-05-11 15:44 编辑
回复 1# 325242
1) CRTPF 不指定库名,文件应该生成在当前库 (current library). 用户登录时当前库是 qgpl, 应用程序可能把它修改为其他库名。
2) 这个pf可能有多个member, 你的sql通常只能看到第一个 member. 如果数据存储在其他member中,sql可能看不到。(这类程序通常使用作业的工作站名或者用户名作为 member 的名字来防止在多用户下的冲突。
3) 使用dspfd命令可以清楚的看到纪录分别存储在那些member中。
还补充说明一点:
程序中用CL 创建这个FILE 就是一个TEMP FILE来的
每次要处理数据时,,先CLRPF, 在把数据导此FILE 中,,在把相关的内容显示在界面上
按理说,,程序没结束,,FILE 始终是有数据的,,
现在查看数据就存放在一个LIB里面,,(QTEMP里面没有FILE.)
FILE的数据到底跑那去了..
按照楼上说的,,如果FILE 是生成在当前LIB
那么我为什么用STRSQL 去库里看不到记录,,多用户就出错了,,
因为程序每次运行,,是CLRPF FILE的
如果FILE 生成才其他LIB 我用WRKOBJ 查看的时候,,它确实就生成在一个库里,,
程序运行,,在界面上有数据,,而且数据是正确的,,说明FILE 肯定是有数据的,,
可是我用STRSQL 就是看不到数据,,
需求帮助!!
回复 1# 325242
"这个FILE就相当于一个TEMP FILE,但这FILE 没指定在那个LIB,,"如果没有指定那么你创建后的file会自动存入当前库,如果当前库不是临时库,那么这个file不会自动成为一个临时文件.一般情况下不是临时文件,那么就可以被多个人使用.
是否在Library Qtemp?