diff --git a/README.md b/README.md
index a3d19d4..5838a59 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ COBOL文法の完全日本語マニュアル『opensource COBOL Programmer's Gui
2021年より始動した本プロジェクトは、OSSコンソーシアム オープンCOBOLソリューション部会が活動の一環として、マニュアルの翻訳・執筆を進めています(プロジェクトリーダー:東京システムハウス 島田桃花)。
初版は原著をそのまま翻訳した内容です。第二版では、opensource COBOL で追加実装した日本語機能や新機能の説明を追加しました。
-第三版以降で、新製品である opensource COBOL 4J についての説明を追加していく予定です。
+今後は、新製品である opensource COBOL 4J についての説明を追加していく予定です。
| PDF版 | HTML版 |
| --- | --- |
@@ -22,6 +22,8 @@ COBOL文法の完全日本語マニュアル『opensource COBOL Programmer's Gui
## 改訂履歴
+改訂履歴は[こちら](/markdown/history.md)です。
+=======
|版|発行日|改訂詳細|
|---|---|---|
diff --git a/markdown/list.txt b/list.txt
similarity index 100%
rename from markdown/list.txt
rename to list.txt
diff --git a/markdown/markdown.code-workspace b/markdown.code-workspace
similarity index 100%
rename from markdown/markdown.code-workspace
rename to markdown.code-workspace
diff --git a/markdown/1-2-4.md b/markdown/1-2-4.md
index 03fc837..bd0d93b 100644
--- a/markdown/1-2-4.md
+++ b/markdown/1-2-4.md
@@ -5,7 +5,7 @@
COBOLの主な強みの一つは、様々なファイルにアクセスできることである。opensource COBOLは、他のCOBOL実装と同様に、読み書きするファイルの構造を記述しておく必要がある。ファイル構造の最高レベルの特性は、次のように、ファイルの編成([4.2.1](4-2-1-1.md))を指定することによって定義される。
-|||
+|記述方法|説明|
|:---|:---|
|ORGANIZATION IS
LINE SEQUENTIAL|内部構造の中で最も単純なファイルであり、その内容は一連のデータレコードとして簡単に構造化され、特殊なレコード終了区切り文字で終了する。ASCII 改行文字(16進数の0A)は、UNIXまたは疑似UNIX(MinGW、Cygwin、MacOS)のopensource COBOLビルドで使用されるレコード終了区切り文字である。真のネイティブWindowsビルドでは、行頭復帰(CR)、改行(LF)(16進数の0D0A)順序が使用される。
ファイルタイプのレコードは、同じ長さである必要はない。
レコードは、純粋にファイルの先頭から順に読み書きする必要がある。レコード番号100を読み取る(または書き込む)唯一の方法は、最初にレコード番号1から99を読み取る(または書き込む)ことである。
opensource COBOLプログラムによってファイルに書き込まれるとき、区切り文字順序が各データレコードに自動的に追加される。
ファイルが読み取られるとき、opensource COBOLランタイムシステムは各レコードから末尾の区切り文字順序を削除し、読み取ったデータがプログラム内のデータレコード用に記述された領域よりも短い場合、必要に応じて、データ(の右側)を空白で埋める。データが長すぎる場合は切り捨てられ、超過分は消失する。
これらのファイルは、正確なバイナリデータ項目を含むように定義してはならない。これらの項目の内容の値の一部として、誤ってレコード終了順序が含まれる可能性があるためである。これは、ファイル読み取り時にランタイムシステムを混乱させ、その値を実際のレコード終了順序として解釈してしまう。|
ORGANIZATION IS
RECORD BINARY
SEQUENTIAL|これらのファイルも単純な内部構造を持っており、内容も一連の固定長データレコードとして簡単に構化されており、特別なレコード終了区切り文字はない。
このファイルタイプのレコードは、物理的な長さがすべて同じである。可変長論理レコードがプログラムに定義されている場合([5.3](5-3.md))、ファイル内の各物理レコードが占有する空白は、占有可能な最大である。
レコードは、純粋にファイルの先頭から順に読み書きする必要がある。レコード番号100を読み取る(または書き込む)唯一の方法は、最初にレコード番号1から99を読み取る(または書き込む)ことである。
ファイルがopensource COBOLプログラムによって書き込まれる場合、区切り文字順序はデータに追加されない
ファイルが読み取られると、データはファイルに存在する通りにプログラムに転送される。短いレコードが最後のレコードとして読み取られる場合は空白が埋め込まれる。
このようなファイルを読み取るプログラムは、そのファイルを作成したプログラムが使用する長さとまったく同じ長さのレコードを記述するよう注意しなければならない。例えば、次の例は6文字のレコードを5つ書き込んだプログラムによって作成されたRECORD BINARY SEQUENTIALファイルの内容を示している。「A」、「B」、・・・の値と背景色は、ファイルに書き込まれたレコードを反映している。

ここで、別のプログラムがこのファイルを読み取るが、6文字ではなく10文字のレコードが記述されているとする。プログラムが読み取るレコードは次の通りである。

これはあなたが求めていた結果かもしれないが、多くの場合でこれは望ましい動作ではない。これは、コピーブックを使用してファイルのレコードレイアウトを記述することで、そのファイルにアクセスする複数のプログラムが同じレコードサイズとレイアウトを「参照する」ことが保証される。
これらのファイルには、正確なバイナリデータ項目を含めることができる。レコード終了区切り文字がないため、レコード項目の内容は読み取りプロセスとは無関係である。
|
diff --git a/markdown/1-3.md b/markdown/1-3.md
index 5a178bd..de7d419 100644
--- a/markdown/1-3.md
+++ b/markdown/1-3.md
@@ -5,7 +5,7 @@
opensource COBOL言語の構文について、COBOLプログラマに馴染みのある規則に従って説明していく。以下は、構文の記述方法についての説明である。
-| | |
+|構文|説明|
| :--- | :--- |
| 大文字 | COBOL言語のキーワードと実装に依存する名前(いわゆる「予約語」)は大文字で表示される。 |
| 下線 | 下線が引かれている予約語は、構文上の文脈により必要である。予約語に下線が引かれていない場合はオプションであり、プログラムに影響を与えない。 |
diff --git a/markdown/1-4.md b/markdown/1-4.md
index e6c4231..2cec357 100644
--- a/markdown/1-4.md
+++ b/markdown/1-4.md
@@ -7,7 +7,7 @@
opensource COBOLには、入力ファイルのソースコード形式を指定する、次の四つの方法がある。
-| | |
+|記述方法|説明|
| :--- | :--- |
| -fixed | このopensource COBOLコンパイラスイッチは、ソースコード入力が従来の固定形式(80桁)になることを指定し、これが初期モードである。 |
| -free | このopensource COBOLコンパイラスイッチは、ソースコード入力がANSI2002の自由形式(256桁)になることを指定する。 |
@@ -16,12 +16,12 @@ opensource COBOLには、入力ファイルのソースコード形式を指定
以下のものは、opensource COBOLプログラムで様々なことを示すために使う、特別な命令または文字である。
-| | |
+|記述方法|説明|
| :--- | :--- |
| 7桁目の「*」 | ソース行がコメントであることを示し、固定形式モードの場合のみ有効である。 |
| 7桁目の「D」 | ソース行が有効なopensource COBOLコードであり、opensource COBOLコンパイラに「–fdebugging-line」スイッチが指定されていない限り(その場合、行はコンパイルされる)コメントであることを示す。固定形式モードの場合のみ有効である。 |
| 7桁目の「$IF」 | ソース行が有効なopensource COBOLコードであり、opensource COBOLコンパイラに「–fdebugging-line」スイッチが指定されていない限り(その場合、行はコンパイルされる)コメントであることを示す。固定形式モードの場合のみ有効である。 |
-| 7桁目の「$IF」 | 
定数名-1がコンパイルオプション「-constant」で指定されており、定数-1の値が定数名-1の値に等しい時、または定数名-1の値の範囲内にある時、$IF文以降に続くソース行の処理が実行される。

定数名-2がコンパイルオプション「-constant」で指定されている時、DEFINED句は真となり、$IF文以降に続くソース行の処理が実行される。それ以外の場合はNOT DEFINED句が真となり、$IF文以降に続くソース行の処理が実行される。 |
+| 7桁目の「$IF」 | 
定数名-1がコンパイルオプション「-constant」で指定されており、定数-1の値が定数名-1の値に等しい時、または定数名-1の値の範囲内にある時、$IF文以降に続くソース行の処理が実行される。

定数名-2がコンパイルオプション「-constant」で指定されている時、DEFINED句は真となり、$IF文以降に続くソース行の処理が実行される。それ以外の場合はNOT DEFINED句が真となり、$IF文以降に続くソース行の処理が実行される。 |
| 7桁目の「$ELSE」 | 直前の$IF文の条件式が偽である時、$ELSE文に制御が移り、$ELSE文以降に続くソース行の処理が実行される。直前の$IF文の条件式が真である時、$ELSE文は無視される。 |
| 7桁目の「$END」 | $END文と同じレベルにある$IF文または$ELSE文に続くソース行の処理の実行が終了すると、$ENDに制御が移り、$IF文または$ELSE文の終了を示す。 |
| 任意の桁の「*>」 | ソース行の残りの部分がコメントであることを示す。自由形式モードと固定形式モードのどちらでも使用できるが、固定形式モードで使用する場合は、「*」を7桁目以降に入力する必要がある。 |
diff --git a/markdown/1-7-2.md b/markdown/1-7-2.md
index ef9e233..24af8e8 100644
--- a/markdown/1-7-2.md
+++ b/markdown/1-7-2.md
@@ -7,7 +7,7 @@
英数字定数は、次の形式のいずれかを取ることができる。
-- 一重引用符(')文字または二重引用符(")文字で囲まれた一連の文字は、文字列定数を構成する。二重引用符(")は定数内のデータ文字として使用することができる。データ文字として一重引用符文字を含める必要がある場合は、一重引用符を2つ続けて('')表現することで、一重引用符(')を定数内のデータ文字として使用することができる。二重引用符をデータ文字として含める必要がある場合は、二重引用符を2つ続けて("")表現する。
+- 一重引用符(')文字または二重引用符(")文字で囲まれた一連の文字は、*文字列定数*を構成する。二重引用符(")は定数内のデータ文字として使用することができる。データ文字として一重引用符文字を含める必要がある場合は、一重引用符を2つ続けて('')表現することで、一重引用符(')を定数内のデータ文字として使用することができる。二重引用符をデータ文字として含める必要がある場合は、二重引用符を2つ続けて("")表現する。
- X”4A4B4C”(4A4B4C16=ASCII文字列「JKL」)、x’20’(2016=空白)、X’30313233’(3031323316=ASCII文字列「0123」)などの16進数定数。「X」文字は大文字または小文字のいずれかで、一重引用符(')または二重引用符(")文字を使用できる。16進数の英数字定数は、各文字が8ビット分のデータ(2桁の16進数)で表されるため、常に偶数の16進数で構成する必要がある。16進英数字定数の長さはほぼ無制限である。
diff --git a/markdown/3.md b/markdown/3.md
index b7d9c30..ddb7699 100644
--- a/markdown/3.md
+++ b/markdown/3.md
@@ -12,7 +12,7 @@
2. PROGRAM-ID句は他のプログラムが参照できるように(つまりCALL “program-name”)、名前(プログラム名)を定義する。
-3. プログラム名は大文字と小文字を区別する。コンパイル単位が動的にロード可能なライブラリファイル(opensource COBOLコンパイラコマンドの「**-m**」オプションを使用するもの)として作成されている場合、コンパイラによって作成されたライブラリファイル名はプログラム名と完全に一致する。コンパイル単位が実行可能ファイル(opensource COBOLコンパイラコマンドの「**-x**」オプションを使用するもの)として作成されている場合、プログラムIDは有効なCOBOL一意名となり、実行可能ファイル名は、「cbl」または「cob」拡張子のないソースプログラムファイル名と同じになる。
+3. プログラム名は大文字と小文字を区別する。コンパイル単位が動的にロード可能なライブラリファイル(opensource COBOLコンパイラコマンドの「 **-m** 」オプションを使用するもの)として作成されている場合、コンパイラによって作成されたライブラリファイル名はプログラム名と完全に一致する。コンパイル単位が実行可能ファイル(opensource COBOLコンパイラコマンドの「 **-x** 」オプションを使用するもの)として作成されている場合、プログラムIDは有効なCOBOL一意名となり、実行可能ファイル名は、「cbl」または「cob」拡張子のないソースプログラムファイル名と同じになる。
4. INITIAL句とCOMMON句は、サブプログラム内で使用される。COMMON句はネストされたユーザプログラムであるサブプログラム内でのみ使うことができる。
diff --git a/markdown/4-1-1.md b/markdown/4-1-1.md
index b062d87..c3059e3 100644
--- a/markdown/4-1-1.md
+++ b/markdown/4-1-1.md
@@ -31,9 +31,9 @@
1. 計算機名-1に指定された値が、opensource COBOLの予約語とは一致しない有効なCOBOL語である場合、この値は定義と無関係である。
-2. オプションのWITH DEBUGGING MODE句が存在する場合、廃止した構文としてフラグが付けられ(「**-W**」、「**-Wobsolete**」、または「**-Wall**」コンパイラスイッチを使う場合)、プログラムのコンパイルには影響しない。
+2. オプションのWITH DEBUGGING MODE句が存在する場合、廃止した構文としてフラグが付けられ(「 **-W** 」、「 **-Wobsolete** 」、または「 **-Wall** 」コンパイラスイッチを使う場合)、プログラムのコンパイルには影響しない。
-3. ただし、opensource COBOLコンパイラへの「**-fdebugging-line**」スイッチを指定することで、プログラムのデバッグ行をコンパイルできる。opensource COBOLプログラムでデバッグ行を指定する方法については[1.4](1-4.md)で説明している。
+3. ただし、opensource COBOLコンパイラへの「 **-fdebugging-line** 」スイッチを指定することで、プログラムのデバッグ行をコンパイルできる。opensource COBOLプログラムでデバッグ行を指定する方法については[1.4](1-4.md)で説明している。
diff --git a/markdown/4-1-3.md b/markdown/4-1-3.md
index 189f987..c48b3ea 100644
--- a/markdown/4-1-3.md
+++ b/markdown/4-1-3.md
@@ -11,7 +11,7 @@
1. 関数名の前に「FUNCTION」とコーディングしなくても、一つ以上(またはすべて)の組み込み関数に使用可能とするフラグを立てることができる。
-2. この段落を使用する代わりに、「**-ffunctions-all**」スイッチを用いてopensource COBOLプログラムをコンパイルすることもできる。
+2. この段落を使用する代わりに、「 **-ffunctions-all** 」スイッチを用いてopensource COBOLプログラムをコンパイルすることもできる。
diff --git a/markdown/5-3.md b/markdown/5-3.md
index 3371754..f6457d2 100644
--- a/markdown/5-3.md
+++ b/markdown/5-3.md
@@ -14,7 +14,7 @@
2. 他のCOBOL実装と同様に、レベル番号は以下の値に制限されている。
- | | |
+ |レベル番号|説明|
| --- | --- |
| 01 | 最上位レベルのデータ項目で、それ自体で完成している場合(基本項目とも呼ばれる)もあれば、従属項目に分割される場合(集団項目とも呼ばれる)もある。01レベルのデータ項目は「レコード」または「レコード記述」とよく呼ばれる。 |
| 02 - 49 | 上位レベルのデータ項目の、従属部品であるデータ項目を定義するために使用されるレベル番号(レベル番号が数値的に小さいほど、定義されているデータ構造の階層全体で、データ項目は大きくなる―すべての構造化データは、単一の01レベルの項目から始める必要がある)。レベル02-49のすべてが基本項目でも良いし、レベル02-48がすべて集団項目でも良い。 |
@@ -31,15 +31,15 @@
表5-6-データのクラス定義 PICTURE記号(9/A/X)
| 基本記号 | 意味・使用方法 |
- | :--- | :--- |
- | 9 | 1桁の10進数用に予約されている場所を定義する。実際に占有されるストレージ量は、指定されるUSAGE句によって異なる。 |
- | A | 単一の英字(「A」-「Z」、「a」-「z」)用に予約されている場所を定義する。各「A」は1バイトのストレージを表す。 |
- | X | 1つの文字のストレージ用に予約されている場所を定義する。各「X」は1バイトのストレージを表す。 |
- | N | 1つの日本語文字のストレージ用に予約されている場所を定義する。各「N」は2バイトのストレージを表す。 |
+ | :--- | :--- |
+ | 9 | 1桁の10進数用に予約されている場所を定義する。実際に占有されるストレージ量は、指定されるUSAGEによって異なる。 |
+ | A | 単一の英字(「A」-「Z」、「a」-「z」)用に予約されている場所を定義する。各「A」は1バイトのストージを表す。 |
+ | X | 1つの文字のストレージ用に予約されている場所を定義する。各「X」は1バイトのストレージを表す。 |
+ | N | 1つの日本語文字のストレージ用に予約されている場所を定義する。各「N」は2バイトのストレージをす。 |
以上の四つの記号は、PICTURE句で繰り返し使用され、項目内に含まれる可能性のあるデータのクラス数を定義する。例:
- | | |
+ | PICTURE句 | 説明 |
| --- | --- |
| PIC 9999 | 4桁の正数を格納できるデータ項目を割り当てる(負の値については後述する)。項目のUSAGE句がDISPLAY指定(既定値)の場合、4バイトのストレージが割り当てられ、各バイトに「0」「1」「2」・・・「8」または「9」を入れることができる。数字限定というルールは実行時には強制されないが、コンパイル時にはルールに違反する定数値が項目にMOVEされた場合、エラー警告が表示される。ランタイムエラーはクラスの条件テストを使用することで検出できる([6.1.4.2.2](6-1-4-2.md#61422-字類条件)を参照)。 |
| PIC 9(4) | 上記と同様-括弧で囲まれた繰り返し回数は、繰り返しを許可する任意のPICTURE記号で使用できる。 |
@@ -57,10 +57,10 @@
表5-7-数値形式オプションのPICTURE記号(P/S/V)
| 数値形式のオプション記号 | 意味・使用方法 |
- | :--- | :--- |
- | P | 実行時にデータ項目が参照されるとき0と見なされる、暗黙の桁位置を定義する。値の末尾に特定数の後続ゼロ(「P」につき1つ)が存在すると想定することによって、より少ないストレージを使用して、非常に大きい値を含んだデータ項目を割り当てられるように、この記号が使用される。
このようなデータ項目に対して実行されるすべての演算およびその他の操作は、ゼロが実際に存在しているかのように動作する。
値がそのような項目に格納されると、「P」記号で定義された桁位置は削除される。
例えば、会社の今年の総収益に何百ドルもの収益を含んだデータ項目を割り当てる必要があるとする:
`01 Gross-Revenue PIC 9(9).`
このとき9バイトのストレージが予約され、値の000000000~999999999は総収益を表す。ただし、百万以下の単位が固定される場合(つまり後ろの6桁が常に0になる)、項目を次のように定義できる。
`01 Gross-revenue PIC 9(3)P(6).`
プログラム内でGross-Revenueが参照されるときは必ず、ストレージ内の実際の値は、各P記号(この場合では全部で6つ)がゼロであるかのように扱われる。項目に1億2800万の値を格納するときは、「P」が「9」であるかのように扱う。
`MOVE 128000000 TO Gross-Revenue.` |
- | S | PICTURE値の最初の記号として使用する必要があり、このデータ項目では負の値が扱えることを示す。「S」がなければ、MOVE文または算術文を介してデータ項目に格納された負の値からは、負の符号が取り除かれる(実際には絶対値となる)。 |
- | V | 暗黙の小数点(存在する場合)が数値項目のどこにあるかを定義するために使用される記号。数値には小数点が1つしかないのと同じように、PICTURE句には「V」が1つしかない。暗黙の小数点はストレージ内の空白を占有せずに、値の使用方法を指定する。例えば、値「1234」がPIC 999V9として定義された項目のストレージ内にある場合、その値を参照するすべての文で「123.4」として扱われる。 |
+ | :--- | :--- |
+ | P | 実行時にデータ項目が参照されるとき0と見なされる、暗黙の桁位置を定義する。値の末尾に特定数の後ゼロ(「P」につき1つ)が存在すると想定することによって、より少ないストレージを使用して、非常に大きいを含んだデータ項目を割り当てられるように、この記号が使用される。
このようなデータ項目に対して実されるすべての演算およびその他の操作は、ゼロが実際に存在しているかのように動作する。
値がそのよな項目に格納されると、「P」記号で定義された桁位置は削除される。
例えば、会社の今年の総収益に何百ルもの収益を含んだデータ項目を割り当てる必要があるとする:
`01 Gross-Revenue PIC 9(9).`
ことき9バイトのストレージが予約され、値の000000000~999999999は総収益を表す。ただし、百万以下の単位固定される場合(つまり後ろの6桁が常に0になる)、項目を次のように定義できる。
`01 Gross-revenuePIC 9(3)P(6).`
プログラム内でGross-Revenueが参照されるときは必ず、ストレージ内の実際の値は、各記号(この場合では全部で6つ)がゼロであるかのように扱われる。項目に1億2800万の値を格納するときは、「Pが「9」であるかのように扱う。
`MOVE 128000000 TO Gross-Revenue.` |
+ S | PICTURE値の最初の記号として使用する必要があり、このデータ項目では負の値が扱えることを示す「S」がなければ、MOVE文または算術文を介してデータ項目に格納された負の値からは、負の符号が取り除かれる(実際には絶対値となる)。 |
+ | V | 暗黙の小数点(存在する場合)が数値項目のどこにあるかを定義するために使用される記号。数値には小点が1つしかないのと同じように、PICTURE句には「V」が1つしかない。暗黙の小数点はストレージ内の空白を有せずに、値の使用方法を指定する。例えば、値「1234」がPIC 999V9として定義された項目のストレージ内ある場合、その値を参照するすべての文で「123.4」として扱われる。 |
5. USAGE DISPLAYの数値データにのみ許可されるSIGN句は、「S」記号の表現形式を指定する。SEPARATE CHARACTER句の指定がないとき、データ項目の値の符号は、最終桁(TRAILING)または先頭桁(LEARDING)を次のように変換することで符号化できる。
diff --git a/markdown/6-1-2.md b/markdown/6-1-2.md
index 3225ddb..1eed194 100644
--- a/markdown/6-1-2.md
+++ b/markdown/6-1-2.md
@@ -22,8 +22,8 @@ COBOLでは、データ名をプログラム内で複製することができ、
10 CITY PIC X(15).
10 STATE PIC X(2).
10 ZIP-CODE.
- 15 ZIP-CODE-5 PIC 9(5).
- 15 FILLER PIC X(4).
+ 15 ZIP-CODE-5 PIC 9(5).
+ 15 FILLER PIC X(4).
```
それでは、従業員の輸送先住所のCITYの部分を「Philadelphia」に設定してみる。明らかにコンパイラは、参照している2つのCITY項目のどちらかを判別できなくなるため、以下の例は機能しない:
diff --git a/markdown/6-1-3.md b/markdown/6-1-3.md
index a0048d8..7d6e052 100644
--- a/markdown/6-1-3.md
+++ b/markdown/6-1-3.md
@@ -13,7 +13,7 @@ COBOL’85標準では、データ項目の一部のみへの参照を容易に
ここでいくつか例を挙げる。
-| | |
+| 例 | 説明 |
| --- | --- |
| CUSTOMER-LAST-NAME (1:3) | CUSTOMER-LAST-NAMEの最初の3文字を参照する。 |
| CUSTOMER-LAST-NAME (4:) | CUSTOMER-LAST-NAMEの4番目以降のすべての文字位置を参照する。 |
diff --git a/markdown/6-1-8-1.md b/markdown/6-1-8-1.md
index 6764a0b..3f3938c 100644
--- a/markdown/6-1-8-1.md
+++ b/markdown/6-1-8-1.md
@@ -9,7 +9,7 @@
#### 6.1.8.1. ファイル共有
-opensource COBOLは、プログラムがファイルを開こうとしたときに適用されるファイル共有の概念によって、最水準でファイルの同時アクセスを制御する([6.31](6-31.md)を参照)。これは「**fcntl()**」と呼ばれるUNIXオペレーティングシステムルーチンを介して実行される。そのモジュールは現在Windowsでサポートされておらず`15`、MinGW Unixエミュレーションパッケージに含まれていない。MinGW環境を使用して作成されたopensource COBOLビルドは、ファイル共有制御をサポートできなくなる―そのような環境ではファイルが常に共有される。WindowsでCygwin環境を使用して作成されたopensource COBOLビルドは、「fcntl()」にアクセスできると思われるため、ファイル共有をサポートするだろう。もちろん、opensource COBOLのUnixビルドやMacOSビルドは`16`、「fcntl()」がUnixに組み込まれているため、BDBを使用しても問題はない。
+opensource COBOLは、プログラムがファイルを開こうとしたときに適用されるファイル共有の概念によって、最水準でファイルの同時アクセスを制御する([6.31](6-31.md)を参照)。これは「 **fcntl()** 」と呼ばれるUNIXオペレーティングシステムルーチンを介して実行される。そのモジュールは現在Windowsでサポートされておらず`15`、MinGW Unixエミュレーションパッケージに含まれていない。MinGW環境を使用して作成されたopensource COBOLビルドは、ファイル共有制御をサポートできなくなる―そのような環境ではファイルが常に共有される。WindowsでCygwin環境を使用して作成されたopensource COBOLビルドは、「fcntl()」にアクセスできると思われるため、ファイル共有をサポートするだろう。もちろん、opensource COBOLのUnixビルドやMacOSビルドは`16`、「fcntl()」がUnixに組み込まれているため、BDBを使用しても問題はない。
OPENの成功に課せられる制限は、プログラムがファイルをCLOSEするか、終了するまで残る。
diff --git a/markdown/6-3.md b/markdown/6-3.md
index 374bec7..c2055e2 100644
--- a/markdown/6-3.md
+++ b/markdown/6-3.md
@@ -11,7 +11,7 @@
1. RWCSは現在opensource COBOLにおいてサポートされていないため、USE BEFORE REPORTING句は構文的には認識されても拒否される。
-2. USE FOR DEBUGGING句も同様に、構文的に認識されても無視されてしまう。「**-Wall**」または「**-W**」のコンパイラスイッチを使用すると、この機能がまだ実装されていないことを示す警告メッセージが表示される。
+2. USE FOR DEBUGGING句も同様に、構文的に認識されても無視されてしまう。「 **-Wall** 」または「 **-W** 」のコンパイラスイッチを使用すると、この機能がまだ実装されていないことを示す警告メッセージが表示される。
3. USE AFTER STANDARD ERROR PROCEDURE句では、指定されたI/Oタイプで(または指定されたファイルに対して)障害が発生したときに呼び出されるルーチンを定義する。
diff --git a/markdown/6-33-1.md b/markdown/6-33-1.md
index e28bc9b..c54d1e4 100644
--- a/markdown/6-33-1.md
+++ b/markdown/6-33-1.md
@@ -33,7 +33,7 @@
9. レコードのLOCK句については[6.1.8.2](6-1-8-2.md)で説明している。
-10. AT END句が存在する場合、ファイルステータスが10「ファイルの終わり」であることが原因でREADの試行が失敗した時に命令文1を実行する。AT END句は、**_ゼロ以外のファイルステータス値を検出しないため、_**DECLARATIVESルーチン([6.3](6-3.md))またはREAD後に明示的に宣言されたファイルステータス項目を使って、ファイルの終わり以外のエラー状態を検出する。
+10. AT END句が存在する場合、ファイルステータスが10「ファイルの終わり」であることが原因でREADの試行が失敗した時に命令文1を実行する。AT END句は、 **_ゼロ以外のファイルステータス値を検出しないため、_** DECLARATIVESルーチン([6.3](6-3.md))またはREAD後に明示的に宣言されたファイルステータス項目を使って、ファイルの終わり以外のエラー状態を検出する。
11. NOT AT END句が存在する場合、READの試行が成功すると、命令文2が実行される。
diff --git a/markdown/6-39-1.md b/markdown/6-39-1.md
index b56f074..9cd5442 100644
--- a/markdown/6-39-1.md
+++ b/markdown/6-39-1.md
@@ -15,13 +15,14 @@
2. 環境変数を設定する手段としては、DISPLAY文([6.14.3](6-14-3.md))を使うよりも、この方法は遥かに簡単で読みやすい。例えば、次の二つのコード順序は同じ結果を示す。
- DSIPLAY SET ENVIRONMENT “VARNAME” TO
+ DSIPLAY
"VALUE"
“VARNAME” UPON ENVIRONMENT-NAME
END-DISPLAY
DSIPLAY
“VALUE” UPON ENVIRONMENT-VALUE
END-DISPLAY
+ SET ENVIRONMENT “VARNAME” TO “VALUE”
diff --git a/markdown/6-40-1.md b/markdown/6-40-1.md
index 6eaa9f0..ea5dd7c 100644
--- a/markdown/6-40-1.md
+++ b/markdown/6-40-1.md
@@ -33,7 +33,7 @@
d. INPUT PROCEDURE内で実行されたSTOP RUN、EXIT PROGRAM、またはGOBACKは、現在実行中のプログラムとSORT文を終了する。
- e. INPUT PROCEDUREから制御を移すGO TO文は、SORT文を終了するが、GO TOが制御を移した位置からプログラムの実行を継続できるようにする。GO TOを使ってINPUT PROCEDUREを中止すると、再開することはできなくなるが、SORT文自体を再実行することはできる。この方法でSORT文を再起動すると、以前整列ファイルにリリースされたレコードはすべて失われてしまう。**_GO TOを使って整列を早期に終了したり、以前に中止したSORT文を再開したりすることは、優れたプログラミングとは見なされないため、回避しなければならない。_**
+ e. INPUT PROCEDUREから制御を移すGO TO文は、SORT文を終了するが、GO TOが制御を移した位置からプログラムの実行を継続できるようにする。GO TOを使ってINPUT PROCEDUREを中止すると、再開することはできなくなるが、SORT文自体を再実行することはできる。この方法でSORT文を再起動すると、以前整列ファイルにリリースされたレコードはすべて失われてしまう。 **_GO TOを使って整列を早期に終了したり、以前に中止したSORT文を再開したりすることは、優れたプログラミングとは見なされないため、回避しなければならない。_**
f. データが整列ファイルにロードされると、実際には動的に割り当てられたメモリにバッファリングされる。整列されるデータの量が使用可能なソートメモリ量(128MB)`24`を超える場合にのみ、実際のディスクファイルが割り当てられて使用される。これらの「整列作業ファイル」については、後ほど説明する。
diff --git a/markdown/6-44-3.md b/markdown/6-44-3.md
index 2fc13d9..39063f3 100644
--- a/markdown/6-44-3.md
+++ b/markdown/6-44-3.md
@@ -7,7 +7,7 @@

-二つの一意名に従属して見つかったデータ項目の一致と対応すする、個々のSUBTRACT FROM文と同等のコードを生成する。
+二つの一意名に従属して見つかったデータ項目の一致と対応する、個々のSUBTRACT FROM文と同等のコードを生成する。
1. 対応する一致を識別するためのルールは、[6.28.2](6-28-2.md) ― MOVE CORRESPONDINGで説明している。
diff --git a/markdown/8-1-4.md b/markdown/8-1-4.md
index 3b1b56a..6eb8517 100644
--- a/markdown/8-1-4.md
+++ b/markdown/8-1-4.md
@@ -3,7 +3,7 @@
### 8.1.4. 動的にロード可能なサブプログラム
-実行した時メモリに動的にロードされるサブプログラムは、次のように、cobcコマンドの「**-m**」オプションを使ってコンパイルする必要がある。
+実行した時メモリに動的にロードされるサブプログラムは、次のように、cobcコマンドの「 **-m** 」オプションを使ってコンパイルする必要がある。
cobc –m sprog1.cbl
または
@@ -34,7 +34,7 @@
5. 4項は、複数の記述項ポイントを含む動的にロード可能なモジュールを使用したサブプログラミングに深い影響を及ぼす―モジュール内の他の記述項ポイントを呼び出す前に、モジュールのプライマリ記述項ポイントを正常に呼び出す必要がある(3項を参照)。
-「**-x**」オプションではなく「**-m**」オプション(上記コマンド参照)を使って、動的にロード可能なライブラリとしてメインプログラムを生成することも可能である。これらのメインプログラムを実行するには、[8.2.2](8-2-2.md)で説明しているように、cobcrunコマンドを使う必要がある。
+「 **-x** 」オプションではなく「 **-m** 」オプション(上記コマンド参照)を使って、動的にロード可能なライブラリとしてメインプログラムを生成することも可能である。これらのメインプログラムを実行するには、[8.2.2](8-2-2.md)で説明しているように、cobcrunコマンドを使う必要がある。
diff --git a/markdown/8-1-5.md b/markdown/8-1-5.md
index 5423e88..f9ce1da 100644
--- a/markdown/8-1-5.md
+++ b/markdown/8-1-5.md
@@ -7,7 +7,7 @@ opensource COBOLサブルーチンをアセンブラソースコードにコン
cobc –S sprog1.cbl
-(注:「**-S**」は大文字で表記する)
+(注:「 **-S** 」は大文字で表記する)
これにより、「sprog1.s」というアセンブラソースファイルが作成される。複数の入力ファイルを指定すると、それぞれが独自の「.s」ファイルを作成する。
diff --git a/markdown/8-1-7.md b/markdown/8-1-7.md
index cc22abd..b50e7e3 100644
--- a/markdown/8-1-7.md
+++ b/markdown/8-1-7.md
@@ -10,14 +10,14 @@
|環境変数 | 使い方 |
| :--- | :--- |
|COB_CC | opensource COBOLで使用するCコンパイラの名前に設定する。
**この機能の利用は自己責任である―opensource COBOLビルドが生成されたCコンパイラを常に使用する必要がある。** |
-| COB_CFLAGS`33` | cobcコンパイラからCコンパイラに渡すスイッチに設定する(cobcが指定するスイッチに加えて)。既定値は「**-Iprefix/include**」で、「prefix」は使用しているopensource COBOLのインストールパスである。 |
+| COB_CFLAGS`33` | cobcコンパイラからCコンパイラに渡すスイッチに設定する(cobcが指定するスイッチに加えて)。既定値は「 **-Iprefix/include** 」で、「prefix」は使用しているopensource COBOLのインストールパスである。 |
| COB_CONFIG_DIR | opensource COBOLの「構成」ファイルが保存されているフォルダへのパスに設定する。構成ファイルの使用方法については、[8.1.9](8-1-9.md)で説明する。 |
| COB_COPY_DIR | プログラムに必要なCOPYモジュールがプログラムと同じディレクトリに保管されていない場合は、この環境変数をCOPYモジュールが含まれているフォルダに設定する(IBMメインフレームプログラマはこれを「SYSLIB」と認識する)。COPYモジュールの使用に関する追加情報については、[8.1.8](8-1-8.md)で説明する。 |
| COB_DATE | システム日付に任意の日付を「yyyy/mm/dd」の形式で設定する。 |
|COB_IO_ASSUME_REWRITE | この環境変数に「Y」を設定することで、I-Oオプションでファイルを開いた時のWRITEをREWRITEに読み替えられるようにする。 |
| COB_LDADD | プログラムとリンクする必要のある標準ライブラリが見つけられる場所を指定できる追加のリンカースイッチ(ld)に設定する。既定値は””(null)。 |
| COB_LDFLAGS | cobcコンパイラからCコンパイラに渡すリンカ/ローダ(ld)スイッチに設定する(cobcが指定するスイッチに加えて)。既定値は未設定。 |
-| COB_LIBS| プログラムとリンクする必要のある標準ライブラリが見つけられる場所を指定するリンカースイッチ(ld)に設定する。既定値は「**-Lprefix/lib-lcob**」で、「prefix」は、使用しているopensource COBOLバイナリが作成されたときに指定されたパスプレフィックスである。 |
+| COB_LIBS| プログラムとリンクする必要のある標準ライブラリが見つけられる場所を指定するリンカースイッチ(ld)に設定する。既定値は「 **-Lprefix/lib-lcob** 」で、「prefix」は、使用しているopensource COBOLバイナリが作成されたときに指定されたパスプレフィックスである。 |
| COB_NIBBLE_C_UNSIGNED |この環境変数に「Y」を設定することで、字類検査においてPIC 9項目の値に符号ニブル「C」を許容する。 |
| COB_VERBOSE |この環境変数に「Y」を設定することで、SORT実行時に出力するメッセージを冗長化することが可能になる。 |
| COBCPY | この環境変数は、コンパイラがCOPYモジュールを見つけられる場所を指定する追加手段を提供する(上記のCOB_COPY_DIRも参照)。COPYモジュールの使用に関する追加情報については、[8.1.8](8-1-8.md)で説明する。 |
diff --git a/markdown/8-1-8.md b/markdown/8-1-8.md
index 34316e0..34aec3a 100644
--- a/markdown/8-1-8.md
+++ b/markdown/8-1-8.md
@@ -6,7 +6,7 @@
opensource COBOLコンパイラは、以下のフォルダでコピーブック(COPY文を介してコンパイルプロセスに持ち込まれたソースコードモジュール)を検索する。検索は以下の順序で実行され、コピーブックが見つかると終了する。
- コンパイルされるプログラムが存在するフォルダ。
-- 「**-I**」コンパイラスイッチ([8.1.2](8-1-2.md)を参照)で指定されたフォルダ。
+- 「 **-I** 」コンパイラスイッチ([8.1.2](8-1-2.md)を参照)で指定されたフォルダ。
- COBCPY環境変数([8.1.7](8-1-7.md)を参照)で指定された各フォルダ。システムに適した区切り文字で区切ることによって、単一のフォルダあるいは複数のフォルダを指定することができる。`34`複数のフォルダを指定した場合、環境変数で指定された順序で検索される。
- COB_COPY_DIR環境変数([8.1.7](8-1-7.md)を参照)で指定されたフォルダ。
diff --git a/markdown/8-1-9.md b/markdown/8-1-9.md
index b805f5e..b3ff0af 100644
--- a/markdown/8-1-9.md
+++ b/markdown/8-1-9.md
@@ -5,7 +5,7 @@
opensource COBOLは、コンパイラ構成ファイルを使って、コンパイルプロセスを制御する様々なオプションを定義する。これらの構成ファイルは、「-conf」コンパイルスイッチで指定されるか、COB_CONFIG_PATH環境変数で定義されたフォルダにある。
-以下は、「初期値」構成ファイル(「**-conf**」スイッチを指定しない場合に使用される)の逐語的なリストで、設定を表示する。
+以下は、「初期値」構成ファイル(「 **-conf** 」スイッチを指定しない場合に使用される)の逐語的なリストで、設定を表示する。
```
# COBOL compiler configuration -*- sh -*-
diff --git a/markdown/8-2-1.md b/markdown/8-2-1.md
index 65ffe25..051e07a 100644
--- a/markdown/8-2-1.md
+++ b/markdown/8-2-1.md
@@ -5,7 +5,7 @@
### 8.2.1. プログラムの直接実行
-「**-x**」オプションを指定してコンパイルされたopensource COBOLプログラムは、直接実行可能なプログラムとして生成される。例えば、Windowsシステムで「**-x**」オプションを指定すると「.exe」ファイルとして生成される。
+「 **-x** 」オプションを指定してコンパイルされたopensource COBOLプログラムは、直接実行可能なプログラムとして生成される。例えば、Windowsシステムで「 **-x** 」オプションを指定すると「.exe」ファイルとして生成される。
これらのネイティブ実行可能ファイルは、非グラフィカルユーザインターフェースプログラムとしての実行に適している。
diff --git a/markdown/8-2-2.md b/markdown/8-2-2.md
index 0f38d99..024e37c 100644
--- a/markdown/8-2-2.md
+++ b/markdown/8-2-2.md
@@ -3,7 +3,7 @@
### 8.2.2. 「cobcrun」ユーティリティの使用
-「**-m**」オプションを使用してメインプログラムに対してもコンパイラの出力形式を指定することにより、サブルーチンだけでなくすべてのopensource COBOLプログラムの実行可能モジュールを生成できる([8.1.4](8-1-4.md)で説明したように、これは推奨されているサブルーチンの出力形式オプションである)。
+「 **-m** 」オプションを使用してメインプログラムに対してもコンパイラの出力形式を指定することにより、サブルーチンだけでなくすべてのopensource COBOLプログラムの実行可能モジュールを生成できる([8.1.4](8-1-4.md)で説明したように、これは推奨されているサブルーチンの出力形式オプションである)。
opensource COBOLメインプログラムをこれらの動的にロード可能なモジュールにコンパイルして、「メインプログラムなのかサブルーチンなのか」を考えずに、すべてのプログラムに共通の一般的なコンパイルコマンドを使用することを好む人もいる。
diff --git a/markdown/8-2-4.md b/markdown/8-2-4.md
index 835d6ae..392227b 100644
--- a/markdown/8-2-4.md
+++ b/markdown/8-2-4.md
@@ -22,7 +22,9 @@
---
`35` ORGANIZATION INDEXEDファイルでは、DB_HOMEが存在する場合、データファイルもDB_HOMEフォルダに割り当てられる。
+
`36` DB_HOMEを使用しても、Windows/MinGW用に作成されたopensource COBOLビルドのORGANIZATION SEQUENTIAL (いずれかのタイプ)またはORGANIZATION RELATIVEファイルにおいてロックは機能しない。ORGANIZATION INDEXEDロックはWindows/MinGWで機能し、UNIX opensource COBOLビルドを使ったファイル編成ではすべてのロックが機能する。
+
`37` C$DELETEおよびCBL_DELETE_FILEの組み込みサブルーチンを参照すること。
diff --git a/markdown/8-3-1.md b/markdown/8-3-1.md
index 985fe6d..1d98640 100644
--- a/markdown/8-3-1.md
+++ b/markdown/8-3-1.md
@@ -37,7 +37,7 @@ opensource COBOLには多数の組み込みサブルーチンが含まれてお
statusは次のいずれかの値を受け取る。
-| | |
+| 値 | 説明 |
| --- | --- |
| 1 | ルーチンは他のCOBOLプログラムによって呼出された。 |
| 0 | ルーチンは主プログラムである。呼出しプログラムは存在しない。 |
diff --git a/markdown/TOC.md b/markdown/TOC.md
index 8e89598..8202763 100644
--- a/markdown/TOC.md
+++ b/markdown/TOC.md
@@ -1,4 +1,6 @@
目次
+
+[改訂履歴](history.md)
1. [まえがき](1-1.md)
- [1.1. opensource COBOLとは](1-1.md#11-opensource-cobolとは)
- [1.2. COBOL/opensource COBOLの重要機能](1-2-1.md#12-cobolopensource-cobolの重要機能)
diff --git a/markdown/history.md b/markdown/history.md
new file mode 100644
index 0000000..ae9a59f
--- /dev/null
+++ b/markdown/history.md
@@ -0,0 +1,28 @@
+## 改訂履歴
+
+|版|発行日|改訂詳細|
+|---|---|---|
+|初版 v1.0.0|2023/8/31|原文”OpenCOBOL 1.1 Programmer’s Guide”を参考に日本語翻訳マニュアルを作成。|
+|v1.1.0|2023/9/21|誤字や翻訳漏れを修正。|
+|v1.2.0|2023/10/16|条件名の訳語を一部修正。|
+|v2.0.0|2024/2/29|通貨記号の既定値を「$」から「¥」に変更。|
+|||「1.4. ソースコードの形式」に$IF、$ELSE、$ENDに関する記述を追加。|
+|||「1.6. COPY文の使い方」にREPLACING句のLEADING/TRAILING指定、JOINING句のPREFIX/SUFFIX指定、PREFIXING/SUFFIXING句に関する記述を追加。|
+|||「1.7. 定数の使い方 」に「1.7.3. 日本語定数」を追加。|
+|||「4.2.1. ファイル管理段落 図4-10-ファイル管理段落構文」を一部修正。|
+|||「4.2.1.3. 索引編成ファイル」に分割キーに関する記述を追加。|
+|||「5.3. データ記述の形式」にASCENDING KEY/DESCENDING KEY句とINDEXED BY句の記述順の許容に関する記述を追加。|
+|||「6.1.4.2.5. 比較条件 図6-12-比較条件構文」を一部修正。|
+|||「6.8. CANCEL」に「6.8.2. CANCEL文の書き方2 ― CANCEL ALL」を追加。|
+|||「6.13. DELETE」に「6.13.2. DELETE文の書き方2 ― DELETE FILE」を追加。|
+|||新しい章として「7. 日本語対応」を追加。|
+|||「8.1.2. コンパイルオプション」に「-assign_external」と「-free_1col_aster」の項目を追加。|
+|||「8.1.7. 重要な環境変数 表8-4-環境変数コンパイラ」に環境変数「COB_DATE」「COB_IO_ASSUME_REWRITE」「COB_NIBBLE_C_UNSIGNED」「COB_VERBOSE」「OC_EXTEND_CREATES」「OC_IO_CREATES」「OC_USERFH」の項目を追加。|
+|||「8.3.1. 「名前による呼び出し」ルーチン 」に「8.3.1.1. CALL “C$CALLEDBY” USING program-name GIVING status」「8.3.1.7. CALL “C$LIST-DIRECTORY” USING item-1, item-2, item-3」「8.3.1.32. CALL “CBL_OC_KEISEN” USING item-1」を追加。|
+|v3.0.0|2024/9/18|日本語翻訳マニュアル HTML版を公開。|
+|v3.1.0|2025/2/25|訳語を一部修正。|
+|||「4.2. 入出力節 図4-9-入出力節構文」を一部修正。|
+|||「5.3. データ記述の形式 表5-9-数字編集PICTURE記号」を一部修正。|
+|||「6.1.4.2.5. 比較条件 図 6-12-比較条件構文」を一部修正。|
+
+以上
\ No newline at end of file