プロが教えるわが家の防犯対策術!

富士通の構造化チャートでYACIIを作成するツールはありますか?もしご存知の方おられましたら教えてください。

A 回答 (1件)

昔富士通純正のものでWindows3.1で動いていたものがあったと思います。


今富士通のサイトのページ検索で「YAC II」で探すとサーバのASPソフト
紹介に出てきますが, 一般のPCで動くものは見つかりませんでした。

「PAD」なら参考URLのものを使ったことがあります。結構それなりの
品質のものが出ますが・・・

参考URL:http://www.aerith.net/project/pad2ps-j.html
    • good
    • 0
この回答へのお礼

ありがとうございます。やっぱり難しいですね~。

お礼日時:2006/04/26 22:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q外字ファイル、eudc.tte と eudc.euf とは何でしょうか?

いつもお世話になっています。

さて、人名が入るシステムを組もうと業者に依頼したところ、外字ファイル、eudc.tte と eudc.eufを用意して欲しいと言われました。これまでは *.fonで外字ファイルを管理していたのですが、この二つの拡張子のファイルについて意味がわかりません。

つきましては、下記の点についてご教示ください。
1.ユーザーフォントとこのeucd ファイルと何がどう違うのでしょうか? 
2.*.fonのファイルから自動的にこれらのファイルが作成されるのでしょうか?
3.自動的に作成されないとすればどうすれば作成できるのでしょうか?

詳しい方にはあまりにも初歩的な質問かもわかりませんが、よろしくお願いいたします。

OSはサーバがWindows2000サ-バです。

Aベストアンサー

1. ユーザーフォント.fonはWindows3.1の時代の機能で、外字として一つのフォントしか登録できませんでした。Windows95以降ではEUDC.TTEとECDC.EUFを使うように変更されています。標準に設定した外字がECDCのファイル名を取り、書体を意識した外字は[任意に名づけられたファイル名].TTCおよび.EUFファイルとして存在します。
2. OSが違う話ですのでそういうわけではないと思います。
3. Windowsの仕様によればC:\WINDOWS\FONTSフォルダまたはC:\WINNT\FONTSフォルダ(もしかしたらC:\WINDOWS直下またはC:\WINNT直下かも)に存在するはずです。

QCOBOLの計算方法

COBOLの計算方法について解らない事があり、
質問させて頂きます。

例えば、
111.112÷3=37.03733・・・
の計算で小数点第4位の切捨てまたは、切上をしたい場合、
どのようなコーディングをすればよろしいでしょうか?

Aベストアンサー

01 WORK-AREA.
03 WK-ANS PIC S9(09)V9(04).
03 WK-WK PIC S9(09)V9(04).
03 WK-SUTE PIC S9(09)V9(03).
********************
PROSEDURE DIVISION.
********************
* 切り上げ
COMPUTE WK-WK = 111.112 / 3.
ADD 0.0009 TO WK-WK.
MOVE WK-WK TO WK-ANS. *> 切り上げ
* 四捨五入
COMPUTE WK-ANS ROUNDED = 111.112 / 3.
* 切捨て
COMPUTE WK-SUTE = 111.112 / 3.

何も意識しなければ切捨てになります。
四捨五入はROUNDEDか、0.0005を足してもOK。
切り上げは0.0009する。

こんな感じで如何ですか!

QJCLの基本について教えてください

(1)JCLの基本をどなたか教えて頂けないでしょうか?わからない事だらけで困っています。

EXEC PGM=xxxxxxxx    でのプログラム宣言なんですが、、、
             コピーはわかるんですが、、、、
    ・EZTPA00
    ・ISRSUPC の二つがわかりません。
わかる方いらっしゃいませんか?
----------------------------------------------------------------
(2)~宣言やファイルの場所の書き込み~



FILE IN00001
FILE IN00002
X1 1 16 A
Z1 1 16 A
FILE OUT00001
FILE OUT00002
JOB INPUT( IN00001(X1) IN00002(Z1) )
IF NOT MATCHED
IF IN000001
OUT00001 FROM IN00001
ELSE IF IN00002
OUT00002 FROM INO0OO2
EDD-IF
END-IF
END-IF
値を照合しデータを分けるプログラムのようなのですが、イマイチ理解できません、何方か教えていただけませんか?

(1)JCLの基本をどなたか教えて頂けないでしょうか?わからない事だらけで困っています。

EXEC PGM=xxxxxxxx    でのプログラム宣言なんですが、、、
             コピーはわかるんですが、、、、
    ・EZTPA00
    ・ISRSUPC の二つがわかりません。
わかる方いらっしゃいませんか?
----------------------------------------------------------------
(2)~宣言やファイルの場所の書き込み~



FILE IN00001
FILE IN00002
X1 1 16 A
Z1 ...続きを読む

Aベストアンサー

EZTPA00は以下のユーティリティソフト easytrieve plus
でしょう。

http://www.ca.com/products/product.aspx?ID=1270

そして、(2)はその制御文です。

はるか昔、plusのないのを扱ったことはありますが、
もうさすがに忘れました。まあ文をそのまま読めば良さそうですが。

FILE IN00001 入力ファイルの定義 たぶんIN00001はDD文にあるはず
FILE IN00002
X1 1 16 A フィールドの定義 1バイト目から16バイト
Z1 1 16 A
FILE OUT00001
FILE OUT00002
JOB INPUT( IN00001(X1) IN00002(Z1) )
     ふたつのファイルを読んでマッチングする指示
IF NOT MATCHED マッチングしない場合
  IF IN000001 IN0001だけがある場合
     OUT00001 FROM IN00001 IN00001をOUT00001に出力
  ELSE IF IN00002
     OUT00002 FROM INO0OO2
  EDD-IF
END-IF
END-IF  なんか、このEND-IFは余ってるような

EZTPA00は以下のユーティリティソフト easytrieve plus
でしょう。

http://www.ca.com/products/product.aspx?ID=1270

そして、(2)はその制御文です。

はるか昔、plusのないのを扱ったことはありますが、
もうさすがに忘れました。まあ文をそのまま読めば良さそうですが。

FILE IN00001 入力ファイルの定義 たぶんIN00001はDD文にあるはず
FILE IN00002
X1 1 16 A フィールドの定義 1バイト目から16バイト
Z1 1 16 A
FILE OUT00001
FILE OUT00002
JOB INPUT( IN00001(X1) IN00002(Z1)...続きを読む

Qfgetsなどのときのstdinのバッファを消すには?

こんにちは,今C(C++でない)を使用しています。
たとえば,
char str[20]
fgets(str,sizeof(str),stdin)
としたときに20字以上を打つと,stdinのバッファに20字以上の分が残ったままになります。

C++などでは
fflush(stdin)で,うまくいきますが,普通のCでは対応がされていないみたいでうまくいきません。

よろしくお願いします。

Aベストアンサー

あ,テキスト入力だからこんな大掛かりなことしなくてもいいんだ.
末尾に'\n'が出るまで掃出せばいいんですよね.

fgets(str, sizeof(str), stdin);
if ( str[strlen(str)-1] != '\n' ){
while( getchar() != '\n' );
}

でいいんだ.失礼しました.

QCOBOLの種類

COBOLは標準言語といいながら、英語のCOBOLや日本語COBOLがあるようですが、他に違うものありますか。

Aベストアンサー

「JIS X3002」これが日本における標準COBOLの仕様です。
この仕様を満足しつつ独自機能を付加された製品が市場には無数に存在します。

「ISO 1989:1985 Programming Languages -- COBOL」こちらは世界標準のCOBOL仕様です。
JIS X3002もISO 1989:1985 Programming Languages -- COBOLに準拠していますが、文字セットの違いなどで【完全に同じ】とはなりません。

「ANSI X3J4」アメリカの標準COBOL仕様です。
基本的にISO 1989:1985 Programming Languages -- COBOLと同じです。

昔はもうひとつ、CODASYL版のCOBOL標準仕様があったんですが、ANSIと統合されたので現在はISO 1989:1985 Programming Languages -- COBOLが世界標準です。

まとめます。
・世界標準はISO 1989:1985 Programming Languages -- COBOL
・ISO 1989:1985 Programming Languages -- COBOLを元に各国で自国向けの標準化が行われており、日本ではJIS X3002
・市場に出回る製品は【標準COBOL仕様】を満足しながら独自の機能を持っている

製品としてのCOBOLにはポインタが使えるもの、再起ができるものなどがあります。
極端な例だとオブジェクト指向を取り入れたものもあります。

「JIS X3002」これが日本における標準COBOLの仕様です。
この仕様を満足しつつ独自機能を付加された製品が市場には無数に存在します。

「ISO 1989:1985 Programming Languages -- COBOL」こちらは世界標準のCOBOL仕様です。
JIS X3002もISO 1989:1985 Programming Languages -- COBOLに準拠していますが、文字セットの違いなどで【完全に同じ】とはなりません。

「ANSI X3J4」アメリカの標準COBOL仕様です。
基本的にISO 1989:1985 Programming Languages -- COBOLと同じです。

昔はもうひとつ、CODAS...続きを読む

QIP-VPNとインターネットVPNの違い

就職活動をしている大学生です。
セキュリティとネットワークに興味があり、そこから自分が何をやりたいのか突き詰めて行った結果VPNを提供している企業が浮かび上がって来ました、業界研究をしている際に疑問が出てきました。

IP-VPNとインターネットVPNの違いの違いがいまいちわかりません。

インターネットVPNはインターネット上を介したVPN、IPは事業者のネットワーク内のVPNって解釈でよいのですかね??

そうなるとプライベート回線を引くのとIP-VPNの違いは???

提供している事業者の違い、VPNに関すること、VPNの今後&求められるもの等、教えてください。

よろしくお願いします。

Aベストアンサー

こんちは。hirasakuです。

簡単に言うと
インターネットVPNはその名の通り、インターネット網を利用した拠点間をあたかもLANのように使うためのWAN構築です。
基本的にVPN接続するためのルータの設定(トンネリングや暗号化・認証など)はユーザーが設定し、運用管理もユーザーが行います。
インターネット網なので通信に対する保障がありませんので、VPNに通すデータを検討しなければならない場合もあります。
一番安価に構築できランニングコストが抑えられます。

IP-VPNは通信事業者の閉域IPネットワーク網を通信経路として用い、自社専用ネットワークであるかのようなWANを構築できるサービスのことです。
通信事業者側で用意している網は品質を保証してあり、ユーザー側はIP-VPN網に接続するだけで、セキュアな通信ができ、インターネットVPN同様LANのように使えます。

プライベート回線とは専用線やフレームリレー網などのことを言っているのですかね?
専用線は料金が距離に比例し、拠点間の距離が離れるほどコストが大きくなり、セルリレー/フレームリレーは、フルメッシュ型接続ですけど、柔軟なネットワーク構築が難しいという問題があります。専用線・フレームリレーなどは回線帯域の割にはコストが高いので、インターネットVPNやIP-VPNでコストを安くしてネットワークを構築するようになってきてます。

インターネットVPNやIP-VPNはプロトコルにIPを使わなくてはならないので、データはIPに乗せる必要があります。
そこで、広域イーサネットというサービスを各通信事業者が行っています。広域イーサネットはプロトコルをIP以外(IPXやSNAなど)を通すことができ、またイーサなので、WAN側に接続するのに極端な話、スイッチでつなげられますので、今までのようにルータの設定などいらなくなります。(VLAN構成にするならスイッチの設定が必要ですけけど)また、QoSなどデータの優先制御や帯域制御などもできますので、VoIPなどにも使えますね。
ということで、簡単に拠点間のLAN構築が可能になります。

提供しているサービスの違いは、どこも似たり寄ったりかなって思いますけど。
サービス提供エリアや、構築にあったオプションサービスなどで選べばいいのでは。

こんちは。hirasakuです。

簡単に言うと
インターネットVPNはその名の通り、インターネット網を利用した拠点間をあたかもLANのように使うためのWAN構築です。
基本的にVPN接続するためのルータの設定(トンネリングや暗号化・認証など)はユーザーが設定し、運用管理もユーザーが行います。
インターネット網なので通信に対する保障がありませんので、VPNに通すデータを検討しなければならない場合もあります。
一番安価に構築できランニングコストが抑えられます。

IP-VPNは通信事業者の閉域IPネットワ...続きを読む

QExcelで複数セルからの文字の結合

A1~A20までのセルにそれぞれ文字が入っています。
=A1&A2&A3&…&A20
で、A1~A20までの内容を結合できると思います。
これ以外で、もっと簡単な式で同じ結果を出す方法は無いでしょうか?

Aベストアンサー

こんにちは。

>もっと簡単な式で同じ結果を出す方法は無いでしょうか?

「&」演算子を使う以外には、基本的にはないと思います。

領域を統合するという関数は、ワークシートには用意されていません。名前は、たぶん、JOINという名が付けられるはずですが、それは未だ採用されていません。

Concatenate関数は、別にExcel用にあるのではなく、他機種が、「&」演算子が使えないためにあるだけに過ぎません。

そこで、myJoin というユーザー定義関数を考えてみました。

設定の仕方
Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。
次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、このコードを貼り付けて、再び、Alt + F11 で、画面を閉じます。

ただし、登録したブックのみの有効です。

'<標準モジュール>
Function myJoin(範囲 As Range, Optional 区切り文字 As String) As Variant
Dim c As Range, buf As String
  If 範囲.Rows.Count = 1 Or 範囲.Columns.Count = 1 Then
   For Each c In 範囲
     buf = buf & 区切り文字 & c.Value
   Next c
   If 区切り文字 <> "" Then
     myJoin = Mid$(buf, 2)
     Else
     myJoin = buf
   End If
   Else
   myJoin = CVErr(xlErrRef) 'エラー値
  End If
End Function

使い方:

=MYJOIN(A1:A20)

=MYJOIN(A1:A20,",")
とすると、「,」区切りで出てきます。

必ず、縦1列か横1行の範囲を指定してください。
どちらか一方が2列か2行以上の場合は、エラーが出ます。

汎用的にどこにでも使いたい場合は、アドイン化しなければなりません。マクロが少し分る方の、Public ステートメントをつけるというのは良くある誤解です。

こんにちは。

>もっと簡単な式で同じ結果を出す方法は無いでしょうか?

「&」演算子を使う以外には、基本的にはないと思います。

領域を統合するという関数は、ワークシートには用意されていません。名前は、たぶん、JOINという名が付けられるはずですが、それは未だ採用されていません。

Concatenate関数は、別にExcel用にあるのではなく、他機種が、「&」演算子が使えないためにあるだけに過ぎません。

そこで、myJoin というユーザー定義関数を考えてみました。

設定の仕方
Alt +  F11 ...続きを読む

Qint main()、void main()、void main(void)、int main(void)

今日、大学でC言語の講義の時間、先生が、

#include <stdio.h>

void main(void){

}

と宣言してプログラムを書くと教えていました。
main関数には、
main()
void main()
void main( void )
int main()
int main( void )

と、人によりいくつかの描き方があったりします。
どれが本当は正しいのでしょうか?
void mainはすべきではないとなんかの本で読んだのですが・・。

Aベストアンサー

通称C89という以前の言語規格(現行コンパイラの多くが準拠)では、下記のいずれかが正しい。
int main(int argc, char *argv[])
int main(void)

但し、最新のC言語規格(通称C99)では、
<ISO/IEC9899:1999>
or in some other implementation-defined manner.
</ISO/IEC9899:1999>
となっているので、処理系が戻り値のvoidを認めていればvoidも可。
# 組込み系などで戻り値を使わない環境もあるためでしょうか。

なので、コンパイラのマニュアルで戻り値のvoidにしていい/しろと書いてない限り、
voidは言語仕様的には正しくない。(でも動くものもある)

QCOBOL数値転記の仕様

このたび、まったくの未経験のCOBOLをやることになりました。
で、数値データの表し方になんやかやとやたら方法があるようなのですが、それらを互いに「転記」したときに、どういう結果になるものか、皆目わからないんです(環境はCOBOL85でWindows上での開発です)。
テクニックとしては基本だと思うのですが、それでいてどこにも説明されていな~い!フリーのCOBOLツールは見つけてきましたが、使い方が???なもので…。
 たとえば、

 01 X1 PIC XX (数値が入ってるとします)
 01 N1 PIC 99
 01 D1 PIC 99 COMP
 01 B1 PIC 1(16) BIT

な場合、X1とN1は直接
 MOVE N1 TO X1
などとやってもデータは失われないと思うんですが、他の形式での操作は(桁あふれとか無視して)ちゃんと転記できるのでしょうか。

いま特に、D1からX1へというパターンが多いです。1バイトの2進データを、数値の文字列として使おう、というんです。いわば、1バイトを3バイトに展開してやるんです。何も考えずに書けば、
 01 D2 PIC 9(4) COMP VALUE 97
 01 X2 PIC X(3)
 MOVE D2 TO X2
でしょうけど、たぶん'a△△'になるだけのような気がします…。
 それとも、
 01 N2 PIC 9(4)
 MOVE D2 TO N2
 MOVE N2 TO X2
などとやっていけたりするのでしょうか。

いったいどうなるのでしょう、いろいろ書いちゃいましたけど、各々の転記の仕組みを教えてください。

また、COBOLの(お堅い規格を書き写しただけでない)解説のサイトなどあれば、ご紹介いただけますでしょうか。

このたび、まったくの未経験のCOBOLをやることになりました。
で、数値データの表し方になんやかやとやたら方法があるようなのですが、それらを互いに「転記」したときに、どういう結果になるものか、皆目わからないんです(環境はCOBOL85でWindows上での開発です)。
テクニックとしては基本だと思うのですが、それでいてどこにも説明されていな~い!フリーのCOBOLツールは見つけてきましたが、使い方が???なもので…。
 たとえば、

 01 X1 PIC XX (数値が入ってるとしま...続きを読む

Aベストアンサー

ShiozawanoYukiさんはCOBOL未経験とのことですが
ご質問のような数値と文字との間の転記はCOBOL上規約はありますが実際には例外的にしか行われないでしょう。

COBOLコードの厳しい社内ルールを定めてる会社では数値と文字との間の転記は禁止されています。
(桁あふれ、計算時に不能や範囲外の値になったり、ひどいとエラー終了になるか引き起こしたりするからです。)
転記する場合は同じ桁数同士のみで行う社内ルールを決めているところもあります。
(桁あるれ対策です。)

*数値と文字との間の転記はデータの定義で対処します。

COBOLのデータは構造体になっています。
(ご質問のようなデータ構造はフラグ、繰り返しや一時的な変数などには使用しますが普通はレベルを使用したデータ構造で定義します。)

>MOVE N1 TO X1
のコードのデータは

 01 X.
  02 X1 PIC 99.
 01 N1 PIC 99.

などと定義し転記後に文字で使用する場合は”X”(2桁)を使用します。
しかし、ただ”N1”を文字として使用するだけである場合は

 01 NX.
  02 N1 PIC 99.

と定義し、”NX”(2桁)を文字として使用する方法もあります。
(これは9タイプとXタイプの内容が同じため利用できますがバイナリなどでは転記してから利用します。)


逆に数値から文字に転記する場合は

 01 D2 PIC 9(4) COMP VALUE 97.
 01 X2.
  02 X9 PIC 9(4).
 01 XR REDEFINES X2.
  02 XR1 PIC X(02).
  02 XR2 PIC X(02).

   MOVE D2 TO X9.

となり文字として使用する場合は”X2”(4桁)を使用します。
”X2”は数字から転記されたので”0097”が入っています。

”X2”を”△△97”にする場合は”X9”を”ZZZ9”または”ZZZZ”(”Z(04)”)の編集項目で定義すれば実現できます。
(”0”(”0000”)を転記した場合に”ZZZ9”は”△△△0”、”ZZZZ”は”△△△△”になります。)

4桁を上2桁と下2桁で使用する場合は上記のように”X2”を再定義(REDEFINES)し”XR1”、”XR2”を使用します。
(個人的には最上位レベルでの再定義は避けるようにしています。)

*実は転記を悩まずに行うには、実は上の厳しい社内ルールと記した”同じ項目種類、桁数でのみ転記”を行い、項目種類の変換はデータ定義で行うのがポイントです。


*COBOLを理解するためにはデータ構造を理解することが良いと思います。
 (命令は他の言語より少なく対応が容易です。ただ、少ない分、自分でコード作成が必要です。ここが他の言語しか知らないプログラマには大変かもしれません。)

後、ピリオドを付けないとのルールがないなら、命令の最後にはピリオドを付けましょう。
(IF文の中では逆に付けません。そのため逆にピリオドがトラブルの原因ともなり、モジュールの最後だけに付けるとの社内ルールを決めているところもあります。)

>また、COBOLの(お堅い規格を書き写しただけでない)解説のサイトなどあれば、ご紹介いただけますでしょうか。

残念ですがCOBOLは他の言語と違い歴史がある割りには定番類があまりありません。

最新のCOBOLは他の言語のように色々な命令が追加されているようですが、本来は当時のプログラミングの専門家以外でもプログラムを作成することを目標に設計されています。
(当時といっても、もう半世紀も前の話ですが・・・)
そのため、元は限られた命令と定義されたデータ構造だけでプログラムが作成できます。
(バッチであればファイル処理と帳票処理を中心に憶えれば良いと思います。問題はオンラインとWebの場合ですが真似からなれるしかないかもしれません。)


参考になるでしょうか?

ShiozawanoYukiさんはCOBOL未経験とのことですが
ご質問のような数値と文字との間の転記はCOBOL上規約はありますが実際には例外的にしか行われないでしょう。

COBOLコードの厳しい社内ルールを定めてる会社では数値と文字との間の転記は禁止されています。
(桁あふれ、計算時に不能や範囲外の値になったり、ひどいとエラー終了になるか引き起こしたりするからです。)
転記する場合は同じ桁数同士のみで行う社内ルールを決めているところもあります。
(桁あるれ対策です。)

*数値と...続きを読む

QCOBOLのCALL文がいまいちつかめません。

いつもお世話になっています。
WINDOWSでCOBOL85を使いながら、COBOLの勉強をしています。
JAVAを基本情報試験のために勉強したくらいの初心者です。
シーケンシャルファイルでマッチング処理を行う、
小さなプログラムを課題としている途中、
CALL文を使ってサブプログラムを作ってみてくださいと言われました。

そこで質問なのですが、
メインプログラムの集団項目をUSING指定で引数として、
サブプログラムで受け取り、処理をするまではいいのですが、
戻り値をどのようにして受け取ればいいのかが
イメージがつかめません。
・戻り値を受け取るための命令
・戻り値は1つだと思うのですが、どの変数?に返ってくるのか
(集団項目ごと返ってくる?)
など、何かあればご助言をいただけないでしょうか?

ソースは次の通りです。
よろしくお願いいたします。

■メイン
IDENTIFICATIONDIVISION.
PROGRAM-ID.MACHING_TEST.
(省略)
WORKING-STORAGESECTION.
  01 JUDGE_F.
   03 KEY_F    PIC 9(01).
   03 CHANGE_F    PIC X(06).
   03 EXCEP_M    PIC 9(01).
(省略)
CALL "JUDGE_FEMALE" USING JUDGE_F
ON EXCEPTION
  DISPLAY N"エラーです。プログラムを終了します"
  STOP RUN

  NOT ON EXCEPTION
   IF EXCEP_M = 9
THEN
MOVE"ERRER!"TO FEMALE_OUT
ELSE
 IF EXCEP_M = 1
THEN
MOVE CHANGE_F TO FEMALE_OUT
 END-IF
   END-IF
   END-CALL.
(以下略)

■サブ
IDENTIFICATIONDIVISION.
PROGRAM-ID.JUDGE_FEMALE.

DATADIVISION.
LINKAGESECTION.
01 JUDGE_F.
 03 KEY_FPIC 9(01).
 03 CHANGE_FPIC X(06).
 03 EXCEP_MPIC 9(01).

PROCEDUREDIVISIONUSINGJUDGE_F.

IF KEY_F = 1
 THEN
  MOVE "オトコ" TO CHANGE_F
  MOVE 1 TO EXCEP_M
 ELSE
  IF KEY_F = 2
THEN
 MOVE "オンナ" TO CHANGE_F
 MOVE 1 TO EXCEP_M
ELSE
 MOVE 9 TO EXCEP_M
END-IF
END-IF.
PROGRAM-END.
 STOP RUN.

いつもお世話になっています。
WINDOWSでCOBOL85を使いながら、COBOLの勉強をしています。
JAVAを基本情報試験のために勉強したくらいの初心者です。
シーケンシャルファイルでマッチング処理を行う、
小さなプログラムを課題としている途中、
CALL文を使ってサブプログラムを作ってみてくださいと言われました。

そこで質問なのですが、
メインプログラムの集団項目をUSING指定で引数として、
サブプログラムで受け取り、処理をするまではいいのですが、
戻り値をどのようにして受け取ればいいのかが
...続きを読む

Aベストアンサー

メインからは
CALL "JUDGE_FEMALE" USING JUDGE_F
とJUDGE_Fいう項目を使ってサブをコールしてます。
質問文では書かれてませんが、CALLする前に、KEY-Fに1、2、もしくはそれ以外がセットされてるんだと思います。
つまり、8バイトの頭1バイトだけセットしてコールするわけです。
  01 JUDGE_F.
   03 KEY_F     PIC 9(01).
   03 CHANGE_F     PIC X(06).
   03 EXCEP_M     PIC 9(01).

サブの側ではコール元のプログラムが、KEY-Fに何をセットしてきたかを判定して、CHANGE-FとEXCEP-Mにデータをセットしています。

メインはサブから返されたJUDGE-Fを使って引き続き処理を行います。集団項目で渡して集団項目で帰ってくるだけです。この場合、CHANGE-FとEXCEP-Mをセットするためのサブプログラムですが、作りようによって何項目でも返せます。(必要なだけ定義して集団項目にすればよいです)

メインからは
CALL "JUDGE_FEMALE" USING JUDGE_F
とJUDGE_Fいう項目を使ってサブをコールしてます。
質問文では書かれてませんが、CALLする前に、KEY-Fに1、2、もしくはそれ以外がセットされてるんだと思います。
つまり、8バイトの頭1バイトだけセットしてコールするわけです。
  01 JUDGE_F.
   03 KEY_F     PIC 9(01).
   03 CHANGE_F     PIC X(06).
   03 EXCEP_M     PIC 9(01).

サブの側ではコール元のプログラムが、KEY-Fに何をセットしてきたかを...続きを読む


人気Q&Aランキング