質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

COBOL

COBOL(COmmon Business Oriented Langage)は、実務処理用に開発されたプログラミング言語です。

Q&A

2回答

7869閲覧

COBOLのSTART文について

xo001122

総合スコア13

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

COBOL

COBOL(COmmon Business Oriented Langage)は、実務処理用に開発されたプログラミング言語です。

0グッド

2クリップ

投稿2016/06/16 04:05

編集2016/06/16 08:18

こんにちは。
現在COBOLの勉強をしています。
あるプログラムのコードを読んでいて、分からない点があったので質問させていただきます。
COBOLに詳しい方、何卒よろしくお願いします。

内容は以下です。
※サンプル用にかなり書き換えており、
宣言等は省いてます。ご了承ください。

・読み込みファイル1(FILE1)
項目ID(F1-KEY) :項目名称(キー):プライマリキー
項目ID(F1-TORCD):項目名称(取引先コード):プライマリキー
項目ID(F1-KUBUN):項目名称(区分):プライマリキー
項目ID(F1-BIKO) :項目名称(備考)

・読み込みファイル2(FILE2)
項目ID(F2-KEY) :項目名称(キー):プライマリキー
項目ID(F2-TORCD):項目名称(取引先コード):プライマリキー
項目ID(F2-KUBUN):項目名称(区分):プライマリキー
項目ID(F2-BIKO) :項目名称(備考)

COBOL

1000000 ENVIRONMENT DIVISION. 2000000 INPUT-OUTPUT SECTION. 3000000 FILE-CONTROL. 4000000 SELECT FILE1 ASSIGN FILE1-RDB 5000000 ORGANIZATION INDEXED 6000000 ACCESS MODE DYNAMIC 7000000 RECORD KEY F1-KEY 8000000 FILE STATUS IS FSTS. 9000000 SELECT FILE2 ASSIGN FILE2-RDB 10000000 ORGANIZATION INDEXED 11000000 ACCESS MODE DYNAMIC 12000000 RECORD KEY F2-KEY 13000000 FILE STATUS IS FSTS. 14000000***** FD句省略************************************** 15000000*ファイル1READ 16000000 SELECT FILE1. 17000000* 18000000 INITIALIZE F2-KEY1. 19000000 MOVE F1-TORCD TO F2-TORCD. 20000000 MOVE F1-KUBUN TO F2-KUBUN. 21000000* 22000000*ファイル2READ 23000000 START FILE2 KEY NOT < F2-KEY1 INVALID 24000000 STOP RUN. 25000000 26

上記のような処理をSQL(ORACLE)に書き換えると、

SQL

1SELECT * 2FROM FILE1 3OUTER JOIN FILE2 ON F1-TORCD = F2-TORCD 4 AND F2-KUBUN = F1-KUBUN;

の様になると考えているのですが、間違いないでしょうか?
ファイル2READ時の、「KEY NOT < F2-KEY1」がどういうことだろう?と引っかかっております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

COBOLでは、DMLを記述しません。RDBMSのようなシステムを操作する場合にも、一般的にはREAD、
WRITE,REWRITE、START、DELETE 文を利用します。ただ、UNIX系のOSで起動するCOBOLではその限りではありません。どのように利用するかは環境により独自に予約後が用意されていると思いますのでマニュアルを読んでください。

投稿2019/01/22 13:35

akirafudo6

総合スコア341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SELECT FILE1.は文法エラーですね。

START FILE2 KEY NOT < F2-KEY1 INVALID STOP RUN.は、

SQL

1SELECT * FROM FILE2 WHERE プライマリキーのカラム名 >= ?;

で、プレースホルダー?に、F2-KEY1の値をバインドします。

結果が0件ならプログラム終了です。

投稿2016/06/16 06:44

編集2016/06/16 12:28
otn

総合スコア84542

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xo001122

2016/06/16 06:58

回答ありがとうございます。 SELECT FILE1 では文法エラーになりますか。ちょっと調べてみます。 すみません、F2-KEY1より大きいプライマリキーというのがピンときません。 記載しておりませんでしたが、F2-KEY1がプライマリキーになります。 もう1点教えて頂きたいのですが、ファイル2を読み込む前の「MOVE TO」は結合条件に当たると考えていたのですが違うようなので、何のために「MOVE TO」を行っているのか教えて頂けないでしょうか。よろしくお願いします。
otn

2016/06/16 07:47

> SELECT FILE1 では文法エラーになりますか。 SELECTは宣言文で用いられ、物理ファイルに対して論理ファイル名を宣言します。論理ファイル名しかないと意味不明です。 > F2-KEY1より大きいプライマリキーというのがピンときません。記載しておりませんでしたが、F2-KEY1がプライマリキーになります。 RDBMSであれば、プライマリーキーのカラム名があるはずで、F2-KEY1はそのカラムと比較する普通の変数名です。 > 何のために「MOVE TO」を行っているのか プライマリーキーカラムと比較すべき値を作り出している。
xo001122

2016/06/16 08:31 編集

>論理ファイル名しかないと意味不明です。 記載してます通り、宣言を省略してますので、宣言してあるものと思って頂きたいです。 >RDBMSであれば、プライマリーキーのカラム名があるはずで、F2-KEY1はそのカラムと比較する普通の変数名です。 ちょっと投稿を編集しました。F2-KEY1がカラム名にあたります。 >プライマリーキーカラムと比較すべき値を作り出している。 つまり、F1-TORCD >= F2-TORCD,F2-KUBUN >= F1-KUBUNということでしょうか? なかなか理解できずに申し訳ありません...。
otn

2016/06/16 12:31

宣言部分のselectは良いのですが、`SELECT FILE1.`が実行文部分にあるように見受けられ、それがおかしいと言っています。あるいは特殊な方言でしょうか? > F2-KEY1がカラム名にあたります。 COBOLの話じゃなくて、SQLの話をしています。 わかりにくかったようなので、回答を修正しました。 > つまり、F1-TORCD >= F2-TORCD,F2-KUBUN >= F1-KUBUNということでしょうか? 違います。 プライマリキーがF2-KEY1と等しいか大きいかどうかです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問