CICS - MAP



BMS 接收使用者輸入的資料,然後將其格式化為符號對映區。應用程式只能訪問符號對映中存在的資料。應用程式處理資料,並將輸出傳送到符號對映。BMS 將符號資料的輸出與物理對映合併。

CICS MAPS

物理對映

物理對映是載入庫中的載入模組,其中包含有關如何顯示對映的資訊。

  • 它包含有關對映中所有欄位的屬性及其位置的詳細資訊。

  • 它包含給定終端的對映顯示格式。

  • 它使用 BMS 宏進行編碼。它單獨組裝並連結編輯到 CICS 庫中。

符號對映

符號對映是庫中的複製書。CICS 應用程式程式使用複製書從終端傳送和接收資料。

  • 它包含所有複製到程式 WORKINGSTORAGE 部分的可變資料。

  • 它包含所有命名欄位。應用程式程式設計師使用這些欄位讀取和寫入對映中的資料。

跳過欄位和停止欄位

對於對映中未受保護的命名欄位,如果我們指定長度為 10,這意味著名稱欄位可以取長度不超過 10 的值。但是,當您使用 CICS 顯示此對映並在螢幕上開始輸入此欄位的值時,我們可以輸入超過 10 個字元,即直到螢幕末尾,我們甚至可以輸入到下一行。為了防止這種情況,我們使用跳過欄位或停止欄位。跳過欄位通常是長度為 1 的未命名欄位,位於命名欄位之後。

CICS Skipper & Stopper Field

跳過欄位

如果我們將跳過欄位放在命名未受保護欄位之後,則在輸入值時,一旦達到指定的長度,游標將自動定位到下一個未受保護欄位。以下示例顯示瞭如何新增跳過欄位:

NUMBER  DFHMDF POS = (01,01), X
   LENGTH = 5, X
   ATTRB = (UNPROT,IC)
      DFHMDF POS = (01,07), X
      LENGTH = 1, X
      ATTRB = (ASKIP)

停止欄位

如果我們將停止欄位放在命名未受保護欄位之後,則在輸入值時,一旦達到指定的長度,游標將停止定位。以下示例顯示瞭如何新增停止欄位:

NUMBER  DFHMDF POS = (01,01), X
   LENGTH = 5, X
	ATTRB = (UNPROT,IC)
	   DFHMDF POS = (01,07), X
      LENGTH = 1, X
      ATTRB = (PROT)

屬性位元組

任何欄位的屬性位元組都儲存有關該欄位物理屬性的資訊。下圖和表格解釋了每一位的意義。

CICS Attribute Byte
位位置 描述 位設定
0 & 1   由位 2 到 7 的內容確定
2 & 3 保護和移位 00 - 未受保護的字母數字
01 - 未受保護的數字
10 - 受保護的停止
11 - 受保護的跳過
4 & 5 強度 00 - 常規
01 - 常規
10 - 高亮
11 - 不顯示(暗)
6   必須始終為零
7 修改資料標記 0 - 欄位未被修改
1 - 欄位已被修改

修改資料標記

修改資料標記 (MDT) 是屬性位元組中的最後一位。

  • MDT 是一個儲存單個位的標誌。它指定是否將值傳輸到系統。

  • 當欄位值更改時,其預設值為 1。

  • 如果 MDT 為 0,則資料無法傳輸;如果 MDT 為 1,則資料可以傳輸。

傳送對映

傳送對映命令將格式化的輸出寫入終端。它用於從應用程式程式將對映傳送到終端。以下程式碼段顯示瞭如何將對映傳送到終端:

EXEC CICS SEND 
   MAP('map-name')
   MAPSET('mapset-name')
   [FROM(data-area)]
   [LENGTH(data_value)]
   [DATAONLY]
   [MAPONLY]
   [CURSOR]
   [ERASE/ERASEAUP]
   [FREEKB] 
   [FRSET]
END-EXEC   

下表列出了傳送對映命令中使用的引數及其意義。

序號 引數和描述
1

對映名稱

這是我們要傳送的對映的名稱。這是必須的。

2

對映集名稱

這是包含對映名稱的對映集的名稱。除非它與對映名稱相同,否則需要對映集名稱。

3

FROM

如果我們決定使用不同的 DSECT 名稱,我們必須在 SEND MAP 命令中使用 FROM (dsect-name) 選項。

4

MAPONLY

這意味著沒有來自程式的資料要合併到對映中,並且只傳輸對映中的資訊。

5

DATAONLY

它是 MAPONLY 的邏輯反義詞。我們用它來修改已經建立的顯示中的可變資料。只有來自程式的資料被髮送到螢幕。對映中的常量不會被髮送。

6

ERASE

它導致在顯示我們傳送的內容之前擦除整個螢幕。

7

ERASEUP

它只擦除未受保護的欄位。

8

FRSET

標誌重置在顯示我們傳送的內容之前關閉螢幕上所有欄位的屬性位元組中的修改資料標記。

9

CURSOR

它可以用於在終端螢幕上定位游標。可以透過將 -1 移動到欄位的 L 部分然後傳送對映來設定游標。

10

ALARM

它會發出警報聲。

11

FREEKB。

如果我們在對映或 SEND 命令中指定 FREEKB,則鍵盤將被解鎖。

12

PRINT

它允許將 SEND 命令的輸出列印到印表機上。

13

FORMFEED

在列印輸出之前,它會導致印表機將紙張恢復到下一頁的頂部。

接收對映

當我們想要從終端接收輸入時,我們使用 RECEIVE MAP 命令。MAP 和 MAPSET 引數與 SEND MAP 命令的含義完全相同。以下程式碼段顯示瞭如何接收對映:

EXEC CICS RECEIVE 
   MAP('map-name')
   MAPSET('mapset-name')
   [INTO(data-area)]
   [FROM(data-area)]
   [LENGTH(data_value)]
END-EXEC

對映集執行

開發和執行對映集需要以下步驟:

  • 步驟 1 - 開啟 TSO 會話。

  • 步驟 2 - 建立一個新的 PDS。

  • 步驟 3 - 根據要求在新成員中編寫對映集。

  • 步驟 4 - 使用 CICS 管理員提供的 JCL 組裝對映集。

  • 步驟 5 - 開啟 CICS 會話。

  • 步驟 6 - 使用以下命令安裝程式:

    CEMT SET PROG(mapset-name) NEW

  • 步驟 7 - 輸入以下命令將對映傳送到終端:

    CECI SEND MAP(map-name) MAPSET(mapset-name) ERASE FREEKB

廣告