I posted before on this issue and you all were a great help because I was using CS and PLO to serialize. However I changed the code and the issue still exists. The issue looks like, I create a control block but it does not get added to the chain… I think the term is orphan. The control block structure is above the bar, FIFO, and has a first and last pointer. The entries in the chain are removed by one address space and added-to in many address spaces.
Here is the code to add the control block to the chain: *C R8 = address of newly built control block DOX378 DS 0H *C SET R6 = LAST_CONTROL_BLOCK_ADDR LG R6,LAST_CONTROL_BLOCK_ADDR *C IF FIRST_CONTROL_BLOCK_ADDR AND LAST_CONTROL_BLOCK_ADDR EQ 0 *C SET FIRST_CONTROL_BLOCK_ADDR AND LAST_CONTROL_BLOCK_ADDR = NEW Control_block ADDRESS STG R8,OPERAND1R (REPLACES LAST_CONTROL_BLOCK_ADDR) XC OPERAND1,OPERAND1 (COMPARISON VALUE) XC OPERAND3,OPERAND3 (COMPARISON VALUE) STG R8,OPERAND3R (REPLACES WHERE OPERAND4 POINTS) LA R0,DCSG LGR R3,R8 LA R4,FIRST_CONTROL_BLOCK_ADDR STG R4,OPERAND4 PLO 0,LAST_CONTROL_BLOCK_ADDR,0,PL * * IF DOUBLE COMPARE AND SWAP IS SPECIFIED, THE FIRSTOPERAND * COMPARISON VALUE AND THE SECOND * OPERAND ARE COMPARED. IF THEY ARE EQUAL, THE * THIRD-OPERAND COMPARISON VALUE AND THE FOURTH * OPERAND ARE COMPARED. IF BOTH COMPARISONS INDICATE * EQUALITY, THE FIRST-OPERAND AND THIRD-OPERAND * REPLACEMENT VALUES ARE STORED AT THE SECONDOPERAND * LOCATION AND FOURTH-OPERAND LOCATION, * RESPECTIVELY. IF THE FIRST COMPARISON INDICATES INEQUALITY, * THE SECOND OPERAND IS PLACED IN THE FIRSTOPERAND- * COMPARISON-VALUE LOCATION AS A NEW FIRSTOPERAND * COMPARISON VALUE. IF THE FIRST COMPARISON * INDICATES EQUALITY BUT THE SECOND DOES NOT, THE * FOURTH OPERAND IS PLACED IN THE THIRD-OPERANDCOMPARISON- * VALUE LOCATION AS A NEW THIRD-OPERAND * COMPARISON VALUE. * *C ELSE BC 8,EDOX378 (if success ... done) *C IF LAST_CONTROL_BLOCK_ADDR = R6 (ORIGINAL LAST_CONTROL_BLOCK_ADDR VALUE) *C SET LAST_CONTROL_BLOCK_ADDR = POINTER_TO_NEW_MSEG (R8) *C SET NEXT_CONTROL_BLOCK_ADDRESS.OF.LAST.ONCHAIN= POINTER_TO_NEW_MSEG (R8) STG R6,OPERAND1 (COMPARISON VALUE) STG R8,OPERAND1R (REPLACEMENT VALUE) LA R0,CSSTG LGR R3,R8 DROP R8 USING MSEGCB,R6 LA R4,NEXT_CONTROL_BLOCK_ADDRESS NEXT_CONTROL_BLOCK_ADDRESS IS IN CSA STG R4,OPERAND4 STG R8,OPERAND3R PLO 0,LAST_CONTROL_BLOCK_ADDR,0,PL * THE FIRST-OPERAND COMPARISON VALUE AND THE SECOND OPERAND ARE * COMPARED. IF THEY ARE EQUAL, THE FIRST-OPERAND REPLACEMENT VALUE * IS STORED AT THE SECOND-OPERAND LOCATION, AND THE THIRD OPERAND IS * STORED AT THE FOURTH-OPERAND LOCATION. BNZ DOX378 (if not successful start over) EDOX378 DS 0H Here is the code to remove the control block from the chain. *C IF NEXT_CONTROL_BLOCK_ADDRESS = 0 *C SET LAST_CONTROL_BLOCK_ADDR = 0 *C SET FIRST_CONTROL_BLOCK_ADDR = 0 XC OPERAND1,OPERAND1 (COMPARISON VALUE) XC OPERAND1R,OPERAND1R (REPLACEMENT VALUE) LA R0,CSDSTG XGR R3,R3 LA R4,LAST_CONTROL_BLOCK_ADDR STG R4,OPERAND6 LA R4,FIRST_CONTROL_BLOCK_ADDR STG R4,OPERAND4 STG R3,OPERAND3 STG R3,OPERAND5 PLO 0,NEXT_CONTROL_BLOCK_ADDRESS,0,PL * OPERAND1 IS COMPARED TO NEXT_CONTROL_BLOCK_ADDRESS. * IF EQUAL, OPERAND1R IS MOVED TO NEXT_CONTROL_BLOCK_ADDRESS. * OPERAND3 IS MOVED TO WHERE OPERAND 4 POINTS * OPERAND5 IS MOVED TO WHERE OPERAND 6 POINTS * IF NOT EQUAL, SET OPERAND1 = NEXT_CONTROL_BLOCK_ADDRESS VALUE. *C ELSE BNZ ELIFM045 (if not successful... means next control block address not zero) B EIFM045 ELIFM045 DS 0H *C SET FIRST_CONTROL_BLOCK_ADDR = NEXT_CONTROL_BLOCK_ADDRESS MVC FIRST_CONTROL_BLOCK_ADDR,NEXT_CONTROL_BLOCK_ADDRESS (Not serialized because only update by add process when it is zero and the unchain process is the only place it is set to zero) EIFM045 DS 0H I know this has been successfully performed by others, in fact there probably should be some standard way to do this, however I have not found it. Any help is appreciated. I am at a loss. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN