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

在使用REXX更新数据集时需要帮助


IBM大型机论坛 -> 清单& REXX
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
sunny_io

新的用户


已加入:2007年7月11日
帖子:68
地点:诺伊达

发布发表:2010年4月29日,星期四10:11 pm
引用回复

大家好。

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
位置:瓷宝座

发布发表:2010年4月29日,星期四10:16 pm
引用回复

滑稽,
you used a PULL 记录 after the 1 记录 读 with 执行力
你为什么不尝试一个 记录 之前 the 1 记录 write with 执行力

这当然意味着:
码:
"EXECIO 1 DISKW 外出 (RECORD" 

会变成这样:
码:
"EXECIO 1 DISKW 外出"
回到顶部
查看用户资料 发送私信
sunny_io

新的用户


已加入:2007年7月11日
帖子:68
地点:诺伊达

发布发表:2010年4月29日,星期四,晚上10:25
引用回复

你好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
地点:诺伊达

发布发表:2010年4月29日,星期四,晚上10:29
引用回复

另外,仅使用像我最初在EXECIO命令中使用的变量就行不通吗?

数据必须在存储器STACK或某种STEM中?
回到顶部
查看用户资料 发送私信
达夫波塞兰

活跃成员


加入时间:2006年12月1日
职位:747
所在地:宾夕法尼亚州

发布发表:2010年4月29日,星期四,晚上10:30
引用回复

这些问题的答案将帮助我们为您提供帮助:
引用:

现在尝试将数据放入PDS中

您是否真的要这样做?如果是这样,将无法使用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
位置:瓷宝座

发布发表:2010年4月29日,星期四10:34 pm
引用回复

请,

记录是一个变量。只有一个。所以,如果你做一个


PULL 记录 / *优先读取* /

PULL 记录 / *以二读* /填充

which means you have lost the first 记录.

如果您坚持不使用词干运算,
建议您至少使用两个变量,
像FIRST_RECORD和SECOND_RECORD
至少您会知道哪个是哪个,以及
不会失去一个。

如果您花一些时间阅读有关数据栈的信息,
你会发现你可以
推var2
推var1

因为PUSH是LIFO。

另外,建议您看一下 执行力
回到顶部
查看用户资料 发送私信
sunny_io

新的用户


已加入:2007年7月11日
帖子:68
地点:诺伊达

发布发表:2010年4月29日,星期四,晚上10:53
引用回复

你好DBZ
是的,我对你提到的观点太傻了..叠加值.. damm

你好戴夫

我必须能够重复使用此数据集,因此从这种意义上讲,我只想向其附加数据,以便始终使用MOD ..为每个新的迭代插入***

我在每个文件中扫描的记录数应约为10000,而我要扫描1700这样的文件...在每个文件中选择的记录应为黑白0 -50行代码。是的,我要扫描的PDS成员也将有空白记录

我开始读REXX大约是4天,我确实要完成tomm的最大代码。.REXX是我自己的选择,否则我将不得不手动搜索每个模块..所以我想我来不及重写代码了使用STEM ..

我想做的是将我的“好”数据移动到可变的输出主干中,然后在最后用一个EXECIO写入所有这些数据。 ----那是一个不错的选择..我该怎么做?
回到顶部
查看用户资料 发送私信
达夫波塞兰

活跃成员


加入时间:2006年12月1日
职位:747
所在地:宾夕法尼亚州

发布发表:2010年4月29日,星期四,11:03 pm
引用回复

您的结构对我来说似乎很复杂。

如果是我,那么根据您的示例代码,我会这样做。

码:

/ *初始化项目和计数器* /
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
所在地:宾夕法尼亚州

发布发表:2010年4月29日,星期四,11:15 pm
引用回复

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
地点:诺伊达

发布发表:2010年4月29日,星期四,11:57 pm
引用回复

嗨,戴夫,

我想尝试将是必须的,我会再尝试一次,因为我想我现在有一个主意。
并发回。

谢谢
回到顶部
查看用户资料 发送私信
达夫波塞兰

活跃成员


加入时间:2006年12月1日
职位:747
所在地:宾夕法尼亚州

发布发表:2010年4月30日星期五上午12:03
引用回复

很高兴听到....让我们知道它的进展.....
回到顶部
查看用户资料 发送私信
sunny_io

新的用户


已加入:2007年7月11日
帖子:68
地点:诺伊达

发布发表:2010年4月30日,星期五,凌晨2:36
引用回复

嗨戴夫..

我遵循以下算法,效果很好。本质上,在满足我的条件之后,将数据移至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
地点:诺伊达

发布发表:2010年4月30日星期五凌晨2点39分
引用回复

大家好..
我已经在此窗口中格式化了代码..在IF或Do语句之后..但是在postig..ALL IZZ SAME ..之后留了2个空格后,从下一行开始。
可怜的我 !
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


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

发布发表:2010年4月30日星期五凌晨2:41
引用回复

您好,

建议您使用“代码”标签练习-它会做您想要的 icon_smile.gif

请注意您上一次包含代码的回复。 。 。
回到顶部
查看用户资料 发送私信
马索

REXX主持人


已加入:2006年3月13日
帖子:1348
地点:以色列

发布发表:2010年4月30日星期五凌晨2:43
引用回复

以下是几点评论(基于第一篇文章):

  1. 码:
    成员= IN
    文档名称 ="'"||'PRD.ME.('||MEMBER||')'||"'"
    保持代码简单。这将产生相同的结果(我认为加分只是一个错字):
    码:
    文档名称 = "'PRD.ME("IN")'"


  2. 码:
    OUTNAME ="'PRD.ME.OUT'"
    如果要“将数据放入pds”,则应具有成员名称。

  3. 码:
    地址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处理。

  4. 码:
    做完='否'
      "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句子。
    您只是有一个无条件循环,一旦完成读取文件,便停止循环。

  5. 码:
    "EXECIO 1 DISKW 外出 (RECORD"
    这是否意味着您无需打开rexx参考书就可以自己全部学习rexx?

  6. 码:
    其他
            NOP
    无用。请删除它。

  7. 码:
    "EXECIO 0 DISKW 外出 (FINIS"
    如果您花时间关闭输出文件,那么也对输入文件执行相同的操作:
    码:
    "EXECIO 0 DISKR INDD (FINIS"


  8. 引用:
    放在STEM中,我担心可能会拉出未知的弦
    如果您使用STEM,则不要使用堆栈(除非您拉我的腿)。使用STEM比使用堆栈更容易,特别是如果您尝试同时使用它(堆栈)进行读写。

  9. 引用:
    我想做的就是将我的“好”数据移到一个输出词干变量中,然后用一个EXECIO在最后写所有这些数据。 ----那是一个不错的选择..我该怎么做?
    你今天很幸运,我心情愉快它来了:
    码:
    / *循环之前* /
    轮廓。 =''   / *空输出缓冲区* /
    输出数= 0     / *当前在输出缓冲区中有0行* /

    / *在循环中,如果"record" is "good" */
    超过 = 超过 + 1
    outlines.outcount = 记录

    / *循环结束后* /
    "EXECIO "outcount" DISKW 外出 (STEM outlines. 芬尼斯"


说真的,今天是您的幸运日。您知道我通常为此类会议收取多少费用吗?
回到顶部
查看用户资料 发送私信
超级

全球主持人


已加入:2004年4月26日
帖子:4650
地点:美国北卡罗来纳州罗利

发布发表:2010年4月30日星期五凌晨2点52分
引用回复

如果我发誓,我担心的是我之前已经看过几乎完全相同的代码。我记得曾经问过那个成员,他是否可以告诉我他从哪里得到的代码,当然他从来没有这么做。我希望这不是来自某些出版物或教科书。
回到顶部
查看用户资料 发送私信
sunny_io

新的用户


已加入:2007年7月11日
帖子:68
地点:诺伊达

发布发表:2010年4月30日星期五凌晨2:55
引用回复

嘿玛索

好吧,我必须感谢您抽出时间来正确指出我的错误。欣赏它。

我参加了收费模式,特别是因为我没有收到带帐号的个人消息.. icon_lol.gif

在我交替使用PDS和数据集单词时,所有这些。读取PDS成员后,我正在更新数据集。

再次感谢你。

我有点着急,所以手动打印输出和论坛现在才是我的工作领域。.下周,我将进一步介绍手册。

干杯
阳光明媚
回到顶部
查看用户资料 发送私信
sunny_io

新的用户


已加入:2007年7月11日
帖子:68
地点:诺伊达

发布发表:2010年4月30日星期五凌晨2:59
引用回复

嗨,好极了

我粘贴的代码是我自己的汗水..难怪它会闻起来很咸 icon_smile.gif
我认为这也是基本的方法。就像手册说的那样,我对每个IF使用ELSE和NOP。在我看来,大多数出版物都避免这样做。

问候
阳光明媚
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> 清单& REXX

 


类似主题
话题 论坛 回覆
没有新帖 捕获GDG数据集名称 JCL和VSAM 10
没有新帖 从REXX调用FTP的任何示例吗? 清单& REXX 1
没有新帖 SummeRx:REXX z / OS的新框架 清单& REXX 6
没有新帖 更改存在的LRECL的命令... JCL和VSAM 7
没有新帖 使用REXX访问SDSF;我是什么 ... 清单& REXX 38
搜索我们的论坛:


回到顶部