1) Data  -  correlation and initial principal components-matrix   Solution by SPSS
(using the CanCorr macro)
1.1 This is the correlation-matrix of 8 items of an index of daily-life-activity of old-aged people in a survey of rehabilitation after stroke  
Correlations for Set-1
correlations                 S1A455 S1A454 S1A461 S1A445 S1A446 S1A459 S1A448 S1A447         S1A455  S1A454  S1A461  S1A445
S1A455 Besuche erhalten 1 0.585577 0.288664 0.280748 0.196817 0.198924 0.159755 0.219989 S1A455  1.0000   .5856   .2887   .2807
S1A454 Besuche machen  0.585577 1 0.268428 0.412443 0.248294 0.159625 0.219952 0.244413 S1A454   .5856  1.0000   .2684   .4124
S1A461 Briefe schreiben 0.288664 0.268428 1 0.295551 0.249847 0.115058 0.173021 0.17995 S1A461   .2887   .2684  1.0000   .2956
S1A445 Spazieren       0.280748 0.412443 0.295551 1 0.311627 0.223415 0.138686 0.279225 S1A445   .2807   .4124   .2956  1.0000
S1A446 Bücher lesen    0.196817 0.248294 0.249847 0.311627 1 0.357237 0.354167 0.358857  
S1A459 Rätsellösen     0.198924 0.159625 0.115058 0.223415 0.357237 1 0.190039 0.267069 Correlations for Set-2
S1A448 Zeitschriften   0.159755 0.219952 0.173021 0.138686 0.354167 0.190039 1 0.387965         S1A446  S1A459  S1A448  S1A447
S1A447 Zeitungen       0.219989 0.244413 0.17995 0.279225 0.358857 0.267069 0.387965 1 S1A446  1.0000   .3572   .3542   .3589
S1A459   .3572  1.0000   .1900   .2671
1.2 This are the principal components-loadings from that above correlations S1A448   .3542   .1900  1.0000   .3880
S1A447   .3589   .2671   .3880  1.0000
princ comps   pc1 pc2 pc3 pc4 pc5 pc6 pc7 pc8
S1A455 Besuche erhalten 0.6302 -0.5048 0.043 0.3458 -0.2521 0.0737 0.1294 -0.3753 Correlations Between Set-1 and Set-2
S1A454 Besuche machen  0.6845 -0.4792 0.0834 0.285 0.0603 -0.1517 -0.0102 0.4322         S1A446  S1A459  S1A448  S1A447
S1A461 Briefe schreiben 0.5221 -0.2432 0.1443 -0.693 -0.3472 0.1998 -0.0407 0.0712 S1A455   .1968   .1989   .1598   .2200
S1A445 Spazieren       0.6288 -0.2047 -0.2643 -0.2525 0.5731 -0.0929 -0.2514 -0.1696 S1A454   .2483   .1596   .2200   .2444
S1A446 Bücher lesen    0.6478 0.3853 -0.1337 -0.1657 -0.0437 -0.428 0.4482 -0.0229 S1A461   .2498   .1151   .1730   .1799
S1A459 Rätsellösen     0.4998 0.3554 -0.6417 0.1729 -0.3105 0.1516 -0.24 0.0725 S1A445   .3116   .2234   .1387   .2792
S1A448 Zeitschriften   0.5319 0.4527 0.5367 0.1119 -0.1095 -0.2134 -0.3847 -0.0777
S1A447 Zeitungen       0.6155 0.3801 0.2087 0.1121 0.2928 0.5306 0.2258 0.0488
2) Generating the canonical components by rotations of the loadingsmatrix  
2.1 First we collect the variance of the first set of four variables (which explains also a part of the variance of the second set).
This variance should be in principal components position (of that 4 items only).
So we rotate for PC-position using only the first four items as criterion for the routine
Also we mark the found axes by marker variables and call them pc1_x for them representing the pc's of the first set of items
    ax1 ax2 ax3 ax4 ax5 ax6 ax7 ax8
S1A455 Besuche erhalten 0.7759 -0.3958 0.295 -0.3926 0 0 0 0
S1A454 Besuche machen  0.8219 -0.342 -0.031 0.4544 0 0 0 0
S1A461 Briefe schreiben 0.5935 0.685 0.4181 0.0612 0 0 0 0
S1A445 Spazieren       0.6748 0.2693 -0.6693 -0.1559 0 0 0 0
S1A446 Bücher lesen    0.3431 0.1131 -0.0756 0.0059 0.5882 -0.3863 -0.4042 -0.453
S1A459 Rätsellösen     0.242 0.0069 -0.0671 -0.0858 -0.2714 0.1811 -0.8347 -0.3555
S1A448 Zeitschriften   0.2403 0.0214 0.0279 0.0674 -0.3731 -0.8486 -0.1238 -0.2487
S1A447 Zeitungen       0.3198 0.0341 -0.0764 -0.0201 0.1010 -0.4877 -0.5889 0.5435
pc1_1 pc1_1           1 0 0 0 0 0 0 0
pc1_2 pc1_2           0 1 0 0 0 0 0 0
pc1_3 pc1_3           0 0 1 0 0 0 0 0
pc1_4 pc1_4           0 0 0 1 0 0 0 0
Obviously that variance needs only 4 dimensions/axes to be perfectly represented. And also obviously there is partial variance of the items
of the second set, which is not explained by that first set and is shown in the axes 5-8
2.2 Next we collect the variance of the second set of four variables (which explains also a part of the variance of the first set).
Again this variance should be in principal components position (of that 4 items only).
So we rotate for PC-position using only the second four items as criterion for the routine
Also we mark the new found axes by marker variables and call them pc2_x for them representing the pc's of the second set of items
    ax1 ax2 ax3 ax4 ax5 ax6 ax7 ax8
S1A455 Besuche erhalten 0.2763 0.0349 -0.0443 -0.0059 -0.7540 0.5614 -0.0760 0.1762
S1A454 Besuche machen  0.3140 -0.0331 0.0020 -0.0330 -0.4078 0.1134 0.2115 0.8218
S1A461 Briefe schreiben 0.2601 -0.0214 0.0541 -0.0709 -0.3204 -0.2465 -0.8157 0.3084
S1A445 Spazieren       0.3427 0.0696 -0.0326 -0.1235 -0.6852 -0.584 0.2193 0.053
S1A446 Bücher lesen    0.7548 0.1466 0.4412 -0.4628 0 0 0 0
S1A459 Rätsellösen     0.6181 0.6996 -0.1296 0.3342 0 0 0 0
S1A448 Zeitschriften   0.6925 -0.5063 0.2544 0.4464 0 0 0 0
S1A447 Zeitungen       0.7304 -0.2634 -0.5876 -0.2279 0 0 0 0
pc1_1 pc1_1           0.4115 0.0164 -0.0109 -0.0754 -0.7542 -0.0056 -0.1061 0.4944
pc1_2 pc1_2           0.0658 0.002 0.0554 -0.0837 0.0416 -0.72 -0.6647 -0.1537
pc1_3 pc1_3           -0.0687 -0.0622 0.044 0.0735 0.1615 0.633 -0.7272 0.1689
pc1_4 pc1_4           -0.0085 -0.1052 0.0687 0.0057 0.5092 -0.2391 0.1075 0.81
pc2_1 pc2_1           1 0 0 0 0 0 0 0
pc2_2 pc2_2           0 1 0 0 0 0 0 0
pc2_3 pc2_3           0 0 1 0 0 0 0 0
pc2_4 pc2_4           0 0 0 1 0 0 0 0
Again obviously that variance needs only 4 dimensions/axes to be perfectly represented. And also obviously there is partial variance of the items
of the first set, which is not explained by that second set and is now shown in the axes 5-8
2.3 From this we find the canonical components of the second set and the crossloadings of the first set
They are marked by the principal components of the variance of the pcs of the first set, which is in common with the variance of the second set
So we rotate the subspace of first 4 axes of pc1_1 to pc1_4 into principal components orientation
and mark that axes by new variables cc2_1 to cc2_4
Cross Loadings for Set-1
    ax1 ax2 ax3 ax4 ax5 ax6 ax7 ax8               1        2        3        4
S1A455 Besuche erhalten 0.2727 0.0243 -0.0672 0.0072 -0.754 0.5614 -0.076 0.1762 S1A455    -.273     .024     .067    -.007
S1A454 Besuche machen  0.3091
-0.0575
-0.0425 -0.0096 -0.4078 0.1134 0.2115 0.8218 S1A454    -.309    -.058     .043     .010
S1A461 Briefe schreiben 0.2654 -0.069 0.0251 0.0146 -0.3204 -0.2465 -0.8157 0.3084 S1A461    -.265    -.069    -.025    -.015
S1A445 Spazieren       0.3673 0.0515 0.0314 -0.0061 -0.6852 -0.584 0.2193 0.053 S1A445    -.367     .051    -.031     .006
S1A446 Bücher lesen    0.8395 -0.1753 0.4428 0.2615 0 0 0 0 S1A446    -.840    -.175    -.443    -.261
S1A459 Rätsellösen     0.5764 0.5187 -0.379 0.5051 0 0 0 0 S1A459    -.576     .519     .379    -.505
S1A448 Zeitschriften   0.518 -0.6793 -0.5101 0.0999 0 0 0 0 S1A448    -.518    -.679     .510    -.100
S1A447 Zeitungen       0.7571 0.0918 -0.2322 -0.6037 0 0 0 0 S1A447    -.757     .092     .232     .604
pc1_1 pc1_1           0.4177 -0.0166 -0.0245 0.0011 -0.7542 -0.0056 -0.1061 0.4944 Canonical Loadings for Set-2
pc1_2 pc1_2           0.0822 -0.0287 0.0819 0.0108 0.0416 -0.72 -0.6647 -0.1537
pc1_3 pc1_3           -0.09 -0.0765 -0.0408 0.0178 0.1615 0.633 -0.7272 0.1689
pc1_4 pc1_4           -0.0196 -0.1234 0.0096 -0.0137 0.5092 -0.2391 0.1075 0.81
pc2_1 pc2_1           0.9679 -0.1095 -0.2152 0.0701 0 0 0 0  
pc2_2 pc2_2           0.0772 0.7851 0.1425 0.5977 0 0 0 0  
pc2_3 pc2_3           -0.0279 -0.5975 0.4041 0.6921 0 0 0 0
pc2_4 pc2_4           -0.2377 -0.1208 -0.8775 0.3985 0 0 0 0
cc2_1 cc2_1 1 0 0 0 0 0 0 0
cc2_2 cc2_2 0 1 0 0 0 0 0 0
cc2_3 cc2_3 0 0 1 0 0 0 0 0
cc2_4 cc2_4 0 0 0 1 0 0 0 0
 
The loadings of the items-sets in the first four axes are the "cross-" resp. the "canonical loadings"  
2.4 Next we find the canonical components of the first set
They are marked by the principal components of the variance of the pcs of the second set, which is in common with the variance of the first set
We have to collect the variance of the first set into the first four axes.
After that we rotate the subspace of first 4 axes into principal components orientation for the princ.components of the second set pc2_1 to pc2_4
and mark that axes by new variables cc1_1 to cc1_4
Canonical Loadings for Set-1
    ax1 ax2 ax3 ax4 ax5 ax6 ax7 ax8               1        2        3        4
S1A455 Besuche erhalten 0.6261 Abgerundete rechteckige Legende: Canonical loadings set1
0.1635
-0.7059 -0.2881 0 0 0 0 S1A455    -.626     .163     .706    -.288
S1A454 Besuche machen  0.7097 -0.3865 -0.4464 0.3843 0 0 0 0 S1A454    -.710    -.387     .446     .384
S1A461 Briefe schreiben 0.6093 -0.4636 0.2636 -0.5868 0 0 0 0 S1A461    -.609    -.464    -.264    -.587
S1A445 Spazieren       0.8432 0.3458 0.3296 0.2467 0 0 0 0 S1A445    -.843     .346    -.330     .247
S1A446 Bücher lesen    0.3657 -0.0261 0.0422 -0.0065 0.7117 0.4978 -0.0547 -0.3262 S1A446    -.366    -.026    -.042    -.007
S1A459 Rätsellösen     0.2511 Abgerundete rechteckige Legende: Crossloadings set2
0.0772
-0.0361 -0.0126 0.6191 -0.6138 0.0089 -0.4116 S1A459    -.251     .077     .036    -.013
S1A448 Zeitschriften   0.2257 -0.1011 -0.0486 -0.0025 0.3207 0.1475 0.8993 -0.0568 S1A448    -.226    -.101     .049    -.002
S1A447 Zeitungen       0.3298 0.0137 -0.0221 0.015 0.6737 -0.0451 0.1566 0.6403 S1A447    -.330     .014     .022     .015
pc1_1 pc1_1           0.959 -0.1116 -0.257 -0.0429 0 0 0 0 Cross Loadings for Set-2
pc1_2 pc1_2           0.1887 -0.1926 0.8602 -0.4329 0 0 0 0
pc1_3 pc1_3           -0.2066 -0.5136 -0.4289 -0.7139 0 0 0 0
pc1_4 pc1_4           -0.0449 -0.8287 0.1005 0.5488 0 0 0 0
pc2_1 pc2_1           0.4216 -0.0163 -0.0205 -0.0017 0.8316 0.0334 0.357 -0.0368
pc2_2 pc2_2           0.0336 0.1169 0.0136 -0.0149 0.2362 -0.5011 -0.5956 -0.5685
pc2_3 pc2_3           -0.0121 -0.0889 0.0385 -0.0172 -0.1294 0.5844 0.1794 -0.7744
pc2_4 pc2_4           -0.1035 -0.018 -0.0836 -0.0099 -0.2302 -0.6227 0.6828 -0.2736 Canonical Correlations
cc2_1 cc2_1 0.4356 0 0 0 0.8815 0.1254 0.1323 0.0071 1       .436
cc2_2 cc2_2 0 0.1489 0 0 0.1995 -0.671 -0.6963 0.0534 2       .149
cc2_3 cc2_3 0 Abgerundete rechteckige Legende: Canonical correlations
0
0.0952 0 0.0044 0.7041 -0.6884 -0.1459 3       .095
cc2_4 cc2_4 0 0 0 -0.0249 0.0182 -0.1409 0.0653 -0.9874 4       .025
cc1_1 cc1_1 1 0 0 0 0 0 0 0
cc1_2 cc1_2 0 1 0 0 0 0 0 0
cc1_3 cc1_3 0 0 1 0 0 0 0 0
cc1_4 cc1_4 0 0 0 1 0 0 0 0
The loadings of the items-sets in the first four axes are the "cross-" resp. the "canonical loadings"
After this we have all needed coefficients at hand; the canonical correlations can directly be read off from the correlations between the canonical
components of the two sets
                     
3) Regression: computing the canonical coefficients as beta-weights  
The "canonical coefficients" are the beta-weights of the canonical components in terms of the set-variables.
In the above table 2.4 we postmultiply the four leading columns by the inverse of the loadings of the first set-items
and get the following beta-weights table
3.1 beta-weights                 S1A455 S1A454 S1A461 S1A445        
S1A455 Besuche erhalten 1 0 0 0  
S1A454 Besuche machen  0 1 0 0  
S1A461 Briefe schreiben 0 0 1 0  
S1A445 Spazieren       0 0 0 1        
S1A446 Bücher lesen    0.035447 0.097918 0.149133 0.217214  
S1A459 Rätsellösen     0.145499 -0.004887 0.021713 0.178165  
S1A448 Zeitschriften   0.022548 0.163333 0.113364 0.031485  
S1A447 Zeitungen       0.09104 0.091576 0.071528 0.194756        
pc1_1 pc1_1           0.37212 0.39418 0.284613 0.323593  
pc1_2 pc1_2           -0.485467 -0.419401 0.840131 0.330226  
pc1_3 pc1_3           0.415143 -0.043607 0.588262 -0.94168  
pc1_4 pc1_4           -1.010086 1.16902 0.157539 -0.401022        
pc2_1 pc2_1           0.101179 0.127692 0.130669 0.222987  
pc2_2 pc2_2           0.085559 -0.114602 -0.046841 0.10665  
pc2_3 pc2_3           -0.082015 0.050822 0.08014 -0.054175  
pc2_4 pc2_4           0.037329 0.008835 -0.047569 -0.123561        
cc2_1 cc2_1 0.097946 0.111228 0.131929 0.254932  
cc2_2 cc2_2 0.100593 -0.13539 -0.093217 0.106617  
cc2_3 cc2_3 -0.075483 -0.031027 0.039331 0.053744   Raw Canonical Coefficients for Set-1
cc2_4 cc2_4 0.016352 -0.020855 0.017667 -0.007355                       1        2        3        4
cc1_1 cc1_1 0.224853 Abgerundete rechteckige Legende: Canonical coefficients set 1
0.255344
0.302866 0.585241   S1A455    -.225     .675     .792    -.656
cc1_2 cc1_2 0.675776 -0.909544 -0.626228 0.716246   S1A454    -.255    -.909     .326     .837
cc1_3 cc1_3 -0.79278 -0.325869 0.413078 0.564461   S1A461    -.303    -.626    -.413    -.709
cc1_4 cc1_4 -0.656534 0.837331 -0.709346 0.295316         S1A445    -.585     .716    -.564     .295
After rerotating of matrix 2.4 to collect the variance of the second item-set in the first four axes we postmultiply (note: these are displayed in transposition)
 the four leading columns by the inverse of the loadings of the second set-items
3.2 beta-weights                 S1A446 S1A459 S1A448 S1A447        
S1A455 Besuche erhalten 0.085513 0.121884 0.053553 0.135974  
S1A454 Besuche machen  0.142712 0.051567 0.105943 0.138325  
S1A461 Briefe schreiben 0.191454 0.011566 0.071874 0.080271  
S1A445 Spazieren       0.219747 0.101228 -0.030166 0.185036        
S1A446 Bücher lesen    1 0 0 0  
S1A459 Rätsellösen     0 1 0 0  
S1A448 Zeitschriften   0 0 1 0  
S1A447 Zeitungen       0 0 0 1        
pc1_1 pc1_1           0.213674 0.101731 0.072384 0.187846  
pc1_2 pc1_2           0.132045 -0.037653 -0.020009 0.004518  
pc1_3 pc1_3           -0.06503 -0.04017 0.0883 -0.076607  
pc1_4 pc1_4           0.022495 -0.101603 0.093176 -0.037198        
pc2_1 pc2_1           0.384159 0.314588 0.352483 0.371729  
pc2_2 pc2_2           0.175166 0.836139 -0.605124 -0.314839  
pc2_3 pc2_3           0.710012 -0.208483 0.409397 -0.945518   Raw Canonical Coefficients for Set-2
pc2_4 pc2_4           -0.801914 0.579145 0.773585 -0.394924                       1        2        3        4
cc2_1 cc2_1 0.556148 0.237188 0.09919 0.455684   S1A446    -.556    -.232    -.932    -.303
cc2_2 cc2_2 -0.231875 Abgerundete rechteckige Legende: Canonical coefficients set 2
0.676662
-0.851739 0.324732   S1A459    -.237     .676     .541    -.608
cc2_3 cc2_3 0.932906 -0.541039 -0.67551 -0.160372   S1A448    -.099    -.851     .675    -.255
cc2_4 cc2_4 0.303422 0.60837 0.254649 -0.973888         S1A447    -.455     .325     .160     .973
cc1_1 cc1_1 0.242259 0.103319 0.043207 0.198496  
cc1_2 cc1_2 -0.034516 0.100725 -0.126786 0.048338   (note: these are displayed in transposition)
cc1_3 cc1_3 0.088825 -0.051514 -0.064318 -0.01527  
cc1_4 cc1_4 -0.007557 -0.015152 -0.006342 0.024256