aop_getvale

aop_getvale liefert Werte von Applikations-Elementen. Gegenüber der Funktion aop_getval können weitere Vergleichsoperatoren und Wildcards verwendet werden. Weitere Informationen finden Sie in Chapter 8, Extended Query der ASAM-ODS Dokumentation.

nvSeq = aop_getvale(envId, reqType, repList, nsSeq, jdSeq, refDef, rowCnt, cl)

Returnwert

nvSeq ist ein Objekt mit folgendem Aufbau:

nvSeq.n >= 0
nvSeq[1].AOP_AIDNameV_Seq.n >= 0
nvSeq[1].AOP_AIDNameV_Seq[1].aid
nvSeq[1].AOP_AIDNameV_Seq[1].name
nvSeq[1].AOP_AIDNameV_Seq[1].unitId
nvSeq[1].AOP_AIDNameV_Seq[1].valMap.dtyp
nvSeq[1].AOP_AIDNameV_Seq[1].valMap.val

Das Element nvSeq[1].valMap.val enhält die Werte aller Instanzen als UniScript-Vektor.

Im Fehlerfall liefert die Funktion ein Error-Objekt (siehe error_create).

Parameter

envId

envId ist die Environment-ID, die von der Funktion aop_openenv geliefert wird.

reqType

regType ist ein skalarer Wert um den Zugriff über den der Datenzugriff gesteuert werden kann, z. B. blockweise zu lesen. C:

enum AOP_ReqType {
    RTDEFAULT = 0,
    RTOPEN = 1,
    RTCONTINUE = 2,
    RTCLOSE = 3,
};
repList

repList ist eine Liste mit den Attributen, für die Werte erfragt werden sollen. Die Liste hat den folgenden Aufbau (Beispiel für zwei Attribute):

// rlType = RLSELECTIVE;
repList = [. n = 2];
repList[1] = [.];
repList[1].aid = 6;
repList[1].name= "iName";
repList[1].unitId = 0;
repList[2] = [.];
repList[2].aid = 6;
repList[2].name= "Id";
repList[2].unitId = 0;

Falls alle Attribute erfragt werden sollen, kann eine Liste von aid (AOP_Id)
definiert werden:
// rlType = RLCOMPLETE;
repList = [5, 6];
nsSeq

nsSeq ist ein Array von AOP_AIDNameS-Strukturen. Damit können Suchbedingungen definiert werden. Sollen alle Elemte geliefert werden (select * from Test) wird nsSeq = 0 gesetzt. Aufbau:

nsSeq.n
nsSeq[1].selOpcode
nsSeq[1].aid
nsSeq[1].name
nsSeq[1].valMap.dtyp
nsSeq[1].valMap.val
nsSeq[1].dir

C:
struct AOP_AIDNameS {
    AOP_SelOpcode selOpcode;
    AOP_Id aid;
    AOP_Name name;
    AOP_ValMap valMap;
    AOP_SortDir dir;
};

UniScript:
nsSeq = [. n=1];
nsSeq[1] = [.];
nsSeq[1].selOpcode = ODS_SOLIKE;
nsSeq[1].aid = 6; // Test
nsSeq[1].name = "iName";
nsSeq[1].valMap = [.];
nsSeq[1].valMap.dtyp = ODS_DT_STRING;
nsSeq[1].valMap.val = "T*";
nsSeq[1].dir = 0;  // 0=Ascending, 1=Decending
jdSeq

jdSeq enthält die Join-Definitionen. Sollen keine Joins ausgewertet werden, wird jdSeq = 0 gesetzt.

refDef

refDef enthält die Referenz-Definition. Soll keine Referenz definiert werden wird refDef = 0 gesetzt. Die Struktur hat in UniScript den folgenden Aufbau:

refDef = [.];
refDef.refName =
refDef.fromAid =
refDef.elemID_aid =
refDef.elemID_iid =
rowCnt

rowCnt ist die maximale Anzahl an Records, die zurück gelierfert werden sollen. Der Wert -1 liefert alle Records.

cl

cl ist der Client-Pointer, der von der Funktion rpc_clnt_create geliefert wird.

Beispiel

def test_aop_getvale()
{
    aop = aop_create(FALSE);  // Connects to the server
    nuSeq = [. n=1, 1 = [. name = "WILDCARD_ONE", unitId = 0]];
    nvSeq = aop_getpar(aop.envId, nuSeq, aop.cl)
    a = nvSeq[1];
    ssWildCard_One = a.valMap.val;
    nuSeq = [. n=1, 1 = [. name = "WILDCARD_ALL", unitId = 0]];
    nvSeq = aop_getpar(aop.envId, nuSeq, aop.cl)
    a = nvSeq[1];
    ssWildCard_All = a.valMap.val;
    reqType = 1;
    repList = 0;
    // rlType = RLSELECTIVE;
    repList = [. n = 2];
    repList[1] = [.];
    repList[1].aid = 6;
    repList[1].name= "iName";
    repList[1].unitId = 0;
    repList[2] = [.];
    repList[2].aid = 6;
    repList[2].name= "Id";
    repList[2].unitId = 0;
    // To read all attributes (RLCOMPLETE);
    // repList = [6];
    nsSeq = [. n=1];
    nsSeq[1] = [.];
    nsSeq[1].selOpcode = ODS_SOLESSEQ; // ODS_SOGREATEREQ;
    nsSeq[1].aid = 6; // Test
    nsSeq[1].name = "iStartTime";
    nsSeq[1].valMap = [.];
    nsSeq[1].valMap.dtyp = ODS_DT_STRING;
    nsSeq[1].valMap.val = "20060220163014";
    nsSeq[1].dir = 0;
/*
    nsSeq[1] = [.];
    nsSeq[1].selOpcode = ODS_SOLIKE;
    nsSeq[1].aid = 6; // Test
    nsSeq[1].name = "iName";
    nsSeq[1].valMap = [.];
    nsSeq[1].valMap.dtyp = ODS_DT_STRING;
    nsSeq[1].valMap.val = "T*";
    nsSeq[1].dir = 0;
*/
    jdSeq = 0;
    refDef = 0;
    rowCnt = -1;
    nvSeq = aop_getvale(aop.envId, reqType, repList, nsSeq, jdSeq, refDef, rowCnt, aop.cl)
    if (type(nvSeq) == "error") {
        return ;
    }
    // print to command window:
    if (nvSeq.n > 0) {
        for (iSeq in 1:nvSeq.n) {
            a = nvSeq[iSeq];
            for (i in 1:a.n) {
                b = a[i];
                print b.name + "="
                print b.valMap.val
            }
        }
    }
}

History

Version Beschreibung
5.9.0 Neu

Siehe auch

Überblick ASAM-ODS

id-128083