IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

在PL / I中变化的Char令人困惑


IBM大型机论坛 -> PL / I& Assembler
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
冯浩

新的用户


已加入:2008年3月26日
帖子:44
地点:中国

发布发表:2009年7月28日,星期二,2:26 pm
引用回复

My PL / Iprogram reads data from one file and then output it into another one.
有一个类型为 “字符变化”。处理后,如果其内容未达到char变化的最大长度,它将始终在后面添加一些额外的字母。见下文,

输入是这样的。一个 'char(2)变化的字段以单个s开头。

码:
  S
00E0
0120


结果正确,因为它的长度字段设置为“ 0001” X,但是添加了额外的“ z”。

码:
  Sz
00EA
0129


在我将输入更改为以下之后

码:
  SS
00EE
0222


当我填满整个两个字节时,结果和长度字段都正确。

码:
  SS
00EE
022A


我完全被这个'迷惑'迷住了!

期待对此的任何答复,非常感谢。
回到顶部
查看用户资料 发送私信
Srihari Gonugunta

活跃用户


已加入:2007年9月14日
帖子:295
地点:新加坡

发布发表:2009年7月28日,星期二,下午2:35
引用回复

嗨冯

为VARYING字符串分配的存储空间比声明的长度长2个字节。最左边的2个字节保存字符串的当前长度。
回到顶部
查看用户资料 发送私信
冯浩

新的用户


已加入:2008年3月26日
帖子:44
地点:中国

发布发表:2009年7月28日,星期二,2:56 pm
引用回复

引用:
嗨冯

为VARYING字符串分配的存储空间比声明的长度长2个字节。最左边的2个字节保存字符串的当前长度。


非常感谢你,斯里哈里。

对不起,也许我的观点还不够清楚。

最左边的两个字节指示值的实际长度没有问题。但是,在上述两个varchar字段之间进行分配后,会发生一些奇怪的事情---一个额外的 'z' 如果两个值字节未全部填充,则添加。在此之后,我已经检查了字段,除此以外,其他一切都正常。所以我想知道这里发生了什么,这是 字符变化 在PL / I中?
回到顶部
查看用户资料 发送私信
罗伯特·桑普

全球主持人


已加入:2008年6月6日
帖子:8569
地点:美国爱荷华州迪比克

发布发表:2009年7月28日,星期二,下午3:13
引用回复

根据今天双色球开奖结果,“ extra'z'”实际上可能是下一个变量的开始-否则可能是垃圾。关键是,如果长度为01,则只能查看第一个字节。除异常今天双色球开奖结果外,您不应将字段长度之后的任何今天双色球开奖结果视为任何其他今天双色球开奖结果。忽略它并移动它。
回到顶部
查看用户资料 发送私信
冯浩

新的用户


已加入:2008年3月26日
帖子:44
地点:中国

发布发表:2009年7月28日,星期二,下午3:30
引用回复

引用:
根据今天双色球开奖结果,“ extra'z'”实际上可能是下一个变量的开始-否则可能是垃圾。


嗨,罗伯特,根据您的判断,我再次检查了今天双色球开奖结果并得出结论,它是垃圾字符。

是的,只要长度合适,一切都OK。但是,说实话,这些“垃圾人物”是如何出现的,真是令人讨厌。

如果发现有用的内容,我将继续进行调查并与您分享。
回到顶部
查看用户资料 发送私信
罗伯特·桑普

全球主持人


已加入:2008年6月6日
帖子:8569
地点:美国爱荷华州迪比克

发布发表:2009年7月28日,星期二,下午4:53
引用回复

引用:
但是,说实话,这些“垃圾人物”是如何出现的,真是令人讨厌。
那就永远不要学习C,C ++或Java,因为垃圾今天双色球开奖结果几乎是它们使用内存所不可或缺的。垃圾今天双色球开奖结果是垃圾今天双色球开奖结果,无论是PL / I,C,C ++还是COBOL,它都会发生,接受并不要尝试引用未定义的今天双色球开奖结果,因为结果不确定。
回到顶部
查看用户资料 发送私信
冯浩

新的用户


已加入:2008年3月26日
帖子:44
地点:中国

发布发表:2009年7月31日,星期五,上午8:54
引用回复

嗨,罗伯特。

我再次受到质疑。

我试图编写另一个简单的程序来做同样的事情,并且'CHAR VAR'可以正常工作而没有任何'垃圾今天双色球开奖结果'。

现在,我如何在没有太多技术术语的情况下,就“为什么输出今天双色球开奖结果集中的结果与输入不同(尽管加载到DB之后的最后一个结果正确)”给审稿人一个清晰的答案。

因为到目前为止,我对这个问题的“垃圾今天双色球开奖结果”用语还不够清楚。

希望有人能帮助我。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

发布发表:2009年7月31日,星期五,上午9:06
引用回复

您好,

引用:
结果正确,因为它的长度字段设置为“ 0001” X,但是添加了额外的“ z”。

码:
  Sz
00EA
0129



我不知道这是否有帮助,但是不应考虑“ z”。长度是1,值是S(长度为1),其他任何情况都应忽略(如果我正确理解的话)。定义的今天双色球开奖结果是正确的,但仍然存在不应引用的“剩余”。

可能这类似于写入后引用输出文件区域。今天双色球开奖结果空间/内存仍然存在,但是内容完全不可预测。或考虑一个未初始化的变量-同样,不可预测。
回到顶部
查看用户资料 发送私信
冯浩

新的用户


已加入:2008年3月26日
帖子:44
地点:中国

发布发表:2009年7月31日,星期五,上午10:21
引用回复

引用:
可能这类似于写入后引用输出文件区域。今天双色球开奖结果空间/内存仍然存在,但是内容完全不可预测。或考虑一个未初始化的变量-同样,不可预测。


非常感谢,迪克。

CHAR VARYING的理论现在已经很清楚了,我发现我想澄清的是 '字符变化如何分配或使用内存',因为其他今天双色球开奖结果类型(例如char)没有此问题。

Any reference or article is ok, but I didn't find anything in the reference in PL / Iprogramming guide.
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

发布发表:2009年8月1日星期六8:29 am
引用回复

您好,

引用:
因为其他今天双色球开奖结果类型(例如char)没有此问题。
否,因为在其他今天双色球开奖结果类型中使用了全宽度。

在这种情况下,计算机知道只有1个实际字节的今天双色球开奖结果。这个人看到的东西远不止于那里。我们必须训练自己只“看”长度指定的字节数。

可能令人沮丧。 。 。对 icon_smile.gif
回到顶部
查看用户资料 发送私信
冯浩

新的用户


已加入:2008年3月26日
帖子:44
地点:中国

发布发表:2009年8月4日,星期二,上午9:30
引用回复

非常感谢您的直接和清楚的解释,迪克!

我猜想一个关于如何 CHAR VARYING 变量被操作。

首先,程序通过声明的引用获取变量值所在的物理内存中的地址,然后读取前两个字节来确定应读取的字节数。此后,程序将读取固定长度的字节今天双色球开奖结果,并将其分配给另一个变量。

那才是重点!

假设最大长度为4个字节的char可变变量的值现在为'AB',那么最后两个废话字节的值从何而来?它是随机读取的吗?
如果是这样的话,就像我给出的代码一样,该程序会读取几条记录,但是每次无用字节总是相同时,我们怎么解释呢? icon_sad.gif
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

发布发表:2009年8月4日,星期二,上午9:45
引用回复

您好,

引用:
但是每次废话字节总是相同时,我们怎么解释呢?
如果有4个可能的字节,而只有前2个字节有今天双色球开奖结果,则其余2个将保持不变,因为不会“覆盖”它们。

但是,由于它们“不存在”,因此没有理由引用它们。 。 。
回到顶部
查看用户资料 发送私信
罗伯特·桑普

全球主持人


已加入:2008年6月6日
帖子:8569
地点:美国爱荷华州迪比克

发布发表:2009年8月4日,星期二,下午4:50
引用回复

引用:
但是每次废话字节总是相同时,我们怎么解释呢?
语言环境存储初始化。 LE允许您为未使用的存储指定初始值。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> PL / I& Assembler

 


类似主题
话题 论坛 回覆
没有新帖 转换混合了十六进制,cha ...的列 DB2 5
没有新帖 我如何验证字符字段是否已... PL / I& Assembler 1
没有新帖 如何转换十六进制字符串t char十六进制 PL / I& Assembler 6
没有新帖 在HEADER中插入系统运行时... 同步排序 9
没有新帖 如何从CHAR进行位操作 PL / I& Assembler 3
搜索我们的论坛:


回到顶部