?>Array ( [lang] => de [id] => 143 ) Volumentest: Migration einer umfangreichen wissenschaftlichen Legacy-Bibliothek - WeAreCAS
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.
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.