[aus.computers] Wierd problem: XENIX 386 + Microsoft COBOL

obb130t@vaxc.cc.monash.edu.au (07/03/89)

We have a strange problem with XENIX COBOL which Microsoft Australia have not
(so far)been able to help with...wondering if the net can help.

Aim: add C subroutines to COBOL, intended to run under Xenix 386.

Method:
	RTFM.  Do it just like so.

Problem 1.
	It doesn't work.  Various diagnostics relating to Memory model, etc.

Solution 1.
	Add -M0 to cc command line in mknewcob.  Compile, link and initial
	testing all work fine.  Note that the new COBOL run-time system is
	MUCH larger (120K instead of 90K).

Problem 2.
	Record locking no longer works!  Specifically, on Xenix 386 and 286
	a READ with LOCK (MANUAL locking) on an indexed or relative file
	always succeeds, even if 2 or more copies read/lock the same record.
	The old RTS still locks fine, the new doesn't.  Always status 00.

Solution 2.
	Build the cobol on Xenix 286 (no -M0 switch).  Works just fine.
	Old and new RTS lock records exactly the way they should (status 94).
	Note: cobsub.o (binary of C routines) is identical.  New COBOL
	run-time system is bigger again (122K).

Question 1:
	Why?  Why is it different and why doesn't it work?

Question 2:
	Is there any way we can build the COBOL RTS on Xenix 386? (depending
	on finding a friendly Xenix 286 when we need it is a real pain).

Versions (sorry - bit vague):
	Latest COBOL: V2.2? (18 months old)
	Latest Xenix 386? (1 month old)
	Far-from-latest Xenix 286 (18 months old)

Any help gratefully received.

thADVANCEanx

..david..
-- 
////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
/ David M. Bennett                              obb130t@vaxc.cc.monash.edu.au \
/ Demileigh Consulting, 22 Tourello Ave, East Hawthorn          61 3 882 7599 \
\ Victorian Red Cross Blood Bank, Balston St, South Melbourne   61 3 616 0353 /
\ I never refuse.  I never contradict.  I sometimes forget.       - Disraeli. /
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\///////////////////////////////////////