I like the SCP command so when I started using RSLogix5000 I made my own SCP instruction in ladder logic as an Add-on instruction. Works great and I just copy it to any other application I need it in.
In the logic for the Add-on instruction I am using a CPT command but I like the Add-on instruction so I can assign the local tags to it such as Unscaled Minimum, Unscaled Maximum, Scaled Minimum, Scaled Maximum, Input, and Output.
Seems to me you are doing a lot of work that is totally unnecessary, and I would bet that your purpose built code doesn't do half as much as the modules themselves can do without any effort on your part....
Analog Inputs...
a. Scaling to engineering units
b. HH,H,L,LL Process Alarms
c. Rate of Change Alarm
Analog Outputs...
a. Scaling from engineering units
b. Low and High limits (clamps)
c. True ramping (eng. units per second)
d. Programmable fault response
And all of this with ZERO controller overhead, i.e. no code, no additional data handling, no additional memory requirements.
The modules are already doing "default" scaling (-10.0 to +10.0) anyway, why not just change the defaults to the ranges you require, and do away with the added complexity of user-generated code.
Remember that in the Logix5000 system, analog input modules can be "shared" between multiple controllers, so getting the module to produce engineering unit scaled data to all consumers means you don't have to go and change any code in any controller if you have to re-scale an input range.
IMHO 1756 analog modules are the best I have seen, and I salute the developers.