×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

用REXX程序稍有点繁琐。鉴于你请我客的份上,跟你说说吧。

我的那些程序都是为不同的需求而定做的,我的翻翻以便找到一个适合你的。要我专为你定做一个的话,你得大请客了。

比如我给你一个REXX程序文本文件为SUBJCL.TXT.
使用下面步骤:

1. Upload this text file SUBJCL.TXT to a CLIST PDS file, such as SYS1.CLIST, or SYS1.USER.REXXLIB.

2. Change your FTP JCL to add variable %DATE%, %TIME% or %RANDOM%. Say your orignal JCL is YOUR.JCL.PDS(FTPJCL)

3. Use following JCL
//jobcard ...
//SUBJCL EXEC PGM=IKJEFT01,PARM=SUBJCL
//SYSEXEC DD DISP=SHR,DSN=SYS1.CLIST
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DUMMY
//INJCL DD DISP=SHR,DSN=YOUR.JCL.PDS(FTPJCL)

This JCL will read the FTPJCL member and replace all variables to current values:
%DATE% to current date, format yyyymmdd
%TIME% to current time, format hhmmss
%RANDOM% to any random number, from 100000 to 999999.
Then the replaced JCL will be submitted to JES to run.

So, just submit this JCL, instead of the original JCL.

我的办公室的电话在你的EMAIL里.
Report

Replies, comments and Discussions:

  • 工作学习 / IT技术讨论 / 跨平台问题:请做MainFrame的朋友帮忙。急!!!
    公司里要我把在大型机里的文件每天送到PC机上去,用FTP在JCL中传,没有问题。可是如何保证每次传的文件名都不一样呢?(比如,用Date作为后缀),我不知道如何在JCL中设参数变量。
    后来,我在DOS下做了个.BAT文件,每次REname,但要人工介入,不行。有人说在JCL里不可以调用PC下的命令的。没有接口,是吗?
    我的主任说,这个事情搞好了,春节放我半天假。请朋友们帮忙!谢谢!
    用现成的JCL请发到我的信箱里来。
    除以上两种办法之外,还有什么好办法,不需要人工介入?
    先给大家拜年了!
    • 去年有个MAINFRAME大虾帮了我好大的忙, 不过他好象半夜出动的说。
      • 谢谢你帮我顶了一下!好象他的ID叫Hunter?
    • 方法有2
      Hi James,
      刚收到你的EMAIL, 这就来报道了.

      1、使用Job Scheduler.
      如果你们有Scheduler,如BMCd的Control-M, 你可以利用Scheduler来替换时间和日期变量后提交JCL.
      例如在通过Control-M提交的JCL:
      //jobcard..
      //SEND2PC EXEC PGM=FTP,PARM='(EXIT'
      //OUTPUT DD SYSOUT=*
      //INPUT DD *
      hostname.company.com
      ftpuser
      ftppassword
      ascii
      put 'MAIN.FRAME.FILE' pc.file.d%%DATE.t%%TIME.txt
      quit
      /*

      2. 利用REXX来替换
      用一个通用REXX程序来替换JCL中的变量, 例如时间或者随机数。我有许多现成的例子, 如果不着急, 明天帮你送过去。

      事成之后别忘了请客。

      Hunter
      • 太感谢你了,请客是毫无疑问的了。麻烦你先给我一个电话,可能我明天调试时还会遇到问题。你明天到公司给我你的通用REXX程序好吗?你真是高手,谢谢!
        • 用REXX程序稍有点繁琐。鉴于你请我客的份上,跟你说说吧。
          我的那些程序都是为不同的需求而定做的,我的翻翻以便找到一个适合你的。要我专为你定做一个的话,你得大请客了。

          比如我给你一个REXX程序文本文件为SUBJCL.TXT.
          使用下面步骤:

          1. Upload this text file SUBJCL.TXT to a CLIST PDS file, such as SYS1.CLIST, or SYS1.USER.REXXLIB.

          2. Change your FTP JCL to add variable %DATE%, %TIME% or %RANDOM%. Say your orignal JCL is YOUR.JCL.PDS(FTPJCL)

          3. Use following JCL
          //jobcard ...
          //SUBJCL EXEC PGM=IKJEFT01,PARM=SUBJCL
          //SYSEXEC DD DISP=SHR,DSN=SYS1.CLIST
          //SYSTSPRT DD SYSOUT=*
          //SYSTSIN DD DUMMY
          //INJCL DD DISP=SHR,DSN=YOUR.JCL.PDS(FTPJCL)

          This JCL will read the FTPJCL member and replace all variables to current values:
          %DATE% to current date, format yyyymmdd
          %TIME% to current time, format hhmmss
          %RANDOM% to any random number, from 100000 to 999999.
          Then the replaced JCL will be submitted to JES to run.

          So, just submit this JCL, instead of the original JCL.

          我的办公室的电话在你的EMAIL里.
          • 我没有收到你的E-mail,麻烦你再发一下行吗?我们能约个什么时间吗?
          • 我有你办公室的电话了。收到E-mail了。谢谢!辛苦了。明天和你联系。
        • 刚送给你SUBJCL程序,请查收。其他Rolian如果也需要,跟我说一声。
      • hunterDX, 不知道欠你饭的人有多少乐, 多谢帮忙
        • 是呀。我很早就注意他了。不声不响做了很多好事。你也想请他吃饭吗?哪天一块出来认识认识好吗?
          • 我只开了一个空头支票 :(
            • 没有关系。我可是真心实意的。(当然,你也是开玩笑的。可能不方便) 春节好!
          • 你过奖了,可惜就是没有人张罗饭局。哎,大年三十只能在家闷头吃。
            • 你不会也在我们这片吧? 要是的话, 就可以聚一下乐。
              • 我现在是519-Good-Man 了。
              • 在Brampton, Queen & Dixie 肯怕离你们二位都有点远。慕名去过几次辣婆婆,开车近一下时,到家又饿了!
                • 那就约个双方的中间地点,如何?
                  • 好说好说,先帮你把事情搞定再说。
                    • 你们出来不会不带家属吧? 我本人不会开车的说
                      • 都不带家属好吗?我可以来接你。
                      • 也只好不带家属,让你省大发了。要不然,哼哼,我得开着校巴去!
        • Hi, that is unfair. Last time I posted one question about full definition of NCP and VTAM about Token-Ring, nobody answer my question
          • 别介意,可能你的问题太难了。(不要吃我的醋好不好? 哈哈)
          • If you use chinese title, it might be more attractive.
          • 是啊,你的问题我也看到了,觉得太难。我刚刚设置了SNA over Ethernet (OSA Express)。使用TCP/IP 和SNA共享同一个Fast Ethernet Adapter。这也许是SNA的最新使用方法。 如果有兴趣我们可以探讨。
            • 多谢HunterDX,若是有机会,真要和你聊一聊。这可是我头一次听说在OSA上同时RUN SNA和TCP/IP。
              多谢HunterDX,若是有机会,真要和你聊一聊。这可是我头一次听说在OSA上同时RUN SNA和TCP/IP。本人非常有兴趣。上次我提的问题在无人睬我后,我只好自己闷头测试,无数遍之后,终于成功了。不过我可不敢SNA 和TCP/IP同时运行,只运行SNA在TOKEN-RING上,用SWITCH MAJNODE和CISCO路由器换成TCP/IP,远端再返回到SNA。用OSA卡专用TCP/IP做TN3270的防真。我知道这不是一个好的方法。若是HUNTER的方法可行,则我又多一备份了。
              • 自OSA 2就同时支持SNA和TCP/IP. 只不过SNA需要OSA/SF进行简单配置。
                我们干这事的主要理由是公司决定放弃Token Ring,所有应用必须改为Ethernet。这刻苦坏了我,因为主机上的很多应用都基于Token Ring, 像SNA Gateway, Remote Telnet/Printing, 这个决定明摆着是冲咱们来的。所以你也最好做好准备,总有一天它回落到你头上。

                我们最后有4个远程3174-1R(接SNA Impact Printers)连到一个OSA Adapter上。
                基本配置和你的差不多:
                OS/390 --- OSA --- local CISCO Router(dlsw) --- IP based WAN --- remote CISCO Router(dlsw) --- SNA Controller --- SNA Devices.

                我们有4个Fast Ethernet Adpater, 2个配置为QDIO, 只跑TCP/IP (Batch and Online)。2个配置为Non-QDIO, 共享TCP/IP 和SNA (Web, backup and SNA traffic). 所有LPAR 系统都共享这4个Adapter。看起来有点复杂,但是很有用。

                要共享TCP/IP 和SNA, 必须要有OSA/SF软件(随OS/390)。 VSE可能没戏。

                Hunter
                • 我还较幸运
                  因为我们在用两套互不相干的网。远程3174有30个,用LEASED LINE接入SNA。我不再愿玩那么老的同步modem了,才把SNA并入TCP/IP。我不主动提出用OSA RUN SNA,估计现在还没多大问题(替我保密,不要让我公司知道哦)。等我下决心了,再求你帮忙。
      • Hunter:答案太好了,这种方法能否用于传到AS/400,变spool file名字 现在对方的主机的答复是不可能(他们电脑部有200人)
        • 同样道理,我认为可以。但没有试过。别见笑。请Hunter确认。
        • 不是太清楚你的问题,如果本地是Mainframe, 远程是AS/400的话,当然是可以。只需要注意remote file需要符合AS/400文件名的要求。
      • 还想多问一句,(钻一下牛角尖) 真的在JCL里不可以调用PC-dos 下的命令的。没有接口,是吗?
        • 这个问题有点复杂,但是还是有答案的。
          Mainframe 是可以通过UNIX REXEC方式调用远程计算机的程序的(当然也包括大多数UNIX命令)。
          我们在实际应用中经常使用。

          问题关键是PC, 确切地说Windows是不支持REXEC的。除非你安装一些第三方软件, 或Freeware。

          如果你需要REXEC调用的JCL, 请知一声。

          Hunter
          • 要的,我都要。我要好好地学一下。谢谢!
            • 下面是一个REXEC的例子。
              //jobcard
              //***************************************************************
              //* REXEC Syntax:
              //* REXEC -l userid -p passwd remote_host command
              //SYMBOLS SET OPT0='/-l edi -p sobedi 172.27.12.20',
              // OPT1='ps -ef'
              //REXECJCL EXEC PGM=REXEC,
              // PARM='&OPT0. &OPT1.'
              //SYSPRINT DD SYSOUT=*
              • Thank you! But at present, Windows是不支持REXEC的. It only 支持UNIX. I need 安装一些第三方软件, after that, it might work. Right?
                • Guru A...
    • 运行rexx不一定是最好的选择,因为这要求登录系统。我一般采用start procedure
      我以前做过类似的东西,就是要自动更名的。简单说来就是写一个类似IEBCOPY的小程序,不过在输出的时候,把源文件的字符串"DDDDDD"转换成当前的日期。运行改程序的时候,输入就是那个真正要执行的JCL(其中DDDDDD等待被替换。输出设置为intrdr。
      • 言之有理!最好的办法应在系统性能和方便性之间来选择。
        一般这类工具可以用REXX, COBOL(或其他高级语言), 和Assembler来建立。REXX程序简单,开发快, 类似UNIX Shell script,但是需要较多的系统资源, 较慢。而Assembler 正好相反,程序速度巨快,但开发起来累死人。记得搞一个JES Spool Outwriter的Assembler程序,2000行Code 花了俺3星期! 而COBOL或C基于两者之间。

        编写工具的方法可能跟个人习惯有关,一般来说程序员喜欢用编译型的高级语言(C, COBOL, PL/I), 系统管理员喜欢用REXX,万不得已就用Assembler.

        使用REXX并不需要Logon system。该JCL中只是让REXX 程序在TSO Address Space 中解释运行。而且这类小工具的性能差别不会很大,因为他们所作的事情很简单。

        欢迎探讨!

        Hunter
        • 这种小程序不需要考虑太多系统性能的问题,关键的是要方便。下面是我以前设计的方案。
          一般操作流程:
          console: S dailyjcl

          紧急情况处理流程:
          如果某天处理出现问题,比如到半夜12:00以后才运行,但是仍然希望用前一天的日期,否则会和下一次的时间发生冲突。
          console: S dailyjcl,date=xxxxxx (强制设定JCL的日期替换字符串)
          --------------------------------------------------------------

          start procedure: dailyjcl会把输入参数date的内容传给真正执行的程序subjcl

          subjcl就是把输入的jcl源文件中的日期变量替换成为真正的日期,如果有输入参数,则以输入的参数当作系统日期。然后输出修改后的jcl (可以指向intrdr)

          我以前用COBOL写过这样的程序,因为用COBOL实现串替换很容易,只要用inspect就行。

          因为偶赋闲在家多年,所以拿不出现成的东西来。如果有环境的话,上面的东西很快就可以实现。

          另外,运行rexx确实不需要logon tso,只要调用ikjeft01就行。因为我以前总是用rexx,clist写tso里的带panel的工具,所以就出现了习惯思维。哈哈,抱歉。