2016年10月9日日曜日

JIS OCR-B サイズI を標準フォントで印字 [Windows]

郵便払込用紙のOCR-Bフォントを印字するために、フリーフォントを探していたんだけど・・・


Windowsに標準で入ってた!

 
 
デフォルトでは非表示になっていたので、右クリックで[表示]にしたらフォントの一覧に出るようになって印字できるように。
 
Windowsによっては入ってないみたいだけどなんの差だろ?
 
文字の大きさは11ptで良さそうだけど、文字ピッチ が1インチあたり10文字にならない・・・
1文字ずつ位置指定して何とか。
 
テストも通ったし良さそう。
 

2016年10月2日日曜日

エラーが発生しました。エラーを特定できません [Windows]

SQLServerのインストーラーをダブルクリックして、展開の途中で

「エラーが発生しました。
 エラーを特定できません」

とエラーが。



エラーを特定できません

原因を調査したら、
ダウンロードしたインストーラーをDVDや外付けハードディスクにコピーすると壊れる。

インストーラーの[プロパティ]→[デジタル署名] の証明書を選んで詳細を押すと、
コピー前のは
「この証明書は問題ありません」
と出るけど、コピーしたのは
「この証明書は有効ではありません」
となってる。

ハードディスクないのコピーでは壊れないみたいで外部媒体にコピーすると壊れる・・・

DellのノートPCでSSDを使っていて、ハードディスクに変えてみて試したら壊れない。

SSDかWindowsがダメぽい。

こんな壊れ方するの・・・。

2016年9月18日日曜日

GS1-128(UCC/EAN-128)のバーコードをフォントで打つ方法

GS1-128は↓のようなバーコードらしい。
http://www.n-barcode.com/jiten/yu.html


GS1-128はCODE128を使用しており、
CODE128にはタイプA・タイプB・タイプCの3種類があり、
GS1-128はタイプC。

バーコードの最初のスタートコードによって判別されるぽい。

さらにタイプCは数値2桁に対して1つのバーコードが割り当てられている。
フォントで出そうとすると2桁を1つのバーコードにしなきゃなので大変・・・


まずはCODE128のフォントのインストール。
適当に探したここから↓
http://grandzebu.net/informatique/codbar-en/code128.htm


最初のタイプCのスタートコードを出力するには、
"Ò"
上記サイトではただの"O"になっているけど本当はラテン語が割り当てられているっぽい。

次に"FNC1"ってのを出力しなければならないので、
"Ï"
を出力。


ここから数値2桁ずつを文字に変換していく、
上記サイトの"Table C"の数値2桁の列から"Character"の列の文字に変換。
例)
00 → Ô(またはスペース)
01 → !
18 → 2
54 → V
91 → {
95 → È
96 → É
97 → Ê
98 → Ë
99 → Ì

一部数値にまたラテン文字が・・・


さらにチェックデジット。
CODE128はモジュラス103で計算らしい。

計算した結果を2桁も↑の文字に変し最後に追加


最後にストップコードの"Ó"を付加して完成!


例えば

1800549598

を出したい場合は、

ÒÏ2ÔVÈË[CD]Ó

[CD]:チェックデジットの値

になる。

フォントで出すの難しすぎる・・・

2016年9月17日土曜日

新設!!

大人の事情で

http://yukamemo-ver2.blog.so-net.ne.jp/

から移転!

また書く気になるかな~

2016年2月18日木曜日

8桁の数値型の日付から前月末日の出し方 [RPG]

RPG4で8桁の数値型の日付から前月末日の出し方。

D W_TODAY S 8S 0 INZ(20160212)
D W_DAY S 8S 0
D W_DATE S 10D
D W_ZMYMD S 8S 0

C* 今月の1日を算出(2行に分けないと下2桁が消えない)
C EVAL W_DAY = W_TODAY / 100
C EVAL W_DAY = W_DAY * 100 + 1
C* 1日から1日を引いて前月末日を算出
C EVAL W_DATE = %DATE(W_DAY) - %DAYS(1)
C* 日付型から8桁の数値に変換
C EVAL W_ZMYMD = %SUBDT(W_DATE:*YEARS) * 10000
+ %SUBDT(W_DATE:*MONTHS) * 100
+ %SUBDT(W_DATE:*DAYS)

2016年1月30日土曜日

連番のフィールドの欠番を取得するクエリ [SQLServer]

連番のフィールドの欠番を取得するクエリ。

連続して欠番してても取得できて、データ量が多くても
そこそこ速いクエリになった気がする。

SELECT (T1.[FIELD] + 1) AS '開始欠番',
      (MIN(T2.[FIELD]) - 1) AS '終了欠番',
      (MIN(T2.[FIELD]) - 1) -
          (T1.[FIELD] + 1) + 1 AS '欠番数'
FROM (SELECT [FIELD]
      FROM [TABLE]
      WHERE ([FIELD] + 1)
            NOT IN (SELECT [FIELD]
                    FROM [TABLE]))
            AS T1
      INNER JOIN [TABLE] AS T2
             ON T2.[FIELD] > T1.[FIELD]
GROUP BY T1.[FIELD]
HAVING (T1.[FIELD] + 1) < MIN(T2.[FIELD])