BEGIN PGM CIRCSTUDMILL MM 
Q195 = Q197
Q197 = 0
FN 9: IF +Q195 EQU +1 GOTO LBL 200
Q200 = ABS Q200
Q202 = ABS Q202
Q204 = ABS Q204
LBL 200
FN 17: SYSWRITE ID 212 =+3
CALL PGM CHECK_MP7441.CYC
FN 9: IF +Q201 EQU +0 GOTO LBL 254
FN 10: IF +Q109 NE -1 GOTO LBL 198
FN 14: ERROR= 1001
LBL 198
FN 10: IF +Q202 NE +0 GOTO LBL 21
FN 14: ERROR= 1030
LBL 21
FN 12: IF +Q201 LT +0 GOTO LBL 197
FN 0: Q30 =-1
FN 9: IF +0 EQU +0 GOTO LBL 196
LBL 197
FN 0: Q30 =+1
LBL 196
FN 9: IF +Q195 EQU +1 GOTO LBL 194
CALL LBL 14
LBL 194
FN 1: Q19 =+Q203 + +Q200
Q51 = ABS Q200
Q52 = ABS Q204
FN 11: IF +Q51 GT +Q52 GOTO LBL 3
FN 1: Q19 =+Q203 + +Q204
LBL 3
FN 1: Q20 =+Q203 + +Q200 ; Vorposition
FN 0: Q23 =+Q203 ; OK Werkstck
FN 1: Q24 =+Q203 + +Q201 ; Endtiefe vorzeichenrichtig
FN 0: Q27 =+Q202 ; Zustelltiefe
; Radius Startpos rechnen, Massfaktor lesen
FN 18: SYSREAD Q49 = ID210 NR4 IDX1
Q10 = ( Q222 / 2 ) + ( Q108 / Q49 ) + ( 2 / Q49 )
; Konstante Schnittaufteilung rechnen:
; Q11: Gesamtbreite Restmaterial
; Q21: Radiusfertigmass + Aufmass
; Q12: Material - Werkzeugueberlappung
; Q15: Schnittzaehler
Q11 = ( Q222 - Q223 ) / 2 - Q368
Q21 = ( Q223 / 2 ) + Q368
Q12 = Q11 - ( Q108 * Q370 )
; Schnittzaehler auf Einzelschnitt setzen
Q15 = 0
; Abfrage, ob ein Schnitt reicht
FN 12: IF +Q12 LT +0 GOTO LBL 1
FN 9: IF +Q12 EQU +0 GOTO LBL 1
; Wenn nicht, dann Zust. konstant aufteilen
; Q11: Aktueller Radius
; Q12: Anzahl Schnitte
; Q13: Radiusverkleinerung
; Q15: Schnittzaehler
Q12 = INT ( Q11 / ( Q108 * Q370 ) )
Q13 = FRAC ( Q11 / ( Q108 * Q370 ) )
FN 9: IF +Q13 EQU +0 GOTO LBL "EVEN_CUTS"
Q12 = Q12 + 1
LBL "EVEN_CUTS"
Q13 = Q11 / Q12
Q11 = ( Q222 / 2 ) - Q13
Q15 = 1
FN 9: IF +0 EQU +0 GOTO LBL 2
LBL 1
; Radius bei Einzelschnitt
Q11 = ( Q223 / 2 ) + Q368
LBL 2
CC  X+0  Y+0
LP  PR+Q10  PA+0 R0 FMAX
L  Z+Q20 R0 FMAX
; Starttiefe setzen
FN 2: Q23 =+Q23 - +Q202
FN 10: IF +Q30 NE -1 GOTO LBL 30
FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
FN 11: IF +Q23 GT +Q24 GOTO LBL "ENDTIEFE"
FN 9: IF +0 EQU +0 GOTO LBL 10
LBL 30
FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
FN 12: IF +Q23 LT +Q24 GOTO LBL "ENDTIEFE"
; Wiederholungen
LBL 10
FN 9: IF +Q351 EQU -1 GOTO LBL "CALL_GEGENLAUF1"
CALL LBL "GLEICHLAUF"
FN 9: IF +0 EQU +0 GOTO LBL "WEITER1"
LBL "CALL_GEGENLAUF1"
CALL LBL "GEGENLAUF"
LBL "WEITER1"
FN 2: Q23 =+Q23 - +Q202
FN 10: IF +Q30 NE -1 GOTO LBL 32
FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
FN 11: IF +Q23 GT +Q24 GOTO LBL "ENDTIEFE"
FN 9: IF +0 EQU +0 GOTO LBL 10
LBL 32
FN 9: IF +Q23 EQU +Q24 GOTO LBL "ENDTIEFE"
FN 12: IF +Q23 LT +Q24 GOTO LBL "ENDTIEFE"
FN 9: IF +0 EQU +0 GOTO LBL 10
LBL "ENDTIEFE"
FN 0: Q23 =+Q24
FN 9: IF +Q351 EQU -1 GOTO LBL "CALL_GEGENLAUF2"
CALL LBL "GLEICHLAUF"
FN 9: IF +0 EQU +0 GOTO LBL "WEITER2"
LBL "CALL_GEGENLAUF2"
CALL LBL "GEGENLAUF"
LBL "WEITER2"
FN 9: IF +0 EQU +0 GOTO LBL 14
; *** UP Gleichlauffraesen ***
LBL "GLEICHLAUF"
LP  PR+Q10  PA+0 R0 FMAX ; Startposition
L  Z+Q23 R0 FQ206
FN 9: IF +Q15 EQU +0 GOTO LBL "SINGLECUT"
L  FQ207
APPR PCT  PR+Q11  PA+0  CCA180 R+1 RL FQ207
LBL "MULTICUT"
CP IPA-360 DR- FQ207 M98
Q15 = Q15 + 1
FN 9: IF +Q15 EQU +Q12 GOTO LBL "END_MULTICUT"
Q11 = Q11 - Q13
LP  PR+Q11  PA+0 RL FQ207
FN 9: IF +0 EQU +0 GOTO LBL "MULTICUT"
LBL "END_MULTICUT"
LP  PR+Q21  PA+0 RL FQ207
FN 9: IF +0 EQU +0 GOTO LBL "LASTCUT"
LBL "SINGLECUT"
L  FQ207
APPR PCT  PR+Q11  PA+0  CCA180 R+1 RL FQ207
LBL "LASTCUT"
CP IPA-360 DR- FQ207
DEP CT  CCA180 R+1 FQ207
; Startwerte fuer Multicut setzen
FN 9: IF +Q15 EQU +0 GOTO LBL 40
Q11 = ( Q222 / 2 )
Q11 = Q11 - Q13
Q15 = 1
LBL 40
LBL 0
; *** UP Gegenlauffraesen ***
LBL "GEGENLAUF"
LP  PR+Q10  PA+0 R0 FMAX ; Startposition
L  Z+Q23 R0 FQ206
FN 9: IF +Q15 EQU +0 GOTO LBL "SINGLECUT_GG"
L  FQ207
APPR PCT  PR+Q11  PA+0  CCA180 R+1 RR FQ207
LBL "MULTICUT_GG"
CP IPA+360 DR+ FQ207 M98
Q15 = Q15 + 1
FN 9: IF +Q15 EQU +Q12 GOTO LBL "END_MULTICUT_GG"
Q11 = Q11 - Q13
LP  PR+Q11  PA+0 RR FQ207
FN 9: IF +0 EQU +0 GOTO LBL "MULTICUT_GG"
LBL "END_MULTICUT_GG"
LP  PR+Q21  PA+0 RR FQ207
FN 9: IF +0 EQU +0 GOTO LBL "LASTCUT_GG"
LBL "SINGLECUT_GG"
L  FQ207
APPR PCT  PR+Q11  PA+0  CCA180 R+1 RR FQ207
LBL "LASTCUT_GG"
CP IPA+360 DR+ FQ207
DEP CT  CCA180 R+1 FQ207
; Startwerte fuer Multicut setzen
FN 9: IF +Q15 EQU +0 GOTO LBL 41
Q11 = ( Q222 / 2 )
Q11 = Q11 - Q13
Q15 = 1
LBL 41
LBL 0
; *** ENDE UP Gleichlauffraesen ***
LBL 14
FN 9: IF +Q195 EQU +1 GOTO LBL 193
FN 3: Q200 =+Q200 * +Q30
FN 3: Q202 =+Q202 * +Q30
FN 3: Q204 =+Q204 * +Q30
LBL 0
LBL 193
L  Z+Q20 FMAX
FN 9: IF +Q195 EQU +1 GOTO LBL 254
L  Z+Q19 FMAX
LBL 254
END PGM CIRCSTUDMILL MM 
