期货交易自动化论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 20|回复: 0

求COBOL技术大神指点 - 第2页 - 金融行业 - ITPUB论坛-专业的IT技术社区

[复制链接] |主动推送

285万

主题

285万

帖子

855万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8553710
发表于 2022-9-11 06:42:45 | 显示全部楼层 |阅读模式
yubinmi 发表于 2013-2-7 05:29

代码就是:
主程序中定义两个01层:
001770 WORKING-STORAGE SECTION.
程序中把一个长度大于 BGDF-RECORD-AREA的变量赋值给了 BGDF-RECORD-AREA,这样会影响到GL-PASSALONG的值吗?
----
cobol中本身就提供了按照数组下标位数来赋值的语句,单一变量直接截取就行了。 如果是结构化赋值,特别是call -subroutine,结构变量的组成和类型必需是一样的,否则必然coredump
CALL ... using 應該是使用了同一塊内存區BGDF-RECORD-AREA,個人理解踩花後面的内存也是在子程序DBIOMODNAME中。
01層在内存申請時應該都是雙字邊界對齊,所以兩個01層之間的間隔也不是固定的。理解不對的地方還請包涵。
wwj891008 发表于 2014-4-17 16:13

CALL ... using 應該是使用了同一塊内存區BGDF-RECORD-AREA,個人理解踩花後面的内存也是在子程序DBIOMODNA ...
同意,是跟主程序同一块内存空间,因为这块空间在子程序中属于linkage section, 所以也可以用set address of BGDF-RECORD-AREA to xxxx来改变值,至于是不是用这个就不知道了。如果是的,把一块大的内存空间的地址给一个小的,会把小的后面的值给冲掉。
BGDF-RECORD-AREA后面有6个字节空位置与双字节边界对齐有关。
没写到第二段不代表没写,写到哪里看编译器和系统对内存的分配。
这个程序可以在调试的时候通过,可以跑几次没反应,但跑多几次的结果就是down,对于不是自己定义的接口最好还是加上Length of。
能看dump的不多而且价格很高。
时光飞逝 发表于 2014-4-18 08:40

没写到第二段不代表没写,写到哪里看编译器和系统对内存的分配。
这个程序可以在调试的时候通过,可以跑几 ...
有可能是调试的时候没有走到使用那个变量的分支。
有了debug工具,很多时候不需要看dump了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|期货交易自动化论坛

GMT+8, 2024-11-25 17:49 , Processed in 0.127109 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表