I think that with the RJ3iB, if you save a UF to a PR it always saves in matrix representation. To be sure, see if you have the system variable $PR_CARTREP and if you do, set it to true and ignore the rest of this post.
The way I do it (I have 50+ programs that have 2 UFrames each) is to put this code at the beginning of my programs:
Lines 1-5 store 2 UFrame values (we have an asymmetric rotating wall)
Lines 8-16 selects the correct frame value into a buffer based on a sensor reading which side of the wall is active
Lines 17-21 further adjusts the frame value based on an argument from the calling program (some of our products are identical, but 2 inches taller) and also adds an adjustment that the operators can manually enter.
Line 22 loads the modified buffered value into an actual UFrame
1: JMP LBL[1] ;
2: !UFrame data ;
3:L P[1:Side 1 UFrame] 1000mm/sec FINE ;
4:L P[2:Side 2 UFrame] 1000mm/sec FINE ;
5: LBL[1] ;
6: ;
7: ;
8: !Start UFrame Load ;
9: OVERRIDE=100% ;
10: IF DI[15:Side 2 active]=ON,JMP LBL[2] ;
11: PR[8:UFRAME BUFFER]=P[1:Side 1 UFrame] ;
12: JMP LBL[3] ;
13: LBL[2] ;
14: PR[8:UFRAME BUFFER]=P[2:Side 2 UFrame] ;
15: LBL[3] ;
16: !End UFrame Load ;
17: R[43:isAFR]=AR[1] ;
18: IF R[43:isAFR]<>1,JMP LBL[4] ;
19: PR[8,3:UFRAME BUFFER]=PR[8,3:UFRAME BUFFER]+50.8 ;
20: LBL[4] ;
21: PR[8:UFRAME BUFFER]=PR[8:UFRAME BUFFER]+PR[13:UF Manual Adj] ;
22: UFRAME[1]=PR[8:UFRAME BUFFER] ;
Display More