SECTIONS says to treat each change in value for positions 1-3 as a group of records and TRAILER3 creates a trailer record for each such group.
Since NODETAIL is specified, only the trailer3 records will be written, not the data records.
So the AB records would be a group and their trailer record would be written, and the SA records would be another group and their trailer record would be written. 1,2 in TRAILER3 puts positions 1-2 from the last record of the group in the trailer record. TOT puts the total for the group in the trailer record.
If you're not familiar with DFSORT and DFSORT's ICETOOL, I'd suggest reading through "z/OS DFSORT: Getting Started". It's an excellent tutorial, with lots of examples, that will show you how to use DFSORT, DFSORT's ICETOOL and DFSORT Symbols. You can access it online, along with all of the other DFSORT books, from:
SECTIONS=(1,2 identifies the value that defines a section. The first "section" is the AB records and the second "section" is the SA records. When the value in positions 1-2 changes from AB to SA, we start a new section.
That would only be a sum of the first field, not the second one. So I don't really understand what you want or what you're doing.
The + and - field was originally 3 bytes. Now it's 19 bytes, so you convert it to an 18-byte ZD value, but then you use an EDIT mask of EDIT=(STT) which is only three bytes, not 19 bytes so you're truncating the result.
Since I don't understand your new requirement, I can't really help you fix your control statements.