付録D.3 書式オーバレイの1ページデータ量の制限
(1) 使用言語がCOBOLの場合
概算式で使用する用語について説明します。
- 全角/半角切り替わり回数
- WRITE文で出力する行データ項目ごとに,半角文字から全角文字に切り替わる回数,および全角文字から半角文字に切り替わる回数を数えます。このとき,全角空白は半角空白2バイトに置き換えて数えます。
- 例えば,行データが「123あい う」の場合,「3」のあと,「い」のあとおよび,「う」の前で切り替わりが発生するので,切り替わり回数は3回となります。
- 文字サイズ/字間値/書体/横倍の切り替わり回数
- POINT/INTERVAL/FORMAT/WIDE の属性ごとに属性の切り替わり回数を数えます。属性値が同じ値の場合は,切り替わりが発生しません。属性の指定が省略されている場合は,デフォルト(ドローの書式定義で指定した値)に切り替わるものとして数えます。
- 例えば,次に示す例の場合,文字サイズ切り替わり回数は2回,字間値切り替わり回数は2回となります。
![[図データ]](figure/zu940450.gif)
(a) 「WRITE 行データFROM データ1」形式の処理で,CHARACTER TYPE句指定なしの場合
- COBOL記述例
![[図データ]](figure/zu940500.gif)
- 処理部
![[図データ]](figure/zu940600.gif)
- 1ページデータ量の上限
- 印刷ドキュメント名を指定していない場合
32767≧行データの和※+62
- 印刷ドキュメント名を指定している場合
32767≧行データの和※+ 印刷ドキュメント名の長さ + 70
- 注※
- 行データの和={行データの領域長+(データ中の平均全角/半角切り替わり回数×2)+10}×行数
(b) 「WRITE 行データFROM データ1」形式の処理で,データ1にCHARACTER TYPE句指定ありの場合
- 定義部
![[図データ]](figure/zu940700.gif)
- 処理部
![[図データ]](figure/zu940600.gif)
- 1ページデータ量の上限
- 印刷ドキュメント名を指定していない場合
32767≧行データの和※+62
- 印刷ドキュメント名を指定している場合
32767≧行データの和※+ 印刷ドキュメント名の長さ + 70
- 注※
- 行データの和={データ1の各項目の長さの和
- +(データ1の各項目内での平均全角/半角切り替わり回数の和×2)
- +(データ1の各項目への平均文字サイズ切り替わり回数の和×3)
- +(データ1の各項目への平均字間値切り替わり回数の和×3)
- +(データ1の各項目への平均書体切り替わり回数の和×3)
- +(データ1の各項目への平均横倍切り替わり回数の和×4)
- +(データ1の項目の数×2)
- +8}×行数
(c) 「WRITE 行データ」形式の処理で,CHARACTER TYPE句指定なしの場合
- 定義部
![[図データ]](figure/zu940800.gif)
- 処理部
![[図データ]](figure/zu940900.gif)
- 1ページデータ量の上限
- 印刷ドキュメント名を指定していない場合
32767≧行データの和※+62
- 印刷ドキュメント名を指定している場合
32767≧行データの和※+ 印刷ドキュメント名の長さ + 70
- 注※
- 行データの和={行データの領域長+(データ中の平均全角/半角切り替わり回数×2)+10}×行数
(d) 「WRITE 行データ」形式の処理で,CHARACTER TYPE句指定ありの場合
- 定義部
![[図データ]](figure/zu941000.gif)
- 処理部
![[図データ]](figure/zu940900.gif)
- 1ページデータ量の上限
- 印刷ドキュメント名を指定していない場合
32767≧行データの和※+62
- 印刷ドキュメント名を指定している場合
32767≧行データの和※+ 印刷ドキュメント名の長さ + 70
- 注※
- 行データの和={行データの各項目の長さの和
- +(行データの各項目内での平均全角/半角切り替わり回数の和×2)
- +(行データの各項目への平均文字サイズ指定回数の和×3)
- +(行データの各項目への平均字間値切り替わり回数の和×3)
- +(行データの各項目への平均書体切り替わり回数の和×3)
- +(行データの各項目への平均横倍切り替わり回数の和×4)
- +(行データの項目の数×2)
- +8}×行数
(2) 使用言語がC言語の場合
概算式で使用する用語について説明します。
- 全角/半角切り替わり回数
- jstqldat関数,またはXmapFrmSetData関数で指定する項目データごとに,半角文字から全角文字に切り替わる回数,および全角文字から半角文字に切り替わる回数を数えます。このとき,全角空白は半角空白2バイトに置き換えて数えます。
- jstqllpt関数,またはXmapFrmSetLine関数を発行するまでを一つの行データと考えます。
- 例えば,行データが「123あい う」の場合,「3」の後ろ,「い」の後ろ,「う」の前で切り替わりが発生するので,切り替わり回数は3回となります。
- 文字サイズ/字間値/書体/横倍の切り替わり回数
- jstqlctp関数,XmapFrmSetPoint関数,XmapFrmSetInterval関数,XmapFrmSetFont関数,またはXmapFrmSetWidth関数で指定した属性の数をそれぞれ数えます。
- 1ページデータ量の上限
- 印刷ドキュメント名を指定していない場合
32767≧行データの和※+62
- 印刷ドキュメント名を指定している場合
32767≧行データの和※+ 印刷ドキュメント名の長さ + 70
- 注※
- 行データの和={行データの各項目データの長さの和
- +(行データの各項目データ内での平均全角/半角切り替わり回数の和
- ×2)
- +(行データの各項目データへの平均文字サイズ指定回数の和×3)
- +(行データの各項目データへの平均字間値指定回数の和×3)
- +(行データの各項目データへの平均書体指定回数の和×3)
- +(行データの各項目データへの平均横倍指定回数の和×4)
- +(行データの各項目データ内での平均項目データ数×2)
- +8}×行数