이 내 NDM 스크립트입니다 :NDM을 통해 유닉스 시스템에서 유닉스 메인 프레임으로 가변 블록 (각 레코드는 가변 길이)을 가진 바이너리 (ebcdic 포맷) 파일을 보내는 방법은 무엇입니까?
#!/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_
, 최대 레코드 길이가 나는 것을 나타 내기 위해 VB로 RECFM을 지정한 1000이기 때문에 내가 여기에 1004로 LRECL을 준
변수 블록 레코드입니다. 하지만 유닉스 메인 프레임에서 여전히 파일은 고정 길이 1000으로 수신됩니다. 첫 번째 3 개 레코드의 길이는 132, 32, 1000입니다. 첫 번째 레코드는 첫 번째 2 개 레코드 (164)로 세 번째 레코드는 836 번째 위치로 채 웁니다 첫 번째 줄과 두 번째 줄에 세 번째 레코드의 미리 알림을 넣어. 그래서 유닉스 메인 프레임에서 위치가 일치하지 않습니다. 유닉스에서만 변경할 수 있습니다. 하지만 클라이언트의 유닉스 메인 프레임에서는 아무 것도 할 수 없습니다. 파일을 가변 길이 레코드로 보내도록 스크립트를 어떻게 변경합니까?
P.S :이 주제와 관련된 모든 스레드를 읽었습니다. 지난 3 개월 동안 거의 100 가지의 변화를 시도했습니다. 아무것도 나를 위해 정말 작동합니다.
레코드 길이 (LRECL)를 1000으로 설정하고 블록 크기를 1004로 설정해 보았습니까? – SaggingRufus
또한 제공된 샘플에서 LRECL은 726입니다. – SaggingRufus
메인 프레임의 기술 담당자와상의 한 적이 있으십니까? "유닉스 메인 프레임"이란 정확히 무엇을 의미합니까? USS? z/Linux? LinuxONE? z/OS는 레코드와 블록을 알고 있으며 Unix-and-the-Linux는 그렇지 않습니다. –