何をするのか
7桁または12桁の数字を入力してもらい、
チェックディジットを補って8桁または13桁のJANコード(商品の識別などによく使われるバーコード)を出力する。
実行結果
ソースコード
10 'バーコード (JAN) サクセイ
20 LET[0],13,25,19,61,35,49,47,59,55,11,39,51,27,33,29,57,5,17,9,23,114,102,108,66,92,78,80,68,72,116,0,11,13,14,19,25,28,21,22,26
30 FORI=0TO15:P=0:FORJ=0TO3:IF(I>>J)&1P=3<<J<<J|P
40 NEXT:P=~P&255:FORJ=0TO7:POKE(#E0+I)*8+J,P:NEXT:NEXT:CLS:?"7ケタ マタハ 12ケタ ノ スウジ ヲ イレテ Enter":?">":N=0
50 C=INKEY()
60 IFC=10ANDN=7P=0:L=40:C=44:R=47:GOTO110
70 IFC=10ANDN=12P=[30+[40]]:L=41:C=47:R=52:GOTO110
80 IFC=8ANDN>0N=N-1:POKE#921+N,0
90 IFN<12AND47<CANDC<58[40+N]=C-48:POKE#921+N,C:N=N+1
100 GOTO50
110 D=0:FOR I=40 TO R-1:D=D+[I]*(1+(I+(N=7))%2*2):NEXT:[R]=(10-D%10)%10:POKE#921+N,[R]+48:GOTO150
120 S=16-B%16:T=60+B/16:B=B+M:IFS<MGOTO140
130 [T]=V<<(S-M)|[T]:RETURN
140 [T]=V>>(M-S)|[T]:[T+1]=V<<(16-M+S):RETURN
150 B=16+(N=7)*14:FOR I=60TO67:[I]=0:NEXT
160 V=5:M=3:GOSUB120
170 FOR I=LTOC-1:Q=P>>(5-I+L)&1:V=[10*Q+[I]]:M=7:GOSUB120:NEXT
180 V=10:M=5:GOSUB120
190 FOR I=CTOR:V=[20+[I]]:M=7:GOSUB120:NEXT
200 V=5:M=3:GOSUB120
210 FORI=#940TO#BBF:POKEI,#E0+([60+I%32/4]>>(12-I%4*4)&15):NEXT
220 LOCATE0,22
解説
バーコードの作り方は、主にJAN/EANを参考にした。
- 10行目
-
FILES
コマンドで表示するプログラムの内容を指定する。 - 20行目
-
バーコードのパターン情報を配列に格納している。
0~9に奇数パリティの左側の文字、10~19に偶数パリティの左側の文字、
20~29に右側の文字、30~39に13桁の最初の文字のパターン情報を格納している。 - 30~40行目
-
キャラクターコード#E0~#EFの文字を、バーコードを出力するための縦縞模様に設定する。
これらの模様はキャラクターコードの下位4ビットを反映しており、0を白、1を黒で表現している。 - 50~100行目
-
数字の入力を受け付ける。数字、Enter (LF)、Backspaceで操作できる。
数字が7桁または12桁入力されている状態でEnterを押すと、出力用のパラメータを指定して次の処理に移る。 - 110~130行目
-
V
の下位で指定される長さM
のビット列を、生成中のビット列に追加するサブルーチン。 - 140行目
- チェックディジットを計算し、入力された数字列の後ろに追加する。
- 150行目
- バーコードが真ん中に来るように出力の開始位置を設定し、出力先の配列を初期化する。
- 160~200行目
- 仕様に沿って、バーコードをビット列として配列に出力する。
- 210行目
- 配列のビット列を画面に出力する。
- 220行目
-
カーソルの位置を整え、プログラム終了時の
OK
の出力に備える。
IchigoJamとは
2,000円前後で購入することができ、BASICによるプログラミングが可能なパソコン。
こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円)
また、プログラムをWebブラウザ上で実行できるサービスもある。
※「IchigoJam」はjig.jpの登録商標