Передача набора данных в качестве аргумента для встраивания C++ в ECL

Я хочу передать набор данных в качестве аргумента встроенной функции C++. Этот фрагмент кода, кажется, работает, когда мы жестко кодируем набор данных. Набор данных представляет собой распыленный файл blk.dat типа BLOB, содержащий шестнадцатеричные данные.

Документация по отображению #ECL в C++

      inRec := { DATA1 id };
ds := DATASET([x'45', x'55'], inRec);

DATA traceDataset(DATASET(inRec) input) := EMBED(C++)
#include <stdio.h>
#include <unordered_map>
using namespace std;
#body
  __lenResult = 2;
  __result = (void *)(input+0);
ENDEMBED;

OUTPUT(traceDataset(ds)); //**The final output will be 4555**

Я не могу получить доступ к отдельным байтам этого набора данных в той же встроенной функции C++, когда набор данных предоставляется в качестве входных данных. Сообщение об ошибке'System error: 99: Attempt to execute an activity that has not been created'Показано.

      rawrec := RECORD
    DATA1 block
END;
rawds := DATASET('~.::bitcoinraw',rawrec,FLAT);

DATA traceDataset(DATASET(rawrec) input) := EMBED(C++)
#include <stdio.h>
#include <unordered_map>
using namespace std;
#body
  __lenResult = 2;
  __result = (void *)(input+0);
ENDEMBED;

OUTPUT(traceDataset(rawds));

0 ответов

Другие вопросы по тегам