すいませんコボル初心者の者です。周りに聞く人がいずに困っています。
アドバイスよろしくおねがします。
例えば、IN-SUNPO PIC X(7)に "0.25"や"0.025"と値が入っているとします。
この項目を OUT-SUNPO PIC 9(4)V9(3)にセットして出力したいのですが
いい方法が考えつきません。
どのようにすれば実現するのでしょうか。
また、IN-TANAK PIC 9(8)をOUT-TANKA PIC X(10)に左詰でセットするために
入力項目の頭のゼロをどう処理していいかもわかりません。
考えても結論がでませんでしたので、投稿しました。
宜しくお願いします。
No.4ベストアンサー
- 回答日時:
★ひとつ目の質問。
いろいろと特殊命令を使いますが簡単にコーディングできますし、覚えておくと便利です。
01 wk-seisu.
03 wk-seisu9 pic 9(4).
01 wk-syosu.
03 wk-syosu9 pic 9(3).
*<< in-sunpo の空白を0に置き換える >>
inspect in-sunpo replacing all " " by "0".
*<< 「.」で判断して整数と少数に分ける >>
unstring in-sunpo delimited by all "." into wk-seisu wk-syousu.
*<< 分けた数字を合わせる >>
compute in-sunpo = wk-seisu9 + (wk-syosu9 / 1000).
★ふたつ目は他の方が回答されているのと同じです。
*<< 符号(-)があるとき >>
01 wk-tanka.
03 wk-kanka9 pic -------9.
*<< 符号(-)がないならこれでもいいです >>
01 wk-tanka.
03 wk-tanka9 pic zzzzzzz9.
move in-tanta to wk-tanka9.
move wk-tanka to out-tanka.
お役に立つかちょっと不安ですが(^^;)
コボル言語は他の言語と違って、ある程度法則を覚えると簡単です。
頑張ってくださいね。
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.
でした。お恥ずかしい・・・(///)
すばらしいです。
ありがとうございます。
サブルーチンの存在を発見したのですが、
こんなに簡単にできるとは。
大変勉強になりました。
ありがとうございました。
No.3
- 回答日時:
"0.25"、"0.025"が、必ず右詰め?
整数部の桁は変動?
ということで、整数部と小数部を分解して、編集後、セットするというのはどうでしょう?
01 IN-SUNPO PIC X(7).
01 OUT-SUNPO PIC 9(4)V9(3).
01 WORK-AREA.
05 WIN-SUNPO-TBL.
10 WIN-SUNPO OCCURS 7 TIMES PIC X(1).
*
05 WIN-SEISU-TBL.
10 WIN-SEISU OCCURS 7 TIMES PIC X(1).
05 WIN-SHOSU-TBL.
10 WIN-SHOSU OCCURS 7 TIMES PIC X(1).
05 WIN-SEISU2-TBL.
10 WIN-SEISU2 OCCURS 7 TIMES PIC X(1).
05 WIN-SEISU2-TBL-R REDEFINES WIN-SEISU2-TBL.
10 WIN-SEISU2-R PIC 9(7).
05 WIN-SHOSU-TBL-R REDEFINES WIN-SHOSU-TBL.
10 WIN-SHOSU-R PIC 9(7).
*
05 WOU-SUNPO 9(7)V9(7).
05 WOU-SUNPO-R REDEFINES WOU-SUNPO.
10 WOU-SEISU-R 9(7).
10 WOU-SHOSU-R 9(7).
*
01 IXA PIC 9(1) VALUE 0.
01 IXB PIC 9(1) VALUE 0.
01 IXC PIC 9(1) VALUE 0
01 IXD PIC 9(1) VALUE 0.
MOVE IN-SUNPO TO WIN-SUNPO-TBL.
MOVE ZERO TO IXB,IXC,IXD,IXE.
*整数部セット
PERFORM VARYING IXA FROM 1 BY 1
UNTIL IXA > 7
EVALUATE WIN-SUNPO(IXA)
WHEN " " CONTINUE
WHEN "."
COMPUTE IXC = IXA - 1
MOVE IXA TO 9
WHEN OTHER
ADD 1 TO IXB
MOVE WIN-SUNPO(IXA) TO WIN-SEISU(IXB)
END-EVALUATE
END-PERFORM.
*整数部右詰めセット
MOVE 8 TO IXB.
PERFORM VARYING IXA FROM 7 BY -1
UNTIL IXA < 1
IF WIN-SEISU(IXA) = SPACE
THEN CONTINUE
ELSE SUBTRCT 1 FROM IXB
MOVE WIN-SEISU(IXA) TO WIN-SEISU2
END-IF
END-PERFORM.
INSPECT WIN-SEISU2-TBL LEADING " " BY "0".
MOVE WIN-SEISU2-R TO WOU-SEISU-R.
*小数部セット
PERFORM VARYING IXD FROM IXC BY 1
UNTIL IXD > 7
EVALUATE WIN-SUNPO(IXD)
WHEN " " CONTINUE
WHEN OTHER
ADD 1 TO IXE
MOVE WIN-SUNPO(IXD) TO WIN-SHOSU(IXE)
END-EVALUATE
END-PERFORM.
INSPECT WIN-SHOSU-TBL LEADING " " BY "0".
MOVE WIN-SHOSU-R TO WOU-SHOSU-R.
*
MOVE WOU-SUNPO TO OUT-SUNPO.
アドバイスありがとうございました。
いろいろ資料をあせっていたら、サブルーチンが
ありました。
内容はアドバイスされたようなものでした。
勉強になりました。ありがとうございました。
No.2
- 回答日時:
こちらで確認が出来ないので、憶測ですが。
。。01 OUT-SUNPO-X.
03 OUT-SUNPO PIC 9(4)V9(3).
と定義し、
MOVE IN-SUNPO TO OUT-SUNPO-X.
で、代入後、
OUT-SUNPO
を使用してはいかがでしょう。。。
01 IN-TANAK PIC --------9.
01 OUT-TANKA REDEFINES IN-TANAK PIC X(10).
とかでも出来たはずですが。。。
以下URLを参考になさって、実際に動かしてみて下さい。
参考URL:http://hp.vector.co.jp/authors/VA003991/kouza/ko …
No.1
- 回答日時:
まず、PIC XからPIC 9にはMOVEが出来ません。
(逆は可能)そこで簡単なサブルーチンを作成してはどうでしょうか。COBOL言語が数年行ってないので考えかたでよろしいでしょうか?Basic 形式で記載でごめんなさい!
for i=1 to 7
if IN-SUNPO(i:1)="." THEN
n = i
break
end-if
next i
OUT_SUNPO = 0
for i=n-1 to 1 setp -1
select case IN-SUNPO(i:1)
case "0"
OUT_SUNPO = OUT_SUNPO + (0 * 10^(i-n))
残り9まで同様
next
負も同じ考えでn+1から7桁で処理
これで駄目ですか?
帰宅して時間があってらCOBOLのマニュアル読んで再度更新!(予定)
帰宅してからも・・・。本当にありがとうございます。
感謝です。
本日は解決せずに、帰宅しました。
今、自宅で拝見させていただきました。
明日、実行してみます。
結果ご報告いたします。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
【お題】 ・存在しそうで存在しないモノマネ芸人の名前を教えてください
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
【お題】 ・買ったばかりの自転車を分解してひと言
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
S9タイプからXタイプにデータは移行できるのか。(COBOL)
その他(プログラミング・Web制作)
-
【COBOL】文字列から数値項目に転記するにあたって
その他(プログラミング・Web制作)
-
COBOLのMOVEで桁数が異なる場合
その他(プログラミング・Web制作)
-
-
4
COBOL数値転記の仕様
その他(プログラミング・Web制作)
-
5
COBOL、項目末尾に空白がある場合削除の方法その他
その他(プログラミング・Web制作)
-
6
COBOLの数字チェック
その他(プログラミング・Web制作)
-
7
COBOLについて
その他(プログラミング・Web制作)
-
8
COBOL 9(02)で定義した変数にマイナス値をセットすると?
その他(プログラミング・Web制作)
-
9
COBOLのCOMP形式について
その他(プログラミング・Web制作)
-
10
COBOLのS9タイプからXタイプへ変換する過程
その他(プログラミング・Web制作)
-
11
COBOLで集団項目から符号付き数字項目へのMOVEの結果は?
その他(プログラミング・Web制作)
-
12
COBOLでのNOT = の AND条件
その他(プログラミング・Web制作)
-
13
COBOLの改行
その他(プログラミング・Web制作)
-
14
COBOL等でのHIGH_VALUEについて
IT・エンジニアリング
-
15
COBOLで半角カナを全角カナに変換
その他(プログラミング・Web制作)
-
16
COBOLの計算方法
その他(プログラミング・Web制作)
-
17
COBOL
その他(プログラミング・Web制作)
-
18
仕様書の表記について
IT・エンジニアリング
-
19
EBCDIC⇒SJIS変換の方法
その他(プログラミング・Web制作)
-
20
COBOL OCCURSで指定したデータの参照の仕方
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング言語を作るには
-
C言語、C+、C++、C#の違い
-
C言語とhtmlの違いを どな...
-
VBSとWSHは読み方が違うだけで...
-
プログラムからアイコンファイ...
-
C#という完璧な言語があるのに...
-
HTMLとC++で、どんなホームペー...
-
vbaとc言語の関連性について
-
C++ ってなんて読む?
-
HTML の submit でゲットした ...
-
Excel VBAで文字化けする (英語...
-
変数などの名前のつけ方の「_...
-
VBSでDim、Private、Publicの違い
-
UNITY Float型の接尾辞fって
-
C# でソフト開発をした事のある...
-
C++における継続行
-
プログラミング言語を学びたい...
-
スパーコンピューターで使用す...
-
昔、MZ-2000やX1でBASICを書い...
-
HTMLは、プログラミング言語じ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
COBOLでのNOT = の AND条件
-
UNITY Float型の接尾辞fって
-
プログラムに書かれる"%"記号の...
-
vbaとc言語の関連性について
-
C言語とhtmlの違いを どな...
-
C++における継続行
-
プログラムからアイコンファイ...
-
TO_CHARで小数点以下がある場合...
-
COBOLで文字タイプを数字...
-
パスカルケースの由来。
-
VBSでDim、Private、Publicの違い
-
Excel VBAで文字化けする (英語...
-
VBSとWSHは読み方が違うだけで...
-
VBScriptで引数を省略したい場合
-
Solve()とは、なんですか?
-
プログラムははぜ小文字大文字...
-
C++ ってなんて読む?
-
HTMLとC++で、どんなホームペー...
-
今、コンピューター言語で、COB...
おすすめ情報