早見表
手を止めずに引く
サンプルを読むときに毎回調べ直すものを集めました。 正式な定義は機能説明書にあります。
固定形式の桁
SIT COBOL のソースは固定形式です。何桁目に書くかで意味が変わります。
| 桁 | 領域 | 何を書くか |
|---|---|---|
1-6 | 一連番号領域 | 行番号。処理には影響しない。10 刻みで振るのが慣習 |
7 | 標識領域 | * または / = 注記行 / - = 継続行 / 空白 = ふつうの行 |
8-11 | A領域 | DIVISION・SECTION・段落名・01 と 77 のレベル番号・FD |
12-72 | B領域 | 手続きの文、02 以降のレベル番号 |
73- | 識別領域 | 無視される |
桁は文字数ではなく表示幅で数えます。全角文字は2桁分です。 等幅の日本語フォント(MS ゴシックなど)でないと画面上で桁が合いません。
PIC 句
| 記号 | 意味 | 例 |
|---|---|---|
9 | 数字1桁 | PIC 9(5) → 00000〜99999 |
X | 英数字1桁 | PIC X(10) |
N | 日本語1文字 | PIC N(15) |
A | 英字1桁 | PIC A(4) |
S | 符号つき(先頭に付ける) | PIC S9(5) |
V | 小数点の位置(場所を取らない) | PIC S9(5)V99 |
(n) | 直前の記号を n 回 | PIC 9(7) = PIC 9999999 |
編集用の記号(表示のために整える)
| 記号 | 働き | 例 |
|---|---|---|
Z | 頭の 0 を空白にする | PIC ZZZ9 → 「 12」 |
, | 桁区切りを入れる | PIC ZZ,ZZ9 → 「12,345」 |
. | 小数点を表示する | PIC ZZ9.99 |
* | 頭の 0 を * にする | PIC ***9 → 「**12」 |
/ | その位置に / を入れる | PIC 99/99/99 → 「25/03/14」 |
B | その位置に空白を入れる | PIC NNBNN |
- + | 符号を表示する | PIC -ZZZ9 |
ファイルの種類
| ORGANIZATION | 実体 | 版 | サンプル |
|---|---|---|---|
SEQUENTIAL | 固定長の連続したデータ | Standard | 順ファイル |
LINE SEQUENTIAL | 行単位のテキスト | Standard | 帳票の出力 |
LINE SEQUENTIAL WITH CSV |
CSV。SIT COBOL 独自の書き方 | Standard | CSVファイル |
INDEXED |
SQLite3 ファイル。records(key, data) の1表 |
Pro版 | 索引ファイル |
ファイル状態(FILE STATUS)
サンプルでは FILE STATUS IS ファイルステータス と宣言して確認しています。
| 値 | 意味 |
|---|---|
00 | 正常に終わった |
10 | 読むデータが無くなった(AT END) |
23 | 該当するレコードが無い(INVALID KEY) |
48 | 書き込めない。 Standard版で索引ファイルに書こうとしたときにこの値になります |
すべての値は第8章を参照してください。
画面(SCREEN SECTION)
画面は半角で 80桁 × 25行 の固定サイズです。
色の番号
COLOR に指定する番号です。商品在庫管理のサンプルは
78 レベルの定数として名前を付けています。
| 番号 | 色 | 番号 | 色 |
|---|---|---|---|
0 | 黒 | 4 | 赤 |
1 | 青 | 5 | 紫(マゼンタ) |
2 | 緑 | 6 | 黄 |
3 | 水色 | 7 | 白 |
CRT-STATUS の値
画面から戻ってきたときに、どのキーが押されたかを持ちます。
| 値 | 意味 |
|---|---|
0 | 確認画面(SCREEN CONFIRM)で「はい」が選ばれた |
1 | PF1 が押された(サンプルでは「前頁」) |
2 | PF2 が押された(サンプルでは「次頁」) |
3 | PF3 が押された(サンプルでは「戻る」) |
組込み関数
FUNCTION 名前(引数) の形で使います。
第11章のサンプルで、次のすべてが実際に確かめられています。
数と計算
MAX MIN MEAN MEDIAN MIDRANGE RANGE
SUM相当: MEAN / STANDARD-DEVIATION / VARIANCE
INTEGER INTEGER-PART MOD REM
SQRT LOG LOG10 FACTORIAL RANDOM
ANNUITY PRESENT-VALUE
ORD ORD-MAX ORD-MIN NUMVAL NUMVAL-C
文字と日付
UPPER-CASE LOWER-CASE REVERSE TRIM
LENGTH CHAR
CURRENT-DATE WHEN-COMPILED
DATE-OF-INTEGER INTEGER-OF-DATE INTEGER-OF-DAY
三角関数
SIN COS TAN ASIN ACOS ATAN
使い方の例
MOVE FUNCTION UPPER-CASE(名前) TO 大文字名
MOVE FUNCTION CURRENT-DATE(1:8) TO 今日
IF FUNCTION MOD(数, 2) = 0
組込みサブルーチン
CALL "名前" USING ... で呼びます。ファイルやフォルダの操作、
プロセス番号の取得ができます。
第10章のサンプルにすべて出てきます。
| 名前 | すること |
|---|---|
CBL_GET_CURRENT_DIR | いまのフォルダを取得する |
CBL_CHANGE_DIR | フォルダを移動する |
CBL_CREATE_DIR | フォルダを作る |
CBL_CHECK_FILE_EXIST | ファイルがあるか調べる |
CBL_COPY_FILE | ファイルを複製する |
CBL_RENAME_FILE | ファイルの名前を変える |
CBL_DELETE_FILE | ファイルを消す |
CBL_GET_PID | 自分のプロセス番号を取る |
CBL_GET_PPID | 呼び出し元のプロセス番号を取る |
第12章の改善版は CBL_GET_PPID で取った番号をファイル名の頭に付けて、
同じバッチを同時に動かしても壊れないようにしています。
ファイルの保存形式
| 種類 | 文字コード | 改行 | 理由 |
|---|---|---|---|
.cob | UTF-8 BOM無し | CRLF | SIT COBOL の前提 |
.bat | UTF-8 BOM無し | CRLF 必須 | LF だけだと cmd.exe が解析に失敗する |
.ps1 | UTF-8 BOM有り | CRLF | PowerShell 5.1 は BOM 無しを CP932 として読む |
同梱のファイルはこの決まりに揃えてあります。 くわしくは困ったときを参照してください。