1

単一の列テーブル「コントラクト」をループする割り当てがあり、ループごとに、コントラクトの値を使用してプログラム「MyProgram」を呼び出します。最後に、すべてのループの結果を表に示します。

Indata:
=================
Contracts.dbf
=================
P01
C04
CH45
T31

Result:
===========================
ResultFile.dbf
===========================
P01   C04    CH45     T31
---------------------------
100    11    302     -872
9.63   0     45.2     342

各コントラクトの値は、コントラクトを引数として取り、タイトルと同じコントラクトで結果の列を生成する MyProgram で生成されます。したがって、MyProgram を使用してコントラクト P01 を与える

======
P01
------
100
9.63

これまでのところ、私のプログラムは次のようになります

SELECT distinct contract FROM bs_case
COPY TO contracts.dbf
    NbContracts =RECCOUNT()
    CLOSE TABLES

counter  = 1

DO WHILE counter < NbContracts
    && calling MyProgram ()
    counter = counter + 1
ENDDO

「Contracts.dbf」からコントラクト名を抽出できず、最終結果ファイル「ResultFile.dbf」を作成する方法がよくわかりません。

4

1 に答える 1

0

これを試してみてください。疑似ですが、動作するはずです:

******
SELECT 0
CREATE CURSOR MyResults ( columnName C(10), value1 I, value2 N(8,2) )  &&Result cursor
SELECT contracts
LOCATE   &&Go to top of file.
SCAN     &&start loop
     =MyProgram(FIELD(1), contracts.ColumnName)  &&Pass name of column and it's value
ENDSCAN

SELECT MyResults  &&View results.
BROWSE LAST NORMAL

PROCEDURE MyProgram(fieldname, value1)
    ***Do stuff to
    ***generate calculatedvalue1 and calculatedvalue2

    ***Insert name of column, value1 and value2
    INSERT INTO MyResults (columnName, value1, value2) ;
        VALUES(fieldname, calculatedvalue1, calculatedvalue2)
END PROC
于 2012-12-12T20:12:27.867 に答える