english
version "1.0"
identify "@(#)multi.sts 1.13 94/10/02 Copyright (c) 1990, 1991 -- Wayne C. Gramlich"

#: This program tests the ability to return multiple values.

module multi

import
    out_stream
    string
    system
    unsigned

procedure main
    takes
	system system
    returns unsigned

    out_stream :@= system.standard_out_stream
    a:: unsigned, b:: unsigned := swap(2, 1)
    check(a, b, "Test 1", out_stream)
    return 0

procedure check
    takes
	a unsigned
	b unsigned
	test_name string
	out_stream out_stream
    returns_nothing

    put@(test_name, out_stream)
    if a = 1 && b = 2
	put@(" succeeded\n\", out_stream)
    else
	put@(" failed\n\", out_stream)

procedure swap
    takes
	a unsigned
	b unsigned
    returns unsigned, unsigned

    return b, a
