当前位置:首页 » 数据仓库 » 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方法