fcmpact

addPrototypes

L'essentiel
Auf einen Blick
Die Erweiterung der SAS Viya-Plattform um spezifische Hochleistungsalgorithmen erfolgt primär über die addPrototypes-Funktion innerhalb des FCMP-Frameworks. Diese Schnittstelle dient als technischer Übersetzer, der externe, in C oder C++ geschriebene Bibliotheken für den CAS-Server zugänglich macht, indem er deren Signaturen formal registriert und somit für DS2-Routinen nutzbar macht. In unserer nachfolgenden Wissensdatenbank finden Sie detaillierte Antworten zur korrekten Deklaration dieser Schnittstellen und Best Practices, um externe Logikbausteine effizient in Ihre Analyseprozesse einzubinden.

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
bridgeCatchSignals Gibt an, dass die Bridge-Datei Code zum Installieren und Behandeln von Signalen enthalten soll.
bridgeFile Gibt den Pfad zum Quellmodul der PROTO-Bridge-Datei an.
encode Gibt an, dass die Prototyp-Definitionen in der gespeicherten Funktionstabelle kodiert werden.
funcTable Gibt die Tabelle an, in die die PROTO-Definitionen geschrieben werden.
library Gibt eine vorhandene FCMP-Bibliothek zum Laden an.
package Gibt den FCMP-Paketnamen an, der zum Speichern von PROTO-Definitionen verwendet wird.
routineCode Gibt den Code der PROTO-Definition an, der in der Tabelle gespeichert wird.
saveTable Gibt an, ob die FCMP-Tabelle gespeichert werden soll.
stdcall Gibt an, dass Funktionen unter Verwendung der __stdcall-Konvention aufgerufen werden sollen (nur Windows-PC).
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.

Kopiert!
1/* 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 Code wartet auf Validierung durch die Community
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 Code wartet auf Validierung durch die Community
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...