SMS環境構築_ACSルーチンの作成/反映篇

本記事はSMS環境構築する際、ACS Routineの設定、及び定義反映手順を紹介しています。

関連記事は以下を参照してください
1. [事前作業](https://qiita.com/ztc2019/items/78afebb96ad930ccec80)
2. [Storage Classの設定](https://qiita.com/ztc2019/items/ae9e322e8400c5743b98)
3. [Storage Groupの設定](https://qiita.com/ztc2019/items/6c6b8ca73b7e65378dbc)
4. [ACS Routineの設定&定義反映(本記事)](https://qiita.com/ztc2019/items/249b84bf485dbc9a8058)



## PDSの作成
- ACSルーチンのライブラリー(PDS)をアロケーションする。  
<font color="Blue"> (*1)アロケーションする先のボリューム名を指定</font>  

```
//STEP1 EXEC PGM=IEFBR14                                          
//SYSUT1 DD DSN=TEST.ACS00,DISP=(,CATLG),UNIT=3390,VOL=SER=volume(*1),
//       SPACE=(CYL,(1,,50)),                                     
//       DCB=(DSORG=PO,BLKSIZE=27920,LRECL=80,RECFM=FB)
```


## ACSルーチンのコーディング
- 以下の例では、データセット名「TEST.**」が作成される際、Storage Classは「TSTCLASS」、Storage Groupは「TSTGROUP」が選択される。

**▼Storage Class**  

```
PROC STORCLAS                              
   FILTLIST OEDSN   INCLUDE(TEST.**)       
   SELECT                                  
        WHEN (&DSN = &OEDSN)               
                 SET &STORCLAS = 'TSTCLASS'
        OTHERWISE                          
                 SET &STORCLAS = ''        
        END                                
   END                                     
```
　　
**▼Storage Group**

```
PROC STORGRP                              
   SELECT                                 
       WHEN (&STORCLAS = 'TSTCLASS')      
                 SET &STORGRP = 'TSTGROUP'
       OTHERWISE                          
                 SET &STORGRP = &STORGRP  
       END                                
   END                                                                  
```


## ISMFからACSルーチンの確認
- TSO画面から「ISMF(Integrated Storage Management Facility)」を選択
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/4e6d3e5e-88c7-f16f-9b47-fcb260eb8ed2.png)

　　

- 「Automatic Class Selection - Specify ACS Routines and Test Criteria」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/569f1ce8-0bc3-f806-4724-bfe20079ca07.png)
　　

- 「1. Edit - Edit ACS Routine source code 」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/e51135a5-9759-53be-98e0-f75f219e2672.png)
　　

- 「Other Partitioned,～」にPDSを入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/a5f6c3b2-5eac-7596-ad0b-cfea227f3762.png)
　　

- 必要に応じてACSルーチンを修正
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/78bb098e-2e63-40a1-dea8-128a2e685e9d.png)

## Translate処理
- 「ACS APPLICATION SELECTION」画面に戻り、「2. Translate - Translate ACS Routines to ACS Object Form」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/5957f2cd-e8d8-de92-731e-2c2617ca48ec.png)

　　
- Translate対象のCDS、PDS、ACSルーチン、Listing Data Set(*2)を入力し、実行キーを入力  
※Listing Data Setはログ用のデータセットのため、任意のデータセット名を指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/7445873c-f279-f8e9-baa7-c164da1bcccc.png)

　　

- 画面右上の「ACS OBJECT SAVED」 を確認し、PF3行キーを入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/8b1ce1a3-bd64-a4a1-30eb-b234e1e774dd.png)

　　

- 画面右上の「TRANSLATION SUCCESSFUL」を確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/d239fdd1-61ab-0ed0-3734-592f19bfda26.png)


## Validate処理
- 「ACS APPLICATION SELECTION」画面に戻り、「3. Validate - Validate ACS Routines Against Storage Constructs」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/29156e04-0f84-0e2e-cdd7-4744fd9c161c.png)
　　

- Validate対象のCDS名、ACS Routine Type(*3)、Linting Data Setを入力
<font color="Blue">　(*2)ACS Routine Typeには、「SC」(Storage Class)、「SG」(Storage Group)を順次選択しValidateする</font>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/b5385857-d126-5ecb-260d-69f86c27cefa.png)

　　

- 「VALIDATION SUCCESSFUL」を確認し、PF3キーで戻る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/d4819e29-f3f4-b8c4-8ba2-df17ccc23b42.png)

　　

- 画面右上の「SUCCESSFUL VALIDATION」を確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/c10dd414-28d4-e1df-16bc-aba7b13a11e7.png)

## SMS反映
- SDSF画面で「D SMS」コマンドで現在の設定を確認
  <font color="Blue"> ※後述の「定義の戻し」にてデータセット名を使用するため、控えておくこと</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/2b06f798-54c3-9856-4eef-f208a6182701.png)

　　

- 「ISMF PRIMARY OPTION MENU」画面で「8  Control Data Set - Specify System Names and Default Criteria」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/2ecca6ef-7e27-1f28-2431-6234e2a5f3f1.png)

　　

- SMS反映対象のCDSを入力し、「5. Activate - Activate the CDS」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/f95ce326-e477-eb39-34f6-1925e557a032.png)

　　

- 「CONFIRM ACTIVATE REQUEST」画面にて、「Perform Activation」の左側に「/(スラッシュ)」を入力し実行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/09112791-8956-1438-da22-32b4b4b83e03.png)

　　

- メッセージ「IGD008I NEW CONFIGURATION ACTIVATED FROM SCDS TEST.SCDS BY <userid>」を確認、実行キーを入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/86d4a71d-4c1e-cbe5-667f-947eb00d65e9.png)

　　


- 画面右上の「ACTIVATION SCHEDULED」を確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/9c268df6-675f-1e8f-4a6d-c12f3ed1cf01.png)

　　

- SDSF画面で「D SMS」コマンドで設定が反映されているか確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/150319b2-5a77-6ed6-3fd5-eda8ee82a591.png)

## テスト
- 設定したACSルーチンが想定通りに実施されるか、以下JCLで確認

 **例1). データセット名「TEST.\*\*」を指定しているとき**

```
//STEP1 EXEC PGM=IEFBR14                                  
//SYSUT1 DD DSN=TEST.DATASET0,DISP=(,CATLG),UNIT=3390,SPACE=(CYL,(1,1)),                               
//       DCB=(,BLKSIZE=27920,LRECL=80,RECFM=FB)           
/*                                                        
//                                                        
```
　　

**▼例1). 実行結果(JOBLOG)**
実行した結果、データセット名「TEST.DATASET0」がボリューム「WORK03」にアロケーションされていることを確認

```
IEFA111I JOBID01 IS USING THE FOLLOWING JOB RELATED SETTINGS:      
         SWA=ABOVE,TIOT SIZE=32K,DSENQSHR=DISALLOW,GDGBIAS=JOB     
IEF236I ALLOC. FOR JOBID01 STEP1                                   
IGD101I SMS ALLOCATED TO DDNAME (SYSUT1  )                         
        DSN (TEST.DATASET0                               )         
        STORCLAS (TSTCLASS) MGMTCLAS (        ) DATACLAS (        )
        VOL SER NOS= WORK03                                        
IEF142I JOBID01 STEP1 - STEP WAS EXECUTED - COND CODE 0000         
```
　　

 **例2). データセット名「TEST.\*\*」と、ボリューム名「IPCS11」を指定しているとき**

```
//STEP1 EXEC PGM=IEFBR14                                             
//SYSUT1 DD DSN=TEST.DATASET0,DISP=(,CATLG),UNIT=3390,VOL=SER=IPCS11,
//       SPACE=(CYL,(1,1)),                                          
//       DCB=(,BLKSIZE=27920,LRECL=80,RECFM=FB)    
/*                                                    
//                                                    
```
　　

**▼例2). 実行結果(JOBLOG)**
実行した結果、データセット名「TEST.DATASET1」はボリューム名「IPCS11」ではなく「WORK03」にアロケーションされていることを確認

```
IGD101I SMS ALLOCATED TO DDNAME (SYSUT1  )                         
        DSN (TEST.DATASET1                               )         
        STORCLAS (TSTCLASS) MGMTCLAS (        ) DATACLAS (        )
        VOL SER NOS= WORK03                                        
IEF142I E98749K STEP1 - STEP WAS EXECUTED - COND CODE 0000         
```
　　


**例3). データセット名「TES<font color="Blue">Y</font>.\*\*」を指定しているとき**

```
//STEP1 EXEC PGM=IEFBR14                              
//SYSUT1 DD DSN=TESY.DATASET3,DISP=(,CATLG),UNIT=3390,
//       SPACE=(CYL,(1,1)),                           
//       DCB=(,BLKSIZE=27920,LRECL=80,RECFM=FB)       
/*                                                    
//                                                    
```
　　
　　
**▼3). 実行結果(JOBLOG)**
実行した結果、データセット名「TESY.DATASET3」はボリューム名「WORK03」ではなく「C3SYS1」にアロケーションされていることを確認。(STORCLAS (TSTCLASS)への参照なし)

```
IGD100I 0A82 ALLOCATED TO DDNAME SYSUT1   DATACLAS (        )    
IEF142I E98749T STEP1 - STEP WAS EXECUTED - COND CODE 0000       
IEF285I   TESY.DATASET0                                CATALOGED 
IEF285I   VOL SER NOS= C3SYS1.                                            
```


## 定義の戻し
- 「ISMF PRIMARY OPTION MENU」画面で「8  Control Data Set - Specify System Names and Default Criteria」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/2ecca6ef-7e27-1f28-2431-6234e2a5f3f1.png)


- 「SMS反映」で控えておいたデータセット名を入力し、「SMS反映」に記載した手順を実施
　　

- SDSF画面で「D SMS」を実行し、控えておいたデータセット名に戻っているかを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551954/dec1b79c-b68c-41e6-a520-c8a41f7dd863.png)