ごめんなさい。大失敗をしていました。>>485の説明に致命的な
誤りがあります。その説明の方が先になってしまいます。
何がちがっているかというと、このプログラムだと、
年月の検査が全く働きません。ここでは全データ2006年5月分だったから
よいのですが、もし、
売上(森下電気,'20060430',1000) :- !.
売上(山本商店,'20060501',3000) :- !.
売上(森下電気,'20060503',2000) :- !.
売上(山本商店,'20060514',2000) :- !.
売上(森下電気,'20060517',4000) :- !.
第一節を追加しました。
だとすると、
?- 売上(森下電気,A,B),atom_part(A,1,6,'200605'). は
この第一節の4月分データで日付検査が進んでしまって、atom_partが偽と
なります。しかし、売上の定義には!が打ってありますから、
そのまま、この質問は偽となってしまいます。森下電気の5月分売上はなし!
まずいですね。

ちょっと仕事の時間になってしまいました。昼休みにつづきを書きます。