Help us understand the problem. What is going on with this article?

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の登録商標

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした