JCL - Get count of non space chars in a given area (mainframe)

前端 未结 2 1452
南方客
南方客 2020-12-06 23:53

I need to prepare some input data to run through a program, the data should be in the following format.

 UID (1-11)|TxtLen (12-16)| Text (17-62)
相关标签:
2条回答
  • 2020-12-07 00:30

    You will need a program.

    I see a fair number of mainframe questions on Stack Overflow asking if something is possible with "JCL only." Keep in mind that JCL is mostly a means of executing programs, and actually does very little other than that. For instance, when you say

    I can use sort to position the fields properly and get the UID and text fields

    sort is a program. It happens to be a program found on most systems (though there are different vendors' implementations, IBM has one, SyncSort has one, CA has one, etc.) There are plenty of other programs commonly found on mainframe systems.

    And just to be pedantic, JCL doesn't actually do anything, JES does the work as it interprets JCL.

    For your particular situation you could create a SORT exit, or process your data in Rexx, or you could use some of the Unix System Services commands and execute those via BPXBATCH or COZBATCH.

    0 讨论(0)
  • 2020-12-07 00:30

    I've done ad-hoc conversions like this using a REXX program. The program is pretty straight-forward:

    • allocate the input and output files
    • open both files begin loop:
    • read the input
    • extract the text field and strip trailing spaces
    • get length of trimmed text field and format as 5-digit numeric
    • overlay number back into record in the Len field positions
    • write out updated record repeat loop until end of file
    • close both files
    • free allocated files

    Let me know if you need some actual code. I've found that REXX is superior than COBOL when it comes to string functions and manipulations. I've even created and called REXX routines from COBOL to accomplish just that.

    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题