Rev 15150 | Blame | Compare with Previous | Last modification | View Log | RSS feed
!if $wims_read_parm!=slib_header
!goto proc
!endif
slib_author=Bernadette, Perrin-Riou
slib_example=[Rd1,Re1,Kg1,Pa2,Pb2,Pc2,Pf2,Pg2,Ph2,Pc3,Bd4,Qe4,Bf4;Kc8,Rd8,Rh8,Pa7,Pb7,Be7,Pf7,Pg7,Ph8,Be3],[e4xc6+;b7xc6;d4-a6#;c3-a1=Q]\
[Ra1,Nb1,Bc1,Qd1,Ke1,Bf1,Ng1,Rh1,a2,b2,c2,d2,e2,f2,g2,h2;Ra8,Nb8,Bc8,Qd8,Ke8,Bf8,Ng8,Rh8,a7,b7,c7,d7,e7,f7,g7,h7],[e1,c8]\
[Ra1,Nb1,Bc1,Qd1,Ke1,Bf1,Ng1,Rh1,a2,b2,c2,d2,e2,f2,g2,h2;Ra8,Nb8,Bc8,Qd8,Ke8,Bf8,Ng8,Rh8,a7,b7,c7,d7,e7,f7,g7,h7],[e1xc8]\
[Kf8,Pg6,Rh1;Bg8,Kh8,Pg7,Ph7],[Rh1-h6;Pg7-h6;Pg6-g7#]\
[Ra1,Nb1,Bc1,Qd1,Ke1,Bf1,Ng1,Rh1,a2,b2,c2,d2,e2,f2,g2,h2;Ra8,Nb8,Bc8,Qd8,Ke8,Bf8,Ng8,Rh8,a7,b7,c7,d7,e7,f7,g7,h7],[e1,c8;e2,c7],several
!exit
:proc
!reset slib_option slib_final slib_out
!distribute item $wims_read_parm into slib_initial,slib_mvt,slib_option
!default slib_option=global
slib_c=w,b
slib_initial=!declosing $slib_initial
slib_initial=!lines2rows $slib_initial
slib_initial1=$slib_initial
slib_mvt=!declosing $slib_mvt
slib_mvt=!lines2rows $slib_mvt
slib_mvt_cnt=!itemcnt $(slib_mvt[;1])
!for slib_m=1 to $slib_mvt_cnt
!reset slib_a slib_f slib_f1 slib_c0 slib_j0 slib_prom slib_f2 slib_prom
slib_test=0
slib_mv=$(slib_mvt[$slib_m;])
slib_mv=!translate internal -+x# to ,,,, in $slib_mv
slib_prom=!replace internal = by XX in $slib_mv
!if XX isin $slib_prom
slib_mv=!translate =[A-Z] to $ $ in $slib_mv
slib_prom=!replace internal XX by ; in $slib_prom
slib_prom=$(slib_prom[-1;])
!else
!reset slib_prom
!endif
!for slib_j=1 to 2
!for slib_s in $(slib_initial[$slib_j;])
!if $slib_test=0 and $(slib_mv[1]) isin $slib_s
slib_f=$slib_s
slib_f1=!charcnt $slib_f
!if $slib_f1=2
slib_f1=P
!else
slib_f1=!char 1 of $slib_f
!endif
slib_f2=$slib_f1
!if $slib_prom!=
slib_f1=$slib_prom
!endif
slib_j0=$slib_j
slib_c0=!item $slib_j0 of $slib_c
slib_test=1
!endif
!next
!next
slib_test=0
!for slib_j=1 to 2
!for slib_s in $(slib_initial[$slib_j;])
!if $slib_test=0 and $(slib_mv[2]) isin $slib_s
slib_a=$slib_s
slib_test=1
!endif
!next
!next
slib_final=$slib_initial
slib_final=!replace internal $slib_f by in $slib_final
slib_final1=$(slib_final[1;])
slib_final2=$(slib_final[2;])
!if $slib_j0=1
slib_final2=!replace internal $slib_a by in $slib_final2
slib_final1=$slib_final1,$slib_f1$(slib_mv[2])
!else
slib_final1=!replace internal $slib_a by in $slib_final1
slib_final2=$slib_final2,$slib_f1$(slib_mv[2])
!endif
slib_final2=!nonempty items $slib_final2
slib_final1=!nonempty items $slib_final1
slib_final=$slib_final1;$slib_final2
!if $slib_a!=
slib_a_cnt=!charcnt $slib_a
!if $slib_a_cnt=2
slib_a=P
!else
slib_a=!char 1 of $slib_a
!endif
!if $slib_prom=
slib_out=!append line [$slib_final;$slib_mv],[$slib_f1,$slib_a] to $slib_out
!else
slib_out=!append line [$slib_final;$slib_mv],[[$slib_f2,$slib_prom],$slib_a,$slib_prom] to $slib_out
!endif
!else
!if $slib_prom=
slib_out=!append line [$slib_final;$slib_mv],[$slib_f1] to $slib_out
!else
slib_out=!append line [$slib_final;$slib_mv],[[$slib_f2,$slib_prom]] to $slib_out
!endif
!endif
!if $slib_option iswordof global
slib_initial=$slib_final
!endif
!next slib_m