社内SEの徒然なる日記

業務改善に挑戦No.7 業務分担のコントロール

■ 職務分掌

格好いい言葉を使えば職務分掌ってなるんですが、ようするに仕事の分担のお話です。

どんな仕事をしていてもそうですが、自分が担当している仕事を引き継ぐのは簡単な話ではありません。いえ、能力に大差ないなら、仕事を引き継ぐだけなら簡単なのですが、記録に残らない顧客とのやりとりとか、暗黙の了解とか、そういうのがあると一気に難しくなります。

日頃から引継ぎの準備をしていれば良いのですが、なかなか難しいものです。しかし、仕事の中には誰であっても簡単に担当できるものもあるものです。

簡単なものというと、ごく単純なルーチンワークや単純作業(コピー、FAX)が分かりやすいです。こういった、基本的なマニュアルと、最初に1〜2回程度ついてあげるだけで問題なくこなせるようになる仕事というのは、どこの組織でもあると思います。

■ 雑用

要するに雑用の類なのですが、何故だかやる人が固定されています。誰でもできるのに、同じ人が自分の仕事として抱えていて、誰もが当たり前のように見ています。まぁ、大抵は若手が担当してますかね。

実のところ、普段はそれでも良いと思っています。石の上にも三年なんて言葉がありますが、雑用というのもバカに出来ないものがあると思います。

例えば、作成した資料を配布して歩く業務があれば、配布する資料の中を見るチャンスもあるかもしれません。配布する人に顔と名前を覚えてもらえるかもしれません。ゴミ捨てや掃除であっても、きちんとこなしていれば仕事への真剣な取り組みをアピールすることにも繋がるかもしれません。

このように、考えようによってはチャンスではあるのですが、やはり雑用は雑用であって、重要な業務とは言い切れない部分があります。

■ コントロール

私が問題に感じるのは、それを担当している人が忙しくなっても雑用(役割分担)をそのままにしている点です。

部署で当番を決めて行っている簡単な作業があります。特に問題なければ15分程度で終わる仕事なので、普段は良いのですが、部署の中で忙しくなった(つまり、残業が多くなっている)人に対しても、その雑用を当たり前のように続けさせることに強い違和感を覚えます。

私の感覚では、その人の仕事が落ち着くまで、その雑用の担当から外してあげるべきだと思うのです。

その人でないと、あるいは、その人に頑張ってもらいたいと期待を掛けて仕事をさせるのであれば、その人がそれまでに持っていた仕事の一部を、余裕がある人に配分した方が効率が良い。というか、部署全体に負荷を分散させることが出来ます。

そのあたり、上司がきちんと各人の仕事内容を把握してコントロールしないといけないと思うのです。

■ 後書き

長々と書きましたが、ようは愚痴です。

ある人に負荷が掛かっているのに上司がコントロールする気がないようなので私から提案したら、「たかが何十分の作業で何が変わる」とか騒ぎ出したのです。

はぁ〜、マジかよ(溜息)。

例え1日10分の仕事でも、週5日で50分なんだよ?忙しい人って心に余裕がなくなるんだよ?負荷を少なくして一つの物事に集中させた方が効率が良いんだよ?それをコントロールするのが上司の仕事なんじゃないの?

・・・なんか、疲れてきた。

結局、ゴリ押しして意見を通しましたけどね。業務改善ってことでハード面(仕組み)を重視して考えていたのですが、ソフト面(教育)も並行して進めないと絵に描いた餅になりそうですね。

前回:業務改善に挑戦No.6 停滞

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

ホクロを消してしまいたい No1

■ ホクロ

去年まで続けていたレーザー脱毛が一定の成果を上げたので、今ではかなりツルツルです。まだ頬の下や顎に若干残っていますが、期待した結果になりました。痛い思いをした甲斐があったってものです。

ただ問題は、ホクロの部分から生えている毛にはレーザーを当てられないので、残っているってことです。

ってことで、今度はホクロを除去することにしました。

■ 炭酸ガスレーザー

さて、美容整形をやっているクリニックに行って相談したのですが、方法はいくつかあるそうですが、基本的にはレーザーで焼き切るらしいです。結構大きめのホクロもあったのですが、切らなくても大丈夫だそうです。

ということで部分麻酔をかけてレーザー照射。麻酔の効果でレーザー自体は痛くも痒くもないのですが、むしろ麻酔が痛い。部分麻酔の経験は何回かあるのですが、結構芯まで来る痛みで戸惑いました。もちろん、耐えられるレベルですけどね。

ホクロですが、私はホクロの部分をレーザーで焼き払うイメージだったのですが、ホクロを削り出すイメージが近いみたいです。施述中に取ったホクロを見せてくれたのですが、結構綺麗な丸型の肉(ホクロ)になっていました。

■ 長丁場

私、結構簡単に考えていたのですが、ホクロの除去って結構長い治療がいるみたいです。

まずは再発の話。

ホクロって丸型になっていて、表面が出っ張っていたら、肌の内側も同じようになっているらしく、あまりにも根が深かったら除去しきれないらしいです。その場合、再発する可能性があるけど、それ以上は削れない(凹んでしまう)ので無理だそうです。

ここまでは、私も事前に調べていたので納得していたのですが、除去後の肌の保護が思っていたよりも面倒でした。

まず、2週間くらいは除去した部分に治療用のシートをはって傷を癒すそうです。まぁ、ホクロを取るってことは怪我と変わらないのだから、ここまでは納得。問題は、傷が癒えてからも暫くの間は保護用のテープを貼って紫外線から守らないといけないのだそうです。

傷が治った肌は弱いので、日の光を当てると変色する恐れがあるんだそうで、赤みが消えるまでの数ヶ月はシールを貼る生活が続くそうです。

・・・数ヶ月かぁ。

■ 写真

削ってシートを貼った写真をペタリ。
ホクロ

傷を乾かしちゃダメっていう最近の治療方法らしく、傷の部分から滲んだ液でポッコリしていて奇妙な感じです。

■ 後書き

顔にあるホクロが狙いだったのですが、ついでに体にあって気になっていたホクロも削ることにしました。1mmで1万くらいなので結構な出費(30万近くなった)になりました。

今年の夏のボーナスは、これの支払いに大半が消えそうですね。まぁ、他に使う用もないので良いんですけどね。

次回:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

「ラピスラズリ」なる歌を買ったのだが・・・

■ ラジオ

朝の通勤中や、車での移動中にラジオを聞くことがあるのですが、その中で「藍井エイル」なる人の「ラピスラズリ」という曲を紹介していました。

基本、音楽の類は良くわからないので、あまり買いません。ごく稀に、耳にして気に入ったら調べて買うって感じなのですが、この「ラピスラズリ」はとても気に入りました。

通勤中(徒歩)だったので、あまり身動きが取れなかったので、とりあえずラジオで出ていたキーワードをiPhoneのメモに書き殴っておきました。

■ 購入

さて、数日後に購入しようと思ってiTunes Storeを起動すると、検索する前に画面上のテロップにそれらしい映像が表示されています。ふむ、もしかして「藍井エイル」さんって有名な方なのかな?

まぁ、何にせよ検索する手間が省けたってものです。そこから辿ると、D’AZURなるアルバムの中にラピスラズリを発見、念のため視聴して、ラジオで聞いた音楽と間違いが無いことを確認して購入。

うん、曲を買うのは久しぶりですが、やっぱりいい感じです(上機嫌)

■ アニメ

曲を買ってからネットで検索して分かったのですが、このラピスラズリって「アルスラーン戦記」ってアニメのエンディングテーマだったんですね。曲調が熱いからもしやと思っていたのですが、これは・・・

まぁ、私はアニメ好きなので聞く分には構わないのですが、これ、カラオケで歌っても大丈夫だろうか?流石に、この歳(中年)の男がアニメソングを熱唱するのは恥ずかしいです。

■ 後書き

後で検索するためにiPhoneに書いていたメモを見ると、「ダジュール」「夜空を舞う青いみかずき」「あおいえる」と書いていました。これ、「あおきみかづき」「あおいえいる」ですね。耳で聞く音のなんといい加減なことか・・・

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

びっくりドンキーのノンアルコールビール

■ ノンアルコールビール

びっくりドンキーというチェーンのハンバーグ屋があるのですが、このお店、何を思っているのかデザート、コーヒー、ビールなどに妙な拘りを持っているようです。

さて、少し前に食事をした時に飲み物を頼もうとしたところ、ドンキーフリーなる変わったノンアルコールビールを発見。これから仕事が待っているのでアルコール飲料はダメですが、ノンアルコールなら良さそうです。ということで、頼んでみました。
びっくりドンキーのノンアルコールビール - 1

喉ごしが良くスッキリしているのですが、これは好みが分かれそう。というのも、フルーティーというんでしょうか。ビールなのに、果実系の甘さを感じます。

こういうのも嫌いじゃないけど、おつまみを選びますね。普通のビールをイメージしていると、ちょっと合わないかもしれません。

■ 後書き

なお、私が頼んだのはコレ(ピザ)です。
びっくりドンキーのノンアルコールビール - 2

ピザとノンアルコールビールは、いい感じで合いました。この記事を書いていて思ったのですが、提供している食事に合うビールを用意したってことなんでしょうね。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

マクドナルドで朝食を食べたのだが・・・

■ 朝マック

朝食は自宅で用意するか、半田屋で食べることが多いのですが、ごく稀に別の手段をとることもあります。

その日は、マクドナルドで食べることにしました。頼んだのはホットケーキだったのですが・・・
朝マック - 1

何なんでしょうかね、この食欲をそそらない感じは。実のところ、ホットケーキの量は朝食であることを考えると十分なんですが、箱が無駄にデカイのでしょぼく見えます。味の方も、別に美味しいって訳でもないしね。

前々から思ってたのですが、どうもマクドナルドで食事をしても心が満たされない。食事はお腹を膨らませるためのものですが、それだけじゃダメだと思います。

■ 後書き

近所にマクドナルドがあるのですが、最近はあまり行かなくなりました。色々と不祥事があったことが影響した・・・ということでもないです。

本文でも書いたのですが、心が満たされないのと、何よりも飽きました。学生時代は美味しく感じたのですが、舌が肥えたということでしょうね。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

手首の腱鞘炎対策を防ぐためのマット

■ 腱鞘炎

腱鞘炎というと、私は漫画家が書きすぎによって腕を痛めるというイメージを持っています。つまり、腕の使いすぎってことなんですが、実際には別の場所でも腱鞘炎は起きるようです。

ということで、指と手首が痛いです(泣)

指については湿布を貼っていますし、すでに負荷の少ないマウス&キーボードを持っているので、これ以上の対策は難しそうですが、手首については策を練る余地があると思っていました。

ってことで、街の電気屋さん(ヨドバシカメラ)をブラついていたら、いいものを見つけました。

■ エルゴノミクスリストレスト

サンワサプライのエルゴノミクスリストレスト(TOK-ERF3BL)です。
手首の腱鞘炎マット - 1

手首の腱鞘炎マット - 2

エルゴノミクス(人間工学)、リスト(手首)、レスト(休憩)。

・・・なんだろうか、こんな訳のわからない横文字を並べなくても、日本語でいい気がする。

まぁ、要するにマウスを持つ腕の手首の下に引くマットってことですね。早速試してみます。
手首の腱鞘炎マット - 3

手首の腱鞘炎マット - 4

手首の腱鞘炎マット - 5

見ての通り、左側が高くなった独特のスタイルです。人間工学によると、こうやって斜めにした方が良いってことなんでしょうね。

マットは確かにプニプニしていて手首の負荷が減っています。これなら、手首の痛みも徐々におさまりそうです。

欠点をいうのなら、特に固定されたりテーブルに引っ付いたりしないので、ちょっとした弾みで吹っ飛んでいくってことでしょうか。大きさ、ちょうど手首が乗るくらいの小さめのサイズなので、ちょっと使いにくい気もします。

ま、これ以上大きかったら、今度は場所をとって邪魔になるってことですけどね。

■ 後書き

この記事を書いていて気がついたのですが、マットの置く場所が間違ってますね、何というか、本当に手首の部分に置くのが正解みたいです(製品裏面の写真より)。

・・・どうりで、やたらと吹っ飛んでいく気がしてたんですよ。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

すすきの天然温泉「湯香郷」に行ってきました

■ とうかきょう

湯香郷(とうかきょう)とは、すすきのにあるジャスマックプラザってホテルのお風呂のこと。ホテルに宿泊しているお客様はもちろん、日帰り入浴としても使えるようです。

どんなものなのか気になったので、行ってみました。
湯香郷 - 1

湯香郷 - 2

場所がすすきのなので、車で行くならちょっと混み合うのですが、豊平川沿いの道を駆け抜けると案外楽にたどり着きました。

ホテルの正面(横手?)に立体駐車場があるので、そこに止めれば良いらしいです。駐車場から一番近い入口から入ったのですが、どこに行けばいいのかわからず、フロントに聞いたのですが、どうやら2階に受付があるそうです。

■ 受付

エレベーターで2階に向かいます。さて、エレベーターから降りて左手に入口があるのですが、靴置場があって、そこに靴を置くように書いています。

しかし、これは宿泊客向けのもので、私のような日帰り入力の場合は靴を持って上がって、鍵付きの靴置場まで行かなければなりません。

前に別のホテルのお風呂を使ったことがあるのですが、そこでも似た感じでした。ホテルのお風呂って大体はこんな感じになるみたいですね。

受付で入湯料(なのかな?)を払ってロッカーの鍵をもらい、靴箱の鍵を預けます。ここは良くある流れですね。

ちょっと変わってると思ったのは、受付では鍵以外に何もくれないところ。ここでタオルや館内着を出してくれると思ったのですが・・・

■ お風呂

お風呂な3階らしいので、階段を登ります。
湯香郷 - 3

湯香郷 - 4

お風呂に入ったところで、ホテルの人がタオルと館内着を渡してくれました。

さて、もらったものを見ると、今度はバスタオルが見当たりません。やや戸惑いながら、ロッカーに荷物をしまって裸タオルで銭湯の入り口に向かいます。すると、銭湯の入り口にバスタオルが積んでありました。

泊まり客のことを考えると、確かにここで渡す方が効率はいい気がしますね。

お風呂は、宣伝するだけあってかなり綺麗です。全体的に黒っぽい石で作り上げられていて、大きな内風呂の他、サウナに小さめのお風呂、もちろん露天風呂もあります。露天風呂は、上が吹き抜けになっていて空が見えて開放感が満点。なかなかのもの。

ちょっと変わっているのが、塩サウナなるものですか。普通よりちょっと温度が低めのサウナなのですが、塩が置いてあります。この塩を体中に塗ったくるらしいのですが、全身がピリピリして、なんだか面白かったです。

■ 食事と休憩

お風呂をじっくり楽しんだら、今度は食事です。食事&休憩スペースは4階にあるそうなので、また階段を上がります。
湯香郷 - 5

食事ができる場所は、かなり広いスペースを取っていて、基本的には床に座って食べるようです。注文は従業員を声&身振りで呼ぶタイプで、清算は受付に貰った鍵に書いてあるロッカー番号を伝える後清算タイプ。食事は和食と中華がメインって感じで十分な内容です。

食事をとったら、今度は休憩。専門のリラックススペースなるところがあって、柔らかいリクライニングチェアに腰をかけてボンヤリと過ごします。ここの椅子は中々の出来で、これまで通ってきたホテル&温泉施設の中でも上位のものでした。

このリラックススペースでも飲み物とデザートは頼めるみたいで、常に従業員が数名残っています。私が椅子に座ったら、隣に水を置いてくれました。この辺りは、流石にホテルですね。ビックリしました。

■ 補足

ここで、館内着の紹介。ホテルだけあって、浴衣タイプみたいですね。ここ最近はズボンタイプのが多かったので、ちょっと違和感を感じました。
湯香郷 - 6

ついでに、トイレです。
湯香郷 - 7

湯香郷 - 8

湯香郷 - 9

湯香郷 - 10

驚いたことに、和式便器の方が数が多かった。意外ですね。

■ 後書き

実のところ、価格は高めなので、温泉と料理、リラックススペースというハード面だけを見ると、ちょっと高いです。しかし、そこを補うのがソフト面。リラックススペースで水を出してくれたように、随所に細やかな気配りを感じます。

例えば、温泉を出て食事を取りに行こうとしたら、タオルを渡そうとしてくれました。何事かと思って戸惑っていたら、汗拭きとのこと。十分に体は冷えていたので辞退したのですが、たいしたものです。

こんな感じで概ねよかったのですが、一つだけ、そして大きな問題がありました。

その問題とはタバコ。まず、食事処が喫煙可なので、食事を楽しんでいるところにタバコの煙と臭いが漂ってきます。

辛くなって、そこを脱出してリラックススペースに向かいました。こちらは喫煙可と禁煙に分かれてはいますが、ただ場所を分けただけです。

喫煙可の場所に扉がなく開けっ放しなので、その臭いが禁煙スペースの方に漂ってきています。慣れた人には気にならない程度でしょうが、タバコが嫌な人には辛いです。

実は、こんなプランもあるようです。タバコが嫌いな人は、個室を使えってことなんですかね。
湯香郷 - 11

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

NetCOBOLで複数のDBに接続したい! No8 動的SQL

■ 動的SQL

一通り書ききったと思ったのですが、動的SQLについての記載がありませんでした。

まぁ、普通のSQL文の発行(NetCOBOLで複数のDBに接続したい! No3 SELECT文)と変わらないと思いますけど、やってみましょうかね。

■ 動的SQL

下記が、動的SELECT文を発行するサンプルです。

       IDENTIFICATION                   DIVISION.
PROGRAM-ID. DBTEST00.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
*
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 H-USERNAME PIC X(008).
01 H-PASSWD PIC X(008).
01 H-DBSTRING PIC X(003).
01 H-DBNAME PIC X(010).
*
01 H-SQL PIC X(200).
01 H-ITEM-NAME PIC X(050).
*
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
*
PROCEDURE DIVISION.
*
* Oracle接続文字列の設定

MOVE "user01" TO H-USERNAME.
MOVE "oracle" TO H-PASSWD.
MOVE "db1" TO H-DBSTRING.
MOVE "setu1" TO H-DBNAME.
*
* Oracle接続(DWH)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
AT :H-DBNAME
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* SQL文作成

STRING
'SELECT RTRIM("商品名")' DELIMITED BY SIZE
' FROM "TEST商品" A' DELIMITED BY SIZE
' WHERE "商品CD"' DELIMITED BY SIZE
' =' DELIMITED BY SIZE
" '087290'" DELIMITED BY SIZE
INTO H-SQL
END-STRING.
*
* 動的SQL文を用意

EXEC SQL
AT :H-DBNAME
PREPARE STCU1 FROM :H-SQL
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* カーソルオープン

EXEC SQL
AT :H-DBNAME
OPEN CU1
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* フェッチ

EXEC SQL
AT :H-DBNAME
FETCH CU1
INTO :H-ITEM-NAME
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* カーソルクローズ

EXEC SQL
AT :H-DBNAME
CLOSE CU1
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* 抽出結果を表示

DISPLAY H-ITEM-NAME.
EXIT PROGRAM.


見て分かる通り、動的カーソルの用意から最後のクローズまで、全ての処理でAT句を指定しています。

埋込みSQLの時はOPEN、FETCH、CLOSEはAT句を指定しなくても良かったんですが、動的SQLの場合は無いとダメみたいです。

なお、AT句を指定しないと「SQL-02122: データベースへ接続でのOPENまたはPREPAREが無効です。」とエラーが発生しました。

■ 後書き

「NetCOBOLで複数のDBに接続したい!」シリーズは今回で終了です。

今となっては、COBOLで新規開発なんて少ないでしょうし、古いシステムの保守くらいの用途しかないのではないかと思いますが、言い方を変えれば、保守できる人が少なくなっているとも言えるかと思います。

この記事が、周りに頼りになるベテランが居なく、古いシステムの保守を任されて四苦八苦している方の役に立つことを願っています。

シリーズ一覧

NetCOBOLで複数のDBに接続したい! No1 始めに

NetCOBOLで複数のDBに接続したい! No2 接続

NetCOBOLで複数のDBに接続したい! No3 SELECT文

NetCOBOLで複数のDBに接続したい! No4 DML文

NetCOBOLで複数のDBに接続したい! No5 接続(複数)

NetCOBOLで複数のDBに接続したい! No6 トランザクション

NetCOBOLで複数のDBに接続したい! No7 同一DB複数接続

NetCOBOLで複数のDBに接続したい! No8 動的SQL


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

NetCOBOLで複数のDBに接続したい! No7 同一DB複数接続

■ 同一DB複数接続

ふと気になったのですが、同じデータベースに複数回接続したらどうなるんでしょうか?ちょっと実験してみましょうか。

基本的には前回までと同じソースを使用、接続先を分けた上で、それぞれからINSERT文を発行し、片方をロールバック、もう片方をコミットします。

       IDENTIFICATION                   DIVISION.
PROGRAM-ID. DBTEST00.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
*
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 H-USERNAME PIC X(010).
01 H-PASSWD PIC X(010).
01 H-DBSTRING PIC X(010).
01 H-DBNAME PIC X(010).
*
01 H-DBNAME2 PIC X(010).
*
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
*
PROCEDURE DIVISION.
*
* Oracle接続文字列の設定(DWH1)

MOVE "user01" TO H-USERNAME.
MOVE "oracle" TO H-PASSWD.
MOVE "db1" TO H-DBSTRING.
MOVE "setu1" TO H-DBNAME.
*
* Oracle接続(DWH1)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
AT :H-DBNAME
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* Oracle接続文字列の設定(DWH2)

MOVE "setu2" TO H-DBNAME2.
*
* Oracle接続(DWH2)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
AT :H-DBNAME2
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* INSERT文(DWH)

EXEC SQL
AT :H-DBNAME
INSERT
INTO TEST商品
(商品CD,商品名)
VALUES ('AAAAA1','テスト')
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* INSERT文(DWH2)

EXEC SQL
AT :H-DBNAME2
INSERT
INTO TEST商品
(商品CD,商品名)
VALUES ('AAAAA2','テスト')
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* ロールバック(DWH1)

EXEC SQL
AT :H-DBNAME
ROLLBACK WORK RELEASE
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* コミット(DWH2)

EXEC SQL
AT :H-DBNAME2
COMMIT
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
EXIT PROGRAM.


意図していたのは、「片方のINSERT文の実行結果だけが反映される」だったんですけが、見事に期待に応えてくれました。

これは使えそうですね。

■ 後書き

正常系だけを考えれば、1つのデータベースに接続して片方の実行結果だけ反映(コミット)させたいなんてことは無いと思います。しかし、異常系まで考えればそうでもありません。

何らかのエラーで処理が異常終了した時に、エラー内容をログに吐き出すのですが、ログ、つまりテキストベースの情報だけでは原因調査が難しい場合があります。このような場合、実際にエラーが発生した個所はロールバックされているので原因調査に時間を要することが多いです。

今回の方法を使えば、異常発生時に別のトランザクションを開始してエラー情報を吐くことも可能かもしれません。

・・・実装は大変ですけどね。

前回:NetCOBOLで複数のDBに接続したい! No6 トランザクション
次回:NetCOBOLで複数のDBに接続したい! No8 動的SQL

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

NetCOBOLで複数のDBに接続したい! No6 トランザクション

■ トランザクション

このシリーズを書き始めた時からずっと気になっていたのは、トランザクションの動作です。

片方のデータベースから参照して、もう片方のデータベースに登録(更新)する場合、参照側のデータベースはコミットする必要がありません。

そういうこと、ちゃんと出来るんでしょうか?

■ 指定なし

接続した2つのデータベース(テーブル)に1件ずつデータを登録(INSERT)して、コミットしてみます。

コミット文は「EXEC SQL COMMIT END-EXEC.」として、接続先を指定しないで実行してみます。

       IDENTIFICATION                   DIVISION.
PROGRAM-ID. DBTEST00.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
*
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 H-USERNAME PIC X(010).
01 H-PASSWD PIC X(010).
01 H-DBSTRING PIC X(010).
01 H-DBNAME PIC X(010).
*
01 H-USERNAME2 PIC X(010).
01 H-PASSWD2 PIC X(010).
01 H-DBSTRING2 PIC X(010).
01 H-DBNAME2 PIC X(010).
*
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
*
PROCEDURE DIVISION.
*
* Oracle接続文字列の設定(DWH)

MOVE "user01" TO H-USERNAME.
MOVE "oracle" TO H-PASSWD.
MOVE "db1" TO H-DBSTRING.
MOVE "setu1" TO H-DBNAME.
*
* Oracle接続(DWH)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
AT :H-DBNAME
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* Oracle接続文字列の設定(基幹)

MOVE "user02" TO H-USERNAME2.
MOVE "oracle" TO H-PASSWD2.
MOVE "db2" TO H-DBSTRING2.
MOVE "setu2" TO H-DBNAME2.
*
* Oracle接続(基幹)

EXEC SQL
CONNECT :H-USERNAME2 IDENTIFIED BY :H-PASSWD2
AT :H-DBNAME2
USING :H-DBSTRING2
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* INSERT文(DWH)

EXEC SQL
AT :H-DBNAME
INSERT
INTO TEST商品
(商品CD,商品名)
VALUES ('AAAAAA','テスト')
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* INSERT文(基幹)

EXEC SQL
AT :H-DBNAME2
INSERT
INTO TESTFAX
(FAXKEY)
VALUES ('AAAAAA')
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* コミット

EXEC SQL
COMMIT
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
EXIT PROGRAM.


結果、コミットでログインエラーが発生しました。
SQLCODE = -000001012 [ORA-01012: ログオンされていません。         ]


これまでの記事の内容から、AT句が必要だとは思ってたんですが、予想通りだったみたいですね。

■ AT句(片方)

今度は、AT句を付けてみます。DWH側はロールバック、基幹側はコミットします。サンプルコードを全部書くと長いので、コミットの部分だけ差替えて読んでください。
      *
* ロールバック(DWH)

EXEC SQL
AT :H-DBNAME
ROLLBACK WORK RELEASE
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* コミット (基幹)

EXEC SQL
AT :H-DBNAME2
COMMIT
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".


結果、基幹側(コミットを発行した方)のINSERT文だけ更新されました。

■ 後書き

ここまでの実験で、1本のプログラムで複数のデータベースに接続して色々出来ることが検証できました。

次回、同じデータベースに複数接続してみます。

前回:NetCOBOLで複数のDBに接続したい! No5 接続(複数)
次回:NetCOBOLで複数のDBに接続したい! No7 同一DB複数接続

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

NetCOBOLで複数のDBに接続したい! No5 接続(複数)

■ 接続

前回までの記事で、複数のデータベースに接続するための方法論の確認までは出来ました。ですが、これまでのサンプルでは実際には1つのデータベースにしか接続していません。

という事で、今回は2つのデータベースに接続します。

IDENTIFICATION                   DIVISION.
PROGRAM-ID. DBTEST00.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
*
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 H-USERNAME PIC X(010).
01 H-PASSWD PIC X(010).
01 H-DBSTRING PIC X(010).
01 H-DBNAME PIC X(010).
*
01 H-USERNAME2 PIC X(010).
01 H-PASSWD2 PIC X(010).
01 H-DBSTRING2 PIC X(010).
01 H-DBNAME2 PIC X(010).
*
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
*
PROCEDURE DIVISION.
*
* Oracle接続文字列の設定(DWH)

MOVE "user01" TO H-USERNAME.
MOVE "oracle" TO H-PASSWD.
MOVE "db1" TO H-DBSTRING.
MOVE "setu1" TO H-DBNAME.
*
* Oracle接続(DWH)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
AT :H-DBNAME
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* Oracle接続文字列の設定(基幹)

MOVE "user02" TO H-USERNAME2.
MOVE "oracle" TO H-PASSWD2.
MOVE "db2" TO H-DBSTRING2.
MOVE "setu2" TO H-DBNAME2.
*
* Oracle接続(基幹)

EXEC SQL
CONNECT :H-USERNAME2 IDENTIFIED BY :H-PASSWD2
AT :H-DBNAME2
USING :H-DBSTRING2
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
EXIT PROGRAM.


■ 後書き

特に難しいことも無く、接続するための変数とか処理を増やしただけで上手く動きました。ここまでは順調ですね。

さて、次回はトランザクションについて動作を確認したいと思います。

前回:NetCOBOLで複数のDBに接続したい! No4 DML文
次回:NetCOBOLで複数のDBに接続したい! No6 トランザクション

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

NetCOBOLで複数のDBに接続したい! No4 DML文

■ DML文

今回は複数のデータベースに接続して、DML文を発行してみます。

1つのデータを、INSERT文で追加、UPDATE文で更新、DELETE文で削除します。処理的には動きますが、結果的には何も変わらない処理です。コミットしていないので、どちらにしても反映しませんけどね。

複数データベースに接続するとコード量が多くなるので、サンプルで接続するのは1つのデータベースにしています。

IDENTIFICATION                   DIVISION.
PROGRAM-ID. DBTEST00.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
*
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 H-USERNAME PIC X(008).
01 H-PASSWD PIC X(008).
01 H-DBSTRING PIC X(003).
01 H-DBNAME PIC X(010).
*
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
*
PROCEDURE DIVISION.
*
* Oracle接続文字列の設定

MOVE "user01" TO H-USERNAME.
MOVE "oracle" TO H-PASSWD.
MOVE "db1" TO H-DBSTRING.
MOVE "setu1" TO H-DBNAME.
*
* Oracle接続(DWH)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
AT :H-DBNAME
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* INSERT文

EXEC SQL
AT :H-DBNAME
INSERT
INTO HST商品
(
商品CD
,商品名
)
VALUES (
'AAAAAA'
,'テスト'
)
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* UPDATE文

EXEC SQL
AT :H-DBNAME
UPDATE HST商品
SET 商品名 = '変更!'
WHERE 商品CD = 'AAAAAA'
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* DELETE文

EXEC SQL
AT :H-DBNAME
DELETE HST商品
WHERE 商品CD = 'AAAAAA'
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
EXIT PROGRAM.


やることは前回までと同じで、EXEC SQL に続けて AT句 を書くだけです。

■ 後書き

なお、コミットを発行しなかった場合は自動的にロールバックが実行されます。なので書かなくても動きますが、作法として良くないので書いた方が良いと思います。

ただ、トランザクションの話は後の記事で書くので、ここまでのサンプルソースでは敢えて書いていません。

次回は、いよいよ複数のデータベースに接続してみます。

前回:NetCOBOLで複数のDBに接続したい! No3 SELECT文
次回:NetCOBOLで複数のDBに接続したい! No5 接続(複数)

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

NetCOBOLで複数のDBに接続したい! No3 SELECT文

■ 暗黙カーソル

前回(NetCOBOLで複数のDBに接続したい! No2 接続)はデータベースに接続する所まで書きました。今度は、実際にSQLを発行してみます。

最初に、1件検索(暗黙カーソルを使用したOPEN、FETCH、CLOSEまで一気に行う検索)の場合の記述方法です。

IDENTIFICATION                   DIVISION.
PROGRAM-ID. DBTEST00.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
*
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 H-USERNAME PIC X(008).
01 H-PASSWD PIC X(008).
01 H-DBSTRING PIC X(003).
01 H-DBNAME PIC X(010).
*
* 商品名

01 H-ITEM-NAME PIC X(044).
*
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
*
PROCEDURE DIVISION.
*
* Oracle接続文字列の設定

MOVE "user01" TO H-USERNAME.
MOVE "oracle" TO H-PASSWD.
MOVE "db1" TO H-DBSTRING.
MOVE "setu1" TO H-DBNAME.
*
* Oracle接続(DWH)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
AT :H-DBNAME
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* SELECT文

EXEC SQL
AT :H-DBNAME
SELECT RTRIM("商品名")
INTO :H-ITEM-NAME
FROM "HST商品" A
WHERE "商品CD" = '087290'
END-EXEC.
*
* 抽出結果を表示

DISPLAY H-ITEM-NAME.
EXIT PROGRAM.


EXEC SQLの後にAT句で接続したデータベースを指定します。

■ 明示カーソル

今度は明示カーソルでOPEN、FETCH、CLOSEを実行します。
IDENTIFICATION                   DIVISION.
PROGRAM-ID. DBTEST00.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
*
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 H-USERNAME PIC X(008).
01 H-PASSWD PIC X(008).
01 H-DBSTRING PIC X(003).
01 H-DBNAME PIC X(010).
*
* 商品名

01 H-ITEM-NAME PIC X(044).
*
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
*
PROCEDURE DIVISION.
*
* Oracle接続文字列の設定

MOVE "user01" TO H-USERNAME.
MOVE "oracle" TO H-PASSWD.
MOVE "db1" TO H-DBSTRING.
MOVE "setu1" TO H-DBNAME.
*
* Oracle接続(DWH)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
AT :H-DBNAME
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
*
* SELECT文

EXEC SQL
AT :H-DBNAME DECLARE CU1 CURSOR FOR
SELECT RTRIM("商品名")
FROM "HST商品" A
WHERE "商品CD" = '087290'
END-EXEC.
*
* カーソルオープン

EXEC SQL
OPEN CU1
END-EXEC.
*
* フェッチ

EXEC SQL
FETCH CU1
INTO :H-ITEM-NAME
END-EXEC.
*
カーソルクローズ

EXEC SQL
CLOSE CU1
END-EXEC.
*
* 抽出結果を表示

DISPLAY H-ITEM-NAME.
EXIT PROGRAM.


明示カーソルの場合、AT句は最初のSELECT文を発行する箇所だけで良いようです。それに続くOPEN、FETCH、CLOSEは、指定しているカーソル名で用は足りるって事なんでしょうね。

■ 後書き

次回は、DML文(INSERT、UPDATE、DELETE)を発行してみます。

前回:NetCOBOLで複数のDBに接続したい! No2 接続
次回:NetCOBOLで複数のDBに接続したい! No4 DML文

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

NetCOBOLで複数のDBに接続したい! No2 接続

■ 普通の接続

前回(NetCOBOLで複数のDBに接続したい! No1 始めに
)書いた通り、複数のデータベースに接続したいのです。

とりあえず、普通の接続処理を書いてみます。最小限のソースに抑えたかったので、色々と端折ってます。

IDENTIFICATION                   DIVISION.
PROGRAM-ID. DBTEST00.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
*
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 H-USERNAME PIC X(008).
01 H-PASSWD PIC X(008).
01 H-DBSTRING PIC X(003).
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
*
PROCEDURE DIVISION.
*
* Oracle接続文字列の設定

MOVE "user01" TO H-USERNAME.
MOVE "oracle" TO H-PASSWD.
MOVE "db1" TO H-DBSTRING.
*
* Oracle接続(DWH)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
EXIT PROGRAM.


■ 複数接続用の情報追記(ホスト変数)

複数のデータベースに接続するという事は、処理の中でデータベースにアクセスする時に、「どちらのデータベースに対して処理を実行するのか」という事を指定する必要があると思います。

色々と調べてみると、その考えで間違えていなかったようで、CONNECT文を発行する時にAT句を指定すれば良いらしいです。

上記のソースに、複数接続に必要な情報を追記します。
IDENTIFICATION                   DIVISION.
PROGRAM-ID. DBTEST00.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
*
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 H-USERNAME PIC X(008).
01 H-PASSWD PIC X(008).
01 H-DBSTRING PIC X(003).
01 H-DBNAME PIC X(010).
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
*
PROCEDURE DIVISION.
*
* Oracle接続文字列の設定

MOVE "user01" TO H-USERNAME.
MOVE "oracle" TO H-PASSWD.
MOVE "db1" TO H-DBSTRING.
MOVE "setu1" TO H-DBNAME.
*
* Oracle接続(DWH)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
AT :H-DBNAME
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
EXIT PROGRAM.


■ 複数接続用の情報追記(直接指定)

上記ではホスト変数を使用しましたが、直接指定することも出来るようです。
IDENTIFICATION                   DIVISION.
PROGRAM-ID. DBTEST00.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
*
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 H-USERNAME PIC X(008).
01 H-PASSWD PIC X(008).
01 H-DBSTRING PIC X(003).
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
*
PROCEDURE DIVISION.
*
* Oracle接続文字列の設定

MOVE "user01" TO H-USERNAME.
MOVE "oracle" TO H-PASSWD.
MOVE "db1" TO H-DBSTRING.
*
* データベース名の指定

EXEC SQL DECLARE setu1 DATABASE END-EXEC.
*
* Oracle接続(DWH)

EXEC SQL
CONNECT :H-USERNAME IDENTIFIED BY :H-PASSWD
AT setu1
USING :H-DBSTRING
END-EXEC.
*
* SQLCODEとメッセージを出力(エラー確認用)

DISPLAY "SQLCODE = "SQLCODE " [" SQLERRMC "]".
EXIT PROGRAM.


変数宣言も不要だし、こっちの方がスマートな気もするのですが、ホスト変数の方が無難な気がします。

例えば、接続処理をソースコードの最後に書くように作ったとします。
PROCEDURE                        DIVISION.
INIT-RTN SECTION.
*
* DB接続

PERFORM ORA-CONECT-SEC.
*
* SQL発行





*
EXIT PROGRAM.
INIT-EXT.
EXIT.
*
*DB接続ルーチン
ORA-CONECT-SEC SECTION.




ORA-CONECT-EXIT.
EXIT.


このような書き方の場合、プリコンパイルが通りません(正確には、SQLを発行する箇所でエラーになる)。これは、プリコンパイラはロジックを見ないという特性により発生すると思います。

後の記事で書いていきますが、SQLを発行する時にデータベース名(サンプルではsetu1)を指定することになります。単純にソースを上から下に眺めた場合、初めてsetu1が発生するのはCONNECT文の発行箇所ではなく、それより上の部分になります。

よって、プリコンパイラが通りません。

■ 後書き

何にせよ、AT句で制御するところまでは理解出来ました。ここから実際にSQLを発行してみたいと思います。

前回:NetCOBOLで複数のDBに接続したい! No1 始めに
次回:NetCOBOLで複数のDBに接続したい! No3 SELECT文

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

NetCOBOLで複数のDBに接続したい! No1 始めに

■ DWH

基幹システムのデータをDWHとして蓄積しています。そして、基幹システムとDWHのデータベースは両方ともOracleで、基幹システムのOSはUNIX、DWHはWindowsになっています。

DWHの更新は、基幹システムから必要なデータを抽出してテキストデータ(CSVファイル)に出力し、それをFTPでDWHサーバに転送。そのテキストデータを読み込んでDWH側のデータベースを更新するという方法を取っています。

■ 問題

この方法は考え方が簡単で、作りやすくはあるのですが問題があります。

抽出した項目内にカンマが含まれていた時にCSVファイルのレイアウトが崩れるというのが良くあることですし、ちょっと複雑な更新処理を実行させようとした時に、テキストデータのやり取りだけでは限界があったりします。

他にも、テキストデータの作成、転送、読込による時間的なロスも無視できないし、ディスク容量も確保しないといけない、転送処理の正常終了チェックとかも必要だし・・・

って感じで、実際には作りが複雑になるし、色々な制約も発生するので気に入らなかったのです。

■ 対応

DWHの更新処理はNetCOBOLで実行しています。処理の内容は、転送されたテキストデータを読み込んで、DWH(データベース)に追加&更新を実行するだけです。

前々から思っていたのですが、この処理の「テキストデータの読み込み」の部分を、「基幹システムからデータを抽出」に変えられないでしょうか?

1本のプログラムから、複数のデータベースに接続する。これが出来ればテキストデータを介した面倒な処理をしないでも済むかも知れません。

■ 後書き

余談ですが、単純なデータ登録の場合はSQL*Loderで実行しています。この処理でも上述の手順で処理を実行しているのですが、これも無駄ですね。

具体的には「基幹システムでテキストデータを作成」と「DWHサーバにテキストデータを転送する」が無駄です。最初から「DWHで基幹システムからデータを抽出する」とすれば、色々と無駄が省けそうですね。

次回:NetCOBOLで複数のDBに接続したい! No2 接続

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

新人襲来6 ロジック

■ データ集計

同僚と組んで仕事をしていたのですが、何やら妙に残業をしています。彼が担当しているのは、あるデータを特定のキーで集計して、合計を出力するというありふれたプログラムです。

正直、私なら3日もあれば余裕を持って終わります。別に自慢でもなんでもなく、まともなプログラマーなら簡単に作ってしまうレベルではないでしょうか?

気にはなっていたのですが、私も残業続きで対応する余裕がなく、横目に見てるだけでした。ですが、納期が迫っているのに、いつまでたっても終わったと言わないし、黙り込んだまま残業を続けています。こちらから聞いても「ほとんど出来てる」と繰り返すばかり。

業を煮やして、作成中のプログラムを見せてもらったのですが、筆舌に尽くしがたい奇妙なロジックになっています。

データ集計のプログラムなんて、ロジックは決まりきっています。

1.集計するキーを表す前回キーと、集計用のワークエリアを準備
2.集計対象のデータを集計するキーでソート
3.1件目のキーを1で用意した前回キーに退避
4.データを順に読むこむループを開始
5.データを1件読み込む
6.読み込んだデータのキーを作成し、前回キーと比較
7.不一致であれば、出力エリアに集計結果を出力し、集計用エリアをクリア
8.読み込んだデータの数値を集計用エリアに加算(キーの一致、不一致に関わらず行う)
9.次のデータを読み込み、データがあればループの上端(3)に戻る
10.データがなければループを抜け、集計用エリアの値を出力エリアに出力する


かなり適当に書いたので、どっか抜けているような気がします。けど、大きな流れはこんなところでしょう。

基本中の基本中だと思うのですが、何を思ったのかデータ読み込みのループの中でさらにループをかけたり、妙なカウンタを大量に生成してたり、もう、何が何やら分かりません。

・・ ・いや、一年生じゃないんだからさぁ。

■ ロジック教育

仕事を取り上げても良かったのですが、やむなく指導することにしました。彼と、ついでに新人を呼びつけて上で書いた集計ロジックの基本をフローを書きながら指導しました。

問題の彼は死んだ魚のような目をしていたし、新人君は分かってるんだか分かってないんだか良く分からない顔してるし、今ひとつ成果は怪しかったのですが、まぁ、新人君には近いうちに自分で経験してもらうことにしましょう。

さて、問題はもう一人。実は、納期が翌日に迫っているのに動いていないという状況(前日の夜にプログラムを見て発覚した)だったので、私が後ろについて直接指導しながら仕上げました。

いい方法じゃない(彼のプライド的な問題で)のは分かってましたが、十分以上の時間があったのに仕上げられず、それを報告もしなかった彼にも責任はあると思ったので、納期の方を優先しました。

■ 余談

ところで、今回の最大の問題はロジックを書けなかったという能力不足ではなく、それを納期ギリギリまで放置した無責任な仕事のしかたです。

もっと早く報告していれば別の手も打てたってのに、もう、何やってんだか。手が回ってなかったとは言っても、ちゃんと声も掛けていたのに・・・

後で話を聞いたら、どうやらテストをきちんとしてなかったらしく、何となく動いたから良いやと思ってたそうです。プログラムを書くにの3日かかったなら、テストにも同じくらいの時間をかけないとダメだと話したのですが、これ、実は前にも言ってるんですよね。

あぁ、きちんと教育しないと、こんなのになっちゃうんですね。新人君には、この辺りの基本を叩き込まないとダメですね。

■ 後書き

記事で書いた集計ロジックですが、実際には実現する方法は幾らでもあると思います。私が書いたのは古典的な方法ですね。

ただ、こういう基本的なロジックはきちんと教育すべきだと思います。昔は、この類の基本的なロジックを解説した教材が沢山あったと思うのですが、最近は、その機能を実現するクラスの使い方という感じで、直接目的を果たす方法論に傾いている気がします。

・・・気のせいかなぁ。

前回:新人襲来5 マナー
次回:新人襲来7 説教

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

会社で出来たワイシャツのシミ対策

■ シミ

不器用というか、おっちょこちょいというか、飲食の時にワイシャツにこぼしてしまうことがあります。冬であれば上に羽織れば良いのですが、夏だと暑くて無理があります。

これまでは、ティッシュペーパーにお湯と食器用洗剤を染み込ませて染み抜きをしていたのですが、色々と限界を感じていました。

そして、先日もやってしまいました。
会社で出来たワイシャツのシミ対策 - 1

しかし、この時のために準備していた小道具があるのです。
会社で出来たワイシャツのシミ対策 - 2

個別包装になったシミ取りシートです。M’s one(エムズワン)ってのがちょっとだけ引っかかりますが、まさに私が欲しかったものです。

中身は、液体を染み込ませた布。というか、顔ふきとか体拭きとかで売っている何たらシートみたいな感じです。これで、シミに液体を染み込ませるようにしながらポンポンするようです。

うん、こういうのが欲しかったんですよ。

■ 後書き

自信満々に汚れが取れた結果を見せたかったのですが、実は綺麗には取りきれませんでした。かなら広範囲にコーヒーをブチまけてしまって、そのシミの端っこの部分が最後まで綺麗にならなかったのです。

まぁ、今回はシミの規模が大きすぎたのが敗因でしたね。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

業務改善に挑戦No.6 停滞

■ 会議

これまで考えていた大きな流れを部署のメンバーに説明したのですが、なかなか難航しました。

想定していたのは、最初は曖昧な形で初めて、問題点を洗い出しながら整えていくという形てす。これは何度も説明していたし、話していた事なのですが、細かいところに拘って話が進みません。

まぁ、ある程度の予想はしていたのですが、視野が狭いというか、なんというか・・・

だからこそ、業務改善を始める事になったんですけどね。

■ 業務過多

難航した会議をなんとかまとめて、始める準備が整い始めたのですが、具体的な動きを始める前に止まってしまいました。

この業務改善ですが、正式な業務として始まったものではないので時間が取りにくい。通常業務の隙をついて準備を進めていたのですが、とうとう時間を割く余裕がなくなりました。

そんなわけで、現在停滞中です。

■ 後書き

3週間くらい吹っ飛んだのですが、もう少ししたら時間を取れるようになると思います。

元々、この事態は想定通り。完全に軌道に乗せるのに私は10年を掛けるつもりなので、この程度は想定通りです。

前回:業務改善に挑戦No.5 ITILシラバスの購入
次回:業務改善に挑戦No.7 業務分担のコントロール

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

Windows7でtelnetって使えないの?

■ telnet

UNIX系のサーバへのアクセスにtelnetを使っているのですが、普段はTeraTermを使って接続しています。

そのせいで気づかなかったのですが、Windows7になってからコマンドプロンプトでtelnetが使えません。
Windows7とtelnet (1)

'telnet' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。


ありゃ?WindowsXPまでは使えたんですけど、廃止されたのかな?

■ 機能追加

少し調べてみると、標準で使えなくしただけで、機能自体は残っているらしいです。

まず、コントロールパネルを起動します。
Windows7とtelnet (2)

「プログラム」をクリック。

Windows7とtelnet (3)

Windowsの機能の有効化または無効可」をクリック。

Windows7とtelnet (4)

「Telnetクライアント」のチェックをオンにして「OK」をクリック。

Windows7とtelnet (5)

Windows7とtelnet (6)

■ 実行

さて、この状態でコマンドプロンプトを起動して、実行してみます。
Windows7とtelnet (7)

Windows7とtelnet (8)

無事、telnetが起動しました。

ふむ、ここ数年は、sshでの接続が増えて来たので、セキュリティに問題のあるTelnetは廃止の方向で進んでいるって事でしょうかね。

■ 後書き

ここまでやってなんですが、基本的には使いません。最初に書いた通り、普段はTeraTermを使ってるので使う用がないのです。

今回、コマンドプロンプトから実行したのは、その方が少しだけ手早く作業できる状況だったからです。1回だけの接続の場合、コマンドプロンプトを起動して「telnet IPアドレス」ってやった方が早いですからね。

・・・結果として、無駄に手間取っただけですけどね。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

モエレ天然温泉「たまゆらの杜」で半日ゆっくり

■ たまゆらの杜

モエレ沼公園の近くに、「たまゆらの杜」という温泉施設があるそうです。ちょうど疲れ気味だったので、温泉でゆっくりしたいところです。

ということで、行ってみました。
たまゆらの杜 - 1

たまゆらの杜 - 2

たまゆらの杜 - 3

■ 受付

まず、靴を靴箱に入れて鍵を掛けます。そして券売機で券を購入してカウンターに靴鍵と一緒に渡して、ロッカーの鍵とタオルを受け取ります。

基本的には良くある方式ですが、券売機はちょっと意外な感じ。私がこれまでに行った施設では、直接カウンターに行くパターンが多かったんですけどね。

さて、この手の施設は、入館料で1500円〜3000円くらいの幅で取ってくるものですが、ここは1000円くらいなので、随分と安いです。

これでタオルが付いてくるのですが、なぜか館内着が別料金(100円)です。周りのお客さんを見ると、良くあるスーパー銭湯用具(カゴ、シャンプーなど)を持ち込んでいるので、スーパー銭湯に近い利用方法を想定してるのかもしれません。

券売機に付いても、そういうことなのかもしれないですね。

■ 施設

内部は、かなり綺麗です。トイレもこんな感じで綺麗。しかも、あちこちに沢山あります。頻尿の私には嬉しいです。
たまゆらの杜 - 4

そして、これが館内着です。
たまゆらの杜 - 5

お風呂は、温泉、露天(檜風呂と岩風呂)の他に、薬湯風呂もあって、かなりの充実ぶりで良い感じです。

■ 食事1

この施設、食事が出来るところが大きく2箇所あります。

1つが四季という名前の食堂で、そば、寿司といった普通の食事ができます。
たまゆらの杜 - 7

とりあえず、ノンアルコールビールと枝豆、刺身の盛り合わせを頼みました。
たまゆらの杜 - 6

たまゆらの杜 - 8

ノンアルコールが2つもあるのは、単純なミスです。ここ、入り口にある券売機で購入するタイプなのですが、まとめ買いとかいうボタンがあって、それで2枚のまとめ買いをした結果です。

・・・いや、同じ商品のまとめ買いじゃなく、別々の商品を1回の料金投入でまとめて頼むためのボタンだと勘違いしたのです。考えてみれば、そんな訳ないんですけどね。まぁ、どうせ2本くらい普通に飲むし、そのままにしました。

刺身の盛り合わせって、あんまり良いイメージがなかったのですが、口当たりがスーパーで売っているような刺身と何かが違っていて、とっても美味しかったです。

さて、ここまでで気づいたと思いますが、清算が現金払いです。これもちょっと違和感。大抵は最初にもらったロッカーの鍵の番号を提示して購入、帰りにまとめて清算ってのが多いと思うのですが、ここもスーパー銭湯方式みたいです。

■ リラックス

食事後は、マッサージチェアでリラックス。200円15分で、なにやらディスプレイがついた立派なやつです。
たまゆらの杜 - 9

・・・気持ちよかった。

その後、ちょっとお休み。休憩室とでもいうのか、要は休める場所があって、男女共用、男性専用、女性専用の3部屋が存在。男性専用では床に布団を敷いて寝ることができ、男女共用では、一人がけの椅子があって、そこでゆっくり出来るようです。おそらく、女性専用も男性専用と同じ感じなんでしょうね。

毛布も置いてあるので、ゆっくりと休むことが出来ました。男性専用で1時間ほど、男女共用の椅子で1時間ほどのんびりと過ごして疲れを癒します。

本当は、もう少しのんびりとしたかったのですが、男女共用の場所で子供(3、4歳くらいかな?)がバタバタと走り回ってグチャグチャと大声でしゃべり始めて煩くなったので、出ることにしました。

うーん、私語禁止で、そこにいる皆んなが眠ってたり、リラックスする場所なんだから、親には是非とも注意するか、外(普通の飲食スペース)に連れ出して欲しかったんですけどね(まぁ、注意しても子供が静かになったとは思わないけど)。

■ 食事2

さて、時間が経ったのでお腹が減ってきました。そこで食事の2回目です。

前記の通り、この施設は食事ができる場所が2つあります。先ほどのは普通の食堂って感じですが、もう一つはスーパー銭湯に良く付属しているような食事スペースです。

メニューはこんな感じ。
たまゆらの杜 - 10

注文は券売機。頼んだのは、ザンギとポテト、それとノンアルコールビールです。
たまゆらの杜 - 12

味の方は、スーパー銭湯系の良くある感じ。まぁ、ノンビル過ごすには十分ですね。

■ 後書き

スーパー銭湯だとタオルとか、シャンプーとかを用意する必要があって面倒なので、最近は多少高くても手ぶらで行ける施設に通っています。

この施設、札幌の郊外の方にあるのですが、私の自宅からだと街中に出るよりも近いです。お風呂も食事も休憩室も、結構好み。駐車場もやたらと広いので止められない心配もありません。

値段も手頃だし、これは良いかもしれません。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

プロキシサーバ経由のWindowsUpdateが異常終了する


少し前に、パソコン(Windows7)にVisio2002をインストールしたのですが、WindowsUpdateが指示されました。

放置するのも気持ち悪いので実行したのですが、何故か異常終了してしまいました。
proxyとWindowsUpdate (1)

proxyとWindowsUpdate (2)

proxyとWindowsUpdate (3)

発生したエラーコードは、8024002D。

毎月実行している定例のWindowsUpdateは問題なく動くのに、いったい何が起こったんだろうか?


色々調べたのですが、プロキシサーバ経由でインターネットに接続している場合、WindowsUpdateが失敗することがあるそうです。

参考URL:https://support.microsoft.com/ja-jp/kb/2894304/ja

要約すると、WindowsUpdateのプロキシサーバは「Internet Explorer のプロキシサーバー設定」と「WinHTTP のプロキシ設定」のどちらかが使用されるということで、WinHTTP側の設定がされていないことが原因だそうです。

嫌らしいことに、この「WinHTTP」とやらのプロキシ設定を行う画面はないそうで、コマンドでガリガリやらないとダメだそうです。

・・・勘弁してくれよ。

■ 確認

まず、使用できるコマンドを確認します。

コマンドプロンプトから「netsh winhttp ?」と実行します。
c:¥>netsh winhttp ?

使用できるコマンドは次のとおりです:

このコンテキストのコマンド:
? - コマンドの一覧を表示します。
dump - 構成スクリプトを表示します。
help - コマンドの一覧を表示します。
import - WinHTTP プロキシ設定をインポートします。
reset - WinHTTP 設定をリセットします。
set - WinHTTP 設定を構成します。
show - 現在の設定を表示します。

コマンドのヘルプを表示するには、コマンドの後にスペースを入れ、
? と入力してください。


「netsh winhttp show」辺りで現在の設定を確認できるようです。
c:¥>netsh winhttp show ?

使用できるコマンドは次のとおりです:

このコンテキストのコマンド:
show proxy - 現在の WinHTTP プロキシ設定を表示します。
show tracing - 現在の WinHTTP トレース パラメーターを表示します。

c:¥>netsh winhttp show proxy

現在の WinHTTP プロキシ設定:

直接アクセス (プロキシ サーバーなし)。


ふむ、「netsh winhttp show proxy」と打たないとダメみたいですね。そして、プロキシサーバが設定されてないと出てきました。

■ 設定

「netsh winhttp set」辺りで設定できそうなのですが・・・
c:¥>netsh winhttp set ?

使用できるコマンドは次のとおりです:

このコンテキストのコマンド:
set proxy - WinHTTP プロキシ設定を構成します。
set tracing - WinHTTP トレース パラメーターを構成します。

c:¥>netsh winhttp set proxy ?

使用法: set proxy [proxy-server=]<サーバー名> [bypass-list=]<ホスト一覧>

パラメーター:

タグ 値
proxy-server - http または https プロトコルに使用するプロキシ サーバー
bypass-list - プロキシをバイパスすることで表示するサイトの
一覧 (短い名前のホストをすべてバイパスする場合は
"<ローカル>" を使用)

例:

set proxy myproxy
set proxy myproxy:80 "<ローカル>;bar"
set proxy proxy-server="http=myproxy;https=sproxy:88" bypass-list="*.foo.com"


確かに出来そうですが、打つのが面倒です。

そこで目を付けたのが「netsh winhttp import」です。
c:¥>netsh winhttp import ?

使用できるコマンドは次のとおりです:

このコンテキストのコマンド:
import proxy - プロキシ設定を IE からインポートします。

c:¥>netsh winhttp import proxy ?

使用法: import proxy [source=]ie

パラメーター:

タグ 値
source - 設定のインポート元

例:

import proxy source=ie


おぉ、どうやらIEの設定を読み込めるようです。ではやってみましょうか。
c:¥>netsh winhttp import proxy source=ie

現在の WinHTTP プロキシ設定:

プロキシ サーバー: 1*0.1.**.15*:8080
バイパス一覧 : 10.11.10.*;10.250.1.*


「netsh winhttp import proxy source=ie」とコマンドを実行すると、設定結果まで表示してくれるようです。

■ 後書き

なお、IEのプロキシサーバの設定でプロキシパック(自動構成スクリプト)を使用している場合、このコマンドではダメみたいです。その場合は、素直に「netsh winhttp set proxy ****」と手動で設定して下さい。

パラメータで「bypass-list」とあり、説明が「プロキシをバイパスすることで表示するサイトの一覧」とかありますが、要するにプロキシサーバを使用しないパスの設定です。

ぶっちゃけると、省略しても良いと思います。どうせWindowsUpdate位でしか使用しないでしょうからね。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

「ブルーレットおくだけ」を超えた?スタンピーです

■ スタンピー

前回の記事(「ブルーレットおくだけ」を超えた?デコラルです)で書いた「デコラル」の欠点を克服した商品、それがこの「スタンピー」です。
ブルーレットスタンピー - 1

前回の「デコラル」は、1個10日で3個入りだったのですが、今回の商品は1個で40日持つらしいです。少しだけ量が増えましたね。

使い方は裏面に書いてました。
ブルーレットスタンピー - 2

うーん、読んでないのですが、何やらゴチャゴチャ書いていて面倒そうですね。実際にやってみたら簡単だったのですが、これを言葉で説明する自信がないので動画にしてみました。



最初に合体させる方向を間違えた以外はいい感じではないでしょうか?

前回の「デコラル」もそうでしたが、結構強い爽やかな匂いがするし、見た目も綺麗で気に入りました。スタンドも付属しているので、トイレの適当な場所に立てておけば、他に場所を取らないのも良いですね。

■ 後書き

動画はiPhoneを使って撮影しているのですが、片手にiPhoneを持ちながらだと操作が難しいです。

両手を使いたかったので、両足でiPhoneを挟んでみたり、最後の方のジェルを作る部分で上下が逆転してしまったりと、四苦八苦しています。何か、良い方法を考えた方が良いかもしれません。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

「ブルーレットおくだけ」を超えた?デコラルです

■ ブルーレット

ずいぶん前に書いた記事で、トイレの洗浄剤はブルーレットおくだけに限ると言っていました(色々試したけど、最後はコレ(ブルーレット))が、もしかすると、それを超えるかもしれない商品が出てきました。

ブルーレットデコラルです。
ブルーレットデコラル - 1

ブルーレットデコラル - 2

・・・結局、ブルーレットに違いはないんですけどね。

■ おくだけの欠点

ブルーレットおくだけは、二つほど気に入らない点がありました。

まず、ある程度減ると一気になくなるという仕組み。実害はないのですが、何となく気持ち悪いし、交換用を買うタイミングが分かりづらいです。

もう一つは、トイレ上部の手洗いの場所が狭くなって、手を洗うのが難しくなることです。普段は、そこで手を洗わない(シャンドレを使ってる)ので良いのですが、来客があった時とか、ちょっと困ってしまいます。

まぁ、欠点と言ってもこの程度ですけどね。

■ デコラル

話を戻して「デコラル」です。

この商品は、洗浄剤(ジェル)をトイレ内の壁部分にくっ付けるようです。水を流すたびにジェルが溶けて、トイレを洗浄してくれるってことですかね。

蓋を外して、容器を押し付けて絞り出す見たいですが、やる前から失敗しそうな気がしてなりません。

まぁ、とにかくやってみますか。



・・・やっぱり失敗しました。
ブルーレットデコラル - 3

ま、まぁ、見た目はアレですが、効果に違いはないようです。トイレに入った瞬間にスッキリとした良い匂いがするし、黒ずみもつかずに綺麗なままです。

一週間くらいたってジェルが小さくなったら、それを洗剤代わりにトイレ掃除(ブラシでゴシゴシ)できるので、別にトイレ用洗剤を用意しなくても良いです。

うん、なかなか良いじゃないですか。

■ 後書き

1回で全量を出し切るのなら良いのですが、2回に分ける時点で半分の量を調整するのにコツがいるのは分かりそうなものです。最初の1個はまだましですが、2個目で手が滑り、余ったジェルを絞り出して3個目を作り出す始末です。

手洗いの部分にスペースが出来たのは良いし、発想は素晴らしいと思うのですが、この手間のかかり具合は問題です。使い続けるか迷ってしまいます。

とか思ってたら、同じ系統でもうちょっと使いやすくなった「スタンピー」って商品が出ていました。こっちを使ったほうが良さそうです。

スタンピー:「ブルーレットおくだけ」を超えた?スタンピーです

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

靴の落ちる靴置き場を簡易リフォーム

■ 靴置き場

借りているアパートの玄関に、靴を置く場所があります。
靴置き場リフォーム - 1

上の写真のように靴を置くのでしょうが、この靴を支える部分の暑さが指1本分もないので、ちょっとした衝撃で靴が落ちてきてしまいます。そもそも、靴の種類によっては置くことさえままなりません。

以前から困っていたのですが、少し手を打つことにしました。

■ 作成

最初に考えたのは、スーパーとか本屋で見かける仕切り板です。あんなもの、100円ショップで売っているだろうと思ったのですが、これが意外と見当たりません。

さて、どうしたものかと思ったのですが、ホーマックでブラブラしている時に「ベニヤ板の薄いのをおけば良い」と思いつきました。
靴置き場リフォーム - 2

靴置き場リフォーム - 3

靴置き場リフォーム - 4

靴置き場リフォーム - 5

上の画像の3枚は真面目に加工(端材をボンドでくっつけただけだけどね)していますが、最後の写真の上2段は適当です。単にベニヤ板を枠よりほんのちょっと長めに切っただけ。それだけでキッチリはまってくれました。

これで落ちてこなくなって、玄関がスッキリしました。

■ 後書き

手先が不器用なのと、そもそも工作の経験が少ないので、大したことは出来ません。それでも、この程度のことならなんとかなるようです。

ちょっと見た目は悪いですが、玄関に靴が沢山おいてあるよりは良いとしましょう。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

Quick Air Bedが優秀なエアーベッドと判明!

■ Quick Air Bed

滅多に無いことですが、急な来客があった時にベッドが無いという問題があります。寝袋はあるのですが、フローリングの上にあれだけなのは辛いです。そこで、以前にホーマックで見かけた「Quick Air Bed」なる商品を購入することにしました。

見かけたのは随分前なので、販売してい無いかとも思ったのですが、幸い在庫があったので購入しました。
Quick Air Bed - 1

Quick Air Bed - 2

箱の中身な、こんな感じです。
Quick Air Bed - 3

Quick Air Bed - 4

空気を注入します。60秒〜70秒で完了というのは本当でしょうか?



大体、70秒位で使えるようになりました。どうやら、パンパンに膨らませて使うものではなさそうです。

実際に使ってみた感想ですが、思いの外良いです。最初は、あちこちにあるボコボコが邪魔で寝ずらいと思っていたのですが、実際に寝てみると快適です。これ、下手な布団やソファーベッドよりも良いかもしれません。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

予算編成システムの導入!って役に立つの?

■ 予算

どこの会社でもやってると思いますが、私の勤め先でも予算を作成する業務が存在します。

一口に予算といっても、会計に繋ぐための経費レベルの予算、販売管理システムに繋ぐための担当者別予算、得意先別予算と色々な種類の予算が存在します。

今まではどうしているかって言うと、Excel表を作成して各部署に配布、それを回収して集計して各システムに取り込んでいます。原始的な方法ですが、予算編成なんて年に一度だし、面倒ではあっても大変だとは思ってませんでした。

■ 予算編成システム

私の所属部署では基幹システムに登録するための予算の配布と回収をやっています。昔は手間のかかる仕事ではあったのですが、そこはシステム部門。VBAで自動化したので、それほどの手間は掛からないようになってます。

一方で、会計側については全て手作業で行っていて大変だってことで、予算編成のシステムの導入なんかを検討し始めました。

ってことで、先日デモを見たのですが、ただのC/Sシステム。入力のセキュリティや、入力状況の確認といった機能は備わっているのですが、言うほど便利なものには見えません。

入力したデータがデータベースに格納されるってことなので、確かに配布、回収、集計といった手間は減るとは思うのですが、予算編成なんて年に一度の作業なんだから、システム化してもコスト効果は出ないと思うんですけどね。

■ 管理コスト

これが、いわゆるクラウドみたいに何ヶ月**万円って感じなら理解も出来たのですが、自社でサーバを立てる必要があるので、一度入れたらずっと維持管理を続けなければなりません。

これ、予算管理部署は楽になるかもしれないけど、その負担がシステム部門に変わるだけじゃね?

何か、関係会社にも使わせて一元管理が〜〜とか盛り上がってましたけど、そのシステムに関係会社から接続できるようにしないと行けないって理解してるのかね?

それに、組織変更とか担当者変更とか、色々とマスタの管理もあるし、数年後にサーバを入れ替える時に同じコストが掛かるのも分かってる?

■ 後書き

彼らは大変だって言うのですが、その割には残業してる姿を見たことがありません。

「今まで丸一日かけた仕事が、1時間で終わるようになりました」って聞くと効果があったと勘違いしそうですが、続けて「でも、どちらであっても残業してません」となると、人件費って変わらないんですよね。

それ、効果があるって言うのかい?

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

コンビニに対する先入観と衝撃

■ コンビニ

コンビニといえば、休みなく開店しているイメージを持っていました。ですが、すべてのコンビニがそうではないことを思い知らされました。

少し前に、仕事が長引いて深夜(AM3:00)に帰宅していた時に、途中でコンビニによって買い物をしようとしましたが、見事に閉店していました。
コンビニ閉店

知識としては、24時間営業していないコンビニがあることは知っていたのですが、実際に遭遇すると衝撃でした。そう、思わず写真撮影するくらいには。

買おうとしたのは、ビールとかです。ここで別の店に行く手もあったのですが、もう面倒になったし、これもひとつの運命かと思って素直に帰宅して寝ることにしました。

■ 後書き

ちょっと驚いただけで、別に不満があるわけではありません。むしろ、これが自然な姿のような気がします。

そもそも、最近では大晦日や正月でさえも店舗が開いていますが、私が子供のころには閉店しているのが普通でした。それでも、別に困りはしなかったんですよね。

サービス合戦なのかなんなのか分かりませんが、初売りとか言って新年早々から開店している方が異常な気がします。年初の数日間くらい、仕事を忘れて穏やかに過ごしてもいいのではないでしょうか。

・・・これを書きながら、救急、消防、警察にそれをされると困ってしまうと思ってしまいました。我ながら勝手なものですね(苦笑)

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

基幹システムの電子記録債権への対応 Part16 実運用テスト

■ 実運用テスト

今年(2015年)に入ってからずっと取り掛かっていた電子記録債権の対応も、いよいよ実運用テストまで到達しました。

・・・ここまで長かったなぁ(遠い目)。

私が、というか、開発者が実行できるレベルのテストはかなり詳細に実施して、考えられるレベルのエラーはほぼ潰しました。なので、後は実際に使用する部署にお願いして色々とテストして貰います。

幸いなことに、依頼元の部署が協力的だったので、かなり深い所まで見てくれています。最も、テストの依頼時に「元のプログラムをかなり書き換えたので、何が起こるか分からない」と脅迫じみたことを言ったので恐れおののいているのかもしれませんが(笑)

この手のユーザーを巻き込むテストの場合、ユーザーが開発者に丸投げ、またはシステムなんて動いて当然みたいに思っていると大変な事態になったりするのですが、その点では安心ですね。

■ 要望とバグ

テストに協力的ということは、かなり実践に近いテストデータを投入してくれてまして、色々と要望が出てきました。ほとんどが、画面や帳票のレイアウト調整(表示位置の移動、名称の変更)程度なので対応したのですが、工数の大きくなるものについては別の開発案件として対応することにしました。

以前に書いた別件(基幹システムの電子記録債権への対応 Part12 支払系の解析)の詳細が出てきており、対応をせっつかれているし、この別件以外の大規模な案件も出てきた(この件については、どっかで記事にします)ので、そろそろ時間的に限界です。

業務が廻らないレベルのバグについては対応しますが、追加要望については無理ですね。やっぱり、設計から開発、テスト(単体、結合)まで一人でこなすとなると限界があります。

■ 後書き

電子記録債権に関係しないプログラムまで直す羽目になった理由の一端はコレ(基幹システムの電子記録債権への対応 Part13 絶望のPG修正)です。

元の作りが悪いので、かなりの箇所でソースを書き直さなければならなかったのです。それに、あるボタンを押したら必ずシステムエラーが発生していたりと、もう今までどうしてたんだって感じの無茶苦茶なバグがあったり・・・

まぁ、その機能を使う部署が極一部で、その中でもさらに利用頻度の低い機能だったので顕在化しなかったんでしょうけどね。

前回:基幹システムの電子記録債権への対応 Part15 譲渡の取り消し
次回:基幹システムの電子記録債権への対応 Part17 裏書の開発完了!

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

風邪に打ち勝つために薬、栄養ドリンク、ビタミン剤!

■ 風邪

風邪をひきました。と言っても、そんなに体調が悪いわけでもありません。軽い倦怠感に、鼻水、咳、喉の痛みってところですか。この程度なら、無理をしないで安静にしていれば治るはずなのですが、意外に長引いてしまいます。

気温の高い時期に風邪をひくと長引くんですよね。困っちゃいます。常備していた風邪薬も底をついたので、新たに購入してきました。

風邪薬は「セシオンハイ」、活力アップに「エゾエース」、回復後のビタミン補充に「ビタミネンゴールド」です。なお「チオビタゴールド」は、ビタミネンゴールドに付属してきたオマケです。
風邪とビタミン剤 - 1

今、改めて上の写真を見ているのですが、薬の上の方に「Ms’ one」の文字が見えます。ん?「M’s one(エムズワン)」じゃないのか?とか思ってググってみると、同じ系統のプライベートブランドで、「Medis’ one(メディズワン)」という医薬品に特化したブランドみたいです。

医薬品にプライベートブランドって抵抗があるのですが、ホームページ(http://ms-one-web.com)をみると、意識しないうちに使っていた商品がいくつか目に付きます。

うーん、これは逃げられないですね。時代の流れってやつでしょうか。

■ ビタミネンゴールド

随分と前の話ですが、ビタミン剤を常用していた時期がありました(ビタミン剤が大活躍です)。

かなりの成果が出ていた(具体的には風邪を引かない)のですが、薬を常用するのが気に入らなかったのと、体力作りの成果が出てきていたので止めていたのですが、今回の風邪にショックを受けて再開することにしました。

さて、こちらも箱に妙なシールが貼ってあります。
風邪とビタミン剤 - 2

以前まではオレンジ色の衣(糖衣)の包まれていたのですが、フィルムコート錠に変えたそうです。確かに見た目が違いますね。
風邪とビタミン剤 - 3

ちょっと見た目が素っ気なくなりましたが、ビタミン剤に見た目を求めてもしょうがないので、これはこれで良いんでしょうね。なんにせよ、不規則な生活の助けになってくれることを期待したいところです。

■ 後書き

本格的に風邪を引いたのは、去年の2月が最後みたいです(「成人専用かぜ薬 セピーIPかぜゴールド」効きました)。

体調自体は色々と崩し気味だったのですが、最近は復調してきていて良い傾向です。このまま何事もなく過ごしたいところです。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop

社内SEの徒然なる日記(2015年5月31日)雑草と怪我

■ 怪我

眉毛のムダ毛処理は必須です。全体的に整理しないと濃くなるし、中央(鼻の上)や、左右両端の下の部分(目の斜め上)にムダ毛が沢山あると気持ち悪いです。

・・・本当はどうでも良いのですが、やはり清潔感がないのは色々と不都合なので、少しは手入れをしています。

んで、この位置の毛を剃るのにはT字カミソリには不向きなので、女性用の安い毛剃りを使っていたのですが、これが中々の切れ味でした。
怪我と雑草 - 1

犯人はコレです。
怪我と雑草 - 2

うーん、結構深くやっちゃいました。血がドバドバでるし、何よりも止まりません。救急箱を取りに行きたいのですが、血をなんとかしないと床が血だらけになっちゃいます。

とりあえず血止(指の付け根の両端を押さえる)して、キッチンペーパーで包んで何とかしましたが、2〜3日は苦労しました。

この程度の怪我、化膿しないようにキチンと消毒しとけば大丈夫なのは分かっていますが、血がダラダラ出てくるとちょっと焦っちゃいますね。

■ 雑草

去年の8月頃だったかに投稿した記事(何事も無い日々の出来事)で雑草の生命力の強さを書いていましたが、今年も同じ場所で力強く生えてきました。
怪我と雑草 - 3

この様子だと、引っこ抜いたくらいでは根を殺しきれないので、本気で何とかしようと思ったら除草剤が必要なんでしょうね。

まぁ、特に自分に害がないのであれば、生まれてきた命を摘む必要もないので放置しますかね。

■ 後書き

仕事では色々と山積みで大変ですが、その一方で私生活は平和そのものです。個人的には、仕事がもうちょっと緩くなって、私生活で少しあっても良い気もするのですが、実際にそうなったら辟易するんでしょうね。

これが私のライフスタイルってことなのかな?

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end — スポンサードリンク

PageTop