このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1269704830/946
#   
#  質問です。メモ帳のデータをfortranで読み込んだ後、指定したデータを掛け算し、 
#  その合計値を算出したいいのですが、どのようにプログラミングしたらいいでしょうか? 
#   
#  depth   0,  5 cm  P, S, P+S 
#     1  .000E+00  .121E+06  .121E+06  .000E+00  .859E+06  .859E+06   
#     2  .320E+02  .325E+06  .325E+06  .170E+02  .798E+06  .798E+06   
#     3  .300E+01  .671E+06  .671E+06  .100E+01  .116E+07  .116E+07  
#     4  .247E+05  .173E+07  .175E+07  .120E+05  .160E+07  .161E+07  
#     5  .440E+06  .151E+07  .195E+07  .229E+06  .152E+07  .175E+07   
#     6  .146E+07  .474E+06  .194E+07  .793E+06  .899E+06  .169E+07  
#     7  .253E+07  .124E+06  .266E+07  .143E+07  .763E+06  .219E+07   
#     8  .329E+07  .280E+05  .332E+07  .191E+07  .757E+06  .267E+07   
#     9  .373E+07  .526E+04  .373E+07  .222E+07  .753E+06  .297E+07   
#    10  .391E+07  .315E+04  .392E+07  .239E+07  .732E+06  .312E+07   
#    11  .394E+07  .516E+05  .399E+07  .245E+07  .772E+06  .322E+07   
#    12  .387E+07  .910E+02  .387E+07  .245E+07  .636E+06  .309E+07   
#    13  .375E+07  .480E+02  .375E+07  .242E+07  .583E+06  .300E+07   
#    ↓ 
#   ↓ 
#   ↓ 
#   400  .000E+00  .000E+00  .000E+00  .000E+00  .000E+00  .000E+00 
#   
#  上記のデータの説明をさせていただきます。深さ0cmと5cmのそれぞれにP,S,P+Sという3種類のデータ 
#  が存在し、まず、5cmのP+Sのデータを縦に読み込み、X=1〜400とおいて各数字をX*50-25と変更した後、 
#  5cmのP+Sの行と対応した「1〜400の変更した値」で順番に掛けてその合計を計算するようにプログラミング 
#  したいのですが、うまくできず、困っています。 
#  (5cmのP+Sのデータは、左から数えて7番目のデータです。.859E+06から始まる行になります。) 
#   
#  具体的には、1〜400までの数字をそれぞれ1の場合、(1×50-25)×.859E+06という計算を縦に行っていき、 
#  (400×50-25)×.000E+00まで計算し、その合計値を算出できるようにプログラミングしたいと考えています。 
# 
# 

'5cmのP+Sのデータを縦に読み込み、X=1〜400とおいて各数字をX*50-25と変更した後、5cmのP+Sの行と対応した「1〜400の変更した値」で順番に掛けてその合計を計算する'(_ファイル名,_合計) :-
        '5cmのP+Sのデータを縦に読み込み、X=1〜400とおいて各数字をX*50-25と変更した後'(_ファイル名,L),
        findsum(Y,(
                    nth1(_nth,L,X),
                    Y is _nth * X),
                _合計).

'5cmのP+Sのデータを縦に読み込み、X=1〜400とおいて各数字をX*50-25と変更した後'(_ファイル名,L) :-
        get_lines(_ファイル名,[' '],LL),
        findall(X,(
                    member(L_1,LL),
                    nth1(7,L_1,X_1),
                    X is X_1 * 50 - 25),
                L).