z/OS - Setting up DSFS

grep a dataset

As I said in the previous post I wanted to run grep on a dataset but the old port of GNU grep was no longer available on my system and zopen.community ports do not work with the //'data.set.name' syntax. What a bummer.

Luckily from z/OS 2.5 there is a new component of z/OS available - the Data Set File System (DSFS). So I ventured in to reading the Data Set File System Administration to set it up.

The first chapter describes how it works and the second how to set it up.

Installation

I could not find it on my system until a colleague of mine pointed me to where the libraries were located.

For the next time, to find it myself, these are the catalog search patterns to use

and the default USS location /usr/lpp/dfs/global/bin/IBM.

Setup

I followed the steps in chapter 2 but it does not really show the JCLs how to allocate and format the datasets which I think should come first so lets do that.

Allocate the utility file system

Use this JCL to run IDCAMS to allocate the linear VSAM dataset that will be used for the utility file system.

//DEFZFS   EXEC PGM=IDCAMS     
//SYSPRINT DD SYSOUT=*         
//SYSUDUMP DD SYSOUT=*         
//AMSDUMP  DD SYSOUT=*         
//SYSIN    DD *,SYMBOLS=JCLONLY
                               
  SET MAXCC=0                  
                               
  DEFINE CLUSTER (         -
    NAME(<hlq>.DSFS)       -
    STORCLAS(USER)         -
    ZFS CYL(100 100)       -
    SHAREOPTIONS(3,3)      -
  )            
/*                               

Format the utility file system

DSFS will automatically format the file system on startup if not formatted.

Create a RACF definitions

ADDGROUP DSFSGRP SUPGROUP(SYS1)
ADDUSER DSFS DFLTGRP(DSFSGRP) AUTHORITY(USE) UACC(NONE)
RDEFINE STARTED DSFS.** STDATA(USER(DSFS))
SETROPTS RACLIST(STARTED)
SETROPTS RACLIST(STARTED) REFRESH

Update BPXPRMxx

FILESYSTYPE TYPE(DSFS)           
      ENTRYPOINT(IDFFSCM)        
      ASNAME(DSFS,'SUB=MSTR')    
      PARM('PRM=(yy)')           
                                 
MOUNT FILESYSTEM('<hlq>.DSFS') 
      TYPE(DSFS)                 
      MOUNTPOINT('/dsfs')        
      MODE(RDWR)                 

Create IDFPRMyy parmfile

UTFS_NAME=<hlq>.DSFS

Without this DSFS will look for a dataset name <hlq>.DSFS.&SYSNAME instead of just <hlq>.DSFS when performing the MOUNT FILESYSTEM command above.

Create a DSFS procedure

Then copied IOE.SIOEPROC(DSFS) to SYS1.PROCLIB. There are two commented DDs

So I did not need to uncoment either of them,

Start and stop

I used these console commands to start and stop DSFS

Other notes

If you want the utility file system to be larger than 4 GB, then use SMS DATACLASS for extended addressability.