Mike,
Read data works well for Julian (your example) or without DTE on a formatted date.
I am guessing but I suspect for String to Number, my original technique and the two PVX equivalents at the bottom of this reply will be very hard to beat on efficiency.
Good reasons to use a structured (or composite) string technique are:
1: because the original data is an un-formatted string and both original and parsed data are needed.
2: A Variable fits better than a formula into a IOLIST and accepts assignment which a formula can not.
3: in a tight loop of thousands/millions of records, READ DATA will run noticeably slower than either
multiple num(substring) or the structured string approach. (2002 list date functions thread)
4: Read/Assignment results can be fed directly into functions with implicit conversion.
Dt$=DTM06$,DayOfWeek=NUM(DTE(JUL(Dt.Y,Dt.M,Dt.D):"%W") )
5: Only one Dim of a string structure is necessary. CLEAR or DIM must be used to remove\change structure.
Re # 3: Your comments on the relative efficiency of these approaches will definitely be appreciated.
While not quite as simple and easy to remember as :N(len), strings to numbers can also be achieved with PVX composite string structures as in:
1 DIM Dt$:CPL("IOLIST Y:[NUM(4)],M:[NUM(2)],D:[NUM(2)]")
2 !
3 Dt$="20191105"
4 ?Dt.Y
5 ?Dt.M
6 ?Dt.D
1 IOL.dt: IOLIST Y:[NUM(4)],M:[NUM(2)],D:[NUM(2)]
2 DIM Dt$:iol=iol.dt
3 Dt$="20191105"
4 ?Dt.Y
5 ?Dt.M
6 ?Dt.D