2017-03-09 56 views
1

我有以下控制卡,我無法理解如何閱讀。有人可以幫我解釋這部分工作正在進行嗎?瞭解以下控制卡

OUTFIL FNAMES=(XSCB),BLKCCT1,INCLUDE=(67,7,CH,EQ,        
       C'XSCB ',OR,69,7,CH,EQ,          
       C'XSCB '),              
    HEADER2=(22:C'XSCB MVS USERID SYSTEM USAGE REPORT',/,      
      01:C'GENERATED ON ',&DATE=(MD4/),70:C'PAGE',&PAGE,/,     
      01:C'   AT ',&TIME,/,X,/,          
      01:C'JULIAN',/,              
      01:C'DATE  TIME  SYSTEM JOB  MESSAGE',/,     
      01:C'-------- -------- ------ -------- ---------------->'),   
    TRAILER1=(X,/,01:C'RECORDS FOUND =',COUNT,/,34:C'END OF REPORT'),    
    OUTREC=(20,07,ZD,EDIT=(TTTT.TTT),X,    * JULIAN DATE   
      28,08,X,         * TIME     
      11,06,X,         * SYSTEM     
      40,08,X,         * JOB OR REF    
      59,07,CHANGE=(50,C'IEF125I',C'LOGGED ON ', * MESSAGE    
           C'IEF126I',C'LOGGED OFF'),       
        NOMATCH=(79,50),            
      132:X) 

據我所知,它搜索ID「XSCB」在67位或69但是,一旦它發現它,我無法解釋接下來它做什麼。

+1

哇,這是生成系統使用情況報告? – flaZer

+0

好吧,看起來像這個'XSCB'是7個字符秒。所以它看起來與XSCB文件,它正在尋找'XSCB'位置67或69位置的記錄? – flaZer

回答

4

這些是SORT控制卡。如果您查看該步驟的SYSOUT,並注意這些消息,則可以確定它是DFSORT(消息以ICE作爲前綴)還是SyncSORT(消息以WER作爲前綴)。

您的步驟可能是EXEC PGM = SORT或ICEMAN或其他,取決於您的網站。

控制卡正在生成報告。您的控制卡中至少有一行缺失(選項COPY或SORT FIELDS = COPY或不同的SORT或MERGE語句)。可能有任何數量的缺失卡,並且您可能還有另一個輸出。否則,OUTFIL INCLUDE =可能是一個普通的INCLUDE COND =。

你實際上做了什麼?

OUTFIL定義了特定輸出數據集的最終處理。沒有名字的話,它就是JCL中的SORTOUT DD。

使用FNAMES =(XSCB)它用於JCL中名爲XSCB的DD。對於FNAMES中指定的單個名稱,括號是多餘的。

BLKCTT1表示「在第一列中放一個空格,以便不從TRAILER1輸出中獲取頁面 - 彈出」。

INCLUDE =正如您懷疑的那樣。爲相同的值測試兩個不同的起始位置。如果任一測試結果爲真,則當前記錄將包含在OUTFIL組中。

HEADER2定義每頁頂部顯示的內容。

01:是列號,並且是冗餘的,因爲默認情況下每行都是第一列。

HEADER2可以創建多行(如OUTFIL上的任何HEADERn或TRAILERn和BUILD(或OUTREC,但不用於新建)),每個行都用「/」分隔。 & DATE,& TIME和& PAGE是特別的,含有明顯的。 & DATE可以用各種方式格式化,MD4 /是MM,DD,YYYY用斜槓分隔。

X是空白的,在它自己的一行上。你可以同樣看到...... /,/ ...或n /來創建n個多空行。

常數應該是顯而易見的。

TRAILER1定義在報告結尾處打印的內容。

COUNT是OUTFIL組中記錄的數量,這裏沒有格式化,但可以格式化。

34:列數是指以下將從OUTREC更好拼寫爲BUILD塔34

開始的項目。 OUTREC存在於別處。BUILD已經存在了10多年,所以不需要在新代碼中使用OUTFIL上的OUTREC(可能這是老的)。

BUILD將做什麼是將當前輸入記錄格式化爲報告中輸出行所需的內容。

成對的數字是字段的起始位置和長度。在沒有定義字段類型的情況下,它們被視爲字符字段。

您有一個字段類型ZD,它是區分十進制的。它的長度是七,並使用編輯掩碼,四位數字,全站(小數點),然後三位數字。

以前的X是空格,用作報表上的分隔符。每個字段的內容在評論中描述。評論是控制卡結束後的任何文本。聲明完成後,控制卡在空白處結束,或在可能的延續後出現空白(可能延續逗號或冒號)。

132:X在列132中放置一個空白,並填充最後一個字段或常量中的所有中間列與空白。

這使CHANGE =。

CHANGE =是一個非常有用的測試和替換。

79,50,CHANGE=(50,C'IEF125I',C'LOGGED ON ', * MESSAGE    
      C'IEF126I',C'LOGGED OFF'),       
       NOMATCH=(79,50) 

這表示「在記錄的當前列被​​創建,考慮輸入的從第79位爲50的長度中的內容的輸出長度將是50。如果IEF125I,然後用恆定LOGGED ON時,如果IEF126I使用LOGGED OFF,否則(NOMATCH)使用位置79處的任何值,長度爲50,從輸入端開始。

基本上,報告使用系統日誌或其摘錄與Userid/Logon XSCB相關的活動