BookmarkSubscribeRSS Feed

[FCMP 프로시져] 정보 보호를 위하여 특정 위치의 값을 '*'로 대체 후 출력(PRINT)하기

Started ‎06-15-2020 by
Modified ‎06-15-2020 by
Views 120

[FCMP 프로시져] 정보 보호를 위하여 특정 위치의 값을 '*'로 대체 후 출력(PRINT)하기;

 

 

* 질문 : http://cafe.daum.net/statsas/B3m/15026;

 

* 원본 데이터 변경 없이 데이터 정보 보호를 위하여 출력 시 특정 위치 값을 '*'로 대체하여 출력하기 위한 사용자 정의 함수;

 

* 출력 형식이 지정된 값을 반환하기 위한 사용자 정의 함수 생성;

 

* 다음 사용자 정의 함수는 입력 변수(number)의 값을 내부 변수 'BACK'로 입력 받아서 1번째 자리와 8번째 자리의 값 이외의 값을 '*'로 대체 후 반환하는

 

* 함수이다.;

 

proc fcmp outlib=work.functions.smd;

     function qfmt(BACK $) $;

       length ENCODING_VAR $14;

       ENCODING_VAR=substr(BACK,1,1)||REPEAT('*',5-1)||'-'||substr(BACK,8,1)||REPEAT('*',6-1);

       return(ENCODING_VAR);

     endsub;

run;

 

* 사용자 정의 함수 호출;

options cmplib=(work.functions);

 

* FCMP 프로시져를 사용하여서 생성된 함수를 기반으로 출력형식(FORMAT)을 생성;

proc format; 

   value $qfmt 

         other=[qfmt()]; 

run;

 

data BACK;

input number $ 14.;

cards;

123456-1234567

789458-8589587

989858-5824587

;

run;

 

* PRINT 프로시져에서 qfmt 출력형식을 사용하여서 NUMBER 변수를 출력;

proc print data=BACK;

     format number $qfmt14. ;

run;

 

/* 사용자 정의 함수 테스트*/

/*

data BACK1;

 SET BACK;

     VAR = qfmt(number);

     PUT VAR=;

RUN; 

Version history
Last update:
‎06-15-2020 12:25 AM
Updated by:
Contributors

sas-innovate-white.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.

 

Early bird rate extended! Save $200 when you sign up by March 31.

Register now!

Article Labels
Article Tags