#!/usr/local/bin/ruby require "cgi-lib" input = CGI.new code = input["code"].to_s if code=="" code="000" end start_num = input["start"].to_s if start_num=="" start_num="1" end end_num="99999" print "Content-type:text/plain\n\n" t=0 for i in start_num..end_num if t>999 break; end t=t+1 num=sprintf("%05d", i) tmp_str="9784"+code check_num = tmp_str.to_s+sprintf("%05d", i) n1=check_num.slice(0,1).to_i n2=check_num.slice(1,1).to_i n3=check_num.slice(2,1).to_i n4=check_num.slice(3,1).to_i n5=check_num.slice(4,1).to_i n6=check_num.slice(5,1).to_i n7=check_num.slice(6,1).to_i n8=check_num.slice(7,1).to_i n9=check_num.slice(8,1).to_i n10=check_num.slice(9,1).to_i n11=check_num.slice(10,1).to_i n12=check_num.slice(11,1).to_i #µìISBN sum_old=(n4*10)+(n5*9)+(n6*8)+(n7*7)+(n8*6)+(n9*5)+(n10*4)+(n11*3)+(n12*2) check_digit_old= 11-(sum_old % 11) if check_digit_old == 10 then check_digit_old = "X" end if check_digit_old == 11 then check_digit_old = "0" end isbn_old = "ISBN4" + code + num.to_s + check_digit_old.to_s #¿·ISBN sum_new_odd=n1+n3+n5+n7+n9+n11 sum_new_even=n2+n4+n6+n8+n10+n12 sum_new = sum_new_odd+(sum_new_even*3).to_i check_digit_new=10-sprintf("%04d", sum_new).slice(3,1).to_i if check_digit_new == 10 then check_digit_new = "0" end isbn_new = "ISBN9784" + code + num.to_s + check_digit_new.to_s puts isbn_old + "," + isbn_new end