COBOL2002 言語 拡張仕様編


9.3.2 全般規則(データベースアクセス機能)

SQLの規則とCOBOL言語の規則の異なる部分について説明する。

  1. 文字集合で次に示す特殊文字は使用できない。

    引用符("),通貨記号(\),セミコロン(;),アンパサンド(&)

  2. 識別子

    識別子は,利用者定義語の規則に従い定義する。また,DBMSによって規定される場合もある。

    識別子には,次に示す種類がある。

    識別子

    内容

    認可識別子

    表名およびプロシージャ名を修飾するDBMSで規定された名前とする。認可識別子が暗であっても陽であっても,二つの表名が等しいということは,それらの表名と認可識別子は同じであることとする。

    表名

    表名とは,表に付けられた名前とする。

    列名

    列名とは,表の列に付けられた名前とする。

    相関名

    相関名とは,SELECT文,副問い合わせ指定,または問い合わせ指定で使用され,その指定された FROM句の有効範囲で表名の別名として付けられた名前とする。

    カーソル名

    カーソル名とは,カーソルの名前とする。

    プロシージャ名

    プロシージャ名とは,ストアドプロシージャに付けられた名前とする。

    SQL文名

    動的に準備するSQL文に付けられた名前とする。

    コネクション名

    確立されたコネクションに付けられた名前とする。

    表名およびプロシージャ名は,次の形式で修飾できる。

    [図データ]

    識別子を構成する文字は,31字を超えてはならない。

  3. 予約語は,COBOLの予約語に加え次に示す語が,SQLでは予約語とする。

    斜体の語は,COBOLの予約語である。

    頭文字

    予約語

    A

    ALLANDANYAS,ASC,AUTHORIZATION,AVG,ABSOLUTE,ADA,ADDALLOCATEALTERARE,ASSERTION,AT

    B

    BEGIN,BETWEEN,BY,BIGINT,BINARYBIT,BIT_LENGTH

    C

    CHAR,CHARACTER,CHECK,CLOSECOBOLCOMMITCONTINUECOUNT,CREATE,CURRENTCURSORCALL,CASCADE,CASCADED,CASE,CAST,CATALOG,CHAR_LENGTH,CHARACTER_LENGTH,COALESCE,COLLATE,COLLATION,COLUMNCONNECT,CONNECTION,CONSTRAINT,CONSTRAINTS,CONVERT,CORRESPONDING,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP

    D

    DEC,DECIMAL,DECLARE,DEFAULTDELETE,DESC,DISTINCT,DOUBLEDATA,DATA_TYPE,DATEDAY,DEALLOCATE,DEFERRABLE,DEFERRED,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DICTIONARY,DISCONNECT,DISPLACEMENT,DOMAIN,DROP

    E

    END,ESCAPE,EXEC,EXISTS,ELSEEND-EXEC,EXCEPT,EXCEPTION,EXECUTE,EXTERNAL,EXTRACT

    F

    FETCH,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROMFALSEFIRSTFULL

    G

    GO,GOTO,GRANT,GROUPGETGLOBAL

    H

    HAVING,HOLDLOCK,HOUR

    I

    IN,INDICATOR,INSERT,INT,INTEGER,INTOIS,IDENTIFIED,IDENTITY,IGNORE,IMMEDIATE,INCLUDEINDEX,INITIALLY,INNER,INPUT,INSENSITIVE,INTERSECT,INTERVAL,ISOLATION

    J

    JOIN

    K

    KEY

    L

    LANGUAGE,LIKE,LASTLEFTLENGTH,LEVEL,LOCAL,LONG,LOWER

    M

    MAX,MIN,MODULE,MATCH,MINUTE,MONTH,MUMPS

    N

    NATIONAL,NCHAR,NOTNULLNUMERICNAME,NAMES,NEXT,NONE,NULLABLE,NULLIF

    O

    OFONOPEN,OPTION,ORORDER,OCTET_LENGTH,OFFONLY,OUTER,OUTPUT,OVERLAPS

    P

    PASCAL,PLI,PRECISION,PRIMARY,PRIVILEGES,PROCEDURE,PUBLIC,PAPAMTER_TYPE,PARTIAL,PERFORMPOSITION,PREPARE,PRESERVE,PRIOR

    R

    REAL,REFERENCESROLLBACK,RESTRICT,REVOKE,RIGHT,ROWS

    S

    SCHEMA,SECTIONSELECTSET,SMALLINT,SOME,SQL,SQLCODE,SQLERROR,SUM,SCALE,SCROLL,SECOND,SEQUENCE,SIZE,SQLCA,SQLSTATE,SQLWARNING,STOP,SUBSTRING,SYSTEM

    T

    TABLETOTEMPORARYTHENTIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,TINYINT,TRANSACTION,TRANSLATE,TRANSLATION,TRUETYPE

    U

    UNION,UNIQUE,UPDATE,USER,UNKNOWN,UNSIGNED,UPPER,USAGEUSING

    V

    VALUES,VIEW,VALUE,VARBINARY,VARCHAR,VARYING

    W

    WHENEVER,WHEREWITH,WORK,WHEN

    Y

    YEAR

  4. 定数は,英数字定数,数字定数および浮動小数点数字定数とする。

    (a) 英数字定数の長さは,1〜160字とする。

    (b) 連結式を書くことはできない。

    (c) 数字定数のけた数は,1〜18けたとする。

    (d) 仮数のけた数は,1〜16けた,指数のけた数は,1〜2けたとする。

    注意事項

    SQLの英数字定数はアポストロフィ(')でしか囲むことができないため,アポストロフィ(')を英数字定数に含むときはアポストロフィ(')を2回続けなければならない。

    (例)

    A'B'Cという5文字の英数字定数は次のように指定する。

    'A''B''C'

  5. 行内注記

    行内注記は,注釈導入子で始まり,行の最後の文字で終わる。注釈導入子とは,分離符の空白に続く二つ以上の連続するハイフン(-)の並びとする。

    この行内注記は,SQL文中の分離符の空白が許される個所であればどこに現われてもよい。

  6. 分離符の句読文字のコンマ(,)は,構文で規定された個所以外に用いることはできない。

    (a) 非区切りトークンの後ろにハイフン(-)および注釈導入子を続けてはならない。また,ハイフンの後ろに非区切りトークンを続けてはならない。

  7. 算術演算子では,二項演算子のべき乗(**)を使用できない。

  8. 比較演算子を次に示す。

    比較演算子

    意味

    =

    等しい

    <>

    等しくない

    <

    より小さい

    >

    より大きい

    <=

    より小さいか,または等しい

    >=

    より大きいか,または等しい

  9. 浮動指示子

    COBOLの場合と同様に,埋め込みSQL文中に次に示す浮動指示子を使用できる。ただし,-SQL,ODBC,NoContオプションを指定した場合には,定数継続指示子は無効にし,定数の右閉じアポストロフィとハイフンとして処理する。

    指示子

    意味

    *>

    注記指示子

    >>

    翻訳指令指示子

    '-

    定数継続指示子( "- は指示子にならない)

    >>D

    デバッグ指示子

  10. 修飾

    修飾語と被修飾語をピリオド(.)で連結して修飾する場合,被修飾語が次の形式のときは,直前のピリオド(.)との間に空白を置かなければならない。

    [ 数字 ] E [ - ] 数字 [ - [ 利用者定義語構成文字 ] ] または 数字 - 利用者定義語構成文字

    なお,修飾の形式については,表名およびプロシージャ名は「2. 識別子」,埋め込み変数は「9.4.2 埋め込み変数(データベースアクセス機能)」,列名は「9.5.2 列指定(データベースアクセス機能)」をそれぞれ参照のこと。