討論區快速選單
知識庫快速選單
討論區最近新進100則主題 掌握Salesforce雲端管理秘訣
[ 回上頁 ] [ 討論區發言規則 ]
RM/COBOL讀取文字檔支援逗號區隔?
更改我的閱讀文章字型大小
作者 : peter0728(peter)
[ 貼文 4 | 人氣 2236 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/1 下午 01:54:20
已知RM/COBOL可以讀取固定長度文字檔案,
但是,
我現在的文字檔是以 逗號或Tab 方式區隔欄位,
不知這樣的檔案是否可以被RM/COBOL接授呢?
有勞四面八方的英雄美人相助
Tks~
作者 : knifour(小毛)
[ 貼文 102 | 人氣 894 | 評價 390 | 評價/貼文 3.82 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/2 上午 11:00:02
COBOL的循序檔只有LINE SEQUENTIAL和BINARY SEQUENTIAL
LINE SEQUENTIAL就是每筆記錄後面都會加換行符號(ASCII CODE 10和13)
這就是一般所謂的文字檔, COBOL內定並沒有使用逗號或TAB字元來區隔欄位的機制
所以你的文字檔如果是以逗號或TAB來區隔欄位
若要用COBOL來處理, 你必須自己寫一些轉換程式才可以做到

BINARY SEQUENTIAL是採用固定紀錄長度的方法來區隔每筆記錄
一般文字處理程式所產生的檔案, 不能用這種方式讀取
因為會讀到ASCII CODE 10和13
作者 : peter0728(peter)
[ 貼文 4 | 人氣 2236 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/4 下午 02:04:34
毛,謝謝您的分享,
簡單的說,若要使用LINE SEQUENTIAL,必須先利用其他程式依所需欄寬準備好,
醬子,在COBOL中才能正常擷取轉入DAT?
作者 : knifour(小毛)
[ 貼文 102 | 人氣 894 | 評價 390 | 評價/貼文 3.82 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/9 下午 01:05:01
沒錯, COBOL 只適用於固定欄寬的方式
作者 : peter0728(peter)
[ 貼文 4 | 人氣 2236 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/12 上午 08:09:44
固定欄寬處理,可否藉由C語言先完成,並與COBOL做直接整合使用呢?
勞煩∼tks...
作者 : twrick(瑞客靠)
[ 貼文 8 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/12 上午 11:21:46
簡單到哭背!!!
將原檔視為
binary SEQUENTIAL
長度只有1.
一個byte,一個byte讀...
將資料截到欄位去
遇到;或tab(自己查asc表).將截取的資料解析....


我之前換調database系統到cobol系統都是這樣轉的.

database系統遇到即時交易= 爛!!!!

所以換database系統換到有心得!!!
作者 : peter0728(peter)
[ 貼文 4 | 人氣 2236 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/13 上午 08:16:31
瑞客,謝謝您難能可貴的經驗分享,
照您的說法, 在 COBOL中若文字檔是用;或TAB分隔欄位資料, 只要用BINARY SEQUENTIAL方式, 一個byte,一個byte讀...
就可以把文字檔資料寫DAT中是嗎?
這與毛分享的經驗,=>COBOL內定並沒有使用逗號或TAB字元來區隔欄位的機制
有什麼不同呢?我實在需要您們的幫忙...謝謝

作者 : knifour(小毛)
[ 貼文 102 | 人氣 894 | 評價 390 | 評價/貼文 3.82 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/13 上午 09:01:23
COBOL語言實在不適合處理字串操作(不是不能,是很煩)
我一般在不得已的情況下才會動用字串處理的功能
所謂不得已的情況是什麼?
就是這個檔案是別人所寫的程式產生的
而他人使用了逗號,TAB或是其他符號來分隔欄位
在不得已的情況下只好自己利用COBOL的字串處理指令來處理這個檔案
換句話說,如果這個檔案是自己產生的
又何必自找麻煩去做COBOL不適合的欄位分隔方式呢?
作者 : twrick(瑞客靠)
[ 貼文 8 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/13 下午 03:57:10
有時候做案子遇到這種事是常有的.....

對方資料亂給,根本無法溝通,或被抗拒,此時只能靠自己.


資料定長好轉,但是資料庫load出來的資料大部份要自己轉.
我把我以前的程式給你看一下:
基本上你要先解析資料,才能往下寫,沒有白吃的午餐.
遇到像,2006/09/13,這樣的欄位,你還是要硬解啊!!!!!
程式是死的,人是活的啊!!!




1000-READ-SEQ.
     MOVE SPACES TO SEQ-REC.

     READ SEQ-F AT END
     GO TO 1000-EXIT.
     PERFORM 1100-FIELD THRU 1100-EXIT.
     GO TO 1000-READ-SEQ.
1000-EXIT.
     EXIT.

 1100-FIELD.
     PERFORM VARYING CT FROM 01 BY 01 UNTIL CT > 65
     MOVE 00 TO LN-BF(CT);
     END-PERFORM.

     MOVE 00 TO CT.
     PERFORM VARYING CP-BF FROM 01 BY 01 UNTIL CP-BF > 1024
     IF SEQ-REC(CP-BF:1) = X"01"
     ADD 01 TO CT;
     MOVE CP-BF TO LN-BF(CT);
     END-IF;
     IF SEQ-REC(CP-BF:1) > X"7F"
     ADD 01 TO CP-BF;
     END-IF;
     IF CT NOT < 65
     MOVE 1025 TO CP-BF;
     END-IF;
     END-PERFORM.

     PERFORM 8400-ZERO THRU 8400-EXIT.

     PERFORM VARYING CT FROM 01 BY 01 UNTIL CT > 65
     IF CT = 01

     MOVE 01 TO CP-BF;
     COMPUTE LEN-BF = LN-BF(CT) - 01;
     ELSE
     COMPUTE CP-BF = LN-BF(CT - 01) + 01;
     COMPUTE LEN-BF =
     LN-BF(CT) - LN-BF(CT - 01) - 01;
     END-IF;
     PERFORM 1200-TMP THRU 1200-EXIT;
     END-PERFORM.
     1100-EXIT.
     EXIT.


     以下就不說了......

     就解析資料而已.
    
作者 : knifour(小毛)
[ 貼文 102 | 人氣 894 | 評價 390 | 評價/貼文 3.82 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/9/14 上午 01:02:29
我如果遇到資料檔是由別人的程式產生的(包括資料庫)的情形
我會選擇使用C或是VB來把資料整理過才交給COBOL轉入
作者 : cobolman(COBOL)
[ 貼文 19 | 人氣 5 | 評價 30 | 評價/貼文 1.58 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/1/9 下午 03:17:11

>已知RM/COBOL可以讀取固定長度文字檔案,
>但是,
>我現在的文字檔是以 逗號或Tab 方式區隔欄位,
>不知這樣的檔案是否可以被RM/COBOL接授呢?
>有勞四面八方的英雄美人相助
>Tks~
>
請用 STRING 欄位 DELIMITED BY ... INTO....
 板主 : Cheryl
 > COBOL - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - COBOL - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
COBOL
1 wen 500 
2 小毛 310 
3 阿強 300 
4 ysl561 120 
5 bobkids 120 
6 zhaoxf 100 
7 chen 80 
8 ozzy 50 
9 WDCHIANG 50 
10 50 
COBOL
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
6.201172E-02