search
LoginSignup
0

More than 1 year has passed since last update.

posted at

IchigoJamでバーコード(JAN)作成

何をするのか

7桁または12桁の数字を入力してもらい、
チェックディジットを補って8桁または13桁のJANコード(商品の識別などによく使われるバーコード)を出力する。

実行結果

YouTube動画 (0分43秒)
実行結果(YouTube)

ソースコード

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 web by WebAssembly

※「IchigoJam」はjig.jpの登録商標

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0