Basic認証に関する話ではありませんので悪しからず。
かつてのBASICは高水準言語として抽象化されていて扱いやすいのですが、抽象化されていない処理については当たり前ながら具体的な手続きを書く必要があります。以下のコードはQuickBASICでの例で、入力されたパスワードをアスタリスク(*)で表示するために行っていた処理です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| '/for QuickBASIC
'$lang: "qb"
'------- GUI パスワード入力サンプルプログラム
'------設定
CLS 0: WIDTH 80, 25
COLOR 1
pass$ = "abc" 'パスワード
word$ = "" '入力されたパスワード
inword$ = "" '入力途中のパスワード
'------変数の宣言
x = 21'x座標
y = 11 'y座標
r = 0 '一つづづ "*" を描くための座標
'------表示
CLS 0
LINE (140, 140)-(500, 195), 7, BF, 15
LINE (140 + 5, 140 + 5)-(500 - 5, 195 - 5), 1, B
start:
LOCATE y, x, 1'文字の座標へ移動
PRINT "ENTER PASSWORD :" '入力待ち
'------パスワード入力
in:
LOCATE y, x + 17 + r: inword$ = INPUT$(1)
IF inword$ = CHR$(8) THEN GOTO backspace 'BackSpace を押したとき
IF inword$ = CHR$(13) THEN GOTO yorn 'Enter を押したとき
IF r <= 22 THEN PRINT "*": r = r + 1 '"*" を描く
'------入力したパスワードを合成
word$ = word$ + inword$
'------パスワード入力に戻る
back:
inword$ = ""
GOTO in
'------バックスペース
backspace:
IF r >= 1 THEN r = r - 1 ELSE GOTO yorn
LOCATE y, x + 17 + r
PRINT " "
GOTO in
'------パスワードの比較・確認
yorn:
IF word$ = pass$ THEN GOTO exeexit
'------入力された情報の削除
word$ = ""
inword$ = ""
r = 0
CLS 2
GOTO start 'やりなおし
'------終了
exeexit:
CLS 0
END |
ある程度構造化してあるので判りやすいかと思います。このような処理は利用機会も多いのでクラスとして抽象化してしまえば再利用しやすいのですが、往年のQuickBASICにはそのような仕組みがなく、プログラムごとに手直しする必要がありました。昨今のBASICはオブジェクト指向を念頭に設計されているものが多いので、初期のBASICに比べれば格段に扱いやすくなっています。もっとも、FreeBASICではクラスの継承は「まだ」実装されていませんが…
それにしても、「パスワードを入力する」というUI自体は10年経っても20年経っても、それほど変わらないですね。