Publicado el :
Administración CREATION_INTERNE

Extracción de Código Fuente de Stored Process a través de Metadatos

Este código también está disponible en: Deutsch English Français
Attention : Este código requiere privilegios de administrador.
Este programa utiliza las funciones de interfaz de metadatos SAS© (OMF) para buscar todos los objetos Stored Process (ClassifierMap) que contienen una nota 'SourceCode'. Recupera el texto del código fuente y lo escribe en el registro SAS©. El script también incluye lógica comentada para realizar operaciones de buscar y reemplazar en el código fuente y actualizar los metadatos. Nota: Este código es específico para entornos con un servidor de metadatos SAS© 9 (compatibilidad legacy).
Análisis de datos

Type : CREATION_INTERNE


Los datos provienen directamente de las funciones de consulta del servidor de metadatos SAS (metadata_resolve, etc.). No se requiere ninguna tabla externa.

1 Bloque de código
DATA STEP
Explicación :
Paso DATA _NULL_ que interactúa con el servidor de metadatos. Define una consulta 'omsobj' para encontrar los Stored Processes, itera sobre los resultados, extrae las notas asociadas, identifica la que se llama 'SourceCode' y recupera el atributo 'StoredText' (el código). El resultado se muestra en el log.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright © 2023, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0