當前位置:首頁 » 數據倉庫 » cobol讀取資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

cobol讀取資料庫

發布時間: 2022-04-17 22:28:32

1. COBOL 中 怎樣用多重循環讀取,比如每讀取A一條數據 就讀B中5條數據 再判斷A裡面的ID在B裡面是否能找到

這個確實沒好辦法啊,按邏輯來的話,讀一條A數據,就需要讀全B的所有數據一條一條對比,如果找到就設個值給FLG來判斷是否找到。然後再讀下一條A的數據。如果B的數據比較少,我建議你把B文件的所有內容存放在一個數組里。
當然,還有種偷懶的方法,首先要保證A,B都是順序從小到大來排序的,然後A數據的關鍵欄位與B的進行比較,會有3種情況,A>B時,讀B的那條。A=B,那麼就是有,繼續讀A的那條,如果A<B,那麼A繼續讀下一條。即以下例子參照。
例:
A:
1
2
3

B:
2
3
5

1<2,繼續讀A,
2=2,繼續讀A
3>2,繼續讀B
以下類推

懂了嗎

2. 請問cobol是如何連接資料庫

直接把sql語句寫在程序當中,用exec語句括起來,然後用oracle自帶的procob工具預編譯一下就可以了。

3. cobol 中讀取文件如果文件形式如下: 第一行9(5) 之後每行都是X(6),行數不定該如何讀取 急求...

在大型機數據集中每一行就代表一條記錄
那麼就可以不用分別讀取,並且我還真的沒有試過分別讀取
先假定你的輸入文件記錄長度為80
你可以直接把輸入文件定義為
FD FILE1
........
.
01 INPUT-REC PIC X(80).
這樣讀取進來
然後就可以通過
UNSTRING INPUT-REC
DELIMITED BY SPACE
INTO 變數。
這樣來實現讀取。
而第一行為了轉化為數字,可用FUNCTION NUMVAL(變數)
這樣把字元形式轉化為數字
這樣就可可以了
如果還不懂就問吧

補充:數據集長度的大小不確定
在大型機裡面數據集是以記錄為單位來存放的,一行就是一個記錄
如果是定長,比如80,那麼在FD 下INPUT-REC PIC X(80)
變長要復雜點
那麼不管一行是多少,比如記錄長度是80,格式是fb
那麼第一行是9(5),就是存放的5個數字
比如 12345----------數字後面就是空格
其他行是X(6)那麼
比如ABCDEG------------字元後面也是空格
我們把輸入文件對應的記錄定義為
INPUT-REC PIC X(80)
那麼我們想要取得前面的東西就可以
UNSTRING INPUT-REC
DELIMITED BY SPACE
INTO 變數
要不你把題目描述具體些,寫出來,我來把代碼寫一下

4. cobol讀取文件,怎樣判斷一個文件是否有記錄,如果READ之後發現無記錄,那有沒有返回值

文件定義的部分就不說了,自己看語法
關鍵幾個點
SELECT IN01 ASSIGN TO 外部文件名.

FD IN01.
01 IN-REC PIC X(100).

PERFORM READ-RTN UNTIL READ-FLG = '1'

READ-RTN SECTION
READ 文件
IF IN-REC = 'ABCDE'
DISPLAY 'HAVE'
END-IF
AT END
MOVE '1' TO READ-FLG
END-READ.

5. COBOL中是否可以不定義FD而直接對DATASET進行讀寫操作

你的意思是在程序中自己指定數據集的名字,而不是直接在環境部定義好嗎?不過貌似調用COBOL程序的時候輸入輸出的文件參數是寫好的吧...

6. COBOL中如何操作CURSOR

這是非主鍵檢索的一種執行方式(多條檢索)。
其實cobol中的游標就好比是定義好的指針一樣(個人理解),每次做fetch操作的時候游標都會把滿足sql文條件的數據存放到與DB結構相同的一個結構中(例如DB COPY文),然後做你想要做的操作。
如果是主鍵檢索的話,就沒有必要定義游標了,因為只檢出一條數據。

7. cobol讀取csv文件

人還在不在??

知道COPY文嗎?

在COPY文中定義 filler pic x(01) values ','

如果還不明白 [email protected]

8. COBOL 從順序數據集中讀取數據,並寫到資料庫中指定表中,怎麼做

open input 文件定義
read 文件定義
資料庫信息編輯
close 文件定義

9. COBOL讀取文件並進行計算然後輸出

首先大概講一下COBOL的一般批量文件出力的思路。
在過程部里頭 我們一般會寫 初期處理 滿足一個條件為止運行 主處理 終了處理。

preforum 初期處理.

preforum until FLG-X = "OFF"
PREFORUM 主處理
end PERFORUM.

preforum 終了處理.

這里初期處理 終了處理 一般 里頭不會有循環操作 除非 特殊業務。比如讀取文件里頭 要從第幾個數據開始進行處理的時候 就需要用循環讀數據。

在初期處理 一般做的就是整個程序只要做一次的操作 里頭就有 打開文件。
終了處理里頭一般做的也是只做一次的操作 比如關閉文件。
所以文件只要一次 開 一次關就可以了。
至於文件里頭的數據的話 一般在初期處理里頭 讀取第一條 read 語句(寫成section)。
然後在主處理里頭 出力文件 也就是往外寫數據 write 語句,然後再讀取第二條 (調用初期處理的讀數據的section)

10. Cobol讀取文件報錯

有兩種方法
1 把B文件CLOSE 再 OPEN 然後 READ
2 B文件創建成相對文件,然後利用相對文件的相對key讀取

我一般習慣使用1方法