0

这是我的 NDM 脚本:


#!/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主机端无能为力。如何更改脚本以将文件作为可变长度记录发送?

PS:我已经阅读了与该主题相关的所有主题。在过去的 3 个月中,我尝试了近 100 次更改。没有什么对我真正有用。

4

3 回答 3

1

您是否尝试过以下方法:

setop01 copy from (
                        SYSOPTS=":DATATYPE=VB:"
                        file=$NDM_FILE
                        pnode
                  )
于 2017-01-14T15:12:09.057 回答
0

您必须使用 FB 并设置块大小。

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

正如@BillWoodger 之前提到的,当您指示块、recfm、cyclinders 而不是在大型机(USS - Unix 系统服务)上运行的 z/OS Unix 文件结构(例如 HFS 或 zFS)时,您将其发送到 z/OS 数据集结构.

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

我们必须使用以下内容进行 FTP:

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%
于 2017-01-12T22:58:45.777 回答
0

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

这是我的 NDM 脚本:

#!/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”之类的错误。但现在它在更改 RECFM 和 LREL 后接受了 datatype=VB。

于 2017-01-16T06:37:19.577 回答