?> addPrototypes - WeAreCAS
fcmpact

addPrototypes

Beschreibung

Fügt die PROTO-Definitionen hinzu und speichert sie in einer Tabelle. Diese Aktion ist entscheidend für die Integration von externem Code (wie C oder C++) in die CAS-Umgebung, indem sie die Schnittstellen (Prototypen) dieser externen Routinen deklariert, sodass sie von CASL oder anderen Aktionen aufgerufen werden können.

fcmpact.addPrototypes <result=results> <status=rc> / bridgeCatchSignals=TRUE | FALSE, bridgeFile="string", encode=TRUE | FALSE, funcTable={casouttable}, library="string", package="string", routineCode={"string-1" <, "string-2", ...>}, saveTable=TRUE | FALSE, stdcall=TRUE | FALSE;
Einstellungen
ParameterBeschreibung
bridgeCatchSignalsGibt an, dass die Bridge-Datei Code zum Installieren und Behandeln von Signalen enthalten soll.
bridgeFileGibt den Pfad zum Quellmodul der PROTO-Bridge-Datei an.
encodeGibt an, dass die Prototyp-Definitionen in der gespeicherten Funktionstabelle kodiert werden.
funcTableGibt die Tabelle an, in die die PROTO-Definitionen geschrieben werden.
libraryGibt eine vorhandene FCMP-Bibliothek zum Laden an.
packageGibt den FCMP-Paketnamen an, der zum Speichern von PROTO-Definitionen verwendet wird.
routineCodeGibt den Code der PROTO-Definition an, der in der Tabelle gespeichert wird.
saveTableGibt an, ob die FCMP-Tabelle gespeichert werden soll.
stdcallGibt an, dass Funktionen unter Verwendung der __stdcall-Konvention aufgerufen werden sollen (nur Windows-PC).
Datenaufbereitung
Keine spezifische Datenerstellung erforderlich

Die Aktion `addPrototypes` erfordert keine Eingabedaten, da sie Definitionen erstellt und nicht auf Daten operiert. Die Beispiele zeigen, wie Prototypen in einer CAS-Tabelle gespeichert werden.

/* Für diese Aktion ist keine Datenerstellung erforderlich. */

Beispiele

Dieses Beispiel definiert einen einzelnen Prototyp für eine externe C-Funktion namens 'mycfunc' und speichert ihn in der CAS-Tabelle 'myprotos'.

SAS® / CAS-Code
Kopiert!
1PROC CAS;
2 ACTION fcmpact.addPrototypes /
3 routineCode={"proto mycfunc(double, double) link='c' return=double;"}
4 funcTable={name="myprotos", caslib="casuser", replace=true};
5RUN; QUIT;
Ergebnis :
Die Aktion erstellt eine Tabelle namens 'myprotos' in der 'casuser'-Caslib. Diese Tabelle enthält die Definition des Prototyps für 'mycfunc'. Das CAS-Log zeigt eine Erfolgsmeldung an.

Dieses Beispiel definiert zwei Prototypen, 'myadd' und 'mysub', innerhalb eines FCMP-Pakets namens 'mymath'. Die Definitionen werden kodiert (`encode=true`) und in der Tabelle 'encodedProtos' gespeichert, um das geistige Eigentum zu schützen.

SAS® / CAS-Code
Kopiert!
1PROC CAS;
2 ACTION fcmpact.addPrototypes /
3 routineCode={"proto myadd(double, double) link='c' return=double;", "proto mysub(double, double) link='c' return=double;"}
4 package="mymath"
5 encode=true
6 funcTable={name="encodedProtos", caslib="casuser", replace=true};
7RUN; QUIT;
Ergebnis :
Eine Tabelle namens 'encodedProtos' wird in der 'casuser'-Caslib erstellt. Sie enthält die kodierten Prototyp-Definitionen für die Funktionen 'myadd' und 'mysub', die im Paket 'mymath' gruppiert sind. Das Log bestätigt die erfolgreiche Ausführung und die Kodierung der Prototypen.

FAQ

Was bewirkt die Aktion `addPrototypes`?
Welchen Zweck hat der Parameter `routineCode`?
Wofür wird der Parameter `funcTable` verwendet?
Was macht der `encode`-Parameter?
Was ist der `bridgeFile`-Parameter?
Wofür wird der `package`-Parameter verwendet?
Was bewirkt der `saveTable`-Parameter?

Zugehörige Szenarien

Anwendungsfall
Standardfall: Integration eines proprietären C-basierten Finanzpreis-Modells

Eine Investmentbank muss ein bestehendes, in C geschriebenes Preismodell für Derivate in ihre SAS Viya-Umgebung integrieren. Ziel ist es, die hochperformante C-Funktion direkt a...

Anwendungsfall
Volumentest: Migration einer umfangreichen wissenschaftlichen Legacy-Bibliothek

Ein pharmazeutisches Forschungsinstitut migriert seine Analyseplattform nach SAS Viya. Eine zentrale Komponente ist eine über Jahre gewachsene C-Bibliothek mit Dutzenden von sta...

Anwendungsfall
Grenzfall & Sicherheit: Schutz von geistigem Eigentum und Fehlerbehandlung

Ein Softwareanbieter lizenziert ein Set von Algorithmen für maschinelles Lernen (geschrieben in C++) an einen Kunden. Der Anbieter muss die Funktionsprototypen in der SAS Viya-U...