The &FILE verb connects, disconnects, switches, accesses, modifies, and deletes file records.
This verb has the following format:
&FILE { ADD | PUT } ID=fileid
[ KEY=key | KEYVAR=keyvar ]
[ OPT={ TRUNCATE | NOTRUNCATE } ]
[ { ARGS | VARS=prefix* } [ RANGE=(start,end) ] |
VARS={ var | ( var1,var2,...,varn ) } |
DATA=data | MDO=mdoname ]
[ PRTCNTL=opt | (opt1,opt2 [,opt3,opt4 ] ) ]
&FILE CLOSE [ OPT=ALL | ID=fileid ]
&FILE DEL ID=fileid
[ KEY=key | KEYVAR=keyvar ]
[ GENLEN=nn ]
[ OPT={ KEQALL | KGEALL } ]
&FILE GET ID=fileid
[ KEY=key | KEYVAR=keyvar ]
[ OPT=type ]
[ GENLEN=genlen ]
[ { ARGS | VARS=prefix* } [ RANGE=(start,end) ] |
VARS={ var | (var1,var2,...,varn) } |
MDO=mdoname [ MAP=mapname ] ]
&FILE OPEN ID=fileid
[ FORMAT={ MAPPED | UNMAPPED | UNMAPPED-DBCS | DELIMITED } ]
[ MAP={ $NCL | mapname } ]
[ KEYPAD={ BLANK | NULL } ]
[ KEYEXTR={ YES | NO } ]
[ DATA=exitdata ]
&FILE SET ID=fileid
[ KEY=key | KEYVAR=keyvar ]
[ GENLEN=nn ]
[ FORMAT={MAPPED | UNMAPPED | DELIMITED } ]
[ MAP={ $NCL | mapname } ]
The use of the ADD/PUT, CLOSE, DEL, GET, OPEN, and SET options of the &FILE verb is described on the following pages.
Example 1
This example reads the USERFILE and produces a listing of all users starting with the user ID specified in variable &STARTUSER.
&FILE OPEN ID=USERFILE FORMAT=DELIMITED
&IF &FILERC GT 8 &THEN +
&GOTO .ERRMSG
&FILE SET ID=USERFILE KEY=&STARTUSER
&WRITE DATA=POS USER ID USER NAME +
DEPT PHONE NO
&L = &ASISTR&COUNT = 1
&DOUNTIL &FILERC GT 0
&WRITE DATA=&L
&FILE GET ID=USERFILE OPT=KGE VARS=(NAME,DEPT,PHONE)
&IF &FILERC EQ 4 &THEN +
&DO
&L = &OVERLAY &L &COUNT 1 3 ALIGNR0
&L = &OVERLAY &L &FILEKEY 7 8 ALIGNL
&L = &OVERLAY &L &NAME 17 20 ALIGNL
&L = &OVERLAY &L &DEPT 40 4 ALIGNL
&L = &OVERLAY &L &PHONE 47 9 ALIGNL
&COUNT = &COUNT + 1
&DOEND
&DOEND
&WRITE DATA=** END OF LISTING **
&IF &FILERC NE 4 &THEN +
&GOTO .ERRMSG
&FILE CLOSE ID=USERFILE
&END 0
.ERRMSG
&WRITE DATA=FILE NOT AVAILABLE OR ERROR OCCURRED +
ACCESSING FILE +
(FILERC=&FILERC, VSAMFDBK=&VSAMFDBK)
&END 4
Example 2
This example updates the USERFILE file. The user ID to be updated is specified in variable &UPDUSERID. If the user details record is not found, then a new record is added to the file. The authority of the user is checked when the file is opened.
&FILE OPEN ID=USERFILE FORMAT=DELIMITED
&IF &FILERC GT 8 &THEN +
&GOTO .ERRMSG
&ELSE +
&IF &FILERC LT 4 &THEN +
&DO
&WRITE DATA=NOT AUTHORIZED TO UPDATE FILE
&END 4
&DOEND
&FILE GET ID=USERFILE KEYVAR=UPDUSERI +
VARS=(NAME,DEPT,PHONE)
&IF &FILERC EQ 0 &THEN +
&DO
&NAME = &NEWNAME
&DEPT = XXXX
&PHONE = 1234567
&FILE ADD ID=USERFILE VARS=(NAME,DEPT,PHONE)
&FUNC = ADDED
&DOEND
&IF &FILERC NE 0 &THEN +
&GOTO .ERRMSG
&WRITE DATA=USER &UPUSERID WAS SUCCESSFULLY PROCESSED +
ACTION TAKEN WAS &FUNC
&FILE CLOSE ID=USERFILE
&END0
.ERRMSG
&WRITE DATA=USER FILE NOT AVAILABLE OR ERROR PROCESSING +
FILE (FILERC=&FILERC, VSAMFDBK=&VSAMFDBK)
&END 4
Example 3
This example deletes a record from the USERFILE file. The user ID to be deleted is specified in variable &DELUSERID. The authority of the user is checked when the file is opened.
&FILE OPEN ID=USERFILE FORMAT=DELIMITED
&IF &FILERC GT 8 &THEN +
&GOTO .ERRMSG
&ELSE +
&IF &FILERC NE 8 &THEN +
&DO
&WRITE DATA=NOT AUTHORIZED TO DELETE RECORDS +
FROM FILE
&DOEND
&FILE GET ID=USERFILE KEYVAR=DELUSERID +
VARS=(NAME,DEPT,PHONE)
&IF &FILERC EQ 0 &THEN +
&FILE DEL ID=USERFILE &ELSE +
&IF &FILERC EQ 4 THEN +
&DO
&WRITE DATA=USER &DELUSERID NOT FOUND ON FILE
&END 4
&DOEND
&IF &FILERC NE 0 &THEN +
&GOTO .ERRMSG
&WRITE DATA=USER &UPDUSERID WAS SUCCESSFULLY PROCESSED +
ACTION TAKEN WAS DELETE
&FILE CLOSE ID=USERFILE
&END 0
.ERRMSG
&WRITE DATA=USER FILE NOT AVAILABLE OR ERROR +
PROCESSING +
FILE (FILERC=&FILERC, VSAMFDBK=&VSAMFDBK)
&END 4
| Copyright © 2009 CA. All rights reserved. |
|