IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Strange Problem in BMS


IBM Mainframe Forums -> CICS
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Prakasam

New User


Joined: 28 Oct 2004
Posts: 8

PostPosted: Thu Oct 28, 2004 9:35 am
Reply with quote

I have declared a Group item in working storage section as,

01 WS-MASTER-STRUCTURE.
05 FILLER PIC X.
05 OPTION PIC X.
05 FILLER PIC X(5).
05 ORDNUM PIC X(6).
05 FILLER PIC X(5).
05 ORDDATE.
10 ORDER-DATE PIC 99.
10 FILLER PIC X VALUE '/'.
10 ORDER-MONTH PIC 99.
10 FILLER PIC X VALUE '/'.
10 ORDER-YEAR PIC 9999.
05 FILLER PIC X(4).
05 ORDAMOUNT.
10 ORD-RUPEE PIC 9(10).
10 FILLER PIC X VALUE '.'.
10 ORD-PAISE PIC 99.

I have to move the data from a Table to this group item.

But after i moved the data from Table to this Group item, I need to to move data from group item to a field in a BMS Which uses Occurs Clause with 10 occurence.

My problem is after I moved the data to BMS I could not see the output.
The Output is Still blank. I could't find a solution to solve this. Please Help me to solve my problem. Thank you!

Prakasam.
Chennai.
Back to top
View user's profile Send private message
mmwife

Super Moderator


Joined: 30 May 2003
Posts: 1592

PostPosted: Thu Oct 28, 2004 9:41 am
Reply with quote

Hi Prakasam,

Please show all the fields involved (including the symbolic map) and all the move stmts, including how you populate WS-MASTER-STRUCTURE.
Back to top
View user's profile Send private message
Prakasam

New User


Joined: 28 Oct 2004
Posts: 8

PostPosted: Thu Oct 28, 2004 10:08 am
Reply with quote

Thank you for your interest on my problem. I am sending my BMS and the Cics - Cobol Program for your eye.

My BMS - Sales:


SALES DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL,TIOAPFX=YES, X
CTRL=(FRSET,FREEKB)
HEADER DFHMDI SIZE=(09,80),LINE=01,COLUMN=01
DFHMDF POS=(2,28), X
INITIAL='SALES ORDER MAINTENANCE', X
LENGTH=23, X
ATTRB=PROT
MASDATE DFHMDF POS=(2,69), X
INITIAL='__/__/____', X
LENGTH=10, X
ATTRB=PROT
DFHMDF POS=(3,34), X
INITIAL='ORDER MASTER', X
LENGTH=12, X
ATTRB=PROT
MASTIME DFHMDF POS=(3,69), X
INITIAL='__:__:__', X
LENGTH=8, X
ATTRB=PROT
DFHMDF POS=(5,1), X
INITIAL='CUSTOMER ID:', X
LENGTH=15, X
ATTRB=PROT
MASCID DFHMDF POS=(5,17), X
INITIAL='_____', X
LENGTH=5, X
ATTRB=(UNPROT,IC,FSET)
DFHMDF POS=(5,23), X
INITIAL=' ', X
LENGTH=1, X
ATTRB=ASKIP
DFHMDF POS=(5,27), X
INITIAL='START DATE:', X
LENGTH=12, X
ATTRB=PROT
SDATE DFHMDF POS=(5,40), X
INITIAL='__/__/____', X
LENGTH=10, X
ATTRB=(UNPROT,FSET)
DFHMDF POS=(5,51), X
INITIAL=' ', X
LENGTH=1, X
ATTRB=ASKIP
DFHMDF POS=(5,53), X
INITIAL='END DATE :', X
LENGTH=10, X
ATTRB=PROT
EDATE DFHMDF POS=(5,64), X
INITIAL='__/__/____', X
LENGTH=10, X
ATTRB=UNPROT
DFHMDF POS=(5,75), X
INITIAL=' ', X
LENGTH=1, X
ATTRB=PROT
DFHMDF POS=(7,1), X
INITIAL='OPTIONS : S = SELECT, D = DELETE', X
LENGTH=31, X
ATTRB=PROT
DFHMDF POS=(9,18), X
INITIAL='OPT ORDER NO. ORDER DATE ORDER VALUE', X
LENGTH=44, X
ATTRB=PROT
ORDMAP DFHMDI SIZE=(10,46),LINE=10,COLUMN=18
ORDERS DFHMDF POS=(01,01), X
INITIAL=' _ _____ __/__/____ __________.__',X
LENGTH=45, X
OCCURS=10, X
ATTRB=(UNPROT,FSET)
FOOTER DFHMDI SIZE=(03,80),LINE=22,COLUMN=01
MASMSG DFHMDF POS=(01,1), X
INITIAL=' ', X
LENGTH=70, X
ATTRB=PROT
MASMORE DFHMDF POS=(01,74), X
INITIAL='MORE', X
LENGTH=4, X
ATTRB=PROT
DFHMDF POS=(02,1), X
INITIAL='PF1-HELP PF3-GOBACK PF5-REFRESH X
PF7-PAGE UP PF8-PAGE DOWN', X
LENGTH=79, X
ATTRB=PROT


SALES DFHMSD TYPE=FINAL
END







My Program File5V1 :



Program to calculate total order value for a particular customer.




*----------------------------------------------------------------
*FILE NAME : FILE5V1
*FILES UTILIZED :
* KSDS-PK -ORDYEAD -CONTAINS ORDER HEADER INFORMATION
* RRDS-NO KEY- ORDTRANS-CONTAINS ORDER TRANSACTION INFORMATION
* KSDS-PK ITEMMAST-CONTAINS ITEM INFORMATION
*----------------------------------------------------------------
ID DIVISION.
PROGRAM-ID. FILE5V1.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY SALES.
* COPY TEST.
01 COUNTER PIC S9(4) COMP.
01 ORD-HEAD-REC.
05 SOHORDNUM PIC X(6).
05 SOHDT.
10 ORD-DATE PIC 99.
10 FILLER PIC X VALUE '/'.
10 ORD-MONTH PIC 99.
10 FILLER PIC X VALUE '/'.
10 ORD-YEAR PIC 9999.
05 SOHCUSCDE PIC X(5).
05 SOHORDSTS PIC X.
05 FILLER PIC X(58).
01 ORD-TRANS-REC.
05 SODORDNUM PIC X(6).
05 SODITMCDE PIC X(5).
05 SODQTY PIC 9(6).
05 FILLER PIC X(63).
01 ITEM-REC.
05 ITMCDE PIC X(5).
05 ITMDES PIC X(30).
05 ITMPRC PIC 9(9)V99.
05 ITMSTK PIC 9(6).
05 FILLER PIC X(28).
01 START-DATE.
05 ST-DATE PIC 99.
05 FILLER PIC X.
05 ST-MONTH PIC 99.
05 FILLER PIC X.
05 ST-YEAR PIC 9999.
01 END-DATE.
05 EN-DATE PIC 99.
05 FILLER PIC X.
05 EN-MONTH PIC 99.
05 FILLER PIC X.
05 EN-YEAR PIC 9999.
01 DISP-GROUP.
05 ORDERNO PIC X(6).
05 FILLER PIC X(5).
05 ORDERDATE PIC X(10).
05 FILLER PIC X(5).
05 DISPLAY-TOTAL PIC 9(9).99.
77 ORD-HEAD-EOF PIC X VALUE 'N'.
77 ORD-TRANS-EOF PIC X VALUE 'N'.
77 ORD-HEAD-RESP PIC S9(8) COMP.
77 ORD-TRANS-RESP PIC S9(8) COMP.
77 ITEM-RESP PIC S9(8) COMP.
77 ORD-HEAD-LEN PIC S9(4) COMP.
77 ORD-TRANS-LEN PIC S9(4) COMP.
77 ORD-START-DATE-CHECK PIC X.
77 ORD-END-DATE-CHECK PIC X.
77 ORD-DATE-CHECK PIC X.
77 TEMPTOTAL PIC 9(9)V99.
77 GRAND-TOTAL PIC 9(9)V99 VALUE 0.
77 ORD-COUNTER PIC 9(3) VALUE 0.
77 ORD-TRANS-RRN PIC S9(8) COMP VALUE 1.
77 ORD-HEAD-KEY PIC S9(8) COMP.
77 CUST PIC X(5).
*-----------------------------------------------
77 DISP-COUNTER PIC S9(8) COMP.
77 WS-LEN PIC S9(4) COMP.
01 DISP-MASTER-ARRAY VALUE SPACES.
05 REC PIC X(45) OCCURS 10 TIMES.
01 WS-MASTER-STRUCTURE.
05 FILLER PIC X.
05 OPTION PIC X.
05 FILLER PIC X(5).
05 ORDNUM PIC X(6).
05 FILLER PIC X(5).
05 ORDDATE.
10 ORDER-DATE PIC 99.
10 FILLER PIC X VALUE '/'.
10 ORDER-MONTH PIC 99.
10 FILLER PIC X VALUE '/'.
10 ORDER-YEAR PIC 9999.
05 FILLER PIC X(4).
05 ORDAMOUNT.
10 ORD-RUPEE PIC 9(10).
10 FILLER PIC X VALUE '.'.
10 ORD-PAISE PIC 99.
01 AAA PIC X(45).
01 NEW-DATA REDEFINES AAA PIC X(45).
*-----------------------------------------------------------
PROCEDURE DIVISION.
START-PARA.
* PERFORM MOVE-MASTER-VALUE-PARA.
* PERFORM SEND-MASTER-PARA.
* GO TO EXIT-PARA.
MOVE 1 TO DISP-COUNTER.
MOVE '11111' TO CUST.
MOVE '10/12/2003' TO START-DATE.
MOVE '10/04/2004' TO END-DATE.
MOVE 0 TO ORD-HEAD-KEY.
EXEC CICS STARTBR
FILE('ORDHEAD')
RIDFLD(ORD-HEAD-KEY)
END-EXEC.
PERFORM ORD-READ-NEXT-PARA UNTIL ORD-HEAD-EOF = 'Y'.
ORD-READ-NEXT-PARA.
MOVE 80 TO ORD-HEAD-LEN.
EXEC CICS READNEXT
FILE('ORDHEAD')
RIDFLD(ORD-HEAD-KEY)
INTO(ORD-HEAD-REC)
LENGTH(ORD-HEAD-LEN)
RESP(ORD-HEAD-RESP)
END-EXEC.
IF ORD-HEAD-RESP = DFHRESP(ENDFILE)
MOVE 'Y' TO ORD-HEAD-EOF
GO TO EXIT-PARA
ELSE IF ORD-HEAD-RESP = DFHRESP(NOTFND)
GO TO EXIT-PARA
ELSE
IF SOHCUSCDE = CUST AND SOHORDSTS = 'P'
PERFORM ORD-DATE-CHECK-PARA
IF ORD-DATE-CHECK = 'Y'
MOVE 0 TO GRAND-TOTAL
ADD 1 TO ORD-COUNTER
MOVE SOHORDNUM TO SODORDNUM
PERFORM READ-ORD-TRANS-PARA
END-IF
END-IF
END-IF.
ORD-DATE-CHECK-PARA.
IF ORD-YEAR > ST-YEAR
MOVE 'Y' TO ORD-START-DATE-CHECK
ELSE IF ORD-YEAR = ST-YEAR AND ORD-MONTH > ST-MONTH
MOVE 'Y' TO ORD-START-DATE-CHECK
ELSE IF ORD-YEAR = ST-YEAR AND ORD-MONTH = ST-MONTH AND
ORD-DATE >= ST-DATE
MOVE 'Y' TO ORD-START-DATE-CHECK
ELSE
MOVE 'N' TO ORD-START-DATE-CHECK
END-IF.
IF ORD-YEAR < EN-YEAR
MOVE 'Y' TO ORD-END-DATE-CHECK
ELSE IF ORD-YEAR = EN-YEAR AND ORD-MONTH < EN-MONTH
MOVE 'Y' TO ORD-END-DATE-CHECK
ELSE IF ORD-YEAR = EN-YEAR AND ORD-MONTH = EN-MONTH AND
ORD-DATE <= EN-DATE
MOVE 'Y' TO ORD-END-DATE-CHECK
ELSE
MOVE 'N' TO ORD-END-DATE-CHECK
END-IF.
IF ORD-START-DATE-CHECK = 'Y' AND
ORD-END-DATE-CHECK = 'Y'
MOVE 'Y' TO ORD-DATE-CHECK
ELSE
MOVE 'N' TO ORD-DATE-CHECK
END-IF.
READ-ORD-TRANS-PARA.
MOVE 1 TO ORD-TRANS-RRN.
MOVE 'N' TO ORD-TRANS-EOF.
EXEC CICS STARTBR
FILE('TRANSACT')
RIDFLD(ORD-TRANS-RRN)
RRN
END-EXEC.
PERFORM ORD-TRANS-READ-NEXT-PARA UNTIL ORD-TRANS-EOF = 'Y'.
EXEC CICS ENDBR
FILE('TRANSACT')
END-EXEC.
MOVE GRAND-TOTAL TO DISPLAY-TOTAL.
MOVE SOHORDNUM TO ORDERNO.
MOVE SOHDT TO ORDERDATE.
PERFORM MOVE-ORDER-VALUE-PARA.
ORD-TRANS-READ-NEXT-PARA.
MOVE LENGTH OF ORD-TRANS-REC TO ORD-TRANS-LEN.
EXEC CICS READNEXT
FILE('TRANSACT')
INTO(ORD-TRANS-REC)
RIDFLD(ORD-TRANS-RRN)
RESP(ORD-TRANS-RESP)
RRN
END-EXEC.
IF ORD-TRANS-RESP = DFHRESP(ENDFILE)
MOVE 'Y' TO ORD-TRANS-EOF
ELSE IF ORD-TRANS-RESP = DFHRESP(NORMAL)
IF SOHORDNUM = SODORDNUM
MOVE SODITMCDE TO ITMCDE
EXEC CICS READ
FILE('ITEM')
INTO(ITEM-REC)
RIDFLD(ITMCDE)
RESP(ITEM-RESP)
END-EXEC
IF ITEM-RESP = DFHRESP(NORMAL)
MULTIPLY ITMPRC BY SODQTY GIVING TEMPTOTAL
ADD TEMPTOTAL TO GRAND-TOTAL
END-IF
END-IF
END-IF.
EXIT-PARA.
PERFORM MOVE-MASTER-VALUE-PARA.
PERFORM SEND-MASTER-PARA.
EXEC CICS ENDBR
FILE('ORDHEAD')
END-EXEC.
EXEC CICS RETURN
END-EXEC.
MOVE-MASTER-VALUE-PARA.
MOVE 1 TO COUNTER.
* PERFORM MOVE-TO-MAP-PARA 10 TIMES.
MOVE REC(1) TO ORDERSO(1).
MOVE REC(2) TO ORDERSO(2).
MOVE REC(3) TO ORDERSO(3).
MOVE REC(4) TO ORDERSO(4).
EXEC CICS SEND
FROM(ORDERSO(1))
ERASE
END-EXEC.
EXEC CICS SEND
FROM(ORDERSO(2))
ERASE
END-EXEC.

EXEC CICS SEND
FROM(ORDERSO(3))
ERASE
END-EXEC.
EXEC CICS SEND
FROM(ORDERSO(4))
ERASE
END-EXEC.
MOVE-TO-MAP-PARA.
MOVE REC(COUNTER) TO AAA.
MOVE NEW-DATA TO FIELDO(COUNTER).
ADD 1 TO COUNTER.
MOVE REC(COUNTER) TO ORDERSO(COUNTER).
ADD 1 TO COUNTER.
MOVE-ORDER-VALUE-PARA.
MOVE SOHORDNUM TO ORDNUM.
MOVE SOHDT TO ORDDATE.
MOVE DISPLAY-TOTAL TO ORDAMOUNT.
MOVE WS-MASTER-STRUCTURE TO REC(DISP-COUNTER).
ADD 1 TO DISP-COUNTER.
SEND-MASTER-PARA.
EXEC CICS SEND
MAP('HEADER')
MAPSET('SALES')
FROM(HEADERO)
END-EXEC.
EXEC CICS SEND
MAP('ORDMAP')
MAPSET('SALES')
FROM(ORDMAPO)
END-EXEC.
EXEC CICS SEND
MAP('FOOTER')
MAPSET('SALES')
FROM(FOOTERO)
END-EXEC.



Please Help me to solve my problem. Thankyou again.
Back to top
View user's profile Send private message
mmwife

Super Moderator


Joined: 30 May 2003
Posts: 1592

PostPosted: Fri Oct 29, 2004 10:29 pm
Reply with quote

Hi Prakasam,

First you code is EXTREMELY difficult to read. Does your orig code use indentation? If it does you shpold use the "code" box before and after you've pasted the code.

Why don't you use a single SEND MAP? Why have you split the map into segments using SENDs?
Back to top
View user's profile Send private message
Prakasam

New User


Joined: 28 Oct 2004
Posts: 8

PostPosted: Tue Nov 02, 2004 10:51 am
Reply with quote

Thank you for your interest Jack.
Sorry, since i am a new user, i don't know about these code tags.
now i send my program with the help of code format.

There is no special reason for splitting the map. only for dioagnosis purpose i have done this.


Map:
Code:


SALES    DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL,TIOAPFX=YES,       X
               CTRL=(FRSET,FREEKB)                                     
HEADER   DFHMDI SIZE=(09,80),LINE=01,COLUMN=01                         
         DFHMDF POS=(2,28),                                            X
               INITIAL='SALES ORDER MAINTENANCE',                      X
               LENGTH=23,                                              X
               ATTRB=PROT                                               
MASDATE  DFHMDF POS=(2,69),                                            X
               INITIAL='__/__/____',                                   X
               LENGTH=10,                                              X
               ATTRB=PROT                                               
         DFHMDF POS=(3,34),                                            X
               INITIAL='ORDER MASTER',                                 X
               LENGTH=12,                                              X
               ATTRB=PROT                                               
MASTIME  DFHMDF POS=(3,69),                                            X
               INITIAL='__:__:__',                                     X
               LENGTH=8,                                               X
               ATTRB=PROT                                               
         DFHMDF POS=(5,1),                                             X
               INITIAL='CUSTOMER ID:',                                 X
               LENGTH=15,                                              X
               ATTRB=PROT                                               
MASCID   DFHMDF POS=(5,17),                                            X
               INITIAL='_____',                                        X
               LENGTH=5,                                               X
               ATTRB=(UNPROT,IC,FSET)                                   
         DFHMDF POS=(5,23),                                            X
               INITIAL=' ',                                            X
               LENGTH=1,                                               X
               ATTRB=ASKIP                                             
         DFHMDF POS=(5,27),                                            X
               INITIAL='START DATE:',                                  X
               LENGTH=12,                                              X
               ATTRB=PROT                                               
SDATE    DFHMDF POS=(5,40),                                            X
               INITIAL='__/__/____',                                   X
               LENGTH=10,                                              X
               ATTRB=(UNPROT,FSET)                                     
         DFHMDF POS=(5,51),                                            X
               INITIAL=' ',                                            X
               LENGTH=1,                                               X
               ATTRB=ASKIP                                             
         DFHMDF POS=(5,53),                                            X
               INITIAL='END DATE :',                                   X
               LENGTH=10,                                              X
               ATTRB=PROT                                               
EDATE    DFHMDF POS=(5,64),                                            X
               INITIAL='__/__/____',                                   X
               LENGTH=10,                                              X
               ATTRB=UNPROT                                             
         DFHMDF POS=(5,75),                                            X
               INITIAL=' ',                                            X
               LENGTH=1,                                               X
               ATTRB=PROT                                               
         DFHMDF POS=(7,1),                                             X
               INITIAL='OPTIONS : S = SELECT, D = DELETE',             X
               LENGTH=31,                                              X
               ATTRB=PROT                                               
         DFHMDF POS=(9,18),                                            X
               INITIAL='OPT   ORDER NO.   ORDER DATE     ORDER VALUE', X
               LENGTH=44,                                              X
               ATTRB=PROT                                               
ORDMAP   DFHMDI SIZE=(10,46),LINE=10,COLUMN=18                         
ORDERS   DFHMDF POS=(01,01),                                           X
               INITIAL=' _     _____      __/__/____    __________.__',X
               LENGTH=45,                                              X
               OCCURS=10,                                              X
               ATTRB=(UNPROT,FSET)                                     
FOOTER   DFHMDI SIZE=(03,80),LINE=22,COLUMN=01                         
MASMSG   DFHMDF POS=(01,1),                                            X
               INITIAL=' ',                                            X
               LENGTH=70,                                              X
               ATTRB=PROT                                               
MASMORE  DFHMDF POS=(01,74),                                           X
                INITIAL='MORE',                                         X
                LENGTH=4,                                               X
                ATTRB=PROT                                               
          DFHMDF POS=(02,1),                                            X
                INITIAL='PF1-HELP      PF3-GOBACK      PF5-REFRESH      X
                PF7-PAGE UP   PF8-PAGE DOWN',                           X
                LENGTH=79,                                              X
                ATTRB=PROT                                               
                                                                         
                                                                         
 SALES    DFHMSD TYPE=FINAL     
                 END           


Program:


 ****** ***************************** Top of Data ******************************
 000100       *----------------------------------------------------------------
 000200       *FILE NAME       : FILE5V1                                       
 000300       *FILES UTILIZED  :                                               
 000400       * KSDS-PK      -ORDYEAD -CONTAINS ORDER HEADER INFORMATION       
 000500       * RRDS-NO KEY-  ORDTRANS-CONTAINS ORDER TRANSACTION INFORMATION   
 000600       * KSDS-PK       ITEMMAST-CONTAINS ITEM INFORMATION               
 000700       *----------------------------------------------------------------
 000800        ID DIVISION.                                                     
 000900        PROGRAM-ID. FILE5V1.                                             
 001000        DATA DIVISION.                                                   
 001100        WORKING-STORAGE SECTION.                                         
 001200            COPY SALES.                                                 
 001300       *    COPY TEST.                                                   
 001400        01 COUNTER PIC S9(4) COMP.                                       
 001500        01 ORD-HEAD-REC.                                                 
 001600            05 SOHORDNUM PIC X(6).                                       
 001700            05 SOHDT.                                                   
 001800                10 ORD-DATE  PIC 99.                                     
 000900        PROGRAM-ID. FILE5V1.                                             
 001000        DATA DIVISION.                                                   
 001100        WORKING-STORAGE SECTION.                                         
 001200            COPY SALES.                                                 
 001300       *    COPY TEST.                                                   
 001400        01 COUNTER PIC S9(4) COMP.                                       
 001500        01 ORD-HEAD-REC.                                                 
 001600            05 SOHORDNUM PIC X(6).                                       
 001700            05 SOHDT.                                                   
 001800                10 ORD-DATE  PIC 99.                                     
 001900                10 FILLER    PIC X VALUE '/'.                           
 002000                10 ORD-MONTH PIC 99.                                     
 002100                10 FILLER    PIC X VALUE '/'.                           
 002200                10 ORD-YEAR  PIC 9999.                                   
 002300            05 SOHCUSCDE PIC X(5).                                       
 002400            05 SOHORDSTS PIC X.                                         
 002500            05 FILLER PIC X(58).                                         
 002600        01 ORD-TRANS-REC.                                               
 002700            05 SODORDNUM PIC X(6).                                       
 002800            05 SODITMCDE PIC X(5).                                       
 002900            05 SODQTY    PIC 9(6).                                       
 003000            05 FILLER    PIC X(63).                                     
 003100        01 ITEM-REC.                                                     
 003200            05 ITMCDE PIC X(5).                                         
 003300            05 ITMDES PIC X(30).                                         
 003400            05 ITMPRC PIC 9(9)V99.                                       
 003500            05 ITMSTK PIC 9(6).                                         
 003600            05 FILLER PIC X(28).                                         
 003700        01 START-DATE.                                                   
 003800            05 ST-DATE PIC 99.                                           
 003900            05 FILLER PIC X.                                             
 004000            05 ST-MONTH PIC 99.                                         
 004100            05 FILLER PIC X.                                             
 004200            05 ST-YEAR PIC 9999.                                         
 004300        01 END-DATE.                                                     
 004400            05 EN-DATE PIC 99.                                           
 004500            05 FILLER PIC X.                                             
 004600            05 EN-MONTH PIC 99.                                         
 004700            05 FILLER PIC X.                                             
 004800            05 EN-YEAR PIC 9999.                                         
 004900        01 DISP-GROUP.                                                   
 005000            05 ORDERNO       PIC X(6).                                   
 005100            05 FILLER        PIC X(5).                                   
 005200            05 ORDERDATE     PIC X(10).                                 
 005300            05 FILLER        PIC X(5).                                   
 005400            05 DISPLAY-TOTAL PIC 9(9).99.                               
 005500        77 ORD-HEAD-EOF   PIC X VALUE 'N'.                               
 005600        77 ORD-TRANS-EOF  PIC X VALUE 'N'.                               
 005700        77 ORD-HEAD-RESP  PIC S9(8) COMP.                               
 005800        77 ORD-TRANS-RESP PIC S9(8) COMP.                               
 005900        77 ITEM-RESP PIC S9(8) COMP.                                     
 006000        77 ORD-HEAD-LEN   PIC S9(4) COMP.                               
 006100        77 ORD-TRANS-LEN  PIC S9(4) COMP.                               
 006200        77 ORD-START-DATE-CHECK PIC X.                                   
 006300        77 ORD-END-DATE-CHECK   PIC X.                                   
 006400        77 ORD-DATE-CHECK       PIC X.                                   
 006500        77 TEMPTOTAL     PIC   9(9)V99.                                 
 006600        77 GRAND-TOTAL   PIC 9(9)V99 VALUE 0.                           
 006700        77 ORD-COUNTER   PIC 9(3) VALUE 0.                               
 006800        77 ORD-TRANS-RRN PIC S9(8) COMP VALUE 1.                         
 006900        77 ORD-HEAD-KEY PIC S9(8) COMP.                                 
 007000        77 CUST PIC X(5).                                               
 007100       *-----------------------------------------------------------------
 007200        77 DISP-COUNTER  PIC S9(8) COMP.                                 
 007300        77 WS-LEN PIC S9(4) COMP.                                       
 007400        01 DISP-MASTER-ARRAY VALUE SPACES.                               
 007500           05 REC PIC X(45) OCCURS 10 TIMES.                             
 007600        01 WS-MASTER-STRUCTURE.                                         
 007700           05 FILLER PIC X.                                             
 007800           05 OPTION PIC X.                                             
 007900           05 FILLER PIC X(5).                                           
 008000           05 ORDNUM PIC X(6).                                           
 008100           05 FILLER PIC X(5).                                           
 008200           05 ORDDATE.                                                   
 008300              10 ORDER-DATE PIC 99.                                     
 008400              10 FILLER   PIC X VALUE '/'.                               
 008500              10 ORDER-MONTH PIC 99.                                     
 008600              10 FILLER    PIC X VALUE '/'.                             
 008700              10 ORDER-YEAR  PIC 9999.                                   
 008800           05 FILLER PIC X(4).                                           
 008900           05 ORDAMOUNT.                                                 
 009000              10 ORD-RUPEE PIC 9(10).                                   
 009100              10 FILLER    PIC X VALUE '.'.                             
 009200              10 ORD-PAISE PIC 99.                                       
 009300        01 AAA PIC X(45).                                               
 009400        01 NEW-DATA REDEFINES AAA PIC X(45).                             
 009500       *-----------------------------------------------------------------
 009600        PROCEDURE DIVISION.                                             
 009700        START-PARA.                                                     
 009800       *    PERFORM MOVE-MASTER-VALUE-PARA.                             
 009900       *    PERFORM SEND-MASTER-PARA.                                   
 010000       *    GO TO EXIT-PARA.                                             
 010100            MOVE 1 TO DISP-COUNTER.                                     
 010200            MOVE '11111' TO CUST.                                       
 010300            MOVE '10/12/2003' TO START-DATE.                             
 010400            MOVE '10/04/2004' TO END-DATE.                               
 010500            MOVE 0 TO ORD-HEAD-KEY.                                     
 010600       *----------------------------------------------------------------*
 010700       * THIS SECTION OF PROGRAM IS USED TO GET THE ORDERS FROM THE FILE*
 010800       * ONE BY ONE. THE RECORD FORMAT FOR THIS FILE IS AS FOLLOWS.     *
 010900       * FILE NAME : ORDHEAD.                                           *
 011000       * --------------------------------------------                   *
 011100       * ORDNUMBER   ORDERDATE   CUSTOMER-ID   STATUS                   *
 011200       * --------------------------------------------                   *
 011300       * AA1001      01/01/2004  11111           P                      *
 011400       * AA1002      22/02/2004  22222           P                      *
 011500       * AA1003      12/03/2004  11111           P                      *
 011600       * AA1004      15/03/2004  22222           P                      *
 011700       * --------------------------------------------                   *
 011800       * USING BROWSE COMMAND THESE RECORDS ARE READ ONE BY ONE. AFTER *
 011900       * EACH READ THE CUSTOMER ID FIELD IS CHECKED WITH OUR REQUIRED   *
 012000       * CUSTOMER ID. IF CONDITION SATISFIES THEN ORDER TRANSACTION FOR *
 012100       * THAT ORDER IS READ AS FOLLOWS. *                               
 012200       *----------------------------------------------------------------*
 012300            EXEC CICS STARTBR                                           
 012400                 FILE('ORDHEAD')                                         
 012500                 RIDFLD(ORD-HEAD-KEY)                                   
 012600            END-EXEC.                                                   
 012700            PERFORM ORD-READ-NEXT-PARA UNTIL ORD-HEAD-EOF = 'Y'.         
 012800        ORD-READ-NEXT-PARA.                                             
 012900            MOVE 80 TO ORD-HEAD-LEN.                                     
 013000            EXEC CICS READNEXT                                           
 013100                 FILE('ORDHEAD')                                         
 013200                 RIDFLD(ORD-HEAD-KEY)                                   
 013300                 INTO(ORD-HEAD-REC)                                     
 013400                 LENGTH(ORD-HEAD-LEN)                                   
 013500                 RESP(ORD-HEAD-RESP)                                     
 013600            END-EXEC.                                                   
 013700            IF ORD-HEAD-RESP = DFHRESP(ENDFILE)                         
 013800                MOVE 'Y' TO ORD-HEAD-EOF                                 
 013900                GO TO EXIT-PARA                                         
 014000            ELSE IF ORD-HEAD-RESP = DFHRESP(NOTFND)                     
 014100                GO TO EXIT-PARA                                         
 014200            ELSE                                                         
 014300                IF SOHCUSCDE = CUST AND SOHORDSTS = 'P'                 
 014400                   PERFORM ORD-DATE-CHECK-PARA                           
 014500                   IF ORD-DATE-CHECK = 'Y'                               
 014600                      MOVE 0 TO GRAND-TOTAL                             
 014700                      ADD  1 TO ORD-COUNTER                             
 014800                      MOVE SOHORDNUM TO SODORDNUM                       
 014900                      PERFORM READ-ORD-TRANS-PARA                       
 015000                   END-IF                                               
 015100                END-IF                                                   
 015200            END-IF.                                                     
 015300       *----------------------------------------------------------------*
 015400       * THIS SECTION OF PROGRAM IS USED TO CHECK THE ORDER DATE OF     *
 015500       * EVERY ORDER TO GET ONLY THE ORDERS USER WANT.                  *
 015600       * THIS HAS BEEN DONE BY CHECKING EACH ORDERS DATE WITH THE       *
 015700       * REQUIRED DATE DURATION. ONLY THE ORDERS SATISFY THIS DATE      *
 015800       * CONDITION IS RETRIVED TO THE USER TERMINAL.                    *
 015900       *----------------------------------------------------------------*
 016000        ORD-DATE-CHECK-PARA.                                             
 016100            IF ORD-YEAR > ST-YEAR                                       
 016200               MOVE 'Y' TO ORD-START-DATE-CHECK                         
 016300            ELSE IF ORD-YEAR = ST-YEAR AND ORD-MONTH > ST-MONTH         
 016400               MOVE 'Y' TO ORD-START-DATE-CHECK                         
 016500            ELSE IF ORD-YEAR = ST-YEAR AND ORD-MONTH = ST-MONTH AND     
 016600                    ORD-DATE >= ST-DATE                                 
 016700               MOVE 'Y' TO ORD-START-DATE-CHECK                         
 016800            ELSE                                                         
 016900               MOVE 'N' TO ORD-START-DATE-CHECK                         
 017000            END-IF.                                                     
 017100            IF ORD-YEAR < EN-YEAR                                       
 017200               MOVE 'Y' TO ORD-END-DATE-CHECK                           
 017300            ELSE IF ORD-YEAR = EN-YEAR AND ORD-MONTH < EN-MONTH         
 017400               MOVE 'Y' TO ORD-END-DATE-CHECK                           
 017500            ELSE IF ORD-YEAR = EN-YEAR AND ORD-MONTH = EN-MONTH AND     
 017600                    ORD-DATE <= EN-DATE                                 
 017700               MOVE 'Y' TO ORD-END-DATE-CHECK                           
 017800            ELSE                                                         
 017900               MOVE 'N' TO ORD-END-DATE-CHECK                           
 018000            END-IF.                                                     
 018100            IF ORD-START-DATE-CHECK = 'Y' AND                           
 018200               ORD-END-DATE-CHECK   = 'Y'                               
 018300                  MOVE 'Y' TO ORD-DATE-CHECK                             
 018400            ELSE                                                         
 018500                  MOVE 'N' TO ORD-DATE-CHECK                             
 018600            END-IF.                                                     
 018700       *-----------------------------------------------------------------
 018800       * THIS SECTION OF PROGRAM IS USED TO GET THE ORDER TRANSACTION   *
 018900       * FROM THE FILE 'ORDTRANS'. THIS IS A ESDS FILE. THIS FILE       *
 019000       * CONTAINS LIST OF ORDERS AND ITS ORDER PARTICULARS. ONE RECORD  *
 019100       * IN THIS FILE CONTAILS ONE ORDER NUMBER, ONE ITEM IN THAT ORDER *
 019200       * QUATITY OF THE ITEM ORDERED. LIKE THAT ONE ORDER MAY CONTAIN   *
 019300       * MORE THAN ONE ITEM.                                            *
 019400       * SAMPLE OF THIS STRUCTURE IS GIVEN BELOW.                       *
 019500       * ---------------------------------------                        *
 019600       * ORDERNUM    ITEMCODE    QUANTITY                               *
 019700       * ---------------------------------------                        *
 019800       * AA1001      10001       100                                    *
 019900       * AA1001      10002       200                                    *
 020000       * AA1001      10003       250                                    *
 020100       * AA1002      10004       700                                    *
 020200       * AA1002      10003       300                                    *
 020300       * AA1003      10001       500                                    *
 020400       * AA1003      10004       300                                    *
 020500       * ---------------------------------------                        *
 020600       *-----------------------------------------------------------------
 020700        READ-ORD-TRANS-PARA.                                             
 020800            MOVE 1 TO ORD-TRANS-RRN.                                     
 020900            MOVE 'N' TO ORD-TRANS-EOF.                                   
 021000            EXEC CICS STARTBR                                           
 021100                FILE('TRANSACT')                                         
 021200                RIDFLD(ORD-TRANS-RRN)                                   
 021300                RRN                                                     
 021400            END-EXEC.                                                   
 021500            PERFORM ORD-TRANS-READ-NEXT-PARA UNTIL ORD-TRANS-EOF = 'Y'. 
 021600            EXEC CICS ENDBR                                             
 021700               FILE('TRANSACT')                                         
 021800            END-EXEC.                                                   
 021900            MOVE GRAND-TOTAL TO DISPLAY-TOTAL.                           
 022000            MOVE SOHORDNUM   TO ORDERNO.                                 
 022100            MOVE SOHDT       TO ORDERDATE.                               
 022200            PERFORM MOVE-ORDER-VALUE-PARA.                               
 022300        ORD-TRANS-READ-NEXT-PARA.                                       
 022400            MOVE LENGTH OF ORD-TRANS-REC TO ORD-TRANS-LEN.               
 022500            EXEC CICS READNEXT                                           
 022600                FILE('TRANSACT')                                         
 022700                INTO(ORD-TRANS-REC)                                     
 022800                RIDFLD(ORD-TRANS-RRN)                                   
 022900                RESP(ORD-TRANS-RESP)                                     
 023000                RRN                                                     
 023100            END-EXEC.                                                   
 023110       *----------------------------------------------------------------*
 023120       *THIS PART OF THE PROGRAM IS USED TO GET THE VALUE OF THE ITEMS  *
 023121       *IN THE ORDERS. THEN THE VALUE OF ITEM IS MULTIPLIED WITH THE    *
 023122       *QUANTITY ORDERED. LIKE THAT TOTAL ORDER VALUE IS CALUCULATED BY *
 023123       *ADDING ALL THE ITEMS ORDER VALUE.                               *
 023130       *----------------------------------------------------------------*
 023200            IF ORD-TRANS-RESP = DFHRESP(ENDFILE)                         
 023300               MOVE 'Y' TO ORD-TRANS-EOF                                 
 023400            ELSE IF ORD-TRANS-RESP = DFHRESP(NORMAL)                     
 023500                IF SOHORDNUM = SODORDNUM                                 
 023600                    MOVE SODITMCDE TO ITMCDE                             
 023700                    EXEC CICS READ                                       
 023800                         FILE('ITEM')                                   
 023900                         INTO(ITEM-REC)                                 
 024000                         RIDFLD(ITMCDE)                                 
 024100                         RESP(ITEM-RESP)                                 
 024200                    END-EXEC                                             
 024300                    IF ITEM-RESP = DFHRESP(NORMAL)                       
 024400                       MULTIPLY ITMPRC BY SODQTY GIVING TEMPTOTAL       
 024500                       ADD TEMPTOTAL TO GRAND-TOTAL                     
 024600                    END-IF                                               
 024700                END-IF                                                   
 024800            END-IF.                                                     
 024900       *-----------------------------------------------------------------
 025000       * THIS PART OF THE PROGRAM IS USED TO TERMINATE THE EXECUTION OF *
 025100       * CICS PROGRAM AND CLOSE THE TRANSACTION.                        *
 025200       *-----------------------------------------------------------------
 025300        EXIT-PARA.                                                       
 025400            PERFORM MOVE-MASTER-VALUE-PARA.                             
 025500            PERFORM SEND-MASTER-PARA.                                   
 025600            EXEC CICS ENDBR                                             
 025700               FILE('ORDHEAD')                                           
 025800            END-EXEC.                                                   
 025900            EXEC CICS RETURN                                             
 026000            END-EXEC.                                                   
 026100       *----------------------------------------------------------------*
 026200       *THIS PART OF THE PROGRAM IS USED TO MOVE THE DATAS FROM WORKING *
 026300       *STORAGE SECTION TABLE ITEM TO THE MAP FIELD. THIS TABLE HAS THE *
 026400       *CALCULATED DATAS OF EACH AND EVERY ORDERS THAT USER REQUIRES.   *
 026500       *----------------------------------------------------------------*
 026600        MOVE-MASTER-VALUE-PARA.                                         
 026700            MOVE 1 TO COUNTER.                                           
 026800       *    PERFORM MOVE-TO-MAP-PARA 10 TIMES.                           
 026900       *    MOVE REC(1) TO ORDERSO(1).                                   
 027000       *    MOVE REC(2) TO ORDERSO(2).                                   
 027100       *    MOVE REC(3) TO ORDERSO(3).                                   
 027200       *    MOVE REC(4) TO ORDERSO(4).                                   
 027300            MOVE WS-MASTER-STRUCTURE TO AAA.                             
 027400            MOVE NEW-DATA TO ORDERSO(4).                                 
 027500            EXEC CICS SEND                                               
 027600                FROM(ORDERSO(1))                                         
 027700                ERASE                                                   
 027800            END-EXEC.                                                   
 027900            EXEC CICS SEND                                               
 028000                FROM(ORDERSO(2))                                         
 028100                ERASE                                                   
 028200            END-EXEC.                                                   
 028300            EXEC CICS SEND                                               
 028400                FROM(ORDERSO(3))                                         
 028500                ERASE                                                   
 028600            END-EXEC.                                                   
 028700            EXEC CICS SEND                                               
 028800                FROM(ORDERSO(4))                                         
 028900                ERASE                                                   
 029000            END-EXEC.                                                   
 029100        MOVE-TO-MAP-PARA.                                               
 029200            MOVE REC(COUNTER) TO AAA.                                   
 029300            MOVE NEW-DATA TO ORDERSO(COUNTER).                           
 029400        MOVE-ORDER-VALUE-PARA.                                           
 029500            MOVE SOHORDNUM TO ORDNUM.                                   
 029600            MOVE SOHDT TO ORDDATE.                                       
 029700            MOVE DISPLAY-TOTAL TO ORDAMOUNT.                             
 029800            MOVE WS-MASTER-STRUCTURE TO REC(DISP-COUNTER).               
 029900            ADD 1 TO DISP-COUNTER.                                       
 030000       *----------------------------------------------------------------*
 030100       * THIS PART OF THE PROGRAM IS USED TO SEND THE ORDERS LIST TO THE*
 030200       * USER TERMINAL.                                                 *
 030300       *----------------------------------------------------------------*
 030400        SEND-MASTER-PARA.                                               
 030500       *    EXEC CICS SEND                                               
 030600       *       MAP('HEADER')                                             
 030700       *       MAPSET('SALES')                                           
 030800       *       FROM(HEADERO)                                             
 030900       *    END-EXEC.                                                   
 031000            EXEC CICS SEND                                               
 031100               MAP('ORDMAP')                                             
 031200               MAPSET('SALES')                                           
 031300               FROM(ORDMAPO)                                             
 031400            END-EXEC.                                                   
 031500       *    EXEC CICS SEND                                               
 031600       *       MAP('FOOTER')                                             
 031700       *       MAPSET('SALES')                                           
 031800       *       FROM(FOOTERO)                                             
 031900       *    END-EXEC.                                                   
 ****** **************************** Bottom of Data *******************


Thank you again for your interset.

Awaiting your Reply,

Regards,

Prakasam.
Back to top
View user's profile Send private message
mmwife

Super Moderator


Joined: 30 May 2003
Posts: 1592

PostPosted: Wed Nov 03, 2004 2:41 am
Reply with quote

Hi Prakasam,

I strongly suggest that you change your code to accommodate only 1 MAP and use only 1 SEND MAP to display it (use the ERASE option).

After the change run your test again and let us know the results.
Back to top
View user's profile Send private message
mmwife

Super Moderator


Joined: 30 May 2003
Posts: 1592

PostPosted: Wed Nov 03, 2004 8:00 am
Reply with quote

Hi Prakasam,

It just occurred to me that the reason you used the multiple SENDs is that you don't know how to code an array in a map. If so, here's one way to do it:

Code the following for the array. It will reserve 10 lines of the MAP for itself. The X in col 72 and the start pos of the continued lines are assumed present and correct. icon_wink.gif
Code:

ARRAYX DFHMDF (POS=nn,1),ATTRB=(ASKIP,NORM),                       LENGTH=79,OCCURS=10

where,
nn is the line number of the 1st line of an array of 10 elements, each 79 bytes long (plus 1 for the ASKIP).

In your pgm define a WS group item of total length 79, with all the elementary fields you require in each line of the array. When you fill those fields you move the group field to the subscripted MAP line. For example:

MOVE WS-ARRAY-ELEMENT TO ARRAYXI(4)

That's my recollection of how it worked, anyway. icon_confused.gif

If you decide to go this way keep us posted about ant adjustments you had to make to get it to work.
Back to top
View user's profile Send private message
Prakasam

New User


Joined: 28 Oct 2004
Posts: 8

PostPosted: Wed Nov 03, 2004 9:02 am
Reply with quote

Thank you for your Reply Mr. Jack.

I have gone thro' your reply, But i want to say that I have already used OCCURS clause in my map to display array of field. I have splitted map in to 3 sections. One is header which contains query details. Next is the actual content which contains array fields. The last one is nothing but for messages. So please consider the problem again,because i have already included your suggestion in my program.

Thank you for your interst.

Regards, Prakasam

Awaiting your Reply...
Back to top
View user's profile Send private message
mmwife

Super Moderator


Joined: 30 May 2003
Posts: 1592

PostPosted: Wed Nov 03, 2004 11:02 pm
Reply with quote

Hi Prakasam,
Quote:
But i want to say that I have already used OCCURS clause in my map to display array of field

Don't know how I missed that, sorry. icon_redface.gif

But my point still stands.

BTW, why do you define the orders in the MAP as a table then SEND them one at a time in the pgm code?

If you code one unified MAP you display everything with one SEND MAP. This reduces a LOT of performance overhead and simplifies the pgm code.

Some ques:

Does the terminal user update the order info in the MAP?
Why do you define tbl items as UNPROT?
Have you displayed the MAP? Are you satisfied w/its format (do the literals fall in the right places)? Can you show it to us?
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> CICS

 


Similar Topics
Topic Forum Replies
No new posts Map Vols and Problem Dataset All Other Mainframe Topics 2
No new posts z/vm installation problem All Other Mainframe Topics 0
No new posts Job scheduling problem. JCL & VSAM 9
No new posts Problem with IFTHEN=(WHEN=GROUP,BEGIN... DFSORT/ICETOOL 5
No new posts Need to add field to copybook, proble... COBOL Programming 14
Search our Forums:

Back to Top