fcmpact addPrototypes

Volumentest: Migration einer umfangreichen wissenschaftlichen Legacy-Bibliothek

Scénario de test & Cas d'usage

Geschäftskontext

Ein pharmazeutisches Forschungsinstitut migriert seine Analyseplattform nach SAS Viya. Eine zentrale Komponente ist eine über Jahre gewachsene C-Bibliothek mit Dutzenden von statistischen und biochemischen Berechnungsroutinen. Dieser Test soll die Leistungsfähigkeit und Korrektheit der `addPrototypes`-Aktion bei der gleichzeitigen Registrierung einer großen Anzahl von Funktionen, die in einem einzigen Paket organisiert sind, sicherstellen.
Über das Set : fcmpact

Ausführung von SAS FCMP-Funktionen in der CAS-Umgebung.

Entdecken Sie alle Aktionen von fcmpact
Datenaufbereitung

Simulation der Deklaration mehrerer Prototypen, die verschiedene Funktionen einer wissenschaftlichen Bibliothek darstellen.

Kopiert!
1/* Annahme: Eine große C-Bibliothek 'libscience.so' enthält Funktionen wie:
2double compute_p_value(double z_score);
3int sequence_alignment(const char* seq1, const char* seq2);
4double molecular_weight(const char* formula);
5// ... und 30 weitere Funktionen ...
6*/

Étapes de réalisation

1
Hinzufügen von über 30 Funktionsprototypen zur CAS-Umgebung. Die Funktionen werden im Paket 'BioStat' gruppiert, um Namenskonflikte zu vermeiden und die Organisation zu verbessern.
Kopiert!
1PROC CAS;
2 ACTION fcmpact.addPrototypes /
3 routineCode={
4 "proto compute_p_value(double) link='c' return=double;",
5 "proto sequence_alignment(char[*], char[*]) link='c' return=int;",
6 "proto molecular_weight(char[*]) link='c' return=double;",
7 /* ... hier würden 30 weitere, syntaktisch korrekte Proto-Definitionen folgen ... */
8 "proto calculate_entropy(double[*]) link='c' return=double;"
9 }
10 package="BioStat"
11 funcTable={name="scientific_library", caslib="casuser", replace=true}
12 saveTable=true;
13RUN; QUIT;
2
Überprüfung, ob die Ausführung auch bei einer großen Anzahl von Routinen performant ist und ob alle Prototypen korrekt in der Zieltabelle unter dem angegebenen Paketnamen gespeichert wurden.
Kopiert!
1PROC CAS;
2 TABLE.fetch /
3 TABLE={name="scientific_library", caslib="casuser"},
4 where="_Package_ = 'BIOSTAT'";
5RUN; QUIT;

Erwartetes Ergebnis


Die Aktion verarbeitet die große Anzahl von Prototypen effizient und ohne Fehler. Die resultierende Tabelle 'scientific_library' enthält alle definierten Prototypen. Die Fetch-Abfrage, die nach dem Paket 'BIOSTAT' filtert, gibt alle hinzugefügten Funktionsdefinitionen zurück und bestätigt, dass der `package`-Parameter korrekt angewendet wurde.