The POSITIVE class test in COBOL represents comprehensive positive value validation and sophisticated sign verification capabilities within enterprise programming environments, providing advanced numeric validation mechanisms for ensuring positive values, enhanced data integrity features for financial processing, and intelligent sign checking capabilities that enable accurate positive value verification, optimal business rule enforcement, and systematic data validation workflows while maintaining calculation accuracy, ensuring proper sign validation, and enabling reliable positive value architectures across business applications requiring exact positive value checking, financial data validation, and dependable sign verification throughout sophisticated enterprise calculation and business rule enforcement scenarios.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156*> Basic POSITIVE class test operations WORKING-STORAGE SECTION. 01 WS-FINANCIAL-DATA. 05 WS-ACCOUNT-BALANCE PIC S9(8)V99 COMP-3. 05 WS-TRANSACTION-AMOUNT PIC S9(6)V99 COMP-3. 05 WS-CREDIT-LIMIT PIC S9(7)V99 COMP-3. 05 WS-INTEREST-RATE PIC S9(3)V9999 COMP-3. 01 WS-INVENTORY-DATA. 05 WS-QUANTITY-ON-HAND PIC S9(6) COMP-3. 05 WS-UNIT-PRICE PIC S9(5)V99 COMP-3. 05 WS-REORDER-POINT PIC S9(4) COMP-3. 05 WS-LEAD-TIME-DAYS PIC S9(3) COMP-3. 01 WS-EMPLOYEE-DATA. 05 WS-EMPLOYEE-AGE PIC S9(3) COMP-3. 05 WS-YEARS-SERVICE PIC S9(2) COMP-3. 05 WS-SALARY-AMOUNT PIC S9(7)V99 COMP-3. 05 WS-BONUS-PERCENTAGE PIC S9(3)V99 COMP-3. 01 WS-VALIDATION-FLAGS. 05 WS-BALANCE-VALID PIC X VALUE 'N'. 05 WS-AMOUNT-VALID PIC X VALUE 'N'. 05 WS-INVENTORY-VALID PIC X VALUE 'N'. 05 WS-EMPLOYEE-VALID PIC X VALUE 'N'. PROCEDURE DIVISION. DEMONSTRATE-POSITIVE-TESTING. DISPLAY "=== POSITIVE CLASS TEST DEMONSTRATION ===" *> Test financial data validation MOVE 1500.75 TO WS-ACCOUNT-BALANCE MOVE 250.00 TO WS-TRANSACTION-AMOUNT MOVE 5000.00 TO WS-CREDIT-LIMIT MOVE 3.2500 TO WS-INTEREST-RATE PERFORM VALIDATE-FINANCIAL-DATA *> Test inventory data validation MOVE 150 TO WS-QUANTITY-ON-HAND MOVE 25.99 TO WS-UNIT-PRICE MOVE 50 TO WS-REORDER-POINT MOVE 7 TO WS-LEAD-TIME-DAYS PERFORM VALIDATE-INVENTORY-DATA *> Test employee data validation MOVE 32 TO WS-EMPLOYEE-AGE MOVE 8 TO WS-YEARS-SERVICE MOVE 65000.00 TO WS-SALARY-AMOUNT MOVE 15.50 TO WS-BONUS-PERCENTAGE PERFORM VALIDATE-EMPLOYEE-DATA VALIDATE-FINANCIAL-DATA. DISPLAY "Validating financial data..." *> Validate account balance is positive IF WS-ACCOUNT-BALANCE IS POSITIVE DISPLAY "✅ Account balance is positive: $" WS-ACCOUNT-BALANCE MOVE 'Y' TO WS-BALANCE-VALID ELSE DISPLAY "❌ Account balance is not positive: $" WS-ACCOUNT-BALANCE MOVE 'N' TO WS-BALANCE-VALID END-IF *> Validate transaction amount is positive IF WS-TRANSACTION-AMOUNT IS POSITIVE DISPLAY "✅ Transaction amount is positive: $" WS-TRANSACTION-AMOUNT MOVE 'Y' TO WS-AMOUNT-VALID ELSE DISPLAY "❌ Transaction amount is not positive: $" WS-TRANSACTION-AMOUNT MOVE 'N' TO WS-AMOUNT-VALID END-IF *> Validate credit limit is positive IF WS-CREDIT-LIMIT IS POSITIVE DISPLAY "✅ Credit limit is positive: $" WS-CREDIT-LIMIT ELSE DISPLAY "❌ Credit limit is not positive: $" WS-CREDIT-LIMIT END-IF *> Validate interest rate is positive IF WS-INTEREST-RATE IS POSITIVE DISPLAY "✅ Interest rate is positive: " WS-INTEREST-RATE "%" ELSE DISPLAY "❌ Interest rate is not positive: " WS-INTEREST-RATE "%" END-IF VALIDATE-INVENTORY-DATA. DISPLAY " " DISPLAY "Validating inventory data..." *> Validate quantity on hand is positive IF WS-QUANTITY-ON-HAND IS POSITIVE DISPLAY "✅ Quantity on hand is positive: " WS-QUANTITY-ON-HAND MOVE 'Y' TO WS-INVENTORY-VALID ELSE DISPLAY "❌ Quantity on hand is not positive: " WS-QUANTITY-ON-HAND MOVE 'N' TO WS-INVENTORY-VALID END-IF *> Validate unit price is positive IF WS-UNIT-PRICE IS POSITIVE DISPLAY "✅ Unit price is positive: $" WS-UNIT-PRICE ELSE DISPLAY "❌ Unit price is not positive: $" WS-UNIT-PRICE END-IF *> Validate reorder point is positive IF WS-REORDER-POINT IS POSITIVE DISPLAY "✅ Reorder point is positive: " WS-REORDER-POINT ELSE DISPLAY "❌ Reorder point is not positive: " WS-REORDER-POINT END-IF *> Validate lead time is positive IF WS-LEAD-TIME-DAYS IS POSITIVE DISPLAY "✅ Lead time is positive: " WS-LEAD-TIME-DAYS " days" ELSE DISPLAY "❌ Lead time is not positive: " WS-LEAD-TIME-DAYS " days" END-IF VALIDATE-EMPLOYEE-DATA. DISPLAY " " DISPLAY "Validating employee data..." *> Validate employee age is positive IF WS-EMPLOYEE-AGE IS POSITIVE DISPLAY "✅ Employee age is positive: " WS-EMPLOYEE-AGE MOVE 'Y' TO WS-EMPLOYEE-VALID ELSE DISPLAY "❌ Employee age is not positive: " WS-EMPLOYEE-AGE MOVE 'N' TO WS-EMPLOYEE-VALID END-IF *> Validate years of service is positive IF WS-YEARS-SERVICE IS POSITIVE DISPLAY "✅ Years of service is positive: " WS-YEARS-SERVICE ELSE DISPLAY "❌ Years of service is not positive: " WS-YEARS-SERVICE END-IF *> Validate salary amount is positive IF WS-SALARY-AMOUNT IS POSITIVE DISPLAY "✅ Salary amount is positive: $" WS-SALARY-AMOUNT ELSE DISPLAY "❌ Salary amount is not positive: $" WS-SALARY-AMOUNT END-IF *> Validate bonus percentage is positive IF WS-BONUS-PERCENTAGE IS POSITIVE DISPLAY "✅ Bonus percentage is positive: " WS-BONUS-PERCENTAGE "%" ELSE DISPLAY "❌ Bonus percentage is not positive: " WS-BONUS-PERCENTAGE "%" END-IF
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245*> Advanced POSITIVE validation in business contexts 01 WS-LOAN-APPLICATION. 05 WS-LOAN-AMOUNT PIC S9(8)V99 COMP-3. 05 WS-DOWN-PAYMENT PIC S9(7)V99 COMP-3. 05 WS-ANNUAL-INCOME PIC S9(8)V99 COMP-3. 05 WS-CREDIT-SCORE PIC S9(3) COMP-3. 05 WS-LOAN-TERM-MONTHS PIC S9(3) COMP-3. 01 WS-PRODUCT-CATALOG. 05 WS-PRODUCT-ITEMS OCCURS 100 TIMES. 10 WS-PRODUCT-ID PIC X(10). 10 WS-PRODUCT-PRICE PIC S9(6)V99 COMP-3. 10 WS-PRODUCT-WEIGHT PIC S9(4)V999 COMP-3. 10 WS-STOCK-QUANTITY PIC S9(5) COMP-3. 10 WS-MIN-ORDER-QTY PIC S9(3) COMP-3. 01 WS-PERFORMANCE-METRICS. 05 WS-QUARTERLY-SALES OCCURS 4 TIMES. 10 WS-SALES-AMOUNT PIC S9(8)V99 COMP-3. 10 WS-PROFIT-MARGIN PIC S9(3)V99 COMP-3. 10 WS-CUSTOMER-COUNT PIC S9(5) COMP-3. 10 WS-GROWTH-RATE PIC S9(4)V99 COMP-3. 01 WS-VALIDATION-SUMMARY. 05 WS-TOTAL-VALIDATIONS PIC 9(4) VALUE 0. 05 WS-PASSED-VALIDATIONS PIC 9(4) VALUE 0. 05 WS-FAILED-VALIDATIONS PIC 9(4) VALUE 0. 05 WS-VALIDATION-RATE PIC 99V99. PROCEDURE DIVISION. PERFORM-ADVANCED-VALIDATION. DISPLAY "=== ADVANCED POSITIVE VALIDATION ===" PERFORM VALIDATE-LOAN-APPLICATION PERFORM VALIDATE-PRODUCT-CATALOG PERFORM VALIDATE-PERFORMANCE-METRICS PERFORM CALCULATE-VALIDATION-STATISTICS VALIDATE-LOAN-APPLICATION. DISPLAY "Validating loan application data..." *> Load sample loan data MOVE 250000.00 TO WS-LOAN-AMOUNT MOVE 50000.00 TO WS-DOWN-PAYMENT MOVE 85000.00 TO WS-ANNUAL-INCOME MOVE 750 TO WS-CREDIT-SCORE MOVE 360 TO WS-LOAN-TERM-MONTHS *> Comprehensive loan validation using POSITIVE PERFORM VALIDATE-LOAN-AMOUNT PERFORM VALIDATE-DOWN-PAYMENT PERFORM VALIDATE-ANNUAL-INCOME PERFORM VALIDATE-CREDIT-SCORE PERFORM VALIDATE-LOAN-TERM VALIDATE-LOAN-AMOUNT. ADD 1 TO WS-TOTAL-VALIDATIONS IF WS-LOAN-AMOUNT IS POSITIVE DISPLAY "✅ Loan amount validation passed: $" WS-LOAN-AMOUNT ADD 1 TO WS-PASSED-VALIDATIONS *> Additional business rule: minimum loan amount IF WS-LOAN-AMOUNT >= 10000.00 DISPLAY "✅ Loan amount meets minimum requirement" ELSE DISPLAY "⚠️ Loan amount below minimum ($10,000)" END-IF ELSE DISPLAY "❌ Loan amount validation failed: $" WS-LOAN-AMOUNT ADD 1 TO WS-FAILED-VALIDATIONS END-IF VALIDATE-DOWN-PAYMENT. ADD 1 TO WS-TOTAL-VALIDATIONS IF WS-DOWN-PAYMENT IS POSITIVE DISPLAY "✅ Down payment validation passed: $" WS-DOWN-PAYMENT ADD 1 TO WS-PASSED-VALIDATIONS *> Calculate down payment percentage COMPUTE WS-DOWN-PAYMENT-PCT = (WS-DOWN-PAYMENT / WS-LOAN-AMOUNT) * 100 IF WS-DOWN-PAYMENT-PCT >= 20.00 DISPLAY "✅ Down payment percentage adequate: " WS-DOWN-PAYMENT-PCT "%" ELSE DISPLAY "⚠️ Down payment percentage low: " WS-DOWN-PAYMENT-PCT "%" END-IF ELSE DISPLAY "❌ Down payment validation failed: $" WS-DOWN-PAYMENT ADD 1 TO WS-FAILED-VALIDATIONS END-IF VALIDATE-PRODUCT-CATALOG. DISPLAY " " DISPLAY "Validating product catalog data..." *> Load sample product data MOVE "PROD-001" TO WS-PRODUCT-ID(1) MOVE 29.99 TO WS-PRODUCT-PRICE(1) MOVE 2.5 TO WS-PRODUCT-WEIGHT(1) MOVE 100 TO WS-STOCK-QUANTITY(1) MOVE 5 TO WS-MIN-ORDER-QTY(1) MOVE "PROD-002" TO WS-PRODUCT-ID(2) MOVE 149.99 TO WS-PRODUCT-PRICE(2) MOVE 8.75 TO WS-PRODUCT-WEIGHT(2) MOVE 50 TO WS-STOCK-QUANTITY(2) MOVE 2 TO WS-MIN-ORDER-QTY(2) *> Validate each product using POSITIVE tests PERFORM VARYING PRODUCT-INDEX FROM 1 BY 1 UNTIL PRODUCT-INDEX > 2 PERFORM VALIDATE-SINGLE-PRODUCT END-PERFORM VALIDATE-SINGLE-PRODUCT. DISPLAY "Validating product: " WS-PRODUCT-ID(PRODUCT-INDEX) *> Validate product price is positive ADD 1 TO WS-TOTAL-VALIDATIONS IF WS-PRODUCT-PRICE(PRODUCT-INDEX) IS POSITIVE DISPLAY " ✅ Price is positive: $" WS-PRODUCT-PRICE(PRODUCT-INDEX) ADD 1 TO WS-PASSED-VALIDATIONS ELSE DISPLAY " ❌ Price is not positive: $" WS-PRODUCT-PRICE(PRODUCT-INDEX) ADD 1 TO WS-FAILED-VALIDATIONS END-IF *> Validate product weight is positive ADD 1 TO WS-TOTAL-VALIDATIONS IF WS-PRODUCT-WEIGHT(PRODUCT-INDEX) IS POSITIVE DISPLAY " ✅ Weight is positive: " WS-PRODUCT-WEIGHT(PRODUCT-INDEX) " lbs" ADD 1 TO WS-PASSED-VALIDATIONS ELSE DISPLAY " ❌ Weight is not positive: " WS-PRODUCT-WEIGHT(PRODUCT-INDEX) " lbs" ADD 1 TO WS-FAILED-VALIDATIONS END-IF *> Validate stock quantity is positive ADD 1 TO WS-TOTAL-VALIDATIONS IF WS-STOCK-QUANTITY(PRODUCT-INDEX) IS POSITIVE DISPLAY " ✅ Stock quantity is positive: " WS-STOCK-QUANTITY(PRODUCT-INDEX) ADD 1 TO WS-PASSED-VALIDATIONS ELSE DISPLAY " ❌ Stock quantity is not positive: " WS-STOCK-QUANTITY(PRODUCT-INDEX) ADD 1 TO WS-FAILED-VALIDATIONS END-IF *> Validate minimum order quantity is positive ADD 1 TO WS-TOTAL-VALIDATIONS IF WS-MIN-ORDER-QTY(PRODUCT-INDEX) IS POSITIVE DISPLAY " ✅ Min order quantity is positive: " WS-MIN-ORDER-QTY(PRODUCT-INDEX) ADD 1 TO WS-PASSED-VALIDATIONS ELSE DISPLAY " ❌ Min order quantity is not positive: " WS-MIN-ORDER-QTY(PRODUCT-INDEX) ADD 1 TO WS-FAILED-VALIDATIONS END-IF VALIDATE-PERFORMANCE-METRICS. DISPLAY " " DISPLAY "Validating performance metrics..." *> Load sample quarterly data MOVE 125000.00 TO WS-SALES-AMOUNT(1) MOVE 15.50 TO WS-PROFIT-MARGIN(1) MOVE 1250 TO WS-CUSTOMER-COUNT(1) MOVE 8.75 TO WS-GROWTH-RATE(1) MOVE 145000.00 TO WS-SALES-AMOUNT(2) MOVE 17.25 TO WS-PROFIT-MARGIN(2) MOVE 1380 TO WS-CUSTOMER-COUNT(2) MOVE 12.30 TO WS-GROWTH-RATE(2) *> Validate quarterly performance using POSITIVE PERFORM VARYING QUARTER-INDEX FROM 1 BY 1 UNTIL QUARTER-INDEX > 2 PERFORM VALIDATE-QUARTERLY-METRICS END-PERFORM VALIDATE-QUARTERLY-METRICS. DISPLAY "Validating Q" QUARTER-INDEX " metrics:" *> Sales amount validation ADD 1 TO WS-TOTAL-VALIDATIONS IF WS-SALES-AMOUNT(QUARTER-INDEX) IS POSITIVE DISPLAY " ✅ Sales amount is positive: $" WS-SALES-AMOUNT(QUARTER-INDEX) ADD 1 TO WS-PASSED-VALIDATIONS ELSE DISPLAY " ❌ Sales amount is not positive: $" WS-SALES-AMOUNT(QUARTER-INDEX) ADD 1 TO WS-FAILED-VALIDATIONS END-IF *> Profit margin validation ADD 1 TO WS-TOTAL-VALIDATIONS IF WS-PROFIT-MARGIN(QUARTER-INDEX) IS POSITIVE DISPLAY " ✅ Profit margin is positive: " WS-PROFIT-MARGIN(QUARTER-INDEX) "%" ADD 1 TO WS-PASSED-VALIDATIONS ELSE DISPLAY " ❌ Profit margin is not positive: " WS-PROFIT-MARGIN(QUARTER-INDEX) "%" ADD 1 TO WS-FAILED-VALIDATIONS END-IF *> Customer count validation ADD 1 TO WS-TOTAL-VALIDATIONS IF WS-CUSTOMER-COUNT(QUARTER-INDEX) IS POSITIVE DISPLAY " ✅ Customer count is positive: " WS-CUSTOMER-COUNT(QUARTER-INDEX) ADD 1 TO WS-PASSED-VALIDATIONS ELSE DISPLAY " ❌ Customer count is not positive: " WS-CUSTOMER-COUNT(QUARTER-INDEX) ADD 1 TO WS-FAILED-VALIDATIONS END-IF *> Growth rate validation ADD 1 TO WS-TOTAL-VALIDATIONS IF WS-GROWTH-RATE(QUARTER-INDEX) IS POSITIVE DISPLAY " ✅ Growth rate is positive: " WS-GROWTH-RATE(QUARTER-INDEX) "%" ADD 1 TO WS-PASSED-VALIDATIONS ELSE DISPLAY " ❌ Growth rate is not positive: " WS-GROWTH-RATE(QUARTER-INDEX) "%" ADD 1 TO WS-FAILED-VALIDATIONS END-IF CALCULATE-VALIDATION-STATISTICS. DISPLAY " " DISPLAY "=== VALIDATION STATISTICS ===" COMPUTE WS-VALIDATION-RATE = (WS-PASSED-VALIDATIONS / WS-TOTAL-VALIDATIONS) * 100 DISPLAY "Total validations performed: " WS-TOTAL-VALIDATIONS DISPLAY "Validations passed: " WS-PASSED-VALIDATIONS DISPLAY "Validations failed: " WS-FAILED-VALIDATIONS DISPLAY "Success rate: " WS-VALIDATION-RATE "%" IF WS-VALIDATION-RATE >= 95.00 DISPLAY "✅ Excellent validation success rate" ELSE IF WS-VALIDATION-RATE >= 85.00 DISPLAY "⚠️ Good validation success rate" ELSE DISPLAY "❌ Low validation success rate - review data quality" END-IF END-IF
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485IDENTIFICATION DIVISION. PROGRAM-ID. POSITIVE-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-VALIDATION-SYSTEM. 05 WS-VALIDATION-COUNT PIC 9(6) VALUE 0. 05 WS-SUCCESS-COUNT PIC 9(6) VALUE 0. 05 WS-FAILURE-COUNT PIC 9(6) VALUE 0. 05 WS-ERROR-COUNT PIC 9(4) VALUE 0. 01 WS-FINANCIAL-PORTFOLIO. 05 WS-INVESTMENTS OCCURS 50 TIMES. 10 WS-INVESTMENT-ID PIC X(10). 10 WS-PRINCIPAL PIC S9(8)V99 COMP-3. 10 WS-CURRENT-VALUE PIC S9(8)V99 COMP-3. 10 WS-ANNUAL-RETURN PIC S9(3)V99 COMP-3. 10 WS-RISK-RATING PIC S9(2) COMP-3. PROCEDURE DIVISION. MAIN-POSITIVE-DEMO. DISPLAY "=== COMPREHENSIVE POSITIVE VALIDATION DEMO ===" PERFORM LOAD-INVESTMENT-DATA PERFORM VALIDATE-INVESTMENT-PORTFOLIO PERFORM GENERATE-VALIDATION-REPORT PERFORM DISPLAY-FINAL-STATISTICS DISPLAY "=== POSITIVE DEMO COMPLETE ===" STOP RUN. LOAD-INVESTMENT-DATA. DISPLAY "Loading investment portfolio data..." *> Load sample investments MOVE "INV-001" TO WS-INVESTMENT-ID(1) MOVE 10000.00 TO WS-PRINCIPAL(1) MOVE 11250.00 TO WS-CURRENT-VALUE(1) MOVE 12.50 TO WS-ANNUAL-RETURN(1) MOVE 3 TO WS-RISK-RATING(1) MOVE "INV-002" TO WS-INVESTMENT-ID(2) MOVE 25000.00 TO WS-PRINCIPAL(2) MOVE 26875.00 TO WS-CURRENT-VALUE(2) MOVE 7.50 TO WS-ANNUAL-RETURN(2) MOVE 2 TO WS-RISK-RATING(2) DISPLAY "✅ Investment data loaded" VALIDATE-INVESTMENT-PORTFOLIO. DISPLAY "Validating investment portfolio..." PERFORM VARYING INVESTMENT-INDEX FROM 1 BY 1 UNTIL INVESTMENT-INDEX > 2 PERFORM VALIDATE-SINGLE-INVESTMENT END-PERFORM VALIDATE-SINGLE-INVESTMENT. DISPLAY "Validating: " WS-INVESTMENT-ID(INVESTMENT-INDEX) *> Validate principal amount ADD 1 TO WS-VALIDATION-COUNT IF WS-PRINCIPAL(INVESTMENT-INDEX) IS POSITIVE ADD 1 TO WS-SUCCESS-COUNT DISPLAY " ✅ Principal: $" WS-PRINCIPAL(INVESTMENT-INDEX) ELSE ADD 1 TO WS-FAILURE-COUNT DISPLAY " ❌ Invalid principal: $" WS-PRINCIPAL(INVESTMENT-INDEX) END-IF *> Validate current value ADD 1 TO WS-VALIDATION-COUNT IF WS-CURRENT-VALUE(INVESTMENT-INDEX) IS POSITIVE ADD 1 TO WS-SUCCESS-COUNT DISPLAY " ✅ Current value: $" WS-CURRENT-VALUE(INVESTMENT-INDEX) ELSE ADD 1 TO WS-FAILURE-COUNT DISPLAY " ❌ Invalid current value: $" WS-CURRENT-VALUE(INVESTMENT-INDEX) END-IF DISPLAY-FINAL-STATISTICS. DISPLAY "📊 POSITIVE Validation Summary:" DISPLAY " Total validations: " WS-VALIDATION-COUNT DISPLAY " Successful: " WS-SUCCESS-COUNT DISPLAY " Failed: " WS-FAILURE-COUNT DISPLAY " Errors: " WS-ERROR-COUNT