查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
sunny_io
新的用户

已加入:2007年7月11日 帖子:68 地点:诺伊达
|
|
|
|
大家好。
I am 读ing a dataset line by line, pulling the 记录 in a variable "记录" and checking 记录 for various conditions.
If 记录 passes all conditions I am to write "记录" the whole line into a new dataset...
因此,如果我只是使用EXECIO命令使用此变量写入数据,则说明EXEXIO函数无效。我是否总是必须使用STEM?
实际上,我已经编写了一个bigg代码,该代码仅使用变量并反复读取同一文件,并使用Say命令将输出sedn输出到终端..现在尝试将数据放入pds中。串
以下是我的代码。
码: |
成员= IN
文档名称 ="'"||'PRD.ME.('||MEMBER||')'||"'"
OUTNAME ="'PRD.ME.OUT'"
地址TSO
"ALLOC DA("FILENAME") F(INDD) SHR REUSE"
地址TSO
"ALLOC DA("OUTNAME") F(OUTDD) MOD REUSE"
做完='否'
"EXECIO 1 DISKR INDD"
如果RC = 0,那么/ *已读取记录* /
做
PULL 记录
IF LENGTH(RECORD) > 1 THEN
做
"EXECIO 1 DISKW 外出 (RECORD"
结束
其他
NOP
结束
其他
做NE = 'YES' / *如果RC \ = 0关闭处理* /
结束
"EXECIO 0 DISKW 外出 (FINIS" |
|
|
回到顶部 |
|
 |
dbzTHEdinosauer
全球主持人

已加入:2006年10月20日 帖子:6967 位置:瓷宝座
|
|
|
|
滑稽,
you used a PULL 记录 after the 1 记录 读 with 执行力
你为什么不尝试一个 推 记录 之前 the 1 记录 write with 执行力
这当然意味着:
码: |
"EXECIO 1 DISKW 外出 (RECORD" |
会变成这样:
|
|
回到顶部 |
|
 |
sunny_io
新的用户

已加入:2007年7月11日 帖子:68 地点:诺伊达
|
|
|
|
你好DBZ
我粘贴的ABove代码只是我尝试的一个示例。拉出记录后,如果记录满足COND-1,我将处理该记录;如果下一条记录满足COND-2,则我将读取下一条记录……我要将这两个记录都写入OUT数据集。
那么,您是否建议我先按要求执行两次拉,然后再执行两次推,然后执行execio diskW操作
有点像,花点时间>样品COND-1 / -2
"执行力1 DISKR INDD"
PULL 记录
如果长度(RECORD > 10)
做
"执行力1 DISKR INDD"
PULL 记录
如果长度 (RECORD > 20)
推 记录
推 记录
"执行力1 DISKW 外出 (RECORD"
其他
NOP
结束
其他
NOP |
|
回到顶部 |
|
 |
sunny_io
新的用户

已加入:2007年7月11日 帖子:68 地点:诺伊达
|
|
|
|
另外,仅使用像我最初在EXECIO命令中使用的变量就行不通吗?
数据必须在存储器STACK或某种STEM中? |
|
回到顶部 |
|
 |
达夫波塞兰
活跃成员
加入时间:2006年12月1日 职位:747 所在地:宾夕法尼亚州
|
|
|
|
这些问题的答案将帮助我们为您提供帮助:
您是否真的要这样做?如果是这样,将无法使用disp mod分配该文件。您无法修改为PDS。
How many 记录s are you talking about here? 10, 1000, 100,000.
Are there and blank 记录s (all spaces) mixed in your input file?
通常,使用单个EXECIO将所有数据读取到堆栈或干变量中会更有效(不要担心)。然后,您可以从堆栈(拉)或从输入杆(增加计数器)进行处理。
我想做的是将我的“好”数据移动到可变的输出主干中,然后在最后用一个EXECIO写入所有这些数据。
如果您回答这些问题,将会有一个例子。 |
|
回到顶部 |
|
 |
dbzTHEdinosauer
全球主持人

已加入:2006年10月20日 帖子:6967 位置:瓷宝座
|
|
|
|
请,
记录是一个变量。只有一个。所以,如果你做一个
读
PULL 记录 / *优先读取* /
读
PULL 记录 / *以二读* /填充
which means you have lost the first 记录.
如果您坚持不使用词干运算,
建议您至少使用两个变量,
像FIRST_RECORD和SECOND_RECORD
至少您会知道哪个是哪个,以及
不会失去一个。
如果您花一些时间阅读有关数据栈的信息,
你会发现你可以
推var2
推var1
因为PUSH是LIFO。
另外,建议您看一下 执行力 |
|
回到顶部 |
|
 |
sunny_io
新的用户

已加入:2007年7月11日 帖子:68 地点:诺伊达
|
|
|
|
你好DBZ
是的,我对你提到的观点太傻了..叠加值.. damm
你好戴夫
我必须能够重复使用此数据集,因此从这种意义上讲,我只想向其附加数据,以便始终使用MOD ..为每个新的迭代插入***
我在每个文件中扫描的记录数应约为10000,而我要扫描1700这样的文件...在每个文件中选择的记录应为黑白0 -50行代码。是的,我要扫描的PDS成员也将有空白记录
我开始读REXX大约是4天,我确实要完成tomm的最大代码。.REXX是我自己的选择,否则我将不得不手动搜索每个模块..所以我想我来不及重写代码了使用STEM ..
我想做的是将我的“好”数据移动到可变的输出主干中,然后在最后用一个EXECIO写入所有这些数据。 ----那是一个不错的选择..我该怎么做? |
|
回到顶部 |
|
 |
达夫波塞兰
活跃成员
加入时间:2006年12月1日 职位:747 所在地:宾夕法尼亚州
|
|
|
|
您的结构对我来说似乎很复杂。
如果是我,那么根据您的示例代码,我会这样做。
码: |
/ *初始化项目和计数器* /
OUT。 =''
OUT_CTR = 0
/ *将所有数据读入堆栈* /
"EXECIO * DISKR INDD"
线=排队()
/ *环通堆栈* /
做 IN_CTR = 1行
PULL 数据
/ *取消尾部空白以获取“真实”长度* /
数据 = STRIP(DATA)
/ *将'良好'数据放入输出项* /
IF LENGTH(DATA) > 1 THEN 做
OUT_CTR = OUT_CTR +1
OUT.OUT_CTR = 数据
结束
结束
/ *用一个语句写输出项* /
"执行* DISKW 外出(STEM OUT. 芬尼斯"
|
|
|
回到顶部 |
|
 |
达夫波塞兰
活跃成员
加入时间:2006年12月1日 职位:747 所在地:宾夕法尼亚州
|
|
|
|
sunn_io,
我的猜测是,根据您的最新要求,我提供的内容将无法使用。
最好提供您的实际要求,而不是“样品”。
一部分“真实”数据也将有所帮助。
What if the first 记录 doesn't pass the test? Is the next 记录 another first 记录, or is a second 记录 to be discarded?
What if the first 记录 passes the test and the second fails? Are they both to be discarded?
您知道为什么显示数据和实际需求会有所帮助吗? |
|
回到顶部 |
|
 |
sunny_io
新的用户

已加入:2007年7月11日 帖子:68 地点:诺伊达
|
|
|
|
嗨,戴夫,
我想尝试将是必须的,我会再尝试一次,因为我想我现在有一个主意。
并发回。
谢谢 |
|
回到顶部 |
|
 |
达夫波塞兰
活跃成员
加入时间:2006年12月1日 职位:747 所在地:宾夕法尼亚州
|
|
|
|
很高兴听到....让我们知道它的进展..... |
|
回到顶部 |
|
 |
sunny_io
新的用户

已加入:2007年7月11日 帖子:68 地点:诺伊达
|
|
|
|
嗨戴夫..
我遵循以下算法,效果很好。本质上,在满足我的条件之后,将数据移至STEM并最终使用STEM将数据放入PDS文件。
仅出于记录目的,如果我的第一个记录满足COND-1而记录2不满足COND-2,则处理应从记录3继续,记录1和2将被忽略。
谢谢。
码: |
FLAG1 =否
当标志='否'
"EXECIO 1 DISKR INDD"
如果RC = 0,则
做
PULL 记录
如果长度(RECORD > 10) THEN
做
RECORD1 = 记录
"EXECIO 1 DISKR INDD"
IF RC = 0 THEN
DO
PULL 记录
IF LENGTH (RECORD > 20) THEN
DO
OUT_CTR = OUT_CTR +1
OUT.OUT_CTR = 记录1
OUT_CTR = OUT_CTR +1
OUT.OUT_CTR = 记录
END
ELSE
NOP
END
ELSE
FLAG1 = 'YES'
结束
其他
NOP
结束
其他
FLAG1 ='是'
结束
"执行* DISKW 外出(STEM OUT. 芬尼斯" |
“已编码” |
|
回到顶部 |
|
 |
sunny_io
新的用户

已加入:2007年7月11日 帖子:68 地点:诺伊达
|
|
|
|
大家好..
我已经在此窗口中格式化了代码..在IF或Do语句之后..但是在postig..ALL IZZ SAME ..之后留了2个空格后,从下一行开始。
可怜的我 ! |
|
回到顶部 |
|
 |
迪克·谢勒
主持人荣誉

已加入:2006年11月23日 帖子:19245 位置:矩阵内部
|
|
|
|
您好,
建议您使用“代码”标签练习-它会做您想要的
请注意您上一次包含代码的回复。 。 。 |
|
回到顶部 |
|
 |
马索
REXX主持人

已加入:2006年3月13日 帖子:1348 地点:以色列
|
|
|
|
以下是几点评论(基于第一篇文章):
码: |
成员= IN
文档名称 ="'"||'PRD.ME.('||MEMBER||')'||"'" |
保持代码简单。这将产生相同的结果(我认为加分只是一个错字):
码: |
文档名称 = "'PRD.ME("IN")'" |
码: |
OUTNAME ="'PRD.ME.OUT'" |
如果要“将数据放入pds”,则应具有成员名称。
码: |
地址TSO
"ALLOC DA("FILENAME") F(INDD) SHR REUSE"
地址TSO
"ALLOC DA("OUTNAME") F(OUTDD) MOD REUSE" |
第一个ADDRESS TSO告诉rexx“从现在开始,所有对rexx未知的命令都将传递给TSO”。
第二个ADDRESS TSO是多余且无用的(而且很可能第一个也是无用的,因为这是默认设置)。
如果OUTNAME是PDS,则您无法进行MOD处理。
码: |
做完='否'
"EXECIO 1 DISKR INDD"
如果RC = 0,那么/ *已读取记录* /
...(your code here)
其他
做NE = 'YES' / *如果RC \ = 0关闭处理* /
|
这非常复杂。如果未分配变量DONE(并且您没有向我们显示何时以及如何分配变量),那么您将什么也不做。
同样,保持简单。这将产生相同的结果(但速度更快):
码: |
永远做
"EXECIO 1 DISKR INDD"
If RC <> 0 Then Leave
... (your code here)
结束 |
不需要DONE标志。无需ELSE句子。
您只是有一个无条件循环,一旦完成读取文件,便停止循环。
码: |
"EXECIO 1 DISKW 外出 (RECORD" |
这是否意味着您无需打开rexx参考书就可以自己全部学习rexx?
无用。请删除它。
码: |
"EXECIO 0 DISKW 外出 (FINIS" |
如果您花时间关闭输出文件,那么也对输入文件执行相同的操作:
码: |
"EXECIO 0 DISKR INDD (FINIS" |
如果您使用STEM,则不要使用堆栈(除非您拉我的腿)。使用STEM比使用堆栈更容易,特别是如果您尝试同时使用它(堆栈)进行读写。
引用: |
我想做的就是将我的“好”数据移到一个输出词干变量中,然后用一个EXECIO在最后写所有这些数据。 ----那是一个不错的选择..我该怎么做? |
你今天很幸运,我心情愉快它来了:
码: |
/ *循环之前* /
轮廓。 ='' / *空输出缓冲区* /
输出数= 0 / *当前在输出缓冲区中有0行* /
/ *在循环中,如果"record" is "good" */
超过 = 超过 + 1
outlines.outcount = 记录
/ *循环结束后* /
"EXECIO "outcount" DISKW 外出 (STEM outlines. 芬尼斯" |
说真的,今天是您的幸运日。您知道我通常为此类会议收取多少费用吗? |
|
回到顶部 |
|
 |
超级
全球主持人

已加入:2004年4月26日 帖子:4650 地点:美国北卡罗来纳州罗利
|
|
|
|
如果我发誓,我担心的是我之前已经看过几乎完全相同的代码。我记得曾经问过那个成员,他是否可以告诉我他从哪里得到的代码,当然他从来没有这么做。我希望这不是来自某些出版物或教科书。 |
|
回到顶部 |
|
 |
sunny_io
新的用户

已加入:2007年7月11日 帖子:68 地点:诺伊达
|
|
|
|
嘿玛索
好吧,我必须感谢您抽出时间来正确指出我的错误。欣赏它。
我参加了收费模式,特别是因为我没有收到带帐号的个人消息..
在我交替使用PDS和数据集单词时,所有这些。读取PDS成员后,我正在更新数据集。
再次感谢你。
我有点着急,所以手动打印输出和论坛现在才是我的工作领域。.下周,我将进一步介绍手册。
干杯
阳光明媚 |
|
回到顶部 |
|
 |
sunny_io
新的用户

已加入:2007年7月11日 帖子:68 地点:诺伊达
|
|
|
|
嗨,好极了
我粘贴的代码是我自己的汗水..难怪它会闻起来很咸
我认为这也是基本的方法。就像手册说的那样,我对每个IF使用ELSE和NOP。在我看来,大多数出版物都避免这样做。
问候
阳光明媚 |
|
回到顶部 |
|
 |
|