Previous Topic: &EXIT

Next Topic: &FILE ADD


&FILE

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