I think you are wrong. What you say is true only for variables with bounds [0, inf[.
Look at this simple example:
Minimize
obj: x1
Subject to
c1: x1 >= 4
End
If you solve this and display the dual for c1 this is 1 (and the reduced cost for x1 is 0 since x1 is not at its bound). Now if you change the constraint into a bound
Minimize
obj: x1
Subject to
Bounds
4 <= x1
End
and solve again then you will see that the reduced cost for x1 is 1.
Also, if you look at the reference documentation of CPXgetdj() you see that it returns the "... dual multipliers for bound constraints on the specified variables". As far as I understand this is exactly what you want.
#CPLEXOptimizers#DecisionOptimization