このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/470
#  [2]つぎの関数をつくる 
#  void zeroSuppress(char *src, char *dst, char pos, char flg) 
#  posは小数点を挿入する位置で1なら1桁目と2桁目の間に 
#  小数点があるものとしてゼロサプレスします。 
#  文字数<=posの場合処理しない。 
#  動きの例 
#  src = "0123456"、 pos = 1 →dst = "123456" 
#  src = "0012500" pos = 2 →dst ="12500" 
#  src = "0000001" pos = 3 →dst ="0001" 
#  src = "000B12" pos = 2 →dst ="000"(Bとそれ以降は無視) 
#  flg = 1だと\0でうめる 
#  src = "0000001" pos = 3 →dst = "\0\0\00001" 
# 
# 

頭部ゼロサプレス(_数字文字列,_小数点位置文字,_フラグ,_表示文字列) :-
        atom_chars(_数字文字列,_ならび),
        文字数値変換(_小数点位置文字,_小数点位置),
        ならび変換後の頭部ゼロサプレス(_ならび,_小数点位置,_フラグ,_表示ならび),
        atom_chars(_表示文字列,_表示ならび),!.

ならび変換後の頭部ゼロサプレス(_ならび,_小数点位置,_フラグ,_表示文字列) :-
        'B文字以下の除去'(_ならび,_ならび_1),
        整数部と小数点部を分離(_ならび_1,_小数点位置,_整数部ならび,_小数部ならび),
        '整数部頭部の変換'(_整数部ならび,_フラグ,_変換された整数部ならび),
        append(_変換された整数部ならび,['.'|_小数部ならび],_表示ならび),!.


文字数値変換(_小数点位置文字,_小数点位置) :-
        atom_to_term(_小数点位置文字,_小数点位置,_).

'B文字以下の除去'(_ならび_1,_ならび_2) :-
        append(_ならび_2,['B'|R],_ならび_1),!.
'B文字以下の除去'(_ならび,_ならび).

整数部と小数点部を分離(_ならび,_小数点位置,_整数部ならび,_小数部ならび) :-
        length(_小数部ならび,_少数点位置),
        append(_整数部ならび,_小数部ならび,_ならび),!.
整数部と小数点部を分離(_ならび,_小数点位置,_整数部ならび,_小数部ならび) :-
        'が7桁に満たない時は頭部にゼロを詰めておく'(_ならび,_頭部にゼロを詰めたならび),
        整数部と小数点部を分離(_頭部にゼロを詰めたならび,_小数点位置,_整数部ならび,_小数部ならび).

'が7桁に満たない時は頭部にゼロを詰めておく'(_ならび,_頭部にゼロを詰めたならび) :-
        length(_頭部にゼロを詰めたならび,7),
        append(L1,_ならび,_頭部にゼロを詰めたならび),
        all(L1,'0').

整数部頭部の変換([],_,[]).
整数部頭部の変換([A|R],_,[A|R]) :-
        \+(A = '0'),!.
整数部頭部の変換(['0'|R1],'1',['\000\'|R2]) :-
        整数部頭部の変換(R1,R2),!.
整数部頭部のコード変換(['0'|R1],_フラグ,[' '|R2]) :-
        \+(_フラグ = '1'),
        整数部頭部の変換(R1,R2).