これは私の 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_
最大レコード長が 1000 であるため、ここでは LRECL を 1004 と指定しました。可変ブロック レコードであることを示すために、RECFM を VB と指定しました。しかし、それでも UNIX メインフレームでは、ファイルを 1000 の固定長として受け取ります。私の最初の 3 つのレコードの長さは 132、32、1000 です。最初の行を最初の 2 つのレコード (164) で埋め、3 番目のレコードの 836 の位置を最初の行に埋めます。 3 番目のレコードのリマインダーを 2 行目に入れます。そのため、UNIX メインフレームで位置の不一致が発生しています。UNIX側でのみ変更できます。ただし、クライアントの UNIX メインフレーム側では何もできません。ファイルを可変長レコードとして送信するようにスクリプトを変更するにはどうすればよいですか?
PS : このトピックに関連するすべてのスレッドを読みました。私は過去 3 か月でほぼ 100 の変更を試みました。私にとって本当にうまくいくものは何もありません。