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_

最大レコード長が 1000 であるため、ここでは LRECL を 1004 と指定しました。可変ブロック レコードであることを示すために、RECFM を VB と指定しました。しかし、それでも UNIX メインフレームでは、ファイルを 1000 の固定長として受け取ります。私の最初の 3 つのレコードの長さは 132、32、1000 です。最初の行を最初の 2 つのレコード (164) で埋め、3 番目のレコードの 836 の位置を最初の行に埋めます。 3 番目のレコードのリマインダーを 2 行目に入れます。そのため、UNIX メインフレームで位置の不一致が発生しています。UNIX側でのみ変更できます。ただし、クライアントの UNIX メインフレーム側では何もできません。ファイルを可変長レコードとして送信するようにスクリプトを変更するにはどうすればよいですか?

PS : このトピックに関連するすべてのスレッドを読みました。私は過去 3 か月でほぼ 100 の変更を試みました。私にとって本当にうまくいくものは何もありません。

4

3 に答える 3

0

FB を使用してブロックサイズを設定する必要があります。

VB レコード形式は実際には正しく機能しているため、さまざまな行が埋められています。

@BillWoodgerが以前にほのめかしたように、HFSやzFSなどのメインフレーム(USS - Unix System Services)で実行されているz/OS Unixファイル構造ではなく、ブロック、recfm、cyclindersを示すときに、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 に答える