社長ブログ

プログラムは見える?

2011年12月05日

今回はほんの少しでも私どもの作業の一部であるプログラミング作業について簡単ではありますがご説明し、少しでもご理解を頂きたいと思います。 「ソフトは物品と違って見れないからなんか高い気がして・・・」なんてご指摘を頂く事があります。家を建てたり、部品を作ったりする仕事は物理的に確認できますので例え素人でもどれほどの作業をするのかがなんとなくでも理解できるのですが、ソフトの開発作業となりますとなかなか確認できない作業でして、やはりそのように思われるのは仕方ない事だと思うの半分、正直な話ですが、いやいやどれだけの作業をしてソフト開発しているのかを少しでもわかってもらいたい!とも思ってしまうのです。
以下に記号だか英単語だかが混ざった訳のわからないサンプルプログラムがありますが、これは売上伝票作成のほんの一部のプログラムです。これで大体A4用紙1枚分です。 卸売業の基本的な処理(受注、売上、仕入、在庫、管理帳票)ですと、プログラム量はおおよそ5万ステップ(5万行)A4用紙700枚くらいになります。(当社の開発するソフトでのお話です、また700枚とは言ってもA4用紙全てを埋め尽くしているわけではありませんが・・)
少し複雑な製造業の処理(受注、売上、仕入、在庫、工程、原価、管理資料一式)ですと2000枚はいくでしょうか。それにオーダー性が加わりますとさらにプログラム量は増えてくるわけです。これを全てプログラマーは個々の業務内容に沿って作成しているわけです。もちろん他のソフトで使える部分はコピーして使う場合もありますが、ここが要注意でして、当社のようなオーダーメードソフトですと、丸まる使えるケースが少なく、使って手直し場所を探し修正するより、一から作った方がリスクが少ないケースが多いのです。 このプログラミング作業だけではありません。当然打ち合わせをさせていただき、ご要望を把握、ご提案し、データーベースにどのようにデータを保存するかの設定や、ユーザー様が目にする画面を作成したり、帳票類のレイアウト作成や印字のズレなどを合わせたり他にさまざまな作業を施すのです。 そしてテストです。何百枚に渡るプログラムは幾通りもの処理パターンがありますので、すべて結果が正しいかのテストをします。(テストが甘くご迷惑をおかけする場合が正直に言ってあります。申し訳ございません。徹底的なテストをさらにしていく所存です。)
さらにオーダー性が強い処理内容ですとか、営業所等との通信がある場合や、データー量が多く他のデーターベースを使う場合やら、いろいろな状況によってプログラム量や他の作業量は増していきます。 
ではプログラムは何処に書くか?ですが、簡単に申しますと、どのようなコンピュータ言語にもソフトを作成する為のソフト(ツール)があります。そのツールの中にさまざまな設定をしたり、プログラムを書き込む所があるのです。 いかがですか?このような簡単なご説明でなんとなく、こんな作業をしてるのか・・・くらいはご理解いただけたでしょうか? 

   

>>>>>>>>>>>>> サンプル プログラム <<<<<<<<<<<<<

‘*********************************************************************
‘* プロシージャ名 : 明細計算_SET()
‘* 機能 : 全明細の再計算を行う
‘* 機能説明 :
‘* 引数 :
‘* 戻値 :
‘* コメント :
‘*********************************************************************
Private Sub 明細計算_SET()

Dim cur内税抜金額 As Currency
Dim cur内税額 As Currency

‘明細の課税区分、及び 伝票の税区分 で 処理を分ける
Select Case Nz(Me!cbo課税区分, 0)
‘******************** 課税 *************************
Case 0
Select Case Nz(Me.Parent!cbo税区分, 0)
Case 0 ‘****税なし
Me!単価 = Me!txt入力単価
If Nz(Me!単価, 0) * Nz(Me!txt数量, 0) <> 0 Then ‘単価×数量が 0 の場合は、入力金額を計算しない
Me!txt入力金額 = P_端数処理_Proc(Nz(Me!単価, 0) * Nz(Me!txt数量, 0), Nz(Me.Parent!cbo金額丸目区分, 0))
End If
Me!金額明細 = Nz(Me!txt入力金額, 0)
Me!消費税明細 = 0
Me!課税金額明細 = 0

Case 1, 2 ‘*****請求一括・伝票毎
Me!単価 = Me!txt入力単価
If Nz(Me!単価, 0) * Nz(Me!txt数量, 0) <> 0 Then ‘単価×数量が 0 の場合は、入力金額を計算しない
Me!txt入力金額 = P_端数処理_Proc(Nz(Me!単価, 0) * Nz(Me!txt数量, 0), Nz(Me.Parent!cbo金額丸目区分, 0))
End If
Me!金額明細 = Nz(Me!txt入力金額, 0)
Me!消費税明細 = 0
Me!課税金額明細 = Nz(Me!txt入力金額, 0)

Case 3 ‘*****明細毎
Me!単価 = Me!txt入力単価
If Nz(Me!単価, 0) * Nz(Me!txt数量, 0) <> 0 Then ‘単価×数量が 0 の場合は、入力金額を計算しない
Me!txt入力金額 = P_端数処理_Proc(Nz(Me!単価, 0) * Nz(Me!txt数量, 0), Nz(Me.Parent!cbo金額丸目区分, 0))
End If
Me!金額明細 = Nz(Me!txt入力金額, 0)
Me!消費税明細 = P_消費税_Get(Nz(Me!txt入力金額, 0), Me.Parent!txt伝票日付, Nz(Me.Parent!cbo消費税丸目区分, 0))
Me!課税金額明細 = Nz(Me!txt入力金額, 0)

Case 4 ‘*****内税
Me!単価 = Me!txt入力単価
If Nz(Me!txt入力単価, 0) * Nz(Me!txt数量, 0) <> 0 Then ‘単価×数量が 0 の場合は、入力金額を計算しない
Me!txt入力金額 = P_端数処理_Proc(Nz(Me!単価, 0) * Nz(Me!txt数量, 0), Nz(Me.Parent!cbo金額丸目区分, 0))
End If
If Me.Parent!内税処理区分 = 0 Then
‘単品単位で処理
Call P_内税計算_Proc(Nz(Me!txt入力単価, 0), Nz(Me.Parent!cbo消費税丸目区分, 0), Me.Parent!txt伝票日付, cur内税抜金額, cur内税額)
Me!単価 = cur内税抜金額
Me!消費税明細 = P_端数処理_Proc(cur内税額 * Nz(Me!txt数量, 0), Nz(Me.Parent!cbo消費税丸目区分, 0))
Me!金額明細 = Nz(Me!txt入力金額, 0) – Me!消費税明細
Else
‘明細単位で処理(単価×数量 後に算出)
Call P_内税計算_Proc(Nz(Me!txt入力金額, 0), Nz(Me.Parent!cbo消費税丸目区分, 0), Me.Parent!txt伝票日付, cur内税抜金額, cur内税額)
Me!単価 = Nz(Me!txt入力単価, 0)
Me!消費税明細 = cur内税額
Me!金額明細 = cur内税抜金額
End If
Me!課税金額明細 = 0

End Select

トウサイへオフィシャルへ トウサイPCできる蔵ページ