読者です 読者をやめる 読者になる 読者になる

本履歴

購入した古本の履歴と時々プログラミング

本買いました。

購入した本についに(!)13桁ISBNがお目見えしたので、急遽Bookshelf DBの改修を行った。
といっても、フィールドを作って、10桁から13桁に変換するようにInputTranslationに以下のコードを追加しただけ:

@If(
	ISBN13!="";
	@ThisValue;
	ISBN="";
	@ThisValue;
	@Length(ISBN)!=10;
	"";
	@Do(
		@Set("temp";@Left(ISBN;9));
		@Set("temp1";@TextToNumber(@Middle(temp;0;1)));
		@Set("temp2";@TextToNumber(@Middle(temp;1;1)));
		@Set("temp3";@TextToNumber(@Middle(temp;2;1)));
		@Set("temp4";@TextToNumber(@Middle(temp;3;1)));
		@Set("temp5";@TextToNumber(@Middle(temp;4;1)));
		@Set("temp6";@TextToNumber(@Middle(temp;5;1)));
		@Set("temp7";@TextToNumber(@Middle(temp;6;1)));	
		@Set("temp8";@TextToNumber(@Middle(temp;7;1)));		
		@Set("temp9";@TextToNumber(@Middle(temp;8;1)));
		@Set("TempCD";@Modulo(38+(temp1+temp3+temp5+temp7+temp9)*3+(temp2+temp4+temp6+temp8);10));
		@Set("CD";@Text(@If(TempCD=0;0;10-TempCD)));
		"978"+temp+CD 		
	)
)

For文なんて使わ(え)ない力ずくの計算。@式は可読性が悪いので。
9+7*3+8=38だす。