今のプリンタはレーザーやインクジェットなどである。

家庭ではまず見かけないが、現役なのがラインプリンタ等のインパクト式のプリンタである。


以前契約していた会社で、「Accessでリストを作成しているのだが、罫線が歪む」と、職場の人から相談を受けた。そこは「IT企業」ではない。データ処理を請け負った関係で、やむなくラインプリンタを導入したらしい。

ラインプリンタとしては大型で、床に直置きする大型タイプで処理速度も前者よりうんと速い。トナーではなくインクリボンを使っているタイプだった。


このプリンタがなぜまだ現役か。

・リボンの取り替えには慣れが必要。

・リボンの入荷に時間がかかるうえ、高い。

・いつリボンを取り替えればいいのか、プリンタは教えてくれない。(トナー式やインクジェット式なら教えてくれるのにね)

というデメリットがあるのだ。


しかし

・カーボン複写の用紙に打てば、裏移りしてくれる。

・普通紙のみならず、専用用紙が使える。(これは印刷時に紙が熱を持たない、ということもあるかもしれない)

・ほぼ文字に特化しており、印刷が速い。

というのは他のプリンタにマネができないからである。


さて、本題に戻る。


その昔、デスクに置くタイプのラインプリンタを使っていことがある。OASYSやEPO-CALC、EPO-ACEなど、OA機器といえば富士通が強かった頃である。

そのころの印刷の出来と比べて「罫線はこんなもんじゃないのかな?文字がちょっと気になるな」と思ったが、どうやらこれでは納品先からOKが出ないらしい。


今の人たちはページプリンタに慣れきっており、ラインプリンタについては知らないか忘れてしまっているだろう。そもそもAccessやExcelのイメージがラインプリンタで出せるのか?などとも思ったが、プリンタドライバが適当に制御してくれてるのだろう。などと考えながらプリンタの電子マニュアルがあったので検索をかけてみる。


「オーバーレイ」。これまた昔、汎用機COBOLで顧客に納品する印刷物を作っていた頃、これはトナー式であったが、線もきれいに出た。しかし、それはという印刷のイメージを予め作成し、プリンタに送るからできたはずだったな、と。・・ヒットせず

「LPI」。ライン・パー・インチで、1インチに何行出力するか、という指定である。6LPIが主流で、8LPIなんかもあったな。漢字の大きさも3種類で、桁合わせに苦労したっけ。・・これはヒット


このプリンタでは6、7.5、8の3種類のLPIが選べるらしい。それによって罫線の美しさが変わるか、「罫線」で検索した。すると「印刷精度と印刷速度」というページを見つけた。その中で、「これは」と思うパラメータ、印刷速度を最遅にし、プリンタフォントを使わないようにして印刷を試したところ、「これなら大丈夫」と喜んでもらえた。


プリンタといえば遙か昔、レーザープリンタをUNIX-COBOLからコントロールしてバーコート出力などもしたなあ、としみじみ思い出す。そんなこんなで、意外と「前の技術」が使える局面であった、



クラスモジュールは生成しないと使えない。



Classモジュール Class1 を標準モジュール内から呼び出すときのサンプルを以下に記す。

なお、Class1の内容は http://ameblo.jp/tech-note/entry-10066633757.html  の中のモノを・・。


標準モジュール Module1 では


  Sub Sample()


    Dim C As Class1 '宣言する

    Dim iVal As Integer


    set C = New Class1   '生成する


    iVal = C.getData(100)  '使う


    '(以下ほとんど略)


    set C = Nothing   '破棄する


  End Sub



私は元がCOBOLユーザーなので「なんでわざわざ生成やら破棄が居るの?」と思っていたことがある。多くの方もそういう疑問があるのではないだろうか。


実は、こんな書き方もできる


  Sub Sample()


    Dim C1 As Class1 '宣言する

    Dim C2 As Class1 '宣言する

    Dim C3 As Class1 '宣言する

    Dim C4 As Class1 '宣言する



    set C1 = New Class1   '生成する

    set C2 = New Class1   '生成する

    set C3 = New Class1   '生成する

    set C4 = New Class1   '生成する


    '(以下ほとんど略)


  End Sub


この場合、C1~4の4つのクラスのコピーが作られる。

コピー機で紙が4枚になると考えて頂くとイメージしやすいだろう。それぞれの紙個別に適当な落書きをした場合、当然その落書きが別の紙の落書きに影響を与えない。独立したモノだから当たり前である。

クラスモジュールのC1~4もコピーの落書きと同じように、独立したものになる。


実際に「ああ、便利」と感じたのはデータベース接続処理をClassモジュール化したときである。

条件を元に複数のテーブルにアクセスする場合、接続内容や読み込んだデータを保持しておきたいとき、このコピー技を使って対応した。ちなみに、このようなコピーをインスタンスという。

標準モジュールでこれと同じようにするには、似たようなファンクション名でそっくりな内容を作成する、というようにせざるを得ない(まあ、代替手段を取ることの方が多いかも知れませんが・・)。


このように、処理のコピーが作成でき、それぞれを別々に利用することができる

それにより、何カ所で同じクラスモジュールが使われていたとしても、他で生成したクラスモジュールからは独立しており、お互いに干渉しないし影響し合わない、ということになる。

※VBAの場合。例えばJavaでは必ずしもそうでない場合がある。

ここで注意点がある。

コピーを作り、使い終わったら捨てる必要がある。さもなくばコピーだらけになってしまうし、次に使おうとした際に使えない場合もある。作法として「使い終わったら破棄する」は覚えておこう。






関連ページ このページより詳細なモジュールの説明あり
ブログトップへ
ブログ内検索キーワード
 クラス モジュール