1: bluelion 11/16 22:00 COBOL上で内部コード(S100?)からJIPS(JIS78)に変換したくてシステムサブルーチン SYSKOCNVだったかを使用して変換したいのですがいまいち うまくいきません アギュメントの設定をわかる方おしえてください 01 DATA1 X(02) VALUE "漢" 01 DATA2 X(10) 01 DATA3. 03 DATA31 X(02) 03 DATA32 9(04) VALUE 1. 03 DATA33 9(04) VALUE 10. 03 DATA34 9(04). 03 FILLER X(12)?? CALL "SYSKOCNV" USING DATA1 DATA2 DATA3 でコールすると ステータス DATA31は"00"で正常なのですが DATA2には必ず同じ値がかえってくるのです DATA1にはかならずきちんとした漢字がはいっているのですが なぜかわかりません 会話型デバッガーでcall前 call後にチェックしてもわからず ギブアップです おたすけおーー! また S100内部コードからJipsコードをサブルーチンを使わずに生成するこはできないのでしょうか? 2:Re: LBM 11/17 13:23 bluelionさん、はじめまして。 ターラヤンさん、はじめまして。お邪魔します。 まず、DATA32はバイト数となりますので2となります。 変換結果の先頭にはKI(3F75)が、最後にはKO(3F76)が入ります。 ご質問のように”漢”を変換すると、16進で"3F75F4C13F76"が帰るはずです。 コーディング例を書きますと、 01 DATA1 PIC X(02) VALUE "漢". 01 DATA2 PIC X(10). 01 DATA3. 03 DATA31 PIC X(02). 03 DATA32 PIC 9(04) VALUE 2. 03 DATA33 PIC 9(04) VALUE 10. 03 DATA34 PIC 9(04). 03 FILLER PIC X(16) VALUE SPACE. CALL "SYSKOCNV" USING DATA1 DATA2 DATA3. となります。 最後のFILLERはX(16)です。 試してみてください。 ターラヤンさんへ。 いつも読ませてもらっています。 小生も20年以上ITOS/AVXをやっている者です。 また機会がありましたらお邪魔いたします。 では、ご活躍を期待しています。 3:Re: LBM 11/17 13:28 申し訳ありません。 投稿時に変換を間違えました。 誤 帰る 正 返る 4:すばらしい ありがとうございました bluelion 11/17 16:49 JIPSに変換できましたありがとうございました しかし あらたな問題が JIPSからJISへの変換ができません #KFCNVではなく COBOLで変換できる方法ありませんか? 二つのデータを比べ 違っていたら 訂正用にその漢字のJISコード(入力用コードならほかでもいいのですが)を印刷するプログラムを作成していますが上記問題で進んでいません JIPSって 本来どんな 拡張コードか知らないで仕事してるも だめプログラマでした 5:JIPSからJISへの変換 LBM 11/18 09:49 JIPSコードは特殊な記号を除いて、ほぼJISコードと同じです。 SYSKOCNVで変換されたコードをEBCDICからJIS7へ変換すればJISコードになります。 ただ、処理の内容をお聞きした限りでは、内部コード→JISコードといった変換するサブルーチンを作成したほうが良いと思います。 小生の以前に作成したことがありますが200ステップもあれば出来ますよ。 では、がんばってください。 6:もう少し教えていただけませんか? BLUELION 11/18 21:33 JISとebcdicの変換はシステムサブルーチンにある通信系のサブルーチンで行えるのでしょうか? すでにそんなコボルに7年ぶりにもどったもので まだコード体系がぴんときません よろしくお願いします 7:Re: LBM 11/19 10:13 bluelionさん、苦労されているようですね。 古いことでよく覚えていないのですが、通信系のサブルーチンではパリティの問題で奇数・偶数を1バイト毎に判断して処理しないと出来ないと思います。 (やってやれないことはない) そんなことをするならば前回言いましたように、内部コード→JISコードのサブルーチンを作成されたほうが良いと思います。 簡単ですよ。 お話では、JISコードもリスト上に印字されるとのことですので、そのあたりも含めて作られると良いと思います。 では、がんばってください。 8:Re: bluelion 11/19 14:14 実は内部コードのJISコードの関係がわかりません どうシフトなどすれば内部コードからJISコードにできるのでしょうか? コボル的な問題ではなくコードの変換方法がわからないのです NECにもJIPSからJISや内部コードからJISへの変換方法を紹介していますが返答がこないもでのこちらのBBSに書き込みしております 9:Re: LBM 11/19 15:10 では、コード表を用意してください。 AVXのマニュアルだと「メッセージ管理3説明書」があればベストです。 そこに「EBCDICからJIS7への変換表」(A表とします)と「S100漢字からJIS漢字への変換表」(B表とします)があると思います。 まず、漢字フィールドは2バイトで1文字ですね。その最初のバイトをB表で変換してください。 次に2バイト目をA表で変換してください。 これでJISコードになります。 例えば、「漢字」。これは内部コードで”78C1B0B0”です。 ”78”→”34” (B表) ”C1”→”41” (A表) ”B0”→”3B” (B表) ”B0”→”7A” (A表)で JISコード”34413B7A”となります。 ビットをシフトしたりすることでは実現できません。 バイト単位にテーブルなどを使い変換するしかありません。 マニュアルがお手元に無いようでしたらお取引されているメーカーや販売店に、このコード表の部分だけでもコピーしてもらってください。 10:ありがとうございます BLUELION 11/20 10:39 その情報がわからず悩んでおりました これからサブルーチン作ります |