>M=0 >HDDNO=GetVolumeSerial() > >*CPUID Type-I* >LOCAL lcComputerName, loWMI, lowmiWin32Objects, lowmiWin32Object >lcComputerName = GETWORDNUM(SYS(0),1) >loWMI = GETOBJECT("WinMgmts://" + lcComputerName) >lowmiWin32Objects = loWMI.InstancesOf("Win32_Processor") >FOR EACH lowmiWin32Object IN lowmiWin32Objects > WITH lowmiWin32Object > cIDTYPEONE= TRANSFORM(.ProcessorId) > ENDWITH >ENDFORHi Harsh
>FOR EACH lowmiWin32Object IN lowmiWin32Objects > cIDTYPEONE= TRANSFORM(lowmiWin32Object.ProcessorId) >ENDFORWITH is good when you have many properties to access like this:
> WITH lowmiWin32Object > cIDTYPEONE= TRANSFORM(.ProcessorId) > cIDTYPEONE= TRANSFORM(.ProcessorId) > cIDTYPEONE= TRANSFORM(.ProcessorId) > cIDTYPEONE= TRANSFORM(.ProcessorId) > cIDTYPEONE= TRANSFORM(.ProcessorId) > cIDTYPEONE= TRANSFORM(.ProcessorId) > cIDTYPEONE= TRANSFORM(.ProcessorId) > ENDWITHbut it is not any better than this (except for less typing) and you can use this approach across many objects:
> cIDTYPEONE= TRANSFORM(lowmiWin32Object.ProcessorId) > cIDTYPEONE= TRANSFORM(lowmiWin32Object.ProcessorId) > cIDTYPEONE= TRANSFORM(lowmiWin32Object.ProcessorId) > cIDTYPEONE= TRANSFORM(lowmiWin32Object.ProcessorId) > cIDTYPEONE= TRANSFORM(lowmiWin32Object.ProcessorId) > cIDTYPEONE= TRANSFORM(lowmiWin32Object.ProcessorId) > cIDTYPEONE= TRANSFORM(lowmiWin32Object.ProcessorId)There is a risky "feature" of with.
>FOR EACH lowmiWin32Object IN lowmiWin32Objects > WITH lowmiWin32Object > cIDTYPEONE= SOMEUDF(.ProcessorId) > ENDWITH >ENDFORThe WITH stays in effect in someudf. That is not a best practice. It is best to explicitly pass parameters to a udf. A typing mistake could cause a messy debugging session inside someudf or other called routines. I just avoid WITH...ENDWITH unless I have no choice.