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 回答