这是我的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)和第3条记录的836位置填入第一行,并将第三条记录的提醒放入第二行,依此类推。 所以,我在unix大型机上的位置不匹配。 我只能在unix方面改变。但是在客户端的unix主机端无法做任何事情。 如何更改脚本以将文件作为可变长度记录发送?
P.S:我已经阅读了与此主题相关的所有主题。在过去的3个月里,我已经尝试了近100次的变化。没有什么对我有用。
答案 0 :(得分:1)
您是否尝试过以下操作:
setop01 copy from (
SYSOPTS=":DATATYPE=VB:"
file=$NDM_FILE
pnode
)
答案 1 :(得分:0)
您必须使用FB并设置块大小。
您的VB记录格式实际上是正常工作的,这就是为什么它填满了不同的行。
正如@BillWoodger提到的那样,当您指示block,recfm,cyclinders而不是在大型机上运行的z / OS Unix文件结构时,您将其发送到z / OS数据集结构(USS - Unix系统服务),如HFS或zFS。
我们认为这是我们的商店,将BIN修复和PTFS上传到z / OS数据集文件结构。如果我们采取默认设置,它就变得一团糟,不可读。
我们必须使用以下内容进行FTP:
<math.h>
答案 2 :(得分: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后接受了数据类型= VB。