포스팅 목차
MOPEN
디렉토리 아이디와 멤버 이름에 의해 파일을 연다.
Category: | 외부 파일 접근 및 처리 함수 (External Files) |
문 법
MOPEN (directory-id,member-name<open-mode<,record-length<,record-format>>>) |
Arguments
- directory
는 DOPEN함수에 의해 반환되는 인식자.
- open-mode
A | 현재 파일의 끝에 새로운 레코드를 기록가능한 모드. |
I | 입력 모드로 오픈한다.(기본) |
O | 출력 모드로 오픈한다. |
S | 순차적 입력모드로 오픈한다. |
U | 읽기와 쓰기모두 가능한 업데이트 모드로 오픈한다. |
W | 순차적 업데이트 모드로 오픈한다. |
- record-format
B | 데이터를 이항 데이터로 처리한다. |
D | 디폴트 레크드 포맷을 이용한다. |
E | 편집 가능한 레코드 포맷을 이용한다. |
F | 파일은 고정된 length 레코드를 포함한다. |
P | 파일은 호스트에 의존하는 레코드 포맷에서 프린터 캐리지 제어를 포함한다. |
V | 파일은 변수 length 레코드를 포함한다. |
관련 함수
함수명 | 함수내용 |
CEXIST |
SAS 카탈로그나 SAS 카탈로그 엔트리의 존재성을 확인후에 반환한다. |
DCLOSE |
DOPEN 함수에 의해 열었던 디렉토리를 닫는다. |
DNUM |
디렉토리에서 멤버의 수를 반환한다. |
DOPEN | 디렉토리 OPEN하여서 0보다 큰 directory identifier value을 반환한다. |
DREAD |
디렉토리 구성원의 이름을 반환한다. |
EXIST |
SAS 데이터 라이브러리 멤버의 존재성을 확인한다. |
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 | 마지막 데이터 세트나 외부 파일 함수 실행으로부터 에러메시지나 경고 메시지 반환한다. |
예 제
예 제 1 :
디렉토리를 오픈하여, 멤버의 수를 반환받고, 첫 번째 인수의 이름을 받아서, 첫 번째 멤버(WINNT)를 열었다가 닫는다.
SAS Statements |
data MOPEN;
rc = filename('mydir','c:\');
did = dopen('mydir');
length frstname $20.;
frstname = ' ';
memcount = dnum(did);
if (memcount>0) then do;
frstname = dread(did,1);
fid = mopen(did,frstname,'i');
put fid=;
put '출력';
rc = fclose(fid);
end;
else _msg_=sysmsg();
rc=dclose(did);
run;
Results |
* 로그 :
fid=0
출력
* 아웃풋 :
frstname memcount
WINNT 49
예 제 2 :
멤버의 file+확장자명, file명, 확장자명을 반환한다.
SAS Statements |
filename dir "c:\";
data files;
length file $100 ext $10 filenm $50;
did=dopen('dir');
rc=dnum(did);
put rc=;
do i = 1 to dnum(did);
file=dread(did,i);
put file=;
ext=lowcase(reverse(scan(reverse(file),1,'.')));
put ext=;
filenm = lowcase(scan(file,1,'.'));
put filenm=;
fid = mopen(did,file);
put fid=;
if fid then do;
rc=fclose(fid);
output;
end;
end;
rc=dclose(did);
keep file filenm ext;
run;
Results |
rc=44
file=WINNT
ext=winnt
filenm=winnt
0
file=MWASPI
ext=mwaspi
filenm=mwaspi
0
file=FOUND.000
ext=000
filenm=found
0
file=Program Files
ext=program fi
filenm=program files
0
file=back.txt
ext=txt
filenm=back
2
- 생 략 -
예 제 3 :
C드라이브를 오픈한후에 mopen.txt를 OPEN(생성)하여서 “This is a test.”를 추가한 후에 닫는다.
SAS Statements |
%let rc = %sysfunc(filename(file,c:\));
%let did = %sysfunc(dopen(&file));
%let fid = %sysfunc(mopen(&did,mopen.txt,o,0,d));
%let rc = %sysfunc(fput(&fid,This is a test.));
%let rc = %sysfunc(fwrite(&fid));
%let rc = %sysfunc(fclose(&fid));
Results |
* 외부파일:
This is a test.
엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크 |
SAS 함수(SAS Function) 리스트 링크 |
반응형
'SAS > SAS 함수' 카테고리의 다른 글
【SAS 함수】 280. N (0) | 2021.10.05 |
---|---|
【SAS 함수】 279. MORT (0) | 2021.10.05 |
【SAS 함수】 277. MONTH (0) | 2021.10.04 |
【SAS 함수】 276. MODZ (0) | 2021.10.04 |
[SAS 함수] 275. MODULEN (0) | 2021.10.04 |
댓글