From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 6026 invoked from network); 24 Nov 2021 23:57:56 -0000 Received: from minnie.tuhs.org (45.79.103.53) by inbox.vuxu.org with ESMTPUTF8; 24 Nov 2021 23:57:56 -0000 Received: by minnie.tuhs.org (Postfix, from userid 112) id 40D479C78B; Thu, 25 Nov 2021 09:57:53 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id DF9A293D42; Thu, 25 Nov 2021 09:55:18 +1000 (AEST) Authentication-Results: minnie.tuhs.org; dkim=pass (2048-bit key; unprotected) header.d=dartmouth.edu header.i=@dartmouth.edu header.b="w+k1z18G"; dkim-atps=neutral Received: by minnie.tuhs.org (Postfix, from userid 112) id C4FE893D29; Thu, 25 Nov 2021 09:55:16 +1000 (AEST) Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) by minnie.tuhs.org (Postfix) with ESMTPS id B87A393D1B for ; Thu, 25 Nov 2021 09:55:15 +1000 (AEST) Received: by mail-wm1-f50.google.com with SMTP id az34-20020a05600c602200b0033bf8662572so3427588wmb.0 for ; Wed, 24 Nov 2021 15:55:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dartmouth.edu; s=google1; h=mime-version:from:date:message-id:subject:to; bh=9+w/iDdBVe3hlhkwvy2ztmzAi4P8rDPmoXuK5kmyNsM=; b=w+k1z18G2thEGf9Lf8ByPgeh3ZbhPv/gYnn911vmRHqatpHhW1F+fJ3MZTTK+Ug+q0 TIeW0DH25C3xSlX2e4mK8pRRSuoZHu5Ae4sZRtkEdeKb4I1CygZJkpqr/UhPAiovxLno t2dVUjtFVj4CZBwL3YwVhNJWdn5TfZ6+7Wch90UfqtcOtWKTNIkCI0Qfnnh5p5S0SvVA itz+6O4+WltCgqbzfzfQ+gbDIK0Mejy5bL6510Vf8jiYA7yqgwJ2H4YDnjqoRa9nfUD2 34cvrVaeQbkCWkRTPWVlOmdFHiAk1QsznCdL7QeMsxsirt7SbXOOuDR2B3St6EPC965S +CGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=9+w/iDdBVe3hlhkwvy2ztmzAi4P8rDPmoXuK5kmyNsM=; b=N9xGY/iMxkI6LbmtIhiytiEtp7kK+JUvzoaV//v7NAne7YJCfrsXQqHQxdi6P7A0iS k7mBeDgBAfO4En9KMYjkKc868Q6GizDGiqIanSJCfTsuSRCnYxF7XSbsyz/ybf8x7Y3J +RsnXmU7jkKGr8VriPBJpawFIjvYb0DBpr0TENczVBmAPngV+6+6pHY467iqqUGhAVs3 EwvEBhhMyX4zBMOcUuIkH8GVexlBZOyyh8nbrMjvRRAovAMUUD0zeSZDXV+Fraq0wEcn uJ0Qq4EnyVidLp5ghfRq7XYXiqfsl7Njb8MgPHisZohciV9MTbCEB3qRku4t9ZiIZyQA 3hXg== X-Gm-Message-State: AOAM533xz2O7lpe6E1lhuw+f8Vbz2jHgs2ZBSLzyPvDZ48Ar6phJruXr j2P1Vxsufv+Wt2AtG4Ewjt50n6A0L5HERh0vDYeIhk6sZBk= X-Google-Smtp-Source: ABdhPJxOZ+JwA2Nx8QsNKO48e1sJNHlUvehgXyHLjFUYjPeL/o7flDgdgQKaywHqcmT4JsTybDt0cgFqFRzrvIPUSvM= X-Received: by 2002:a1c:f60a:: with SMTP id w10mr1398411wmc.53.1637798113700; Wed, 24 Nov 2021 15:55:13 -0800 (PST) MIME-Version: 1.0 From: Douglas McIlroy Date: Wed, 24 Nov 2021 18:54:57 -0500 Message-ID: To: TUHS main list Content-Type: text/plain; charset="UTF-8" Subject: [TUHS] PL/I stuff - was: Book Recommendation X-BeenThere: tuhs@minnie.tuhs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: The Unix Heritage Society mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: tuhs-bounces@minnie.tuhs.org Sender: "TUHS" > What, if any, features does PL/I have that are not realized in a modern language? Here are a few dredged from the mental cranny where they have mouldered for 50+ years. 1. Assignment by name. If A and B are structs (not official PL/I terminology), then A + B A = B copies similarly named fields of B to corresponding fields in A. 2. Both binary and decimal data with arithmetic rounded to any specified precision. 3. Bit strings of arbitrary length, with bitwise Boolean operations plus substr and catenation. 4. A named array is normally passed by reference, as in F(A). But if the argument is not a bare name, as in F((A)), it is passed by value. 5. IO by name. On input this behaves like assignment from a constant, with appropriate type conversion. 6. A SORT statement. 7. Astonishingly complete set of implicit data conversions. E.g. if X is floating-point and S is a string, the assignment X = S works when S = "2" and raises an exception (not PL/I terminology) when S = "A". My 1967 contribution to ACM collected algorithms exploited 3 and 4. I don't know another language in which that algorithm is as succinct. Doug