×

Loading...
Ad by
  • 最优利率和cashback可以申请特批,好信用好收入offer更好。请点链接扫码加微信咨询,Scotiabank -- Nick Zhang 6478812600。
Ad by
  • 最优利率和cashback可以申请特批,好信用好收入offer更好。请点链接扫码加微信咨询,Scotiabank -- Nick Zhang 6478812600。

言之有理!最好的办法应在系统性能和方便性之间来选择。

一般这类工具可以用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
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的工具,所以就出现了习惯思维。哈哈,抱歉。