Here's an implementation using expl3
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\glagonumeral}{m}{\glago_numeral:n { \int_eval:n { #1 } } }
\seq_new:N \l_glago_digits_seq
\int_new:N \l_glago_position_int
\cs_new_protected:Npn \glago_numeral:n #1
{
\cs_set:Npn \glago_reverse_ten: { }
\seq_set_split:Nnx \l_glago_digits_seq { } { #1 }
\int_set:Nn \l_glago_position_int {\seq_length:N \l_glago_digits_seq - 1 }
\seq_map_inline:Nn \l_glago_digits_seq
{
\glago_symbol:x { \glago_make_digit:nn { ##1 } { \l_glago_position_int } }
\int_decr:N \l_glago_position_int
}
\glago_reverse_ten:
}
\cs_generate_variant:Nn \seq_set_split:Nnn {Nnx}
\cs_new:Npn \glago_make_digit:nn #1 #2
{
#1 \prg_replicate:nn { \l_glago_position_int } { 0 }
}
\cs_new:Npn \glago_symbol:n #1
{
\int_compare:nTF { #1 == 10 }
{
\cs_set:Npx \glago_reverse_ten: { \prop_get:Nn \g_glago_numerals_prop { #1 } }
}
{
\prop_get:Nn \g_glago_numerals_prop { #1 }
}
}
\cs_generate_variant:Nn \glago_symbol:n {x}
\prop_new:N \g_glago_numerals_prop
\prop_put:Nnn \g_glago_numerals_prop {0}{\textcompwordmark}
\prop_put:Nnn \g_glago_numerals_prop {1}{A}
\prop_put:Nnn \g_glago_numerals_prop {2}{B}
\prop_put:Nnn \g_glago_numerals_prop {3}{C}
\prop_put:Nnn \g_glago_numerals_prop {4}{D}
\prop_put:Nnn \g_glago_numerals_prop {5}{E}
\prop_put:Nnn \g_glago_numerals_prop {6}{F}
\prop_put:Nnn \g_glago_numerals_prop {7}{G}
\prop_put:Nnn \g_glago_numerals_prop {8}{H}
\prop_put:Nnn \g_glago_numerals_prop {9}{I}
\prop_put:Nnn \g_glago_numerals_prop {00}{\textcompwordmark}
\prop_put:Nnn \g_glago_numerals_prop {10}{J}
\prop_put:Nnn \g_glago_numerals_prop {20}{K}
\prop_put:Nnn \g_glago_numerals_prop {30}{L}
\prop_put:Nnn \g_glago_numerals_prop {40}{M}
\prop_put:Nnn \g_glago_numerals_prop {50}{N}
\prop_put:Nnn \g_glago_numerals_prop {60}{O}
\prop_put:Nnn \g_glago_numerals_prop {70}{P}
\prop_put:Nnn \g_glago_numerals_prop {80}{Q}
\prop_put:Nnn \g_glago_numerals_prop {90}{R}
\prop_put:Nnn \g_glago_numerals_prop {000}{\textcompwordmark}
\prop_put:Nnn \g_glago_numerals_prop {100}{S}
\prop_put:Nnn \g_glago_numerals_prop {200}{T}
\prop_put:Nnn \g_glago_numerals_prop {300}{U}
\prop_put:Nnn \g_glago_numerals_prop {400}{V}
\prop_put:Nnn \g_glago_numerals_prop {500}{W}
\prop_put:Nnn \g_glago_numerals_prop {600}{X}
\prop_put:Nnn \g_glago_numerals_prop {700}{Y}
\prop_put:Nnn \g_glago_numerals_prop {800}{Z}
\prop_put:Nnn \g_glago_numerals_prop {900}{@}
\ExplSyntaxOff
\newcommand{\glagovalue}[1]{\glagonumeral{\number\value{#1}}}
\renewcommand{\thesection}{\glagovalue{section}}
\begin{document}
\tableofcontents
\section{A section}
\setcounter{section}{100}
\section{Another}
\glagonumeral{909}
\glagonumeral{1} --
\glagonumeral{2} --
\glagonumeral{3} --
\glagonumeral{4} --
\glagonumeral{5} --
\glagonumeral{6} --
\glagonumeral{7} --
\glagonumeral{8} --
\glagonumeral{9} --
\glagonumeral{10} --
\glagonumeral{11} --
\glagonumeral{12} --
\glagonumeral{13} --
\glagonumeral{14} --
\glagonumeral{15} --
\glagonumeral{16} --
\glagonumeral{17} --
\glagonumeral{18} --
\glagonumeral{19} --
\glagonumeral{20} --
\glagonumeral{21} --
\glagonumeral{22} --
\glagonumeral{312} --
\glagonumeral{321} --
\glagonumeral{322}
\end{document}
What you have to do now is to change the letters I've used for the digits into suitable commands giving the appropriate glagolitic letters.
You can use \glagovalue{<counter>} just like \arabic{<counter>}.
Note: this version correctly sets 12 to "AJ", while 21 becomes "KA".
Important change
Due to the changes made to expl3 in Summer 2012, \seq_length:N should be replaced by \seq_count:N
\cs_new_protected:Npn \glago_numeral:n #1
{
\cs_set:Npn \glago_reverse_ten: { }
\seq_set_split:Nnx \l_glago_digits_seq { } { #1 }
\int_set:Nn \l_glago_position_int {\seq_count:N \l_glago_digits_seq - 1}
\seq_map_inline:Nn \l_glago_digits_seq
{
\glago_symbol:x { \glago_make_digit:nn { ##1 } { \l_glago_position_int } }
\int_decr:N \l_glago_position_int
}
\glago_reverse_ten:
}