Archive for category Tech – Mainframe

Display the status of a storage group

If you come across the need to check the status of a storage group then you can use the MVS command:

D SMS,SG(storage_group)

For example:

storage group name:  STGTSTVL

RESPONSE=SYST
IGD002I 15:17:43 DISPLAY SMS 939

STORGRP  TYPE    SYSTEM= 1
SGTSTVL  POOL            +
***************************** LEGEND *****************************
. THE STORAGE GROUP OR VOLUME IS NOT DEFINED TO THE SYSTEM
+ THE STORAGE GROUP OR VOLUME IS ENABLED
- THE STORAGE GROUP OR VOLUME IS DISABLED
* THE STORAGE GROUP OR VOLUME IS QUIESCED
D THE STORAGE GROUP OR VOLUME IS DISABLED FOR NEW ALLOCATIONS ONLY
Q THE STORAGE GROUP OR VOLUME IS QUIESCED FOR NEW ALLOCATIONS ONLY
> THE VOLSER IN UCB IS DIFFERENT FROM THE VOLSER IN CONFIGURATION
SYSTEM  1 = SYST

If you would like to list the volumes that are part of the Storage Group, you would then issue the command:

D SMS,SG(SGTSTVL),LISTVOL

IGD002I 15:20:50 DISPLAY SMS 737

STORGRP  TYPE    SYSTEM= 1
SGTSTVL  POOL            +

VOLUME   UNIT    SYSTEM= 1                               STORGRP NAME
TST001   5B22            +                                 SGTSTVL
TST002   5B23            +                                 SGTSTVL
TST003   5B24            +                                 SGTSTVL
***************************** LEGEND *****************************
. THE STORAGE GROUP OR VOLUME IS NOT DEFINED TO THE SYSTEM
+ THE STORAGE GROUP OR VOLUME IS ENABLED
- THE STORAGE GROUP OR VOLUME IS DISABLED
* THE STORAGE GROUP OR VOLUME IS QUIESCED
D THE STORAGE GROUP OR VOLUME IS DISABLED FOR NEW ALLOCATIONS ONLY
Q THE STORAGE GROUP OR VOLUME IS QUIESCED FOR NEW ALLOCATIONS ONLY
> THE VOLSER IN UCB IS DIFFERENT FROM THE VOLSER IN CONFIGURATION
SYSTEM  1 = SYST

  • email
  • Add to favorites
  • Facebook
  • Twitter
  • MySpace
  • del.icio.us
  • LinkedIn
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • Yahoo! Buzz
  • IndianPad

No Comments

Display system connectivity of the tape and optical libraries

If you wish to display which libraries are connected to your system you can use the MVS command:

D SMS,LIB(ALL)

Example:

D SMS,LIB(ALL)

RESPONSE=SYST
IGD002I 15:10:50 DISPLAY SMS 869

LIBRARY   CLASS  SYSTEM= 1
TSTATL1   TAPE           +
***************************** LEGEND *****************************
. THE LIBRARY IS NOT DEFINED TO THE SYSTEM
+ THE LIBRARY IS ONLINE
- THE LIBRARY IS OFFLINE
P THE LIBRARY IS PENDING OFFLINE
SYSTEM  1 = SYST

We can see in this example that we have a tape library online on system SYST called TSTATL1. If we wish to obtain more details regarding this library we issue the command:

D SMS,LIB(TSTATL1),DETAIL

CBR1110I OAM library status: 563
TAPE      LIB  DEVICE    TOT  ONL  AVL  TOTAL  EMPTY SCRTCH  ON OP
LIBRARY   TYP  TYPE      DRV  DRV  DRV  SLOTS  SLOTS   VOLS
TSTATL1   AL   3584-L22   16    4    4   1060    187    148  Y  Y
----------------------------------------------------------------------
MEDIA       SCRATCH       SCRATCH       SCRATCH
TYPE          COUNT     THRESHOLD      CATEGORY
MEDIA5          148            50          0005
----------------------------------------------------------------------
LIBRARY ID: A0669
OPERATIONAL STATE:  AUTOMATED
ERROR CATEGORY SCRATCH COUNT:               9
----------------------------------------------------------------------
Convenience I/O station installed.
Convenience I/O station in Input mode.
Convenience I/O station Empty.
Bulk input/output not configured.

  • email
  • Add to favorites
  • Facebook
  • Twitter
  • MySpace
  • del.icio.us
  • LinkedIn
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • Yahoo! Buzz
  • IndianPad

No Comments

How to check if a volume is SMS-managed

One of the ways (and probably the easiest) to check if a volume is SMS-managed is by using the MVS command:

D SMS,VOL(volser)

Here’s an example:

volume:  TST001

Command:

D SMS,VOL(TST001)

The result would be:

RESPONSE=SYST
IGD002I 09:52:24 DISPLAY SMS 382

VOLUME UNIT SYSTEM= 1 STORGRP NAME
TST001 5B22 + SGTSTVL
***************************** LEGEND *****************************
. THE STORAGE GROUP OR VOLUME IS NOT DEFINED TO THE SYSTEM
+ THE STORAGE GROUP OR VOLUME IS ENABLED
- THE STORAGE GROUP OR VOLUME IS DISABLED
* THE STORAGE GROUP OR VOLUME IS QUIESCED
D THE STORAGE GROUP OR VOLUME IS DISABLED FOR NEW ALLOCATIONS ONLY
Q THE STORAGE GROUP OR VOLUME IS QUIESCED FOR NEW ALLOCATIONS ONLY
> THE VOLSER IN UCB IS DIFFERENT FROM THE VOLSER IN CONFIGURATION
SYSTEM 1 = SYST

As we can see from the display, volume TST001 has the unit address 5B22 and is part of the Storage Group SGTSTVL, meaning it’s SMS managed.

  • email
  • Add to favorites
  • Facebook
  • Twitter
  • MySpace
  • del.icio.us
  • LinkedIn
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • Yahoo! Buzz
  • IndianPad

No Comments

Move a dataset that is in Linklist to a different volume

Sometimes we come across the need of moving to a different volume a dataset that is in Linklist.

We must remember that moving a dataset does not change the list of datasets defined to the current concatenation in any way – the dataset name remains the same -. The system will continue to use the current Linklist set as is and will not rebuild the concatenation.

To make a change to any dataset (ex: move) that is part of an active linklist set, you have to first remove it from the linklist set.  When it is no longer part of an active concatenation, then you can modify it as you like and then add it back in.

So, in order to move a Linklisted dataset to a different volume you would have to:

1. Define a new linklist set without the dataset you wish to recatalog.
2. Activate/implement it.
3. Move your dataset.
4. Define a linklist set with the dataset you’ve moved.
5. Activate/implement this new set.

Here’s an example of the commands you would use:

1. P LLA
2. SETPROG LNKLST,UNALLOCATE
3. Create a PROGT1 containing the LINKLIST members EXCEPT the one we want to move and rename LNKLST0x to LNKLST0x + 1
4. SET PROG=T1
5. SETPROG LNKLST,UPDATE,JOBNAME=*
6. Move the dataset into a different volume.
7. Create a PROGT2 containing the LINKLIST members INCLUDING the one we’ve moved to a different volume and increment the LNKLSTxx value (LNKLST0x + 1).
8. SET PROG=T2
9. S LLA,SUB=MSTR
10. SETPROG LNKLST,ALLOCATE
11. SETPROG LNKLST,UPDATE,JOBNAME=*

Here’s a practical example:

Current Linklist set: LNKLST00
Dataset name: SYS2.MOVE.EXAMPLE
Original volume: TST001
Destination volume: TST002
Current PROGxx: PROGT0

Commands:

  1. P LLA
  2. SETPROG LNKLST,UNALLOCATE
  3. Create a PROGT1 containing all the LINKLIST  datasets with the exception of SYS2.MOVE.EXAMPLE, and rename all instances of LNKLST00 to LNKLST01.
  4. SET PROG=T1
  5. SETPROG LNKLST,UPDATE,JOBNAME=*
  6. Move dataset SYS2.MOVE.EXAMPLE from volume TST001 to volume TST002.
  7. Create a PROGT2 containing all the LINKLIST datasets including SYS2.MOVE.EXAMPLES and rename all instances of LNKLST01 to LNKLST02.
  8. SET PROG=T2
  9. S LLA,SUB=MSTR
  10. SETPROG LNKLST,ALLOCATE
  11. SETPROG LNKLST,UPDATE,JOBNAME=*
  • email
  • Add to favorites
  • Facebook
  • Twitter
  • MySpace
  • del.icio.us
  • LinkedIn
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • Yahoo! Buzz
  • IndianPad

No Comments

Linklist update – Why we need to stop LLA and unallocate the LNKLST

A couple of months ago I’ve written a post on how to dynamically update the Linklist but some questions have been risen on why we need to stop the LLA and unallocate the Linklist.

Each Linklist dataset has an ENQ from both XCFAS and LLA. An ENQ on a LNKLST dataset prevents that dataset from being altered as long as it is a member of an active LNKLST. So, in order to be able to make changes to the active Linklist you first need to remove those ENQs.

To be able to remove the LLA ENQs you need to stop the LLA. The only impact that stopping the LLA has in the system is loss of performance until you re-start the LLA.

As per the XCFAS ENQs to remove them you need to issue the SETPROG LNKLST UNALLOCATE command. Unallocate indicates that you want to undo all existing allocations obtained while processing active LNKLST sets.

Once you remove the ENQs you are then able to change the Linklist. Now, bear in mind that although you have removed the ENQs the modules are still in Linklist. No abend will come out of this.

Once you are finished with the Linklist changes, you then restart the LLA and ALLOCATE the Linklist.

The UPDATE command indicates that the system is to update an address space so that a specified job or jobs associated with that space can use the current LNKLST set. If the job is using another LNKLST set when the current LNKLST set is activated, it will continue to use the original LNKLST set until it completes operations. When the job completes and restarts, it then uses the datasets defined in the new currently active LNKLST set.

  • email
  • Add to favorites
  • Facebook
  • Twitter
  • MySpace
  • del.icio.us
  • LinkedIn
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • Yahoo! Buzz
  • IndianPad

No Comments

Displaying Page Dataset Information

As you may know, Page datasets are defined on the IEASYSxx member of the Parmlib but if you want to avoid the hassle of checking this member or if you would like to obtain more information about them, you can use the following MVS commands to display Page Dataset information:

1. Command: /D ASM

Displays information about the page data sets the system is currently using and the status of the PAGEDEL command.

Example:

RESPONSE=TST1
IEE200I 08.14.54 DISPLAY ASM 182
TYPE     FULL STAT   DEV  DATASET NAME
PLPA      28%   OK  8833  SYS1.TST1.PAGE.PLPA
COMMON     0%   OK  863B  SYS1.TST1.PAGE.COMMON
LOCAL      1%   OK  880E  SYS1.TST1.PAGE.LOCAL1
LOCAL      2%   OK  880F  SYS1.TST1.PAGE.LOCAL2
PAGEDEL COMMAND IS NOT ACTIVE

2. Command: /D ASM,PLPA

Displays  information about the PLPA page data set.

Example:

RESPONSE=TST1
IEE200I 08.19.40 DISPLAY ASM 236
TYPE     FULL STAT   DEV  DATASET NAME
PLPA      28%   OK  8833  SYS1.TST1.PAGE.PLPA

VOLSER  DEVTYP        SIZE        USED       AVAIL      ERRORS
TST1P1  3390        53,999      15,508      38,491           0

3. Command: /D ASM,LOCAL

Displays information about all local page data sets.

Example:

RESPONSE=TST1
IEE200I 08.23.00 DISPLAY ASM 264
TYPE     FULL STAT   DEV  DATASET NAME
LOCAL      1%   OK  880E  SYS1.TST1.PAGE.LOCAL1
LOCAL      2%   OK  880F  SYS1.TST1.PAGE.LOCAL2

4. Command: /D ASM,COMMON

Displays information about the common page data set.

Example:

RESPONSE=TST1
IEE200I 08.28.25 DISPLAY ASM 305
TYPE     FULL STAT   DEV  DATASET NAME
COMMON     0%   OK  863B  SYS1.TST1.PAGE.COMMON

VOLSER  DEVTYP        SIZE        USED       AVAIL      ERRORS
TST1P0  3390        89,999          42      89,957           0

5. Command: /D ASM,PAGE=page_dataset_name

Displays information about page data sets.

Example:

page_dataset_name = SYS1.TST1.PAGE.LOCAL1

/D ASM,PAGE=SYS1.TST1.PAGE.LOCAL1

Returns:

RESPONSE=TST1
IEE200I 08.31.01 DISPLAY ASM 328
TYPE     FULL STAT   DEV  DATASET NAME
LOCAL      1%   OK  880E  SYS1.TST1.PAGE.LOCAL1

VOLSER  DEVTYP        SIZE        USED       AVAIL      ERRORS
TST1P2  3390       599,399      11,242     588,157           0

  • email
  • Add to favorites
  • Facebook
  • Twitter
  • MySpace
  • del.icio.us
  • LinkedIn
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • Yahoo! Buzz
  • IndianPad

No Comments

How to display the Linklist concatenation

Whoever works with mainframes knows that to be able to o know what the Linklist concatenation is is one of the most important things in the job.

There is a very simple MVS command for the effect:

D PROG,LNKLST

Here’s an example of what this command returns:

RESPONSE=TST1
CSV470I 12.29.52 LNKLST DISPLAY 888
LNKLST SET LNKLST01 LNKAUTH=LNKLST
ENTRY  APF  VOLUME  DSNAME
1       A TST1R1 SYS2.LINKLIB
2       A TST1R1 SYS1.MIGLIB
3       A
TST1R1 SYS1.CSSLIB
4       A
TST1R1 SYS2.LINKLIB
5       A
TST1R1 SYS1.LINKLIB
6
TST1R1 SYS1.SORTLIB
...

Explanation:

TST1 is the LPAR name

LNKLST01 indicates the Linklist set currently active and in use by the system

A indicates that the dataset is also in APF list

TST1R1 indicates the volume where the dataset is allocated

Note:

The Linklist concatenation is defined in the PROGxx member of the PARMLIB.

  • email
  • Add to favorites
  • Facebook
  • Twitter
  • MySpace
  • del.icio.us
  • LinkedIn
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • Yahoo! Buzz
  • IndianPad

1 Comment

Unmounting a file system with the Remount parameter

UNMOUNT FILESYSTEM(SYS2.OMVS.EXAMPLE) REMOUNT

We all know that the UNMOUNT command removes a file system from the file system hierarchy but when we use the REMOUNT parameter with the UNMOUNT command we may be introducing confusion in some minds.

Unmounting a file system and remounting it? Makes no sense?

Well that may be so, but in fact if we look at what the REMOUNT parameter does it makes perfect sense.

In fact, the REMOUNT parameter tells the system that after the unmount is completed the system should mount the file system again but this time changing its mount mode. That is, if the file system was in READ only mode, then it should be remounted with READ/WRITE mode or if the file system was mounted with READ/WRITE mode, then it should be remounted with READ only mode.

Example 1:

File system name: SYS2.OMVS.EXAMPLE

Mount mode: RDWR (Read/Write mode)

When we issue the command UNMOUNT FILESYSTEM(SYS2.OMVS.EXAMPLE) REMOUNT we tell the system that we wish to change the mount mode of the file system to READ only mode. The system then unmounts the file system and remounts it with READ only mode.

Example 2:

File system name: SYS2.OMVS.EXAMPLE

Mount mode: READ

When we issue the command UNMOUNT FILESYSTEM(SYS2.OMVS.EXAMPLE) REMOUNT we tell the system that we wish to change the mount mode of the file system to READ/WRITE (RDWR) mode. The system then unmounts the file system and remounts it with READ/WRITE mode.

  • email
  • Add to favorites
  • Facebook
  • Twitter
  • MySpace
  • del.icio.us
  • LinkedIn
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • Yahoo! Buzz
  • IndianPad

4 Comments

MVS command to change the state of an Exit routine

Sometimes we find it necessary either to inactivate an active exit routine or the other way around. In order to achieve this, we need to use the MVS command:

/SETPROG EXIT,MODIFY,EXITNAME=exit_name,MODNAME=mod_name,STATE=active_inactive

Example:

/SETPROG EXIT,MODIFY,EXITNAME=SYS.IEFACTRT,MODNAME=IEFACTRT,STATE=INACTIVE

Other parameters:

JOBNAME=jobname – The job(s) name(s) for which this exit routine is to get control. If some other job calls the exit, this exit routine does not get control. The default value is * which means all the jobs. The default for the MODIFY parameter is to leave the jobname unchanged.

  • email
  • Add to favorites
  • Facebook
  • Twitter
  • MySpace
  • del.icio.us
  • LinkedIn
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • Yahoo! Buzz
  • IndianPad

No Comments

MVS command to Add an Exit routine to an Exit

When you require to add an exit routine to an exit you may use the most simple form of the Add command:

/SETPROG EXIT,ADD,EXITNAME=exit_name,MODNAME=mod_name,DSNAME=dsname

Example:

exit_name = SYS.IEFACTRT

mod_name = IEFACTRT

dsname = SYS2.LINKLIB.TST1

/SETPROG EXIT,ADD,EXITNAME=SYS.IEFACTRT,MODNAME=IEFACTRT,DSNAME=SYS2.TST1.LINKLIB

Other parameters:

When adding an Exit routine to an Exit you may also have the need to use one or more of the following parameters:

STATE=active_inactive - Indicates the state of the exit routine. ACTIVE is the default value.

JOBNAME=jobname – The job(s) name(s) for which this exit routine is to get control. If some other job calls the exit, this exit routine does not get control. The default value is * which means all the jobs.

ABENDNUM=(n[,CONSEC]) – indicates that the exit routine is not to be given control after the n abends occur. CONSEC indicates that there must be n consecutive abends before the system stops giving control to the exit routine.

FIRST – Specifies that the system is to call the exit routine before all other exit routines associated with this exit, unless another exit routine, added after it, also specifies FIRST.

LAST - Specifies that the system is to call the exit routine after all other exit routines associated with this exit, unless other exit routines are added after it.

Examples:

/SETPROG EXIT,ADD,EX=SYS.IEFU83,MOD=CYN1FU83,DSN=CYN.SCYNAUTH,FIRST

/SETPROG EXIT,ADD,EX=SYS.IEFU83,MOD=CYN1FU83,DSN=CYN.SCYNAUTH,FIRST,STATE=INACTIVE

/SETPROG EXIT,ADD,EX=SYSSTC.IEFACTRT,MOD=IEFACTRT,ABENDNUM=(5)

/SETPROG EXIT,ADD,EX=SYSSTC.IEFACTRT,MOD=IEFACTRT,ABENDNUM=(5,CONSEC)

  • email
  • Add to favorites
  • Facebook
  • Twitter
  • MySpace
  • del.icio.us
  • LinkedIn
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • Yahoo! Buzz
  • IndianPad

No Comments