暑い中出社して仕事してきましたよ・・。
あの日立の案件のコード実装作業がどう頑張ってもスケジュール通りに行かないってわかってるのでな。
とりあえず、やるだけやってみて結果こうですよと示すための行為です。
で、本日はオフィスの入ってるビル自体が全館閉まってる状態なので、セキュリティーキーで入ります。
しばらくすると同僚からビルのドア開けて頂戴電話が来て、鍵を開けに行きます。
この同僚はまた別の案件の作業なんだけど、午前中には仕事終わって帰宅。
あとは一人で黙々と作業ですわ。
しかし・・・本当にこのコードの組み辛さは一体何なんでしょうかね。
この道30年以上のかなりの経験を積んでるんですが、このコード実装するアプリの使い辛さとコード仕様の〇ソ加減は歴代ワースト一位ですよ。
これのコード組むと馬鹿になりそうです。えぇ。
つかね、文字列の結合をどうすればいいのかわからんのですわ。
.Netであれば、文字列変数Aと文字列変数Bを結合して文字列変数Aに代入しようとすると、A = A + Bとかで行けるんですがね。
このコードだとA = sprintf$("%s%s", B, C)とかで書くしかない。
str.join$とかstr.concat$って結合用の関数があるにはあるんだけど、これの仕様がまたク〇でねぇ。
str.join$は「A = str.join$(" and ", B, C,)」みたいな感じに実装するんだけど、これの意味が文字列変数Bと文字列変数Cを" and "で結合して文字列変数Aに代入ってことなんですわ。
文字列変数Bが「bbb」、文字列変数Cが「ccc」だと文字列変数Aには「bbb and ccc」が入るってことです。
ちなみにstr.concat$だと、「A = str.concat$(",", B, C,)」みたいな感じで接続文字列が1文字限定になるというね・・・。
しかしこれだと接続文字列無しでAにBとCを連結した文字列を代入したいとき使えねぇ・・。
なので先の「A = sprintf$("%s%s", B, C)」で連結してるんですわ。
これは%sが文字列フォーマットですよってことで、%s%sでそれぞれBとCを代入してくっつけてる感じですわ。
そしてさらに〇ソだったのが、文字列内のA文字目からB文字分を取得するっていうことをしたかったんだけどね。
.Netだと、例えば文字列変数Aに"ABCDEFG"が入ってるとするじゃない。
ここから2文字目から3文字分を取得したい場合は、「B = A.substring(1,3)」みたいな感じで取れるのね。
.Netの世界だと文字列の先頭文字は0始まりになるので、2文字目は1になるのね。
で、このツールではstr.substring$()て関数があったので、これでいけるやろと思うじゃん?
使えないんだよねぇ・・・。
やりたかったことは先頭の文字から文字列の長さ分1文字ずつ取得すること。
なので簡単に先頭1文字目から文字列の長さ分ループしてBに1文字ずつ取得するコードを書くと・・・
for idx = 1 to len$(A)
B = str.substring$(A, idx, 1)
endfor
みたいな感じになるのね。この言語は1文字目が1から始まるのね。
けど、コンパイルするとエラーになる・・・。
なんででしょう。
言語仕様を見てみてみると、なんか例が載っててな。
B = str.substring$(A, 1, 1)って書くと戻り値が空になるというね・・・。
はぁ?って思わず声が出ましたよ。
意味が分かりません。どうしろと。
他に何かないかと血眼になって探してみたところ、「B = A(1;1)」と書けば1文字ずつちゃんととれるらしい。
はぁ?
なので、
for idx = 1 to len$(A)
B = A(idx; 1)
endfor
とかけばいいと。これで30分くらい悩んだわ・・・。
・・・str.substring$は何のためにあるんだよと・・・。
こんな感じで昨今一般的に使用されている言語といろんなところで意味や使い方が異なっていて、コードが組めないんですわ・・。
なのでこの言語に慣れてしまうと、一般的な言語を使えなくなってしまうという恐ろしいものですわ。
まじめに今回のPG作業が終わったら意地でもこのツールを使う案件はお断りしようと思います。
本当に馬鹿になってしまう。こんなのに慣れたくない。
こんなもんを全社員に覚えろとか馬鹿じゃね?としか言いようがありません。えぇ。
ふ☀
最近のコメント