Veröffentlicht am :
Administration CREATION_INTERNE

Extrahieren von Stored Process Quellcode über Metadaten

Dieser Code ist auch verfügbar auf: English Español Français
Attention : Dieser Code erfordert Administratorrechte.
Dieses Programm verwendet die SAS© Metadaten-Interface-Funktionen (OMF), um alle Stored Process Objekte (ClassifierMap) zu suchen, die eine 'SourceCode'-Notiz enthalten. Es ruft den Quellcodetext ab und schreibt ihn in das SAS©-Log. Das Skript enthält auch eine auskommentierte Logik, um Suchen-und-Ersetzen-Operationen am Quellcode durchzuführen und die Metadaten zu aktualisieren. Hinweis: Dieser Code ist spezifisch für Umgebungen mit einem SAS© 9 Metadaten-Server (Legacy-Kompatibilität).
Datenanalyse

Type : CREATION_INTERNE


Die Daten stammen direkt aus den Abfragefunktionen des SAS Metadaten-Servers (metadata_resolve, etc.). Es ist keine externe Tabelle erforderlich.

1 Codeblock
DATA STEP
Erklärung :
DATA _NULL_-Schritt, der mit dem Metadaten-Server interagiert. Er definiert eine 'omsobj'-Abfrage, um Stored Processes zu finden, iteriert über die Ergebnisse, extrahiert die zugehörigen Notizen, identifiziert die mit 'SourceCode' benannte und ruft das Attribut 'StoredText' (den Code) ab. Das Ergebnis wird im Log angezeigt.
Kopiert!
1DATA _null_;
2 
3/* Initialize the variables. */
4 
5 LENGTH program newprog $ 32587 type id $ 50 sp_uri $ 38 note_uri $ 34 note_name $ 255;
6 call missing(of _character_);
7 
8/* Define a query that will return only Stored Process objects with an associated source code TextStore object. */
9
10 sp_obj="omsobj:ClassifierMap?ClassifierMap[ @PublicType='StoredProcess'][Notes/TextStore[ @Name='SourceCode']]";
11
12/* Count how many objects meet that query. */
13
14 sp_count=metadata_resolve(sp_obj,type,id);
15
16/* If some exist, gather their information. */
17 
18 IF sp_count > 0 THEN DO i=1 to sp_count;
19
20/* Get the URI for each Stored Process object found that matches the query. */
21
22 rc=metadata_getnobj(sp_obj,i,sp_uri);
23
24/* Count how many notes are associated with the object. */
25
26 note_count=metadata_getnasn(sp_uri,"Notes",1,note_uri);
27
28/* If some exist, get their attributes. */
29
30 IF note_count > 0 THEN DO j=1 to note_count;
31 
32
33 rc=metadata_getnasn(sp_uri,"Notes",j,note_uri); /* get the URI of the note. */
34 rc=metadata_getattr(note_uri,"Name",note_name); /* get the name of the note. */
35
36/* If the Note's name is "SourceCode", get it's "StoredText" attribute. */
37 
38 IF note_name="SourceCode" THEN DO;
39 rc=metadata_getattr(note_uri,"StoredText",program);
40 put;
41 put note_uri=; /* Print the URI to the Log */
42 put;
43 put program=; /* Print the program to the log. */
44
45 /* Optional find and replace code. replace old_text and new_text with the word to replace. */
46 *newprog=tranwrd(program,'old_text','new_text');
47 *rc=metadata_setattr(note_uri,"StoredText",newprog);
48 END;
49 END;
50 END;
51RUN;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Copyright © 2023, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0