I did a short test fiddling arouned ^Samples.PersonI
an to demonstrate the output.

SAMPLES>Do $SYSTEM.OBJ.ValidateIndices("Sample.Person","",1,2)                   
 
Checking index integrity for class 'Sample.Person'
Begin time:  08/17/2017 21:41:25
 
Verifying data from data map 'IDKEY' is indexed correctly...
Index 'NameIDX', entry ^Sample.PersonI("NameIDX"," CHANG,QUIGLEY H.",39), has differences between master map data and index map data.  Corrected
Index 'NameIDX', entry ^Sample.PersonI("NameIDX"," CHANG,DAN L.",40) missing.  Corrected
Index 'NameIDX', entry ^Sample.PersonI("NameIDX"," CHADWICK,OLGA E.",43) missing.  Corrected
Index 'NameIDX', entry ^Sample.PersonI("NameIDX"," CANNON,BARBARA W.",81) missing.  Corrected
Data Map evaluation complete, 200 rows checked, 4 errors found, elapsed time: .004733 seconds
 
Verifying data from index map "$Person" is correct...
Index map "$Person" evaluation complete, 0 errors, elapsed time: .000691 seconds
 
Verifying data from index map NameIDX is correct...
Index 'NameIDX', entry ^Sample.PersonI("NameIDX"," CEMPER,DAN L.",40), data differs for field 'Name' between data and index map.  Corrected
Index map NameIDX evaluation complete, 1 errors, elapsed time: .001331 seconds
 
Verifying data from index map SSNKey is correct...
Index map SSNKey evaluation complete, 0 errors, elapsed time: .001195 seconds
 
Verifying data from index map ZipCode is correct...
Index map ZipCode evaluation complete, 0 errors, elapsed time: .001255 seconds
 
%ValidateIndices is complete, total elapsed time: .012282 seconds
 
SAMPLES>

 

This looks good so far.

to work down a collection of varying number of elements I'd use this kind of loop
in this case it's a double loop

For res=1:1:callresponse.result.Count() {
  Continue:'$IsObject(callresponse.result.GetAt(res)
  For err=1:1:callresponse.result.GetAt(res).Count() {
    Continue:'$IsObject(callresponse.result.GetAt(res).errors.GetAt(err)
    Set context.ErrorMessage= callresponse.result.GetAt(res).errors.GetAt(err).message
    - - - -
    }
 }

This is the paranoic version!
If you trust ENSEMBLE you may skip the check for $IsObject()

HTH

Alexey,

with $ZF(-1,command)  you are at OS level.
Nothing  prevents you from extending command to a script that  writes its pid in a file.
using $JOB_".pid" or similar as file name should be enough to  identify it.
So after a moderate HANG your pid should be available.

I prefer this to using pipes or other sophisticated solutions (e.g. listening on a TCP/IP or UDP port, ...)
as you get  an embedded trace for free  

HTH

online docs don't give a direct hint.

so my shot from the hip: 
selection expression - $select(), $case()  where you get a value based  on a condition
data expression - anything that sets, modifies, composes data.

this is  a quite academic view since  data expressions may contain selection expressions
and selection expressions may contain data expressions.
both variants and any mix of it  are quite common in COS 

HTH

It's good to know that DC is already well established on InterSystems' events.
But anyhow working during the last  2 years very close with a customer the message  of DC got lost.
My interpretation: we didn't reach the developers but just their managers.
So the message message to managers:

You as a manager take advantage giving your people time to use DC as a resource.

I didn't see it from this prospective before.

And YES! It's highly important to bring leaders and also local people together!
Personal contact could / will be a base of trust and confidence in each other.