IF A = 1 IF B = 1 COMPUTE C = 1 ELSE COMPUTE C = 2 END-IF ELSE COMPUTE C = 3 END-IF. 0080仕様書無しさん2018/12/14(金) 20:44:16.23 むしろこう書いた方がいかにもコボラーっぽいかもw
EVALUATE A ALSO B WHEN 1 ALSO 1 COMPUTE C = 1 WHEN 1 ALSO ANY COMPUTE C = 2 WHEN OTHER COMPUTE C = 3 END-EVALUATE. 0081仕様書無しさん2018/12/15(土) 01:21:20.76 C = (A == 1) ? (B == 1 ? 1 : 2) : 3 0082仕様書無しさん2018/12/15(土) 10:29:32.51 小学生の頃はお父さんがコンピュータの会社に勤めてて自慢に思っていた。 だけど高校生になってPCもろくに触れないスマホの使い方を子供に聞く、ITに全く無知なコボラーだったと気付いたとき自分が悲しくなった。 0083仕様書無しさん2018/12/15(土) 13:49:48.90>>81 まあ三項演算子ある言語で三項演算子使うならそうなるわな。 なお、実際のIT系企業ではコーディング規約ニキが三項演算子の使用を阻止してくることも多い模様。 0084仕様書無しさん2018/12/16(日) 03:22:41.78 システムエグゼ 苦情申し立てダイレクト窓口
監査役 白銀 亨 sirokane@system-exe.co.jp 0085仕様書無しさん2018/12/18(火) 23:40:34.59 IDENTIFICATION DIVISION. PROGRAM-ID. ISLEAP. DATA DIVISION. LINKAGE SECTION. 01 YEAR PIC 9(4). 01 LEAP-FLG PIC X(1). PROCEDURE DIVISION USING YEAR LEAP-FLG. IF YEAR IS NUMERIC EVALUATE ZERO WHEN FUNCTION MOD(YEAR 400) MOVE '1' TO LEAP-FLG WHEN FUNCTION MOD(YEAR 100) MOVE ZERO TO LEAP-FLG WHEN FUNCTION MOD(YEAR 004) MOVE '1' TO LEAP-FLG WHEN OTER MOVE ZERO TO LEAP-FLG END-EVALUATE ELSE MOVE '9' TO LEAP-FLG END-IF. EXIT PROGRAM. 0086仕様書無しさん2018/12/20(木) 10:34:50.30 COMPUTE C = 1
コボラーとしてはこの書き方にものすごい無駄を感じる。 なぜかというと、アセンブラではこれが
ZAP C,=P'0' ZAP W1,=P'1’ AP C, 0087なんか勝手に書き込みが動作してしまった・・・2018/12/20(木) 10:39:18.42 ZAP C,=P'0' ZAP W1,=P'1’ AP W2,W1 ZAP C,W2
COMPUTE CURRENT-HP = FUNCTION MIN((CURRENT-HP + 30) MAX-HP).
と書くのが一番いいかも知れんが。 0091仕様書無しさん2018/12/21(金) 00:38:35.36 Rubyだったら current_hp = (current_hp + 30).clamp(0, max_hp) みたいなコードですか? 0092仕様書無しさん2018/12/23(日) 19:00:18.84>>91 Ruby触ったことないから調べてみたけど、 同じことをminとmax使ってやろうとすると、 current_hp = [[0, (current_hp + 30)].max, max_hp].min になるのかな? これだとかなり分かりにくくなるから、clampは便利だね。 HPを回復するときは下限の判定は要らないけど、 ダメージを受けたときと回復するときを共通のロジックにするなら、 Rubyのclampみたいな機能が無い場合はmaxとminの合わせ技にせざるを得ない。 0093仕様書無しさん2018/12/26(水) 21:23:54.23>>89 データ型による 0094仕様書無しさん2019/04/29(月) 11:27:24.55 Pythonで、aをbで割った余りだけが必要で商は不要なときに、わざわざ q, r = divmod(a, b) と書くことは普通せず、 r = a % b と書くのが普通だろう。
しかし、COBOLだとAをBで割った余りだけが必要で商は不要なときでも、 DIVIDE A BY B GIVING Q REMAINDER R. と書くことが多く、 COMPUTE R = FUNCTION MOD(A B). 或いは MOVE FUNCTION MOD(A B) TO R. と書くことはむしろ少ない。 0095仕様書無しさん2019/04/29(月) 16:58:16.05 そもそもの話、商が不要で余りだけが必要なケースはCOBOLのシステムでは無い だが逆は普通にある 0096仕様書無しさん2019/04/29(月) 18:02:48.31>>95 > 商が不要で余りだけが必要なケースはCOBOLのシステムでは無い そうかな? そんなこと無いと思うけど。 0097仕様書無しさん2019/04/29(月) 21:22:07.61 うるう年判定とか偶数・奇数判定ってCOBOLじゃあんまりやらないのかな。 特に後者は1行当たり2件分表示する形式の帳票を作るときに、 奇数なら左側、偶数なら右側に編集するとかありがちだと思うけど。 IF (-1) ** N = 1 (偶数のときの処理) ELSE (奇数のときの処理) END-IF. でもいいけどね。 0098仕様書無しさん2019/04/30(火) 01:25:28.19 帳票は書式でそういう設定をするのが普通だし 閏年の処理は自分で作るべきではない 0099仕様書無しさん2019/04/30(火) 09:25:05.96 COBOLのコーディングで四捨五入や丸め処理で価を認めるのは見かけるけど、余りだけ求めるのは見たことがないな どういう想定で必要なんだろうか 0100仕様書無しさん2019/08/13(火) 19:50:18.57>>8 がっ! 0101仕様書無しさん2019/08/13(火) 19:51:08.52 六年越しでついに取ったよ 0102仕様書無しさん2019/08/13(火) 21:50:35.99 ヌルポ 0103仕様書無しさん2019/10/26(土) 16:12:26.09 うるう年判定は、テーブルかファイル参照してたかな? 0104仕様書無しさん2019/10/26(土) 16:48:01.79 EVALUATE TRUE WHEN FUNCTION MOD(YEAR 4) = ZERO AND FUNCTION MOD(YEAR 100) NOT = ZERO WHEN FUNCTION MOD(YEAR 400) = ZERO (閏年の場合の処理) WHEN OTHER (平年の場合の処理) END-EVALUATE.