포스팅 목차
o FNOTE
읽혀진 마지막 레코드를 확인하고, 파일 위치를 표시하여서 어플리케이션이 나중에 Fpoint를 이용하여 그 위치로 돌아올수 있도록 할수있다.
Category: | External Files |
문 법
FNOTE (file-id) |
Arguments
file-id 는 FOPEN함수에 의해 반환된 인식자.
관련 함수
함수명 | 함수내용 |
CEXIST |
SAS 카탈로그나 SAS 카탈로그 엔트리의 존재성을 확인후에 반환한다. |
DCLOSE |
DOPEN 함수에 의해 열었던 디렉토리를 닫는다. |
DNUM |
디렉토리에서 멤버의 수를 반환한다. |
DOPEN | 디렉토리 OPEN하여서 0보다 큰 directory identifier value을 반환한다. |
DREAD |
디렉토리 구성원의 이름을 반환한다. |
DROPNOTE | SAS 데이터세트나 외부파일에서 노트 마크(observation ID)를 지운다. |
EXIST |
SAS 데이터 라이브러리 멤버의 존재성을 확인한다. |
FAPPEND | 외부파일 끝에 현재 레코드를 추가한다. |
FCLOSE |
외부파일, 디렉토리, 디렉토리 멤버를 닫는다. |
FETCH | SAS 데이터 세트로부터 현재 관측치 다음의 관측치를 데이터 세트 데이터 벡터(DDV) 안으로 관측치를 읽는다. |
FETCHOBS | SAS 데이터 세트로부터 지정한 관측치를 데이터 SET 데이터 벡터(DDV)로 읽는다. |
FGET |
파일 데이터 벡터(FDB)로부터 변수에 데이터를 복사한다. |
FILEEXIST |
외부 파일의 물리적 이름에 의해 외부 파일의 존재성을 확인한다. |
FILENAME | SAS 파일 참조자(fileref)를 외부 파일 또는 출력 장치와 연결한다. 이와 반대로 파일 참조자(Fileref)와 외부 파일의 관계를 해제할 수 있으며, 외부 파일 속성을 출력할 수 있다. |
FILEREF |
현재 SAS섹션에 fileref이 할당되었는지 확인한다. |
FOPEN |
외부파일을 연다. |
FPOS |
파일 데이터 버퍼(FDB)에서 칼럼 포인터의 위치를 설정한다. |
FPUT |
SAS 데이터 세트에서 FDB로 데이터를 이동한다. |
FREAD | 외부파일에서 FDB로 레코드를 읽는다. |
FREWIND |
파일의 시작에 파일 포인터를 배치하고 값을 반환한다. |
FSEP |
FGET함수를 위한 구분자를 설정한다. |
FWRITE |
외부파일에 레코드를 기록한다. |
MOPEN |
디렉토리 아이디와 멤버 이름에 의해 파일을 연다. |
NOTE |
SAS 데이터 세트의 현재 관측치에 대한 관측치 아이디를 반환한다. |
OPEN | SAS 데이터 세트를 OPEN하고, 데이터 세트 ID를 반환한다. |
POINT | NOTE함수에 의해 확인된 위치에 관측치를 이동시키고, 값을 반환한다. |
SYSMSG | 마지막 데이터 세트나 외부 파일 함수 실행으로부터 에러메시지나 경고 메시지 반환한다. |
예제
back.txt를 업데이트 모드로 오픈하여서 3번째까지 데이터를 FDB로 읽은후에 위치를 기록(fnote)한후에 5번째 레크드까지 읽은후에, 위에서 기록한 위치(fpoint-3번째)로 이동하여서 “New text”문장을 FDB에 복사한후에 업데이트(기록,fwrite)한다.
FILENAME back "c:\back.txt"; data _null_;
file back;
put "Data for the new record1"; put "Data for the new record2";
put "Data for the new record3"; put "Data for the new record4";
put "Data for the new record5";
run;
SAS Statements |
%macro back;
%let fref=MYFILE;
%let rc=%sysfunc(filename(fref,'c:\back.txt'));
%put &rc;
* 업데이트 모드로 Open한다.
%let fid=%sysfunc(fopen(&fref,u));
%put &fid;
%if &fid > 0 %then %do;
%let rc=%sysfunc(fread(&fid));
%let rc=%sysfunc(fread(&fid));
%let rc=%sysfunc(fread(&fid)); * 세번째 레코드를 읽는다.;
%let note3=%sysfunc(fnote(&fid)); * 세번째 레코드의 위치를 기록한다;
%let rc=%sysfunc(fread(&fid)); * 네번째 레코드를 읽는다;
%let rc=%sysfunc(fread(&fid)); * 다섯번째 레코드를 읽는다.;
* FNOTE에 의해 표시된 위치로 관측치를 이동;
%let rc=%sysfunc(fpoint(&fid,¬e3));
%let rc=%sysfunc(fread(&fid)); * 세번째 레코드를 읽는다;
%let rc=%sysfunc(fput(&fid,New text)); * FDB에 새로운 텍스트를 복사;
* FDB의 데이터로 세번째 레코드를 업데이트 한다.;
%let rc=%sysfunc(fwrite(&fid));
%let rc=%sysfunc(fclose(&fid)); * 파일을 닫는다.;
%end;
%let rc=%sysfunc(filename(fref)); * 파일참조자 초기화;
%mend;
%back;
Results |
Data for the new record1
Data for the new record2
New text the new record3
Data for the new record4
Data for the new record5
SAS 함수(SAS Function) 리스트 링크 |
엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크 |
SAS 데이터 스텝 구문 리스트(SAS Data Step Statement) |
반응형
'SAS > SAS 함수' 카테고리의 다른 글
[SAS 함수] 176. FOPTNAME (0) | 2021.09.30 |
---|---|
【SAS 함수】 175. FOPEN (0) | 2021.09.29 |
[SAS 함수] 173. FNONCT (0) | 2021.09.29 |
【SAS 함수】 172. FLOORZ (0) | 2021.09.29 |
【SAS 함수】 171. FLOOR (0) | 2021.09.29 |
댓글