Patrik is a
Question Whiz
Recap 2024
Publications:
1question
1comment
Top Post:
99
people reached
User bio
404 bio not found
Member since Feb 14, 2020
Replies:

Hi,

I replaced all QUIT with Return and add conditional check based on third parameter at the begening of the ClassMethod as you suggest.

When I tried to run, the output is excatly the same as with QUIT. Function still running even value has been found.

This is output from terminal where I added $G(mainArticle),"-",$G(article) from suggestion above.

9430954-9428572 BEGENING OF LOOP FOR: H2652.S
9430954-9428572 START RECURSIVE
9408921-9428572 BEGENING OF LOOP FOR: MQ0605.B
9408921-9428572 END OF LOOP
9430954-9428572 BEGENING OF LOOP FOR: H2641.B
9430954-9428572 BEGENING OF LOOP FOR: M1910.15.40
9430954-9428572 BEGENING OF LOOP FOR: GK6202
9430954-9428572 BEGENING OF LOOP FOR: GK6201.B
9430954-9428572 BEGENING OF LOOP FOR: IX08.0925
9430954-9428572 START RECURSIVE
9408925-9428572 END OF LOOP
9430954-9428572 BEGENING OF LOOP FOR: XQA1.AI12.1425.1020.C
9430954-9428572 START RECURSIVE
9413847-9428572 BEGENING OF LOOP FOR: XAL446.1250.1.AI12.L.A
9413847-9428572 START RECURSIVE
9408591-9428572 BEGENING OF LOOP FOR: AL446.1255
9408591-9428572 END OF LOOP
9413847-9428572 BEGENING OF LOOP FOR: XAL446.1250.1.AI12.R.A
9413847-9428572 START RECURSIVE
9408593-9428572 BEGENING OF LOOP FOR: AL446.1255
9408593-9428572 END OF LOOP
9413847-9428572 BEGENING OF LOOP FOR: AL448.1024
9413847-9428572 BEGENING OF LOOP FOR: XAL447.0970.A
9413847-9428572 START RECURSIVE
9408603-9428572 BEGENING OF LOOP FOR: AL447.0975
9408603-9428572 END OF LOOP
9413847-9428572 BEGENING OF LOOP FOR: H2640.A
9413847-9428572 BEGENING OF LOOP FOR: H2641.C
9413847-9428572 BEGENING OF LOOP FOR: H2650.A
9413847-9428572 BEGENING OF LOOP FOR: H2701.1020
9413847-9428572 BEGENING OF LOOP FOR: XAL465.1110.A0
9413847-9428572 START RECURSIVE
9421986-9428572 Has Value
9413847-9428572 BEGENING OF LOOP FOR: XAL465.1110.A1
9413847-9428572 START RECURSIVE
9421987-9428572 BEGENING OF LOOP FOR: XAL465.1110.A0
9421987-9428572 START RECURSIVE
9421986-9428572 Has Value
9421987-9428572 END OF LOOP
9413847-9428572 BEGENING OF LOOP FOR: XAL465.1110.A2
9413847-9428572 START RECURSIVE
9421990-9428572 BEGENING OF LOOP FOR: XAL465.1110.A0
9421990-9428572 START RECURSIVE
9421986-9428572 Has Value
9421990-9428572 END OF LOOP
9413847-9428572 BEGENING OF LOOP FOR: H2707.R.S
9413847-9428572 START RECURSIVE
9432315-9428572 BEGENING OF LOOP FOR: H2707
9432315-9428572 BEGENING OF LOOP FOR: H2698
9432315-9428572 BEGENING OF LOOP FOR: H2697
9432315-9428572 END OF LOOP
9413847-9428572 BEGENING OF LOOP FOR: H2707.L.S
9413847-9428572 START RECURSIVE
9432316-9428572 BEGENING OF LOOP FOR: H2707
9432316-9428572 BEGENING OF LOOP FOR: H2698
9432316-9428572 BEGENING OF LOOP FOR: H2697
9432316-9428572 END OF LOOP
9413847-9428572 END OF LOOP
9430954-9428572 END OF LOOP

// EDIT

I was able to QUIT only when I used global variable

ClassMethod workpieceUnit(mainArticle As %String, article As %String) As %String
{
	&SQL(SELECT unit->unitCode INTO :unitCode FROM production_article.composition WHERE mainArticle = :mainArticle AND article = :article)
	
	IF (SQLCODE = 0)
	{
		W !, $G(mainArticle),"-",$G(article)," Has Value"
		SET ^pasp("unitCode") = unitCode
		RETURN unitCode
	}
	ELSE
	{
		SET sql = "SELECT article, unit->unitCode,  production_article.composition_sqlArticleCode(article, type) AS articleCode FROM production_article.composition WHERE mainArticle = "_mainArticle_" AND type = 1",
		 	 rs = ##class(%SQL.Statement).%ExecDirect(,sql)
		 
		WHILE rs.%Next()
		{
			RETURN:$GET(^pasp("unitCode"))'="" ^pasp("unitCode")
			
			W !, $G(mainArticle),"-",$G(article)," BEGENING OF LOOP FOR: "_rs.articleCode
			
			IF (rs.article = article)
			{
				RETURN rs.unitCode	
			}
			
			// CHECK IF WORKPIECE HAS COMPOSITION
			&SQL(SELECT COUNT(*) INTO :composition FROM production_article.composition WHERE mainArticle = :rs.article)
			
			IF (composition > 0)
			{
				W !, $G(mainArticle),"-",$G(article)," START RECURSIVE"
				DO ..workpieceUnit(rs.article, article)
			}
		}
			
		W !, $G(mainArticle),"-",$G(article)," END OF LOOP"
		RETURN $GET(^pasp("unitCode"),"")
		KILL ^pasp("unitCode")
	}
	
	RETURN ""
}
Certifications & Credly badges:
Patrik has no Certifications & Credly badges yet.
Global Masters badges:
Patrik has no Global Masters badges yet.
Followers:
Patrik has no followers yet.
Following:
Patrik has not followed anybody yet.