Es-cobol-cobol-database-interface

提供:Dev Guides
移動先:案内検索

COBOL-Interatoz de la Base de Datos

Hasta ahora、hemos aprendido el uso de los archivos en COBOL。 Ahora、プログラマーCOBOL con DB2と対話します。 Implica las siguientes condiciones:

  • 埋め込みSQL
  • DB2のアプリケーションプログラミング
  • 変数ホスト
  • SQLCA
  • Las consultas SQL *カーソル

埋め込みSQL

SQLの組み込みとCOBOL SQLのプログラムを使用したCOBOL SQLの操作が可能です。 SQLは、SQLの前処理者であり、SQLの前処理者は、アプリケーションのプログラムを実行します。 COBOL es conocida como la* lengua delpaísanfitrión*。 COBOL-DB2は、COBOLおよびDB2を含みます。

Las sentencias SQL incorporadas como declaraciones SQL normal con algunos cambios de menor importancia。 ejemploによって、コンサルトされていない変数の定義は、ホストホスト変数*のように事前定義された変数とは異なります。 インストラクションを選択します。

DB2のアプリケーションプログラミング

Siguientes息子las reglas que deben seguirse al codificar un COBOL-DB2プログラム:

  • Todas lasは、 EXEC SQL y END-EXEC のSQL debe estar delimitado entreをインストールします。
  • Instrucciones SQL debe estar codificado en la zona B. ワーキングストレージ部門で使用されるタブラおよびタブラのプログラム。 Esto se realiza mediante la include *instrucción。 *Todas las instrucciones SQL que incluyen y DECLARAR TABLA debe aparecer en el procedimiento。

変数ホスト

タブラやタブラの挿入に関するデータの変数を使用できます。 DB2での変数の設定と宣言の宣言 Que laがen-Working-StorageSecciónを宣言します。

ラスの変数デロスエレポスデルグルーポノープエデセル、ペロプエデンセルアグルパドスアンドエストラクチュアデアコギダ Que no se puede* cambiar o redefinirse 。 Uso de変数consは、SQLを実行します、preponjo el prefijo de * dos puntos(:)

シンタクシス

シンタックスパラ宣言変数のホストおよびホストストレージタブの作業ストレージセクション:

DATA DIVISION.
   WORKING-STORAGE SECTION.

   EXEC SQL
   INCLUDE table-name
   END-EXEC.

   EXEC SQL BEGIN DECLARE SECTION
   END-EXEC.

   01 STUDENT-REC.
      05 STUDENT-ID PIC 9(4).
      05 STUDENT-NAME PIC X(25).
      05 STUDENT-ADDRESS X(50).
   EXEC SQL END DECLARE SECTION
   END-EXEC.

SQLCA

SQLCA SQLは、プログラムのSQLのDB2のコメンタリオの一般的なパサのトラバーサルです。 インディカ・アル・プログラム・シ・ラ・エジュクシオン・ハ・シド・コレクタ SQLCA como SQLCODE que contiene elcódigode errorの変数を事前定義します。 El valor '000' en los estados SQLCODE unaejecucióncorrecta。

シンタクシス

SQLCAを使用したシンタックスパラパラ宣言と作業用ストレージセクション:

DATA DIVISION.
WORKING-STORAGE SECTION.
    EXEC SQL
    INCLUDE SQLCA
    END-EXEC.

Las consultas SQL

Supongamos que tenemos una tabla denominada como 'alumno' que contiene Student-Id、Student-Name y Student-Address。

ラ・タブラ・デ・アラムノス・コンティエン・ロス・シギエンテス・ダトス

Student Id      Student Name        Student Address
1001            Mohtashim M.        Hyderabad
1002            Nishant Malik       Delhi
1003            Amitabh Bachan      Mumbai
1004            Chulbul Pandey      Lucknow

El siguiente ejemplo muestra el uso de * SELECT * consulta en un programa COBOL:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   EXEC SQL
      INCLUDE SQLCA
   END-EXEC.

   EXEC SQL
      INCLUDE STUDENT
   END-EXEC.

   EXEC SQL BEGIN DECLARE SECTION
   END-EXEC.
      01 WS-STUDENT-REC.
         05 WS-STUDENT-ID PIC 9(4).
         05 WS-STUDENT-NAME PIC X(25).
         05 WS-STUDENT-ADDRESS X(50).
   EXEC SQL END DECLARE SECTION
   END-EXEC.

PROCEDURE DIVISION.
   EXEC SQL
      SELECT STUDENT-ID, STUDENT-NAME, STUDENT-ADDRESS
      INTO :WS-STUDENT-ID, :WS-STUDENT-NAME, WS-STUDENT-ADDRESS FROM STUDENT
      WHERE STUDENT-ID=1004
   END-EXEC.

   IF SQLCODE=0
      DISPLAY WS-STUDENT-RECORD
   ELSE DISPLAY 'Error'
   END-IF.
STOP RUN.
*JCL* COBOLプログラムの例:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP001  EXEC PGM=IKJEFT01
//STEPLIB  DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSTSIN  DD *
    DSN SYSTEM(SSID)
    RUN PROGRAM(HELLO) PLAN(PLANNAME) -
    END
/*

プログラムの作成と編集、結果の生成:

1004 Chulbul Pandey     Lucknow

El siguiente ejemplo muestra el uso de INSERT en un programa COBOL:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   EXEC SQL
   INCLUDE SQLCA
   END-EXEC.

   EXEC SQL
   INCLUDE STUDENT
   END-EXEC.

   EXEC SQL BEGIN DECLARE SECTION
   END-EXEC.
      01 WS-STUDENT-REC.
         05 WS-STUDENT-ID PIC 9(4).
         05 WS-STUDENT-NAME PIC X(25).
         05 WS-STUDENT-ADDRESS X(50).
   EXEC SQL END DECLARE SECTION
   END-EXEC.

PROCEDURE DIVISION.
   MOVE 1005 TO WS-STUDENT-ID.
   MOVE 'finddevguides' TO WS-STUDENT-NAME.
   MOVE 'Hyderabad' TO WS-STUDENT-ADDRESS.

   EXEC SQL
      INSERT INTO STUDENT(STUDENT-ID, STUDENT-NAME, STUDENT-ADDRESS)
      VALUES (:WS-STUDENT-ID, :WS-STUDENT-NAME, WS-STUDENT-ADDRESS)
   END-EXEC.

   IF SQLCODE=0
      DISPLAY 'Record Inserted Successfully'
      DISPLAY WS-STUDENT-REC
   ELSE DISPLAY 'Error'
   END-IF.
STOP RUN.
*JCL* プログラムのCOBOLに似ています。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP001  EXEC PGM=IKJEFT01
//STEPLIB  DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSTSIN  DD *
    DSN SYSTEM(SSID)
    RUN PROGRAM(HELLO) PLAN(PLANNAME) -
    END
/*

プログラムの作成と編集、結果の生成:

Record Inserted Successfully
1005 finddevguides      Hyderabad

El siguiente ejemplo muestra el uso de * ACTUALIZAR * consulta en un programa COBOL:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.

   EXEC SQL
   INCLUDE SQLCA
   END-EXEC.

   EXEC SQL
   INCLUDE STUDENT
   END-EXEC.

   EXEC SQL BEGIN DECLARE SECTION
   END-EXEC.
      01 WS-STUDENT-REC.
         05 WS-STUDENT-ID PIC 9(4).
         05 WS-STUDENT-NAME PIC X(25).
         05 WS-STUDENT-ADDRESS X(50).
   EXEC SQL END DECLARE SECTION
   END-EXEC.

PROCEDURE DIVISION.
   MOVE 'Bangalore' TO WS-STUDENT-ADDRESS.
   EXEC SQL
      UPDATE STUDENT SET STUDENT-ADDRESS=:WS-STUDENT-ADDRESS
      WHERE STUDENT-ID=1003
   END-EXEC.

   IF SQLCODE=0
      DISPLAY 'Record Updated Successfully'
   ELSE DISPLAY 'Error'
   END-IF.
STOP RUN.
*JCL* COBOLプログラムの例:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP001  EXEC PGM=IKJEFT01
//STEPLIB  DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSTSIN  DD *
    DSN SYSTEM(SSID)
    RUN PROGRAM(HELLO) PLAN(PLANNAME) -
    END
/*

プログラムの作成と編集、結果の生成:

Record Updated Successfully

El siguiente ejemplo muestra el uso de ELIMINAR consulta en un programa COBOL:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
WORKING-STORAGE SECTION.

   EXEC SQL
   INCLUDE SQLCA
   END-EXEC.

   EXEC SQL
   INCLUDE STUDENT
   END-EXEC.

   EXEC SQL BEGIN DECLARE SECTION
   END-EXEC.
      01 WS-STUDENT-REC.
         05 WS-STUDENT-ID PIC 9(4).
         05 WS-STUDENT-NAME PIC X(25).
         05 WS-STUDENT-ADDRESS X(50).
   EXEC SQL END DECLARE SECTION
   END-EXEC.

PROCEDURE DIVISION.
   MOVE 1005 TO WS-STUDENT-ID.

   EXEC SQL
      DELETE FROM STUDENT
      WHERE STUDENT-ID=:WS-STUDENT-ID
   END-EXEC.

   IF SQLCODE=0
      DISPLAY 'Record Deleted Successfully'
   ELSE DISPLAY 'Error'
   END-IF.
STOP RUN.
*JCL* COBOLプログラムの例:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP001  EXEC PGM=IKJEFT01
//STEPLIB  DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSTSIN  DD *
    DSN SYSTEM(SSID)
    RUN PROGRAM(HELLO) PLAN(PLANNAME) -
    END
/*

プログラムの作成と編集、結果の生成:

Record Deleted Successfully

カーソル

失われたカーソルは、一瞬で利用可能になります。 コンサルタントからの相談に応じる必要があります。 作業用ストレージのセキュリティと処理手順の定義。 連続した、連続したカーソル操作のカーソル:

  • 宣言
  • アブリル
  • セラー *バスカー

カーソルを宣言

カーソルは、作業用ストレージのセキュリティと処理手順を提供します。 ラ・プリクラマ・デクララシオン・エス・ラ・インストラクションDECLARE que no es una unainstrucciónejecutable。

EXEC SQL
   DECLARE STUDCUR CURSOR FOR
   SELECT STUDENT-ID, STUDENT-NAME, STUDENT-ADDRESS FROM STUDENT
   WHERE STUDENT-ID >:WS-STUDENT-ID
END-EXEC.

アブリル

カーソルを利用して、declaraciónabierta debe realizarseを利用できます。 LainstrucciónSELECCIONE para suejecuciónの事前準備を開きます。

EXEC SQL
   OPEN STUDCUR
END-EXEC.

セラー

Cerrardeclaraciónlibera toda la memoria ocupada por el cursor。 必須のプログラムおよびターミネータエルカーソル。

EXEC SQL
   CLOSE STUDCUR
END-EXEC.

バスカー

識別カーソルをクラスラーに追加します。 UnainstrucciónFetch es codificada en bucle、como tenemos una fila a la vez。

EXEC SQL
   FETCH STUDCUR
   INTO :WS-STUDENT-ID, :WS-STUDENT-NAME, WS-STUDENT-ADDRESS
END-EXEC.

El siguiente* ejemplo * muestra el uso del cursor para obtener todos los registros de la tabla de alumnos:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.

   EXEC SQL
   INCLUDE SQLCA
   END-EXEC.

   EXEC SQL
   INCLUDE STUDENT
   END-EXEC.

   EXEC SQL BEGIN DECLARE SECTION
   END-EXEC.
      01 WS-STUDENT-REC.
         05 WS-STUDENT-ID PIC 9(4).
         05 WS-STUDENT-NAME PIC X(25).
         05 WS-STUDENT-ADDRESS X(50).
   EXEC SQL END DECLARE SECTION
   END-EXEC.

   EXEC SQL
      DECLARE STUDCUR CURSOR FOR
      SELECT STUDENT-ID, STUDENT-NAME, STUDENT-ADDRESS FROM STUDENT
      WHERE STUDENT-ID >:WS-STUDENT-ID
   END-EXEC.

PROCEDURE DIVISION.
   MOVE 1001 TO WS-STUDENT-ID.
   PERFORM UNTIL SQLCODE = 100

   EXEC SQL
      FETCH STUDCUR
      INTO :WS-STUDENT-ID, :WS-STUDENT-NAME, WS-STUDENT-ADDRESS
   END-EXEC

   DISPLAY WS-STUDENT-REC
END-PERFORM
STOP RUN.
*JCL* COBOLプログラムの例:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP001  EXEC PGM=IKJEFT01
//STEPLIB  DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSTSIN  DD *
    DSN SYSTEM(SSID)
    RUN PROGRAM(HELLO) PLAN(PLANNAME) -
    END
/*

プログラムの作成と編集、結果の生成:

1001 Mohtashim M.       Hyderabad
1002 Nishant Malik      Delhi
1003 Amitabh Bachan     Mumbai
1004 Chulbul Pandey     Lucknow