Road Bike's Log

40歳からロードバイクを始めてPBP完走を目指すナウでヤングなお父さんのブログ

 

TI-Connectの使い方

今回は自転車はありません。

TI-84 Plus CEでプログラムを転送する方法の解説です。
TI-Connectを使って転送しますが、Plus CEの場合はCE用のTI-Connectじゃないと動きません。

https://education.ti.com/en/us/products/computer_software/connectivity-software/ti-connect-ce-software/tabs/overview


Windows用、Mac用それぞれありますが、見た目はほとんど同じなのでとりあえず今MacなのでMac用のスクリーンショットを使います。


20160506-1.png
ではまず起動から。
TI-ConnectCEを起動するのこの画面になります。
中央に、1台以上のグラフ関数電卓をUSBケーブルで接続するようにとの表示があります。


20160506-2.png
1台つなぎました。
左側に接続した計算機が表示されます。
ここで、一番左側のグレーになった部分はタブで機能を切り替えるようになっていて、それぞれ下記の機能となります。

SCREEN CAPTURE・・・接続している計算機の画面スクリーンショットを取得

使用方法は、スクリーンショットを取得したい計算機の横にあるカメラアイコンを押すだけです。
そうすると、メイン画面の部分にどんどんスクリーンショットが保存されていきます。ただし、アセンブリプログラムの動作中の画面はうまく撮影できません。


20160506-6.png
こんな具合に勝手にファイル名がついて押した回数だけ保存されていきます。




CALCURATOR EXPLORER・・・接続している計算機のファイルを見ることができます。

ここでファイルのアップロード、ダウンロードも簡単にできます。


20160506-3.png
こんな感じで表示されます。


20160506-7.png
例えば、計算機本体にあるファイルをパソコンに持ってくる場合は、ダウンロードしたいファイルをクリックして上のメニューバーにある、パソコンに矢印が入っていくアイコンをクリックします。
あとは保存先を指定するだけでパソコン側に転送できます。


20160506-8.png
パソコンにあるファイルを転送したい場合は、上に並んでいるアイコンのパソコンから矢印がでているやつをクリックすると、このようなファイル選択画面が出てきます。
目的のファイルをクリックして開くを押します。


20160506-5.png
するとこのようなダイアログが出てきますが、基本的にはそのままSENDボタンを押すだけでパソコンのファイルが計算機に転送されます。



PROGRAM EDITOR・・・TI電卓用のプログラムコードを書いてアップロードができます。

TI電卓のキー配列はQWERTYではないのでプログラムを書きにくいです。
パソコン上ならコピペもできるし、長いプログラムなどはこれで書いて転送した方が効率が良いとされています。
見える範囲も大きいので使い勝手は良いですが、自分はプログラムを少し書いては走らせて動作確認をしながら作るので、結局いつも電卓本体でプログラムを書いています。
また、制御用の関数などはTI-BASICでは部品のように扱われているので、テキストで直接書くのではなくてプログラムリストから選んで貼り付けるようなイメージになるので、正直プログラムエディターで劇的にスピードが上がるってこともありません。
なので自分はプログラムエディターは、出来上がったプログラムの見た目を美しくするためにしか使っていません(^^;


20160506-4.png
ここでこのようにプログラムを書いてから上のメニューバーにあるフロッピーディスクのようなアイコンをクリックして名前をつけて保存します。
そのファイルをCALCURATOR EXPLORERから転送してもいいのですが、プログラムエディターの画面から直接転送できます。
上のメニューバーの計算機に矢印が入っていくボタンを押すと、先ほどと同じファイル転送画面が出てくるので同じようにやれば計算機にプログラムが転送されます。


だいたいこれでファイルの送受信はできると思います。
カスタムOSなんかもここから転送になります。







スポンサーサイト



TI-84 Plus CE のカスタムOS

今週末は鈴鹿エンデューロです。
自転車に乗るのは1ヶ月以上ぶりになりますが大丈夫でしょうか。なんだか雨の予感ですがまあ行くだけは行って、土砂降りなら左側を超安全運転で1周ぐらいはしてこようかと思います。


IMG_1760.jpg
自転車をエンデューロ仕様にしました。
が、めんどくさいのでトップチューブバッグとサドルバッグとツールボトルを外しただけです。
なんかタイヤが平らになってきてますが、滑らないことを祈りながら走りましょう。
チェーンもスプロケも黒いままですが、雨なので洗うのはエンデューロの後ですね。

ということで、行くからには可能な限り全力で楽しんできます(^^)/


で、1ヶ月も自転車に乗らずに何をしていたかというと、特に変わったことはしてません。ハロウィーンにユニバーサルスタジオに行ったのが唯一のイベント的な感じでしょうか。
そしてグラフ関数電卓の TI-84 CE Plus 用のカスタムOSがリリースされたので入れてみました。


IMG_1761.jpg
こんな見た目になります。
ダウンロードはCemetechのこちらのページなどからできます。
で、ダウンロードしたらTI-Connectを使って転送します。
注意点は、OSの転送モードではなくてファイルの転送モードで転送になります。本体のOSそのものを入れ替えるんじゃなくて、エミュレーターみたいな感じで起動させる仕組みです。


Capture 1
インストールも起動も、CESIUMではなくこのAで起動になります。詳しくはダウンロードしたファイルにReadmeが入っているのでそちらを参照してください。
この画面は標準のOSですが、SUDOKUについているアスタリスクは、このプログラムがアーカイブされているという表示です。
上のCesiumのスクリーンショットでは右側の四角囲みの中のチェックボクスで状態を見ることができます。また、ALPHAボタンを押すことで直ちに有効/無効の切り替えができます。これ非常に便利です。


Capture 2
ちなみに標準OSではアーカイブされているプログラムをそのまま起動しようとするとエラーになって、先に2nd+Memからアンアーカイブしなさいってメッセージが出てきます。


Capture 3
2nd+Memするとこの画面になるので、5でアーカイブ、6でアンアーカイブです。


Capture 4
こんな感じで、アンアーカイブしたいプログラムを呼び出して実行すれば起動できるようになります。
が、Cesiumではアーカイブされているプログラムでもそのまま起動してくれます。
また、プログラムの編集ロック機能もあるので間違って編集する事故を防いでくれます。結構やるんですよね(^^;


IMG_1762.jpg
これがSUDOKUです。メモ機能とかないので難易度高めです。

以上です。以外とTI-84でのアクセスがあるので、日本でももうちょっと盛り上がってくれるのを願っています(^^)



動画も撮影しました。





リース計算機

まだまだ暑いですが、少しずつマシな気候になってきました。
朝晩は窓を開けていると寒くなるぐらいの感じですね、そろそろサイクリングに良い季節になるし、ツールド西美濃の日も迫ってきているのでいっちょ100kmばかりウォーミングアップで走っておきたいところです。


IMG_1515.jpg
先日思い出したように4月18日の金沢ブルベのメダルが届きました。


IMG_1516.jpg
おフランスからブルベカードに認定シールが貼られて返送されてきます。
11時間9分だったんですよね、もうちょっと頑張れば11時間切れるので平地主体のブルベがあったら時間短縮に挑戦してみることにしましょう。


さて、マイナンバーだの予算だのと仕事ネタがあって暇を持て余すことがなく1日が短く感じる日々が続いていますが、リースの金額やら料率やらを計算機をぴこぴこして計算するのをプログラムで簡単にできないかと思って今度はリース計算プログラムを作ってみました。

今回は条件分岐が多いのと設定項目が多いのでわりと行数の多いプログラムになりました。
物件価格、リース期間は必須で、そこから料率をいれると月額、月額をいれるとリース料率を計算するように作りました。
見積書に月額が書いてあるけどリース料率が書いてないのが多いんですよね。イランと言われればイランのですが、予算説明するときに料率聞かれる事があるから情報としては押さえておきたいです。


ではまずはプログラムから。
パートごとに見やすくするために空白行を入れました。


0→P ←とりあえず変数を全部0リセット。(物件価格)
0→T ←(期間
0→R ←(料率)
0→M ←(月額)

Lbl H
ClrHome
Menu("SELECT MENU","PROPERTY PRICE",1,"LEASE TERM",2,"LEASE RATE (EITHER 1)",3,"MONTHLY FEE (EITHER 1)",4,"CALCULATE",5,"STATUS",6,"QUIT",7 ←メニューは最大7個までみたいです。

Lbl 1 ←こっから物件価格をセットするパート
Disp "ENTER PRICE"
Disp "
Disp "(CURRENT VALUE)",P ←現在セットされている金額を表示
Input ":",P
Output(8,2,"PRICE STORED"
Output(10,8,"PRESS ENTER"
Pause
Goto H

Lbl 2 ←こっから期間をセットするパート
Disp "ENTER LEASE TERM"
Disp "
Disp "(CURRENT VALUE)",T
Disp "(YEARS)"
Input ":",T
T*12→T ←入力された年数を月数に変更
Output(8,2,"TERM STORED"
Output(10,8,"PRESS ENTER"
Pause
Goto H

Lbl 3 ←ここから料率をセットするパート
Disp "ENTER LEASE RATE"
Disp "
Disp "(CURRENT VALUE)",R
Disp "(PERCENT)"
Input ":",R
R/100→R ←%で入力された料率を少数表記に変更
Output(8,2,"RATE STORED"
Output(10,8,"PRESS ENTER"
Pause
Goto H

Lbl 4 ←ここから月額をセットするパート
Disp "ENTER MONTHLY FEE"
Disp "
Disp "(CURRENT VALUE)",M
Input ":",M
Output(8,2,"FEE STORED"
Output(10,8,"PRESS ENTER"
Pause
Goto H

Lbl 5 ←ここから計算パート
If P=0 ←物件価格がセットされていない場合警告表示
Then
Output(3,2,"SET PROPERTY PRICE"
Output(9,8,"PRESS ENTER"
Pause
Goto H
Else
If M=0 and R≠0 ←料率がセットされていて月額がセットされていない場合
Then
ClrHome
Disp "LEASE RATE",R
Disp "MONTHRY FEE",P*R
Disp "NUMBER OF PAYMENT",T
Disp "TOTAL PRICE",P*R*T
Output(10,8,"PRESS ENTER"
Pause
Goto H
Else
If R=0 and M≠0 ←月額がセットされていて料率がセットされていない場合
Then
ClrHome
Disp "LEASE RATE",M/P
Disp "MONTHRY FEE",M
Disp "NUMBER OF PAYMENT",T
Disp "TOTAL PRICE",M*T
Output(10,8,"PRESS ENTER"
Pause
Goto H
Else ←料率と月額が両方セットされているか、どちらもセットされていない場合は警告
Output(3,2,"YOU SHOULD ENTER"
Output(5,3,"RATE OR MONTHLY FEE"
Output(9,8,"PRESS ENTER"
Pause
Goto H

Lbl 6 ←現在セットされている数値を一覧表示するパート
Disp "PROPEPTY PRICE",P
Disp "LEASE TERM",T
Disp "LEASE RATE",R
Disp "MONTHLY FEE",M
Output(10,8,"PRESS ENTER"
Pause
Goto H

Lbl 7 ←プログラム終了のパート
ClrHome
Stop



とこんな感じで、長いけど単純な作業の繰り返しになっています。
最初、変数をリセットするパートも作りましたがメニュー関数は7個までしか扱えないようで使えませんでした。
その代わり、それぞれのセットパートで現在の設定値を表示できるようにしました。
リセットを入れたい場合は設定値の一覧表示部分と入れ替えれば良いかと思います。その場合は、先頭にラベル(Lbl Tとか)を入れて、ClrHomeしてからGotoすれば良いと思います。

計算部分はIF関数をネストしています。うまく動いているのかわかりませんが、今の所試算の状態ではきちんと条件分岐しているようです。実地でのサンプリングが集まってくると修正が必要になってくるかもしれません。

Lbl 5パートを分かりやすく且つ美しくビジュアル化するとこうなります。
IMG_1517.jpg
まあ、今の所想定通りに動いています。


Capture 1_20150828
起動後の画面。
料率と月額はどっちか1個ねと表示してあります。毎度のことながら日本語が使えないのでそれっぽい英語にしてありますが、正しい表現方法知ってる方いましたらコメントなどで教えて下さい(^^)/


Capture 2_20150828
物件価格の入力画面。現在設定されている金額を表示しつつ金額入力を促します。


Capture 3_20150828
これはメニュー番号6の一覧表示画面。ここで今セットしてある数値を確認できるようにしてあります。


Capture 4_20150828
計算結果画面。
この計算の場合は料率がセットされていたので月額を計算して表示しています。

ということで、なんとなく動いています。
途中の計算をまだしっかり検証していませが、これからたくさんリースの実地資料が来るので検算しながら調整していきます。
あと、総額がセットされていない場合は警告を出しますが期間がセットされていなくても何事もなかったように0で計算しています。こいつは時間があるときに機能を追加して、まだ他にも警告関係で修正したい部分もあるので、完成したらまた追記します。


さて、今日もまた家に帰ってくるのは明日かな(^^;
なんとか駐輪場は今日のうちに出庫したいと思います。



消費税計算機

予算の見積書に消費税込みがあったり抜きがあったりして税抜きのやつなんかたまに消費税入れるのを忘れそうになります。
業者も値段持ってくるとき税抜きで持ってくるからたまに油断するんですよね、なんだか税抜き文化になかなか慣れません。
司法書士が会社名間違えて見積書持ってきたのにはちょっとびっくりしましたが、間違えられやすい会社名だからそこは大目に見ておきましょう。ついでに源泉後の金額での見積もりだったので修正してもらっていますが。

先日も月々25000円以内でリース見積もりもってこいって言ったら税抜き25000円で持ってきたのでまたやり直し。ごめんね税込25000円以内って言わなくて(^^;

普通に店で買い物するときも「全部でいくらになりますね〜」なんて言っていて、「お、それならいいかも」と思って買う意思を示すと消費税が乗っかってくるのに毎回ひっかかります(^^)
もう、総務マンの資質まったくなしですね。

いちいち頭の中で1.08倍するのめんどくさいので、支払総額をベースに話をするってのは難しいんでしょうかね。
まあ、1.1倍になれば計算簡単ですけどね。


ということで、年々簡単な暗算もできなくなってきているので早速TI-84で消費税計算のプログラムを作りました。
ピコピコ打ち込んでいるうちに暗算したほうが早そうな気もしますが、元の価格が小刻みだと暗算の難易度もあがることなのでこいつはちょっとは役にたつプログラムになりうるかもしれません。


〜その1〜

ClrHome
0.08→R ←税率の設定箇所
Lbl H
ClrHome
Menu("TAX CALCURATOR","ADD",1,"REMOVE",2,"QUIT",3)
Lbl 1 ←ここから消費税を加算するパート
Input "INPUT PRICE: ",A
Disp "
Disp " TAX",A*R
Disp " TOTAL",A+A*R
Output(9,8,"PRESS ENTER")
Pause
Goto H
Lbl 2 ←ここから消費税を減算するパート
Input "INPUT PRICE: ",B
int(B/(1+R))→C
Disp "
Disp "PRICE",C
Disp "TAX",B-C
Output(9,8,"PRESS ENTER")
Pause
Goto H
Lbl 3
ClrHome
Stop


消費税率は固定しているので、税率が変わったらコードの2行目を書き換えて対応になります。

Capture 1_20150825
起動時の画面。
メニューから、消費税の加算か減算を選択します。

Capture 2_20150825
加算の結果はこんな感じです。


Capture 3_20150825
こっちは減算。自分は1000÷1.08を暗算する自信がありません。


ところで、実は最初に作ったプログラムは消費税率をその都度設定するようにしました。
ただ、動作確認をしてみると、毎回計算の最初に消費税率を設定するのが実に無駄に思って上のプログラムを作り直したらすごいシンプルで使いやすくなりました。
しかし税率設定型プログラムは海外税率とかチップ計算とかに使えそうな気がするしせっかく頑張って作ったのでコードを載せておきます。


〜その2〜

0→T ←まず税率を0で初期化(初回起動時のみ)
Lbl H
ClrHome
Menu("TAX CALCULATER","SET RATE (REQUIRED)",1,"ADD TAX",2,"TAX REMOVE",3,"QUIT",4)
Lbl 1 ←ここから税率の設定パート
Disp "ENTER TAX RATE"
Input "(PERCENT): ",T
Output(4,2,"SET RATE 1") ←あとで1.08とか表示するための「1」
Output(4,12,T/100) ←上の1の後ろにパーセント入力した数値を100分の1で表示
Output(9,8,"PRESS ENTER")
Pause
Goto H
Lbl 2 ←ここから税額加算パート
If T=0 ←税率が設定されていなかったら警告を出して最初に戻る
Then
Output(3,3,"*** SET TAX RATE ***")
Output(9,8,"PRESS ENTER")
Pause
Goto H
Else ←税率が設定されていればここに進む
Input "ENTER PRICE: ",A
Disp "
Disp " TAX",int(A*T/100)
Disp " TOTAL",int(A+A*T/100)
Output(9,8,"PRESS ENTER")
Pause
Goto H
Lbl 3 ←ここから減算パート
If T=0
Then
Output(3,3,"*** SET TAX RATE ***")
Output(9,8,"PRESS ENTER")
Pause
Goto H
Else
Input "ENTER PRICE: ",C
int(C/(1+T/100))→D
Disp "
Disp " PRICE",D
Disp " TAX",C-D
Output(9,8,"PRESS ENTER")
Pause
Goto H
Lbl 4 ←quitの行き先
Stop


こんな感じです。
まず最初に税率を格納する変数に0を代入して初期化していますが、必要かどうかは正直わかりません。
通常変数に値を入れると計算機が記憶しているので、他の計算で最後に代入した値を記憶しているのではないかと思い念のため最初に0リセットしておきました。

税率の設定部分でT/100→Tしてしまうほうが後々便利だと思いますが、書き直すのも面倒なのでそのままにしてあります。


Capture 4_20150825
起動後の画面。
税率入力の分メニューが増えています。一応税率入力は必須と表示してあります。


Capture 5_20150825
税率入力していない状態で2か3を選ぶとエラー表示してトップに戻ります。


Capture 7_20150825
税率を入力すると1を追加して表示します。
あとはその1のプログラムと全く一緒です。


まあぶっちゃけてしまうとこれでピコピコ入力してる間に普通に1000x1.08とか計算機に入れればいいだけなんだけど、これでやると端数を切り捨ててくれます。ちょとだけ賢いですね。

あと、この計算機は日本語が使えないのでそれっぽい英語でメニュー等を表示していますが、本当はどんな単語になるのかわかりません。だれか知ってたら教えてください(^^)/



マイナンバー 検査プログラム

10月からマイナンバーの通知カードが順次送られてきますね。
当面は同梱されていると思われる返信封筒に申し込み用紙と写真を入れるとICチップ入りの個人番号カードが無料で発行されるので、皆さん是非忘れず申請しておきましょう。そのうち有料になると思います。
スマホで写真撮影してオンラインでも申請できる予定みたいです。

ところで、個人用マイナンバーは12桁の数字になる予定ですが、1の位はチェックディジットになるようです。
番号法に関する総務省令の第5条に算式が掲載されています。

〜まんま引用〜

第五条  令第八条の総務省令で定める算式は、次に掲げる算式とする。
算式
 11―(n=1(シグマ)11(Pn×Qn))を11で除した余り)
 ただし、(n=1(シグマ)11(Pn×Qn))を11で除した余り≦1の場合は、0とする。
算式の符号
 Pn 個人番号を構成する検査用数字以外の十一桁の番号の最下位の桁を1桁目としたときのn桁目の数字
 Qn 1≦n≦6のとき n+1 7≦n≦11のとき n―5



私立文系なのでイマイチ何を言ってるのかよくわかりませんが、

11
Σ(Pn x Qn)
n=1

ってのが大雑把な数式みたいです。
Σってのは、自分にはクリンゴンバードオブプレイに見えますが、シグマと読んで何かを足し算する記号のようです。
上下にコバンザメみたいなのがくっついていますが、下は変数の初期化、上がループ数の指定と言った理解でよろしいんでしょうか。
Pは個人番号の各桁から取り出した数値でQは条件付きでカウントアップ、ダウンされる数値のようです。あとは色々条件が付いてますね。

例えばマイナンバーが123456789018である場合、上から11桁を取り出して最下位がP1となるので、この場合1ですね。
その時のQは2という事かと思います。
結構簡単な計算なのでエクセルなど使えば一瞬でチェックする仕組みが作れますね。

で、せっかくなのでTI-84でチェックできるプログラムを作ってみました。
一般的なベーシック等とはちょっと違う文法なのでこちらのページで基本的なプログラミングをざっとお勉強しました。ステップバイステップで大変わかりやすく解説されていて良いと思います。


で、出来上がったのがこのプログラム。


Lbl H ←追加 しおり付けます
ClrHome ←画面まっさらにします
Lbl 1 ←しおり付けます
Disp "INPUT NUMBER 
Input ": ",N
If N>999999999999 or N<100000000000 ←12桁以外エラー出します
Then
Output(4,3,"ERROR!")
Output(6,4,"ENTER 12 DIGITS"
Pause
ClrHome
Goto 1 ←エラー出したらしおりに戻ります
Else
int(N/100000000000)→A ←こっからひたすら力技。
int(N/10000000000)-10A→B
int(N/1000000000)-100A-10B→C
int(N/100000000)-1000A-100B-10C→D
int(N/10000000)-10000A-1000B-100C-10D→E
int(N/1000000)-100000A-10000B-1000C-100D-10E→F
int(N/100000)-1000000A-100000B-10000C-1000D-100E-10F→G
int(N/10000)-10000000A-1000000B-100000C-10000D-1000E-100F-10G→H
int(N/1000)-100000000A-10000000B-1000000C-100000D-10000E-1000F-100G-10H→I
int(N/100)-1000000000A-100000000B-10000000C-1000000D-100000E-10000F-1000G-100H-10I→J
int(N/10)-10000000000A-1000000000B-100000000C-10000000D-1000000E-100000F-10000G-1000H-100I-10J→K
int(N-100000000000A-10000000000B-1000000000C-100000000D-10000000E-1000000F-100000G-10000H-1000I-100J-10K→L
A*6+B*5+C*4+D*3+E*2+F*7+G*6+H*5+I*4+J*3+K*2→M ←ここがΣ(Pn x Qn)の部分
If remainder(M,11)≤1 ←11で割ると余りが1以下の答えは0をセット
Then
0→Z
Goto 2 ←追加 ※これが無いと余りが1以下の場合ここでプログラムが停止するため
Else
11-remainder(M,11)→Z ←11で割った余りをセット
Lbl 2 ←追加 ※上記Gotoの行先
Disp "
Disp "Σ(P*Q)=",M
Disp "CHECK DIGIT =",Z
If L=Z
Then
Output(8,2,"=== OK! ==="
Pause
Goto H ←追加 先頭に戻ります
ClrHome ←削除
Else
Output(8,2,"*** WRONG! ***"
Pause
ClrHome ←削除
Goto H ←追加 先頭に戻ります


ざっくりとこんな感じです。
配列とか使ってなんとかしてみようと思ったけどやり方がわからなくて力技で実現しました。
コードは美しくないし動作確認もちょっとしかしてないので挙動は怪しいです。間違いが見つかったら適宜修正しますが、なんか気づいたらコメントで連絡ください。
そもそも計算方法が間違っているかもしれませんが(^^;
ごちゃごちゃ書いてあるのは見た目をちょっと綺麗にするための部分が多いです。

あと、この言語はリソースの少ない電卓用に命令が工夫されていて、クオーテーションやブレースの締め側を省略することができます。
例えば上のコードの中で、
Output(6,4,"ENTER 12 DIGITS"
て部分は最後の括弧を付け忘れていますがきちんと動きます。TI-84 Plus CEはメモリが大幅に増設されたから今回は見て直感的に分かりやすいように全部閉じてコードを書く方針でやりましたが、プログラムをコンパクトにするにはどんどん省略できるものは省略したほうが良いみたいです。
若干動きも速くなるのではないかと思います。


画面イメージはこんな感じです。

Capture 1_20150810
起動直後。ナンバー入れろと言ってプロンプトで促します。


Capture 5_20150810
12桁に満たないと12桁入れろってエラー出します。


Capture 4_20150810
12桁を越えても同じエラーです。


Capture 2_20150810
検算結果が合わない場合は間違い警告を出します。
一応 Pn x Qn の合計値とチェックディジットの数値も表示させました。


Capture 3_20150810
12345678901のチェックディジットは8になるようです。
という事で間違ってなければOKを出します。

動画撮影してみました。
初期プログラムなので追記後の動作はしていません。

さすがバックライト入りフルカラー液晶、明るいですね。
しかしテカってよく見えませんね(^^;


実際にマイナンバーを扱う際は厳重に管理しないといけないからエクセルでも管理しない予定だけど、今回は初回で大量に入力をしないといけないのでディジットチェック機能付きエクセルワークシートを作成しました。
そいつから管理システムに取り込みすれば多分早いですね。おそらく管理システムもメーカーがチェックディジットの機能を実装してくるかと思いますが、まあ作っておいて損はないからいいか。

で、計算機にこいつを入れるメリットは思いつきませんが、出先で見せられた個人番号カードが偽造じゃないか確認するぐらいでしょうか。
まだ始まってみないとわからないから今の所なんともわかりませんね。



<2015/8/11修正>

例えば444444444444の場合チェックディジットが0になって、最初のプログラムだとその時点で処理が終了する不具合があったのでGotoとLblを付けて修正しました。


<2015/8/12追記>

計算方法について

int(N/100000000000)→A
int(N/10000000000)-10A→B


こんな感じで各桁の数字を取り出していますが、プログラム内では下記のように計算されています。

123456789012/1000000000000=1.23456789012
これの整数部分(integer)のみ取り出すためintで少数以下を破棄して変数Aに1がセットされます。
次に123456789012/100000000000=12.3456789012となり、intにより12が取り出されるので、
そこから上位で計算したAの値を1桁シフトして10とし、12-10をすることで2を取り出します。
それ以降はこれを桁シフトを繰り返してどんどん連ねて、123456789012を1個ずつ取り出してA〜Lにセットしています。


<2015/8/20追記>

以前は計算が終了するとプログラム自体も終了していましたが、連続して動くように計算結果表示後にエンターを押すと最初に戻るようにしました。
終了させるには[2nd]+[quit]でプログラムから抜けます。


<2015/12/2追記>

マイナンバーが届きだしました。
扶養者のマイナンバーに記入間違いがないか確かめるために活用していますが、頭が0のマイナンバーだとエラーがでます。
突貫工事で修正するには、5行目の「If N>999999999999 or N<100000000000」部分の後ろの0を1個削ると計算してくれます。
ただし、11桁でもエラーを表示せずに計算してしまうので、時間があるときに別の方法を考えようと思います。

 
プロフィール

ゆあんこカロとー

Author:ゆあんこカロとー
自転車
 Cinelli Pro ESTRADA 
 Cannondale CAAD8 5 105
 RALEIGH Carlton N

イベント参加記録
2014
 AR中部 BRM315 200km 12h25m
 完走 (CAAD8)
 AR中部 BRM412 300km 18h21m
 完走 (CAAD8)
 ツール・ド・西美濃 120km
 完走 (ESTRADA)
 AUDAX近畿 BRM1004 200km 11h38m
 完走 (ESTRADA)
 鈴鹿エンデューロ 2014/11/15
 4Hロード 146位 (ESTRADA)
2015
 AUDAX近畿 BRM418 200km 11h09m
 完走(ESTRADA)

年別アーカイブ
検索フォーム
ブロとも申請フォーム
QRコード
QR
ランキング

12345678910111213141516171819202122232425262728293031 10