"ET" profile parameter - Doesn't work?

I’d like to be able to:
make an update in one database without issusing an ET,
then switch to a second database using USR1040N,
then make an update in the second database,
then issue an ET against the second database only,
then return to the first database using USR1040N again,
then backout the update to the frist database if desired.

The “ET” profile parameter supposedly provides this capability when set to “OFF”, but in my testing I find it has no effect. An end transaction issued against one database seems to always affects the other one regardless of the settting of the “ET” profile parameter.

What could be wrong? I’m running Nat 4.1.3 and ADABAS 7.4.2 on a VSE mainframe platform; any info you can give me would be greatly appreciated.

Paul G.

You have misread the documentation:

Possible settings ON END TRANSACTION and BACKOUT TRANSACTION statements are executed for all databases which have been referenced since the beginning of the Natural session or since the last execution of an END TRANSACTION and BACKOUT TRANSACTION statement.
OFF END TRANSACTION and BACKOUT TRANSACTION statements are executed only for the databases affected by the transaction (and - if applicable - for the database to which transaction data are written).

ET OFF does NOT mean that ETs are issued only for the current database. It means that “affected databases” have ETs issued. A database which has had a record updated (as in your example) is an “affected database”.

This is more of a performance parameter than a functionality “thing”. If I read records from three databases, then update a record in one database. there is no need to issue four ET commands, one will suffice.

steve

That’s bad news for us, but thanks.

Is there another way of accomplishing the sort of selective commits that we’re looking for? Selective by file possibly?

Paul G.

Not in an official way, you would have to use USR1043N.

Is that really possible? That would be interesting to know…

You you please write down a draft of that method?

I think Wolfgang was eluding to the fact that many things can be done using direct calls that aren’t directly available from Natural, like doing the selective ET.
If you take the example source for USR1043 from SYSEXT and modify it to have something like:

/* Reset all binary fields and fill control block, ...
/*
RESET CB-DBID CB-FNR CB-RSP CB-ISN CB-ISL CB-ISQ CB-FBL
      CB-RBL CB-SBL CB-VBL CB-IBL CB-RESERVED
/*
CB-CMD := 'ET'    /* ET Command
CB-RSP := 999    /* This is where you specify the DBID
/*
CALLNAT 'USR1043N'
  CONTROL-BLOCK
  FORMAT-ADDR
  RECORD-ADDR
  SEARCH-ADDR
  VALUE-ADDR
  ISN-ADDR
  RESPONSE
/*
IF RESPONSE NE 0
  WRITE 'ADABAS response code:' RESPONSE
END-IF
/*
END

I didn’t try this so I can’t guarantee it, but the idea is there… hopefully it’s close. AFAIK file level ET can’t be done.

Thanks for your code example. I think this should only be used in very special cases. But it is useful to know …