• ベストアンサー

COBOLで文字タイプを数字タイプに変換する方法

youtakunの回答

  • youtakun
  • ベストアンサー率25% (1/4)
回答No.5

NO4の者です。 すみません、ちょっと間違えてました(><) *<< 「.」で判断して整数と少数に分ける >> unstring in-sunpo delimited by all "." into wk-seisu wk-syousu. ↓ unstring in-sunpo delimited by all "." into wk-seisu9 wk-syousu. でした。お恥ずかしい・・・(///)

hidekin
質問者

お礼

すばらしいです。 ありがとうございます。 サブルーチンの存在を発見したのですが、 こんなに簡単にできるとは。 大変勉強になりました。 ありがとうございました。

関連するQ&A

  • COBOL FILLER

    COBOLのFILLER項目の出力を質問させていただきます。 質問1 OUT1-FILE. 01 OUT-REC  02 FILLER PIC X(10). このファイルを何もせず WRITE で出力した場合は空ファイルが出力されますか?それとも"0000000000"が出力されますか? 質問2 またこのファイルをINITHILIZEした後WRITEでファイル出力したら何が出力されますか? 質問3 このファイルをMOVE ZERO TO OUT-REC した後WRITEでファイル出力したら何が出力されますか?

  • COBOLについて

    COBOL初心者なのですが。 COBOLで 01 A.   03 B PIC 9(02).   03 C PIC X(02). MOVE  SPACE  TO  A. とした時、基本項目であるBには何が入っているのでしょうか? 数字項目にSPACEというのはありえないですよね。 どなたかわかる方、教えていただけませんか?

  • COBOLで変数が何文字で宣言されたかを取得する方法

    COBOLで、例えば 01 IN-REC. 02 IN-BANGO PIC X(05). 02 IN-SHIMEI PIC X(15). …(100個続く)… 02 IN-CLASS PIC X(10). 02 IN-SEISEKI. 03 IN-SUGAKU PIC 9(03). 03 IN-EIGO PIC 9(03). …(続く)… 03 IN-KOKUGO PIC 9(03). となっていたとします。このとき、プログラム中で IN-RECが何文字で宣言されているかを上の宣言文の各変数の文字数を いちいち計算機か暗算で足し算していく以外に関数みたいな形で 知る方法はないでしょうか? また、ないなら、それを計算するマクロを自力で作るにはどうしたら よいのでしょうか?

  • pro*cobol ⇔ oracle のデータ型の扱い

    お世話になります。 pro*cobolで、テーブルの作業領域を定義し、 データの編集後、oracleのテーブルへ出力している のですが、cobol側の定義はpic9タイプで oracleの項目定義ではCHAR型になっております。 この状態で、cobol側のpic9タイプの項目に "A00001"等文字を含む値を設定した所、 ABENDせずにoracleテーブルに"A00001"の 項目値を出力しています。 cobolだけに限れば、属性エラーなのですが、 この場合、oracleの項目定義が優先されるのでしょうか? よろしくご教授の程、お願い申し上げます。

  • COBOLの条件式について

    以下のような構文があります。 ループ中にAに1234の値、Bに1234の値がセットされていますが、 ループを抜けません。どうしてでしょうか? なお、データ項目A,BのサイズをX(4)にすると、抜けます。 01 A PIC X(5) 01 B PIC X(5)    : PERFORM UNTIL A = B    : END-PERFORM

  • COBOL

    COBOLから.NETへ移す作業をしております。 以下の点で詰まりました。 1、pic X(03) COLUMN 7. このうち、COLUMNは何をしているのでしょうか? 調べてもわかりませんでした。 2、 MOVE ZEROとイニシャライズの違いについて MOVE R-TBL TO ZEROとINITIALIZE R-TBL 実際に何が違うのでしょうか? R-TBL内にname pic X(08)という変数と number pic 9(2)という変数があったとすると ZEROの方は name⇒"00000000" で number⇒0 INITHLIZEの方は name⇒""  で number ⇒ 0 でしょうか? 3、HIGH-VALUEについて HIGH-VALUEが取りうる最大値を表すことはわかりました。 VBでもC#でもchar.MAXVALUEみたいに取れます。 name pic X(10)にHIGH-VALUEを入れるとすると.NETで実現しようとすると string name = char.MAXVALUEとなります。 これを 01 R-TBL. 02 box PIC 9(5). 02 id PIC 9(5). に代入したいのですがうまく出来ません。 どうすればよいのでしょうか?

  • COBOLについて

    今高校でCOBOLの勉強をしています。 教科書の練習問題が宿題に出されたのですが、わからないところがありました。 (1)数字項目2桁、テーブル名SUUJI-TBL、データ名SUUJI、要素数20個のテーブルを確保しなさい。 (2)手続き部で、(1)で確保したテーブルに、先頭から1,3,5・・・の値を転記しなさい。ただし、PERFORM文を用いること。 という問題です。 (1)は、 01 SUUJI-TBL.   02 SUUJI PIC X(2) OCCURS 20. と書けたのですが、(2)がさっぱりわかりません。 わかる方、教えてもらえますか?

  • COBOLで全角変換を行いたいのですが...

    汎用機(ACOS-4)でCOBOLを使って開発を行っている者です。 INファイルのある項目を全角変換し、 OUTファイルに出力するプログラムを作成しています。 ただ困った事に変換元の項目の内容が 半角のデータ、全角のデータ、半角全角が混在しているデータもあるのです。 現在は項目の中に半角スペースの文字コードが存在すれば全て半角とし、 以外は全て全角と判断しています。 もちろん項目中のデータが全て埋まっている場合や、 半角全角が混在しているデータについては文字化けを起こしています。 どなたかこのような変換について良い方法があればご教授願います。 宜しくお願い致します。

  • COBOLでの可変長定義について

    unix環境下でCOBOL85を使用しています。 あるデータを可変長でWRITEしていくのですが、 データにヘッダー情報みたいなものが付加されてしまい困っています。 ヘッダー情報を付加しないようにするにはどうすればいいのでしょうか? 定義:  FD Aファイル RECORD IS VARYING 1 TO 100 DEPENDING ON A-CNT.  01 A-DATA PIC X(100). とか  FD Aファイル RECORD IS VARYING IN SIZE DEPENDING ON A-CNT.  01 A-DATA PIC X(100). というパターンで試しています。 Aファイルにaaaという3バイトデータをWRITEすると、 COBOL85020315020304・・・・・aaaというデータが出力されます。 あるコボラーに聞くと「定義がおかしいからでしょう」と言ってたのですが、 どうおかしいかは本人もわからないようです。 どうすればヘッダー情報(COBOL85020315020304・・・・・)がつかず、 可変長でWRITEできるのでしょうか?教えて下さい。

  • PRO COBOLでFETCH時に値を変換する

    PRO COBOLでoracleデータを読み込むプログラムを変更しようとしています。 元のプログラムは、 ----------------------------- WORKING-STORAGE SECTION. EXEC SQL DECLARE table10c CURSOR FOR SELECT table10.item11, table10.item12 FROM table10,table20 WHERE table10.item13 = table20.item23 END-EXEC --- PROCEDURE DIVISION. EXEC SQL FETCH table10c INTO file-item11, ←出力ファイルの項目1 file-item12 ←出力ファイルの項目2 END-EXEC. ----------------------------- となっていて、item13 と等しい値が table20.item23 にある場合 item11 と item12 の値を順次、ファイルに出力しています。 今回、仕様を変更し、item11の値を変換してファイルに 出力しようとしています。 変換する値は、テーブル:henkan に登録しています。 項目1:old-item ・・・table10.item11にセットしている値 項目2:new-item ・・・file-item11にセットしたい値 WHERE句の条件は、そのままです。 (WHERE table10.item13 = table20.item23) 但し、item11の値は全て変換するわけではなく、 テーブル:henkan に一致するレコードが有る場合のみ つまり table10.item11 = henkan.old-item の場合のみ file-item11 に henkan.new-item の値を出力し、 それ以外の場合には、table10.item11 の値をセットします。 この変更を極力少ないロジックの改修で済ませたく 基本的には 「DECLARE table10c CURSOR」句の変更と したいです。 「SELECT table10.item11,」の項目を変数にして 変換した場合は、henkan.new-item の値をセットし 変換しない場合には、table10.item11 の値をセットできれば 良いのではないかと思っていますが具体的な方法が判りません。 同様の変更を(出力条件等の異なる)複数のプログラムに 行うつもりで「PROCEDURE DIVISION」は、複雑になっているため 変更は最小限としたいです。 PRO COBOLの経験が少なく、アドバイスをお願いします。