<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>还是那只鱼-newcoin&#039;s blog &#187; mapset</title>
	<atom:link href="http://www.newcoin.info/tag/mapset/feed" rel="self" type="application/rss+xml" />
	<link>http://www.newcoin.info</link>
	<description>人生没有彩排，每天都是现场直播...</description>
	<lastBuildDate>Thu, 02 Feb 2012 12:51:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>cobol+cics实例练习</title>
		<link>http://www.newcoin.info/cobolcics%e5%ae%9e%e4%be%8b%e7%bb%83%e4%b9%a0.html</link>
		<comments>http://www.newcoin.info/cobolcics%e5%ae%9e%e4%be%8b%e7%bb%83%e4%b9%a0.html#comments</comments>
		<pubDate>Tue, 19 May 2009 01:48:22 +0000</pubDate>
		<dc:creator>newcoin</dc:creator>
				<category><![CDATA[大型机｜Mainframe]]></category>
		<category><![CDATA[CICS]]></category>
		<category><![CDATA[cobol实例]]></category>
		<category><![CDATA[cursor]]></category>
		<category><![CDATA[mapset]]></category>
		<category><![CDATA[大型机资料]]></category>
		<category><![CDATA[翻页]]></category>

		<guid isPermaLink="false">http://www.newcoin.info/?p=27865</guid>
		<description><![CDATA[这个程序主要作用是从数据库中读取相关的学生信息，运用了cursor的fetch，由于返回结果很多，一个屏幕显示不了，需要添加翻页功能，既按F7和F8可以实现前翻和后翻的效果。在CICS中mapset上可以看到。 IDENTIFICATION DIVISION. * PROGRAM-ID.  SECADD. * ENVIRONMENT DIVISION. * DATA DIVISION. * WORKING-STORAGE SECTION. * 01  SWITCHES. * 05  VALID-DATA-SW          PIC X(01)     VALUE &#8216;Y&#8217;. 88 VALID-DATA                        VALUE &#8216;Y&#8217;. 05   END-OF-ACCID-SW        PIC X   VALUE &#8216;N&#8217;. 88 END-OF-ACCID               VALUE &#8216;Y&#8217;. * 01  FLAGS. * 05  DISPLAY-FLAG        PIC X(01). 88  DISPLAY-NEW-ECINFO          VALUE &#8217;1&#8242;. 88  DISPLAY-SPACES                VALUE &#8217;2&#8242;. [...]]]></description>
			<content:encoded><![CDATA[<p>这个程序主要作用是从数据库中读取相关的学生信息，运用了cursor的fetch，由于返回结果很多，一个屏幕显示不了，需要添加翻页功能，既按F7和F8可以实现前翻和后翻的效果。在CICS中mapset上可以看到。</p>
<p><span id="more-27865"></span></p>
<p>IDENTIFICATION DIVISION.<br />
*<br />
PROGRAM-ID.  SECADD.<br />
*<br />
ENVIRONMENT DIVISION.<br />
*<br />
DATA DIVISION.<br />
*<br />
WORKING-STORAGE SECTION.<br />
*<br />
01  SWITCHES.<br />
*<br />
05  VALID-DATA-SW          PIC X(01)     VALUE &#8216;Y&#8217;.<br />
88 VALID-DATA                        VALUE &#8216;Y&#8217;.<br />
05   END-OF-ACCID-SW        PIC X   VALUE &#8216;N&#8217;.<br />
88 END-OF-ACCID               VALUE &#8216;Y&#8217;.<br />
*<br />
01  FLAGS.<br />
*<br />
05  DISPLAY-FLAG        PIC X(01).<br />
88  DISPLAY-NEW-ECINFO          VALUE &#8217;1&#8242;.<br />
88  DISPLAY-SPACES                VALUE &#8217;2&#8242;.<br />
88  DISPLAY-LOW-VALUES            VALUE &#8217;3&#8242;.<br />
05  SEND-FLAG           PIC X(01).<br />
88  SEND-ERASE                    VALUE &#8217;1&#8242;.<br />
88  SEND-DATAONLY                 VALUE &#8217;2&#8242;.<br />
88  SEND-DATAONLY-ALARM           VALUE &#8217;3&#8242;.<br />
*<br />
01  WORK-FIELDS.<br />
*<br />
05  ECINFO-SUB   PIC S9(4) COMP.<br />
*<br />
01  COMMUNICATION-AREA.<br />
05  CA-TS-RECORD-COUNT             PIC   S9(4)  COMP.<br />
05  CA-FIRST-RECORD-ON-DISPLAY     PIC   S9(4)  COMP.<br />
*<br />
01 RESPONSE-CODE                  PIC S9(8)  COMP.<br />
*<br />
01 TEMPORARY-STORAGE-FIELDS.<br />
05 TS-QUEUE-NAME.<br />
10 TS-TERMINAL-ID     PIC X(4).<br />
10 FILLER             PIC X(4) VALUE &#8216;ECIF&#8217;.<br />
05 TS-ITEM-NUMBER         PIC S9(4) COMP VALUE ZERO.<br />
*<br />
01  ELECTIVE-COURSE-INFO.<br />
*<br />
77  CTYPEX   PIC   X(01)  VALUE &#8217;1&#8242;.<br />
*<br />
01  PERSONAL-COURSE-INFO.<br />
*<br />
COPY DFHAID.<br />
*<br />
COPY ERRPARM.<br />
*<br />
EXEC SQL<br />
INCLUDE ECINFO<br />
END-EXEC.<br />
*<br />
EXEC SQL<br />
INCLUDE PECINFO<br />
END-EXEC.<br />
*<br />
EXEC SQL<br />
INCLUDE CINFO<br />
END-EXEC.<br />
*<br />
EXEC SQL<br />
INCLUDE CTINFO<br />
END-EXEC.<br />
*<br />
EXEC SQL<br />
INCLUDE THINFO<br />
END-EXEC.</p>
<p>*<br />
EXEC SQL<br />
INCLUDE SQLCA<br />
END-EXEC.<br />
*<br />
EXEC SQL<br />
DECLARE ECINFO1 CURSOR FOR<br />
SELECT  C.CID,CName,CTime,CAddr,TName,<br />
CHour,CCredit,ToNum,LNum<br />
FROM CN0010.ECINFO AS E,CN0010.CINFO AS C,<br />
CN0010.THINFO AS T,CN0010.CTINFO AS CT<br />
WHERE C.CID = E.CID AND C.CID = CT.CID AND CT.TID = T.TID<br />
AND C.CTYPE = :CTYPEX<br />
END-EXEC.<br />
*<br />
LINKAGE SECTION.<br />
*<br />
01  DFHCOMMAREA    PIC X(04).<br />
*   02   SNO   PIC X(13).<br />
*<br />
PROCEDURE DIVISION.<br />
*<br />
0000-PROCESS-ECINFO-INQUIRY.<br />
*<br />
EVALUATE TRUE<br />
*<br />
*        WHEN EIBCALEN &gt; ZERO<br />
*            MOVE DFHCOMMAREA TO SNO<br />
*            MOVE LOW-VALUE TO SECMPA1O<br />
*            MOVE &#8216;SECA&#8217; TO TRANID1O<br />
*            SET SEND-ERASE TO TRUE<br />
*            PERFORM 1600-SEND-INQUIRY-MAP<br />
WHEN EIBCALEN = ZERO<br />
MOVE LOW-VALUE TO SECMPA1O<br />
MOVE &#8216;SECA&#8217; TO TRANID1O<br />
SET SEND-ERASE TO TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP<br />
MOVE &#8216;SECA&#8217; TO  EIBTRNID<br />
PERFORM  1200-DELETE-TS-QUEUE<br />
PERFORM 1300-SELECT-ECINFO-ROW<br />
PERFORM 1400-DISPLAY-INQUIRY-RESULTS<br />
SET SEND-DATAONLY  TO TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP<br />
*<br />
WHEN EIBAID = DFHCLEAR<br />
MOVE LOW-VALUE TO SECMPA1O<br />
MOVE &#8216;SECA&#8217; TO TRANID1O<br />
PERFORM 1300-SELECT-ECINFO-ROW<br />
PERFORM 1400-DISPLAY-INQUIRY-RESULTS<br />
SET SEND-ERASE TO TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP<br />
*<br />
WHEN EIBAID = DFHPA1 OR DFHPA2 OR DFHPA3<br />
CONTINUE<br />
*<br />
WHEN EIBAID = DFHPF3 OR DFHPF12<br />
EXEC CICS<br />
XCTL PROGRAM(&#8216;SECMENU&#8217;)<br />
END-EXEC<br />
*<br />
WHEN EIBAID = DFHPF7 OR DFHPF8<br />
PERFORM 2000-DISPLAY-SCROLLED-DATA<br />
*<br />
WHEN EIBAID = DFHENTER<br />
PERFORM 1000-DISPLAY-SELECTED-ECINFO<br />
*<br />
WHEN OTHER<br />
MOVE LOW-VALUE TO SECMPA1O<br />
MOVE &#8216;Invalid key pressed.&#8217; TO MSG1O<br />
SET SEND-DATAONLY-ALARM TO TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP<br />
*<br />
END-EVALUATE.<br />
*<br />
EXEC CICS<br />
RETURN TRANSID(&#8216;SECA&#8217;)<br />
COMMAREA(COMMUNICATION-AREA)<br />
END-EXEC.<br />
*<br />
1000-DISPLAY-SELECTED-ECINFO.<br />
*<br />
PERFORM 1100-RECEIVE-INQUIRY-MAP<br />
*        MOVE &#8216;Y&#8217; TO VALID-DATA-SW<br />
PERFORM 1500-ADD-ECINFO-CID<br />
IF VALID-DATA<br />
PERFORM 1510-ADD-ECINFO-INSERT<br />
END-IF.<br />
*<br />
1100-RECEIVE-INQUIRY-MAP.<br />
*<br />
EXEC CICS<br />
RECEIVE MAP(&#8216;SECMPA1&#8242;)<br />
MAPSET(&#8216;SECSTA1&#8242;)<br />
INTO(SECMPA1I)<br />
END-EXEC.<br />
*<br />
INSPECT SECMPA1I<br />
REPLACING ALL &#8216;_&#8217; BY SPACE.<br />
*<br />
1200-DELETE-TS-QUEUE.<br />
*<br />
MOVE EIBTRMID TO TS-TERMINAL-ID.<br />
EXEC CICS<br />
DELETEQ TS QUEUE(TS-QUEUE-NAME)<br />
RESP(RESPONSE-CODE)<br />
END-EXEC.<br />
IF RESPONSE-CODE NOT = DFHRESP(NORMAL)<br />
AND RESPONSE-CODE NOT = DFHRESP(QIDERR)<br />
EXEC CICS<br />
ABEND<br />
END-EXEC.<br />
*<br />
1300-SELECT-ECINFO-ROW.<br />
*<br />
EXEC SQL<br />
SELECT   C.CID,CName,CTime,CAddr,TName,<br />
CHour,CCredit,ToNum,LNum<br />
INTO   :CCID,  :CName,  :CTime,  :CAddr,  :TName,<br />
:CHour,  :CCredit,  :ToNum,  :LNum<br />
FROM CN0010.ECINFO AS E,CN0010.CINFO AS C,<br />
CN0010.THINFO AS T,CN0010.CTINFO AS CT<br />
WHERE C.CID=E.CID AND C.CID=CT.CID AND CT.TID=T.TID<br />
AND C.CTYPE = :CTYPEX AND E.LNum &gt; 0<br />
END-EXEC.<br />
*<br />
IF SQLCODE = 100<br />
MOVE &#8216;That course information does not exist.&#8217; TO MSG1O<br />
ELSE<br />
IF SQLCODE NOT = 0<br />
SET DISPLAY-NEW-ECINFO TO TRUE<br />
*            PERFORM 9999-TERMINATE-PROGRAM<br />
END-IF<br />
END-IF.<br />
*<br />
1400-DISPLAY-INQUIRY-RESULTS.<br />
*<br />
EVALUATE TRUE<br />
WHEN DISPLAY-NEW-ECINFO<br />
PERFORM 1410-OPEN-ECINFO-CURSOR<br />
PERFORM 1420-FORMAT-ECINFO-LINE<br />
*                VARYING ECINFO-SUB FROM 1 BY 1<br />
*                UNTIL ECINFO-SUB &gt; 12<br />
PERFORM 1440-CLOSE-ECINFO-CURSOR<br />
*            MOVE SPACE        TO MSG1O<br />
SET SEND-DATAONLY TO TRUE<br />
WHEN DISPLAY-SPACES<br />
SET SEND-DATAONLY-ALARM TO TRUE<br />
WHEN DISPLAY-LOW-VALUES<br />
SET SEND-DATAONLY-ALARM TO TRUE<br />
END-EVALUATE.<br />
PERFORM 1600-SEND-INQUIRY-MAP.<br />
*<br />
1410-OPEN-ECINFO-CURSOR.<br />
*<br />
EXEC SQL<br />
OPEN ECINFO1<br />
END-EXEC.<br />
*<br />
IF SQLCODE NOT = 0<br />
PERFORM 9999-TERMINATE-PROGRAM<br />
END-IF.<br />
*<br />
1420-FORMAT-ECINFO-LINE.<br />
*<br />
MOVE  1  TO     CA-TS-RECORD-COUNT<br />
PERFORM 1430-FETCH-NEXT-ECINFO<br />
VARYING ECINFO-SUB FROM 1 BY 1<br />
UNTIL SQLCODE = 100.<br />
*<br />
1430-FETCH-NEXT-ECINFO.<br />
*<br />
EXEC SQL<br />
FETCH ECINFO1<br />
INTO     :CCID,  :CName,  :CTime,  :CAddr,  :TName,<br />
:CHour,  :CCredit,  :ToNum,  :LNum<br />
END-EXEC.<br />
*<br />
EVALUATE SQLCODE<br />
WHEN 0<br />
MOVE   CCID      TO     CIDX,<br />
MOVE   CName    TO     CNameX,<br />
MOVE   CTime    TO      CTimeX,<br />
MOVE   CAddr    TO      CAddrX,<br />
MOVE   TName    TO     TNameX,<br />
MOVE   CHour    TO     CHourX,<br />
MOVE  CCredit   TO     CCreditX,<br />
MOVE   CCredit  TO     CCreditX,<br />
MOVE    ToNum   TO     ToNumX<br />
MOVE   LNum     TO     LNumX<br />
*           MOVE ELECTIVE-COURSE-INFO  TO SEC(ECINFO-SUB)<br />
END-EVALUATE<br />
*<br />
EXEC CICS<br />
WRITEQ TS QUEUE(TS-QUEUE-NAME)<br />
FROM(ELECTIVE-COURSE-INFO)<br />
END-EXEC<br />
ADD 1 TO    CA-TS-RECORD-COUNT.<br />
*<br />
1440-CLOSE-ECINFO-CURSOR.<br />
*<br />
EXEC SQL<br />
CLOSE ECINFO1<br />
END-EXEC<br />
*<br />
MOVE 1 TO ECINFO-SUB, TS-ITEM-NUMBER<br />
CA-FIRST-RECORD-ON-DISPLAY<br />
MOVE LOW-VALUE TO ELECTIVE-COURSE-INFO<br />
PERFORM 2010-MOVE-ROW-DATA-TO-MAP<br />
VARYING ECINFO-SUB FROM 1 BY 1<br />
UNTIL ECINFO-SUB &gt; 5<br />
*<br />
IF SQLCODE NOT = 0<br />
PERFORM 9999-TERMINATE-PROGRAM<br />
END-IF.<br />
*<br />
2000-DISPLAY-SCROLLED-DATA.<br />
*<br />
MOVE DFHCOMMAREA   TO COMMUNICATION-AREA.<br />
MOVE EIBTRMID      TO TS-TERMINAL-ID.<br />
MOVE LOW-VALUE     TO SECMPA1O.<br />
MOVE SPACE         TO MSG1O<br />
IF CA-TS-RECORD-COUNT = 0<br />
MOVE &#8216;No record found!.&#8217; TO MSG1O<br />
ELSE<br />
IF EIBAID = DFHPF7<br />
IF CA-FIRST-RECORD-ON-DISPLAY &gt; 5<br />
SUBTRACT 5 FROM CA-FIRST-RECORD-ON-DISPLAY<br />
END-IF<br />
ELSE<br />
IF CA-FIRST-RECORD-ON-DISPLAY + 4 &lt; CA-TS-RECORD-COUNT</p>
<p>ADD 5 TO CA-FIRST-RECORD-ON-DISPLAY<br />
END-IF<br />
END-IF<br />
MOVE CA-FIRST-RECORD-ON-DISPLAY TO TS-ITEM-NUMBER<br />
PERFORM 2010-MOVE-ROW-DATA-TO-MAP<br />
VARYING ECINFO-SUB FROM 1 BY 1<br />
UNTIL ECINFO-SUB &gt; 5<br />
SET SEND-ERASE  TO  TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP.<br />
*<br />
2010-MOVE-ROW-DATA-TO-MAP.<br />
*<br />
IF TS-ITEM-NUMBER &lt;= CA-TS-RECORD-COUNT<br />
EXEC CICS<br />
READQ TS QUEUE(TS-QUEUE-NAME)<br />
INTO (ELECTIVE-COURSE-INFO)<br />
ITEM(TS-ITEM-NUMBER)<br />
END-EXEC<br />
MOVE ELECTIVE-COURSE-INFO  TO  SEC(ECINFO-SUB)<br />
ADD 1 TO TS-ITEM-NUMBER<br />
ELSE<br />
MOVE  SPACE TO  SEC(ECINFO-SUB).<br />
SET SEND-DATAONLY  TO  TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP.<br />
*<br />
1500-ADD-ECINFO-CID.<br />
*<br />
IF     CID1L = 0<br />
OR   CID1I = SPACE<br />
MOVE &#8216;N&#8217; TO VALID-DATA-SW<br />
MOVE &#8216;Please input the CID &#8216; TO MSG1O<br />
SET SEND-DATAONLY  TO  TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP<br />
ELSE<br />
IF    CID1L &lt; 10<br />
MOVE &#8216;N&#8217; TO VALID-DATA-SW<br />
MOVE &#8216;The CID is wrong &#8216; TO MSG1O<br />
SET SEND-DATAONLY  TO  TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP<br />
END-IF<br />
*<br />
EXEC SQL<br />
SELECT CID INTO :ECID<br />
FROM  CN0010.ECINFO<br />
WHERE  CID = :CID1I<br />
END-EXEC<br />
IF SQLCODE NOT = 0<br />
MOVE &#8216;N&#8217; TO VALID-DATA-SW<br />
MOVE &#8216;The CID is wrong &#8216; TO MSG1O<br />
SET SEND-DATAONLY  TO  TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP<br />
END-IF.<br />
*<br />
1510-ADD-ECINFO-INSERT.<br />
*<br />
MOVE   CID1I  TO  PECIDY<br />
MOVE   &#8217;123456789123&#8242;   TO  SNOY<br />
EXEC SQL<br />
INSERT INTO CN0010.PECINFO<br />
(CID,SID)<br />
VALUES (:PECIDY, :SNOY)<br />
END-EXEC<br />
*<br />
EVALUATE SQLCODE<br />
WHEN  0<br />
MOVE  &#8216;ADD COURSE SUCCESSFULLY&#8217; TO MSG1O<br />
SET SEND-DATAONLY  TO  TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP<br />
*<br />
EXEC SQL<br />
UPDATE CN0010.ECINFO<br />
SET LNum = LNum &#8211; 1<br />
WHERE CID = :CID1I<br />
END-EXEC<br />
WHEN  OTHER<br />
MOVE &#8216;The course may have existed or CID is wrong&#8217; to MSG1O O<br />
SET SEND-DATAONLY  TO  TRUE<br />
PERFORM 1600-SEND-INQUIRY-MAP<br />
END-EVALUATE.<br />
*<br />
1600-SEND-INQUIRY-MAP.<br />
*<br />
MOVE &#8216;SECA&#8217; TO TRANID1O<br />
EVALUATE TRUE<br />
WHEN SEND-ERASE<br />
EXEC CICS<br />
SEND MAP(&#8216;SECMPA1&#8242;)<br />
MAPSET(&#8216;SECSTA1&#8242;)<br />
FROM(SECMPA1O)<br />
ERASE<br />
END-EXEC<br />
WHEN SEND-DATAONLY<br />
EXEC CICS<br />
SEND MAP(&#8216;SECMPA1&#8242;)<br />
MAPSET(&#8216;SECSTA1&#8242;)<br />
FROM(SECMPA1O)<br />
DATAONLY<br />
END-EXEC<br />
WHEN SEND-DATAONLY-ALARM<br />
EXEC CICS<br />
SEND MAP(&#8216;SECMPA1&#8242;)<br />
MAPSET(&#8216;SECSTA1&#8242;)<br />
FROM(SECMPA1O)<br />
DATAONLY<br />
ALARM<br />
END-EXEC<br />
END-EVALUATE.<br />
*<br />
9999-TERMINATE-PROGRAM.<br />
*<br />
MOVE EIBRESP  TO ERR-RESP.<br />
MOVE EIBRESP2 TO ERR-RESP2.<br />
MOVE EIBTRNID TO ERR-TRNID.<br />
MOVE EIBRSRCE TO ERR-RSRCE.<br />
*<br />
EXEC CICS<br />
XCTL PROGRAM(&#8216;SYSERR&#8217;)<br />
COMMAREA(ERROR-PARAMETERS)<br />
END-EXEC.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newcoin.info/cobolcics%e5%ae%9e%e4%be%8b%e7%bb%83%e4%b9%a0.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
