2011-10-28 136 views
0

我通過連接直接從UNIX發送文件到MAINFRAME服務器。我能夠成功上載文件。在目標主機上,當收到文件時,它不可讀,並且與我從UNIX服務器發送的格式不同。通過直接從UNIX連接到MAINFRAME發送文件

下面是傳輸工作

Direct> Enter a ';' at the end of a command to submit it. Type 'quit;' to exit CLI. 

     submit maxdelay=unlimited TINIRS process snode=b1ap005 
         TRANSMIT copy from (file=myFile.txt 
               pnode 
               sysopts=":datatype=text" 
              ) 
              ckpt=1k 
             to (file=myFile.txt(+1) 
               snode 
               DCB=(DSORG=PS,RECFM=VB,LRECL=1500) 
               disp=(new) 
              ) 
     pend ; 

請讓我知道DCB值需要更新。我發送的文件有3條可變長度記錄,最大記錄長度爲1500.

+0

我不確定這是編程問題。你可能想要Serverfault。你可以「標記」你自己的問題,讓主持人注意讓它移動。 – derobert

+0

你需要做任何關於ASCII/EBCDIC字符轉換的事情嗎? – NealB

回答

1

實際上,這看起來幾乎是正確的。但是,如果您的最大記錄長度爲1500個字符(不包括行尾的NL),您的LRECL應至少爲1504.但不要吝嗇最大值 - 對於較大的值不會有任何成本或代價(最多32767)。 NealB是正確的 - 如果這是一個文本文件,您可能需要指定字符集轉換 - 但我不知道如何在CONNECT:Direct中執行此操作。

+0

在Unix端,'dd'處理ASCII:EBCDIC - 所以你可以在發送之前很容易地重新格式化文件。 – BRFennPocock

+1

哦,如果只是這麼簡單:-)有很多EBCDIC代碼頁,你真的需要知道你在說什麼。在這個問題幾年前我失去了很多頭髮:-) –

0

當使用DATATYPE = TEXT時,C:D自動將ascii轉換爲EBCDIC。爲了積極,你可能想使用「:datatype = text:xlate = yes:」。