首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过NDM将具有可变块(每条记录都有可变长度)的二进制(ebcdic格式)文件从unix系统发送到unix大型机?

如何通过NDM将具有可变块(每条记录都有可变长度)的二进制(ebcdic格式)文件从unix系统发送到unix大型机?
EN

Stack Overflow用户
提问于 2017-01-10 10:39:04
回答 3查看 2.3K关注 0票数 0

这是我的NDM脚本:

代码语言:javascript
复制
#!/bin/bash -x
#/cdunix/ndm/bin/ndmcli -x -e 4 << _EOF_
#sub maxdelay=unlimited statemnt process snode=$DEST_NODE
export NDMAPICFG=/home/drone/ndmscripts/ndmapi.cfg
NDM_FILE=$1
DEST_FILE=`basename $1`
DEST_NODE=AAA
/cdunix/ndm/bin/ndmcli -x -e 4 << _EOF_
sub maxdelay=unlimited testcopy process snode=$DEST_NODE snodeid=(BBB,123)
setop01 copy from (
                        SYSOPTS=":DATATYPE=BINARY:XLATE=NO:STRIP.BLANKS=NO:"
                        file=$NDM_FILE
                        pnode
                )
             COMPRESS EXTENDED
             to   (
                        DSN=$DEST_FILE(+1)
                        UNIT=(BATCH,2)
                        SPACE=(CYL,(500,500),RLSE)
                        DCB=(RECFM=VB,LRECL=726,BLKSIZE=0)
                        snode
                )
        pend;
_EOF_

我在这里将LRECL设为1004,因为最大记录长度为1000。我已经将RECFM指定为VB来表示这是一个可变的块记录。但是仍然在unix大型机上,他们接收文件的固定长度为1000。我的前3张唱片是132,32,1000的。它用前2条记录(164条)和第三条记录的836位置的第一行填充到第一行,并将第三条记录的提醒放进第二行,等等。所以,我在unix大型机上得到了一个不匹配的位置。我只能在unix上修改。但在客户端unix大型机端却无能为力。如何更改脚本以将文件作为可变长度记录发送?

P.S :我已经阅读了所有与这个主题相关的文章。在过去的3个月里,我已经尝试了近100种变化。没什么对我有用的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-16 06:37:19

奇怪..。我对SYSOPTS=":DATATYPE=VB:",做了很多尝试,但都没有效果。然后,我尝试了RECFM作为VB,而不是VBM (由IBM指定)和LRECL作为1004 (我的报告的默认值),而不是726 (实际最大记录长度),它工作。

这是我的NDM脚本:

代码语言:javascript
复制
#!/bin/bash -x
#/cdunix/ndm/bin/ndmcli -x -e 4 << _EOF_
#sub maxdelay=unlimited statemnt process snode=$DEST_NODE
export NDMAPICFG=/home/drone/ndmscripts/ndmapi.cfg
NDM_FILE=$1
DEST_FILE=`basename $1`
DEST_NODE=XXX
/cdunix/ndm/bin/ndmcli -x -e 4 << _EOF_
sub maxdelay=unlimited testcopy process snode=$DEST_NODE snodeid=(AAA,123)
setop01 copy from (
                        SYSOPTS=":DATATYPE=VB:XLATE=NO:STRIP.BLANKS=NO:"
                        file=$NDM_FILE
                        pnode
                )
                COMPRESS EXTENDED
             to   (
                        DSN=$DEST_FILE(+1)
                        UNIT=(BATCH,2)
                        SPACE=(CYL,(500,500),RLSE)
                        DCB=(RECFM=VB,LRECL=1004,BLKSIZE=0)
                        snode
                )
        pend;
_EOF_

这很奇怪,因为以前它抛出了错误,比如“数据类型不是VB”。但现在它接受了datatype=VB后,改变了RECFM和LREL。

票数 0
EN

Stack Overflow用户

发布于 2017-01-14 15:12:09

你试过以下几种方法:

代码语言:javascript
复制
setop01 copy from (
                        SYSOPTS=":DATATYPE=VB:"
                        file=$NDM_FILE
                        pnode
                  )
票数 1
EN

Stack Overflow用户

发布于 2017-01-12 22:58:45

你必须使用FB并设置一个块大小。

您的VB记录格式实际上工作正常,这就是它填充不同行的原因。

正如@ earlier所暗示的,如果您指示块、recfm、cyclinders,而不是运行在大型机()(如HFS或zFS )上的z/OS文件结构,就会将其发送到z/OS数据集结构。

我们体验到,当将BIN补丁和PTFS上传到z/OS数据集文件结构时,这是我们的店。如果我们采用默认值,它就会变得一团糟,无法读懂。

我们必须使用如下所示的FTP:

代码语言:javascript
复制
set pri=20
set sec=20
set proddataset=IPP.PROD
set dsntype=cylinders
set recfm=fb
set lrecl=27998
set blksize=27998
set volume=PPINS2

echo quote site pri=%pri% sec=%sec% %dsntype% recfm=%recfm% lrecl=%lrecl% blksize=%blksize% volume=%volume%
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41566811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档