精通COBOL 16 6 1 MAP的基本概念

2021-04-17 05:31:20 字數 3492 閱讀 1349

map

是形成基於

cics

程式的介面的乙個實體,主要由

bms(

)提供支援。

map存放於

mapset

中,乙個

mapset

可以存放一到多個

map。不過通常情況下,乙個

mapset

中僅存放乙個

map。因此,有時也可使用

map指代其所在的

mapset

。同時,

map實際上是分為兩種型別的。其中一種型別為物理

map,另一種型別為符號

map。理解

map的基本概念,關鍵是要理解這兩種型別

map的區別與聯絡。物理

map主要用於在螢幕上顯示介面資訊。其中

bms使用物理

map既進行輸入操作,也進行輸出操作。例如,假設

cics

中的某一

map如圖

所示。

假設該map

的名稱為「

testma

」,所存放的

mapset

的名稱為「

mapseta

」。則該

map所對應的源**如下:

mapsetadfhmsdtype=&sysparm, mode=inout, term=all,

lang=cobol, tioapfx=yes, ctrl=(freekb)

testmadfhmdisize=(24, 80), line=1, column=1

dfhmdfpos=(1, 1), length=4, initial=』t**p』, attrb=askip

dfhmdfpos=(2, 30), length=12, initial=』testsystem』, attrb=askip

dfhmdfpos=(4, 2), length=12, initial=』test code:』, attrb=askip

codedfhmdfpos=(4, 15), length=10, attrb=(unprot, num, ic)

dfhmdfpos=(4, 26), length=1, attrb=prot

dfhmdfpos=(5, 2), length=10, initial=』test name:』, attrb=askip

namedfhmdfpos=(5, 13), length=20, attrb=unprot

dfhmdfpos=(5, 34), length=1, attrb=prot

msgdfhmdfpos=(24, 1), length=75, attrb=askip

dfhmsdtype=final

end以上這段**實際上為一段彙編巨集**。其物理

map所包含內容的彙編巨集指令分別如下。

qdfhmsd

:指定mapset。q

dfhmdi

:指定map。q

dfhmdf

:指定物理

map中的常量和變數。其中每行前面有標號的對應

map中的變數,沒有標號的對應

map中的常量。常量僅用於輸出,其屬性和內容不可改變。變數既可用於輸出,也可用於輸入,其屬性和內容可以改變。

qdfhmsd

:表明該

map定義結束。

符號map

為一組cobol

資料,用於在

cobol

程式中進行處理。例如,對於以上定義的

map,可在

cobol

程式中使用「

copy mapseta

」將符號

map拷貝進來。該命令被編譯後,將得到如下符號

map:

copymapseta.

01testmai./*

以下為符號

map中的輸入資訊

*/02fillerpicx(12)./*

此處表示

tioa

(terminal input/output area

)字首*/

02codelcomppics9(4)./*

以下為變數

code

的相關輸入資訊

*/02codefpicturex.

02fillerredefinescodef.

03codeapicturex.

02codeipicx(10).

02namelcomppics9(4)./*

以下為變數

name

的相關輸入資訊

*/02namefpicturex.

02fillerredefinesnamef.

03nameapicturex.

02nameipicx(20).

02msglcomppics9(4)./*

以下為變數

msg的相關輸入資訊

*/02msgfpicturex.

02fillerredefine**sgf.

03msgapicturex.

02msgipicx(75).

01testmaoredefinestestmai./*

以下為符號

map中的輸出資訊

*/02fillerpicx(12).

02fillerpicturex(3).

02codeopicx(10).

02fillerpicturex(3).

02nameopicx(20).

02filler

picutrex(3).

02msgopicx(75).

關於符號

map中各變數的字尾,簡要說明如下:

q字尾「

l」:半字邊界區域,用於儲存輸入資料的長度。(關於半字的概念,將在大型機組合語言擴充套件一章中詳細講解。)

q字尾「

f」:當遇到

eof(

erase to end of field key

)情況時,該區域內容為十六進製制數「

80」。此時字尾為「

l」的區域內容將為0。

q字尾「

i」:儲存實際輸入的資料。

q字尾「

a」:包含資料的屬性,可以對其進行更改;其中常用屬性有:

dfhbmunp

(可輸入);

dfhbmpro

(不可輸入);

dfhbmbry

(高亮顯示);

dfhbmdar

(不顯示)。

q字尾「

o」:儲存實際要輸出的資料。

最後,圖

分別反映了物理

map和符號

map從定義到生成的實際過程。

精通cobol 9 1 3 表的基本用途

表的基本用途是減少 編寫量,優化資料操作,便於資料查詢。對於如何利用表進行資料查詢,在本章後面幾節中將詳細講到。對於如何通過表減少 編寫量和優化資料操作,下面將結合乙個簡單例項進行具體講解。在銀行系統的應用軟體中,乙個類似於零存整取的系統是十分常見的。為突出本節討論的問題,可以對此進行乙個抽象模型的...

精通COBOL 11 2 1 子程式的命名規則

子程式的命名通常和普通程式的命名方式相同。但是需要注意的是,對於子程式而言,不可將其字首命名為以下這幾個名字。afbafh cbccee edcibm ifyigy igzilb 實際上,以上名字都屬於 ibm相關產品的名字。如果將子程式的字首命名為以上名字,則在主程式中將不能對其進行呼叫。當在主程...

精通COBOL 11 2 2 子程式的呼叫順序

首先需要說明的是,子程式實際上就是普通的程式。當某一程式被其他程式呼叫時,該程式才相對呼叫的程式而言被稱作子程式。因此,當某一程式作為子程式被呼叫後,該程式也可再將其他程式作為子程式進行呼叫。當多個程式進行呼叫時,便存在乙個呼叫順序的問題。關於子程式的呼叫順序,通常是提倡進行線形呼叫的。例如,以下這...